读完这一课,你将能够
- 对伯努利、二项、Categorical、均匀、高斯、泊松、指数七种分布,各说出"它在建模什么现实问题"以及在 ML 里出现在哪(如 softmax 输出层=Categorical、权重初始化=高斯)。
- 写出一维高斯的密度公式 \(p(x)=\frac{1}{\sqrt{2\pi}\,\sigma}e^{-(x-\mu)^2/2\sigma^2}\),并用 68–95–99.7 规则估计任意区间的概率。
- 给一组成对数据,手算协方差 \(\mathrm{Cov}(X,Y)\) 与相关系数 \(\rho\in[-1,1]\),并解释 \(\rho\) 的符号与大小。
- 对一个 2×2 协方差矩阵求特征值/特征向量,画出它的"协方差椭圆",说清主轴方向=特征向量、胖瘦=特征值(半轴长 \(\propto\sqrt{\lambda}\))——并点明这就是 PCA 的种子。
- 用一句话复述中心极限定理(CLT),解释"为什么高斯到处都是",并能跑一个 numpy 小实验亲眼看到偏度下降。
上一课我们认识了随机变量、期望 \(\mathbb{E}[X]\) 与方差 \(\mathrm{Var}(X)\)——那是描述"一个随机量"的工具。这一课我们做两件事:第一,逛一遍"分布动物园",认识几种反复出现的随机量长什么样、什么时候该请哪一只出场;第二,迈进多变量,问"两个随机量怎么一起动"——这把我们带向协方差、协方差矩阵,以及一个让模块1的特征分解突然变得无比有用的画面:协方差椭圆。最后用中心极限定理收束全场,解释高斯为何无处不在。
分布动物园:每只动物解决一个问题
伯努利 Bernoulli(p):一次是非题
什么时候用它:任何"只有两种结果"的单次随机——抛一次硬币、一封邮件是不是垃圾、一次点击有没有发生。它是二分类模型输出的概率原型。
随机变量 \(X\) 只取 0 或 1,取 1 的概率是 \(p\):
\[ P(X=1)=p,\qquad P(X=0)=1-p. \]一个紧凑写法把两行并成一行:\(P(X=x)=p^{x}(1-p)^{1-x}\)(\(x\in\{0,1\}\))。它的期望和方差很好记:
\[ \mathbb{E}[X]=p,\qquad \mathrm{Var}(X)=p(1-p). \]注意方差在 \(p=0.5\) 时最大(\(0.25\))——最"五五开"时最不确定,这与直觉一致。
二项 Binomial(n,p):把 n 次是非题加起来
什么时候用它:独立重复 \(n\) 次同一个伯努利试验,数一共成功了几次。抛 10 次硬币里几次正面、发 1000 封邮件里几封被点开。
\(X\) 是 \(n\) 个独立 Bernoulli(p) 之和,取值 \(0,1,\dots,n\):
\[ P(X=k)=\binom{n}{k}p^{k}(1-p)^{n-k},\quad \mathbb{E}[X]=np,\quad \mathrm{Var}(X)=np(1-p). \]因为是 \(n\) 个独立同分布的伯努利相加,它的期望/方差就是单个的 \(n\) 倍——这个"独立项相加,方差也相加"的规律,等会儿在 CLT 里还要再用。
Categorical:多选一
什么时候用它:结果有 \(K\) 个互斥类别,选中其一。这正是多分类的输出层——一张图是猫/狗/鸟,下一个 token 是词表里哪个词。
给每个类别一个概率 \(p_1,\dots,p_K\),满足 \(p_k\ge 0\) 且 \(\sum_k p_k=1\)。伯努利是它在 \(K=2\) 时的特例。
ML 和 ML 的联系
神经网络分类头输出的就是一个 Categorical 分布:最后一层把实数打分向量 \(z\)(logits)经softmax 变成合法概率 \(p_k=\dfrac{e^{z_k}}{\sum_j e^{z_j}}\)。这里的分母 \(\sum_j e^{z_j}\) 把一堆"未归一化的分数"压成"加起来为 1 的概率"——它有个名字叫归一化常数(normalizing constant),在能量模型里叫配分函数(partition function)\(Z\)。先记住这个名字,后面讲能量模型时会反复回来挖它。均匀 Uniform:一无所知时的默认
什么时候用它:区间内"哪儿都一样可能"。计算机的随机数发生器底层产出的就是 \([0,1)\) 上的均匀数;很多其它分布的采样都从均匀数变换而来。
连续均匀 \(U(a,b)\) 的密度是常数 \(p(x)=\frac{1}{b-a}\)(\(a\le x\le b\)),\(\mathbb{E}[X]=\frac{a+b}{2}\),\(\mathrm{Var}(X)=\frac{(b-a)^2}{12}\)。它形状最"无聊"——但正因为无聊,等会儿把一堆均匀量加起来变成钟形,才特别震撼。
高斯 / 正态 \(\mathcal{N}(\mu,\sigma^2)\):动物园之王
什么时候用它:测量噪声、误差、"很多小因素叠加"的量;神经网络权重初始化常从高斯采样;扩散模型加的噪声是高斯。它是后面大半门课的主角。
一维高斯的概率密度(PDF)是:
\[ p(x)=\frac{1}{\sqrt{2\pi}\,\sigma}\,\exp\!\left(-\frac{(x-\mu)^2}{2\sigma^2}\right). \]把它拆开看就不怕了:核心是 \(\exp(-(x-\mu)^2/2\sigma^2)\)——离中心 \(\mu\) 越远,指数里的负数越大,密度掉得越快,于是是个钟形;\(\sigma\) 控制钟的胖瘦(标准差越大越胖);前面的 \(\frac{1}{\sqrt{2\pi}\,\sigma}\) 起的作用和 softmax 分母一样——都是归一化常数,只不过这里是让积分(而非求和)恰好为 1,让整条曲线下的面积是 1。参数含义干净利落:\(\mathbb{E}[X]=\mu\),\(\mathrm{Var}(X)=\sigma^2\)。
区间 \([\mu-\sigma,\ \mu+\sigma]\) 覆盖约 68% 的概率;
区间 \([\mu-2\sigma,\ \mu+2\sigma]\) 覆盖约 95%;
区间 \([\mu-3\sigma,\ \mu+3\sigma]\) 覆盖约 99.7%。
换句话说,落在 3 个标准差之外是"千里挑三"的稀罕事。这条规则让你不用积分就能口算高斯区间概率。
例题
某层权重初始化为 \(\mathcal{N}(0,\ 0.02^2)\)(\(\mu=0,\ \sigma=0.02\))。问:约 95% 的初始权重落在哪个区间?落在 \(|w|>0.06\) 的权重大约占多少?
解:95% 对应 \(\pm 2\sigma=\pm0.04\),即约 95% 的权重在 \([-0.04,\ 0.04]\)。而 \(0.06=3\sigma\),3σ 之内覆盖 99.7%,所以 \(|w|>3\sigma\) 的两侧合计只有约 \(100\%-99.7\%=0.3\%\)。这正是为什么"几乎所有初始权重都是小数"——大权重被高斯尾巴压得极稀。
泊松 Poisson(λ):单位时间里数个数
什么时候用它:"在一段固定时间/空间里,某种稀有事件发生了几次"——一分钟内到达的请求数、一页书里的错别字数、一小时打进的电话数。
\[ P(X=k)=\frac{\lambda^{k}e^{-\lambda}}{k!},\quad k=0,1,2,\dots,\qquad \mathbb{E}[X]=\mathrm{Var}(X)=\lambda. \]它有个签名特征:均值等于方差,都等于 \(\lambda\)。形状是右偏的离散柱(左边被 0 挡住,右边拖尾)。直觉上它是"\(n\) 很大、\(p\) 很小"的二项的极限:把一段时间切成 \(n\) 个极小格(\(n\to\infty\)),每格成功概率 \(p\to 0\),但保持平均次数 \(np=\lambda\) 不变——此时二项的 \(P(X=k)\) 恰好收敛到泊松公式。
指数 Exponential:等待时间
什么时候用它:"下一个泊松事件还要等多久"——两次请求之间的间隔、设备到下次故障的时间。泊松数个数,指数数间隔,它俩是一对。
\[ p(x)=\lambda e^{-\lambda x}\ (x\ge 0),\qquad \mathbb{E}[X]=\frac{1}{\lambda},\qquad \mathrm{Var}(X)=\frac{1}{\lambda^2}. \]它有著名的无记忆性:已经等了 10 分钟还没来,再等 5 分钟的概率,和一开始就等 5 分钟一样——过去不影响未来。它的形状强烈右偏,正好等会儿拿来演示 CLT 怎么把偏度抹平。
| 分布 | 取值 | 一句话用途 | \(\mathbb{E}[X]\) | \(\mathrm{Var}(X)\) |
|---|---|---|---|---|
| Bernoulli(p) | \(\{0,1\}\) | 单次是非(二分类输出) | \(p\) | \(p(1-p)\) |
| Binomial(n,p) | \(0..n\) | n 次是非里的成功数 | \(np\) | \(np(1-p)\) |
| Categorical | \(K\) 个类 | 多选一(softmax 输出) | — | — |
| Uniform(a,b) | \([a,b]\) | 区间内一无所知 | \(\frac{a+b}{2}\) | \(\frac{(b-a)^2}{12}\) |
| \(\mathcal{N}(\mu,\sigma^2)\) | \(\mathbb{R}\) | 噪声/初始化/误差叠加 | \(\mu\) | \(\sigma^2\) |
| Poisson(λ) | \(0,1,2..\) | 单位时间计数 | \(\lambda\) | \(\lambda\) |
| Exponential(λ) | \([0,\infty)\) | 等待时间 | \(\frac{1}{\lambda}\) | \(\frac{1}{\lambda^2}\) |
协方差:两个随机量怎么"一起动"
到目前为止每只动物都是单变量的。但现实里随机量常常成群结队、彼此牵连:身高与体重、两只股票、像素的相邻点。我们需要一个数来回答"\(X\) 偏大时,\(Y\) 是倾向于也偏大,还是偏小?"
符号告诉你方向:正=同涨同跌,负=此涨彼跌,零=线性上无关联。注意 \(\mathrm{Cov}(X,X)=\mathbb{E}[(X-\mu_X)^2]=\mathrm{Var}(X)\)——方差只是"自己和自己的协方差",这个统一视角等会儿拼协方差矩阵时很关键。
但协方差有个毛病:它带单位、量纲不固定。身高用厘米还是米算,协方差会差 100 倍,没法横向比较"谁更相关"。解决办法是除掉两个标准差,把它无量纲化,得到相关系数(correlation coefficient):
\[ \rho_{XY}=\frac{\mathrm{Cov}(X,Y)}{\sigma_X\,\sigma_Y}\in[-1,1]. \]这其实就是模块1 的余弦相似度换了层皮:把"去均值后的 \(X\) 和 \(Y\)"当成两个向量,\(\rho\) 正是它们夹角的余弦。所以 \(\rho=\pm1\) 表示完全线性(共线);\(\rho=0\) 表示去均值后的 \(X\)、\(Y\) 在向量意义上正交,也就是没有线性关联(但仍可能有非线性关系——见下方易错)。
例题:手算协方差与相关系数
五对数据 \(X=(1,2,3,4,5)\),\(Y=(1,3,2,5,4)\)。求 \(\mathrm{Cov}(X,Y)\) 与 \(\rho\)。
第一步,均值:\(\mu_X=\frac{1+2+3+4+5}{5}=3\),\(\mu_Y=\frac{1+3+2+5+4}{5}=3\)。
第二步,偏差与乘积:
| \(x_i-\mu_X\) | \(y_i-\mu_Y\) | 乘积 |
|---|---|---|
| \(-2\) | \(-2\) | \(4\) |
| \(-1\) | \(0\) | \(0\) |
| \(0\) | \(-1\) | \(0\) |
| \(1\) | \(2\) | \(2\) |
| \(2\) | \(1\) | \(2\) |
第三步,协方差(按总体除以 \(N=5\)):乘积之和 \(=4+0+0+2+2=8\),所以 \(\mathrm{Cov}(X,Y)=\frac{8}{5}=1.6\)。
第四步,方差与标准差:\(\sum(x_i-\mu_X)^2=4+1+0+1+4=10\Rightarrow \mathrm{Var}(X)=\frac{10}{5}=2\),\(\sigma_X=\sqrt2\)。同理 \(\sum(y_i-\mu_Y)^2=4+0+1+4+1=10\Rightarrow \mathrm{Var}(Y)=2\),\(\sigma_Y=\sqrt2\)。
第五步,相关系数:\(\rho=\dfrac{1.6}{\sqrt2\cdot\sqrt2}=\dfrac{1.6}{2}=0.8\)。
读数:\(\rho=0.8\) 是强正相关——\(X\) 大时 \(Y\) 倾向于也大,但不完全(不是 1,数据里有抖动,比如第 2、3 个点就反着来)。
np.cov 除以 \(N-1\)、np.var 除以 \(N\)。算具体数前先确认用哪个,否则会差一个因子——不过 \(\rho\) 里分子分母同除,这个因子会抵消,相关系数不受影响。易错二:\(\rho=0\) 只代表线性无关,不代表独立。例如 \(Y=X^2\)、\(X\) 对称分布时 \(\rho=0\),但 \(Y\) 完全由 \(X\) 决定。协方差只看得见直线关系。
协方差矩阵:把所有两两关系装进一个对称矩阵
当随机量不止两个、而是一个向量 \(\mathbf{X}=(X_1,\dots,X_d)\),我们把所有两两协方差排成一个 \(d\times d\) 矩阵:
\[ \Sigma_{ij}=\mathrm{Cov}(X_i,X_j),\qquad \Sigma=\mathbb{E}\big[(\mathbf{X}-\boldsymbol\mu)(\mathbf{X}-\boldsymbol\mu)^\top\big]. \]对角线 \(\Sigma_{ii}=\mathrm{Var}(X_i)\) 是各分量自己的方差,非对角是两两协方差。因为 \(\mathrm{Cov}(X_i,X_j)=\mathrm{Cov}(X_j,X_i)\),所以 \(\Sigma\) 必然对称。更进一步,对任意方向向量 \(\mathbf{a}\),\(\mathbf{a}^\top\Sigma\mathbf{a}=\mathrm{Var}(\mathbf{a}^\top\mathbf{X})\ge 0\)(任何方向上的投影方差不可能为负),所以 \(\Sigma\) 是对称半正定的。
协方差椭圆:特征分解的几何兑现
想象二维高斯样本散成一团云。如果两个分量不相关,云是个正放的椭圆,胖瘦由各自方差决定。一旦相关(\(\Sigma\) 有非零非对角元),云就斜过来了。怎么找到这团斜椭圆的"长轴短轴"?——对 \(\Sigma\) 做特征分解:
- 特征向量 = 椭圆主轴的方向。最大特征值对应的特征向量,指向数据散得最开的方向。
- 特征值 = 该主轴方向上的方差。主轴的半轴长 \(\propto\sqrt{\lambda}\)(即那个方向的标准差)。\(\lambda\) 越大,那条轴越长,椭圆在那个方向越"胖"。
例题:2×2 协方差矩阵的特征分解与椭圆朝向
设 \(\Sigma=\begin{bmatrix}2&1\\1&2\end{bmatrix}\)。求特征值与特征向量,并说明椭圆的朝向与胖瘦。
特征值:解 \(\det(\Sigma-\lambda I)=0\),即 \((2-\lambda)^2-1=0\Rightarrow 2-\lambda=\pm1\Rightarrow \lambda_1=3,\ \lambda_2=1\)。
(也可用速算:\(\mathrm{tr}=4=\lambda_1+\lambda_2\),\(\det=3=\lambda_1\lambda_2\),凑出 3 和 1。)
特征向量:对 \(\lambda_1=3\),解 \((\Sigma-3I)v=0\):\(\begin{bmatrix}-1&1\\1&-1\end{bmatrix}v=0\Rightarrow v_1\propto\begin{bmatrix}1\\1\end{bmatrix}\),归一化为 \(\frac{1}{\sqrt2}\begin{bmatrix}1\\1\end{bmatrix}\)。
对 \(\lambda_2=1\),同理 \(v_2\propto\begin{bmatrix}1\\-1\end{bmatrix}\),归一化为 \(\frac{1}{\sqrt2}\begin{bmatrix}1\\-1\end{bmatrix}\)。两者正交,符合谱定理。
几何读数:长轴沿 \([1,1]\) 方向(右上 45°),半轴长 \(\propto\sqrt3\approx1.73\);短轴沿 \([1,-1]\) 方向(左上 45°),半轴长 \(\propto\sqrt1=1\)。所以这团数据云是一个朝右上倾斜 45° 的椭圆,长短轴比约 \(\sqrt3:1\approx1.7:1\)——明显伸长而非圆。倾斜方向(正相关)正对应非对角元 \(+1>0\)。
ML 和 ML 的联系
这就是主成分分析 PCA 的全部种子。PCA 做的事就是:对数据的协方差矩阵 \(\Sigma\) 特征分解,挑特征值最大的几个特征向量当"主成分",把数据投影上去——因为那几个方向集中了最多方差(信息)。"降维"就是丢掉特征值小(那个方向几乎没在动)的轴。等模块3 正式讲 PCA 时,你会发现它不过是把今天这张椭圆图严肃地重做一遍。高斯的多维密度里也藏着 \(\Sigma^{-1}\),它的特征结构决定了那团概率云的形状朝向。中心极限定理:高斯为何无处不在
逛完动物园你也许纳闷:现实分布五花八门,凭什么高斯独占 C 位、成了"默认假设"?答案是中心极限定理(Central Limit Theorem, CLT):
正式点:若 \(X_1,\dots,X_n\) 独立同分布、均值 \(\mu\)、方差 \(\sigma^2\),则 \(\dfrac{\sum_i X_i-n\mu}{\sigma\sqrt{n}}\ \xrightarrow{\ n\to\infty\ }\ \mathcal{N}(0,1)\)。
这就解释了高斯的统治地位:现实里许多量本身就是"无数小随机因素叠加"的结果——测量误差是无数微小扰动之和,一个人的身高是众多基因与环境因素叠加,噪声是大量独立微小冲击的和。叠加足够多独立随机性,个体的怪癖被互相抵消、抹平,只剩下钟形。
一个常被忽略的细节:CLT 不止说"变成钟形",还能看到偏度(skewness,分布的不对称程度)随求和项数 \(n\) 像 \(1/\sqrt{n}\) 一样衰减。拿强烈右偏的指数分布做基,单个偏度恰为 2(这是指数分布的精确偏度),加 \(k\) 个后偏度恰为 \(2/\sqrt{k}\):\(k=1,2,5,30\) 对应 \(2.0,\ 1.41,\ 0.89,\ 0.37\)——肉眼可见越来越对称。下面"调一调"和"练习"里你会亲手跑出这串数。
调一调,观察现象
下面每个微任务都改一个数、预测一个现象、再跑代码验证。代码只用 numpy + print,几秒跑完。
调一调 1:相关强度 → 椭圆胖瘦
改什么:把协方差矩阵非对角元 \(\rho\) 从 0 调到 0.9。
预期现象:\(\rho=0\) 时两个特征值都接近 1(圆形云);\(\rho\) 越大,最大特征值越接近 \(1+\rho\)、最小越接近 \(1-\rho\),长短轴比 \(\sqrt{(1+\rho)/(1-\rho)}\) 越大,椭圆越扁越斜。
为什么:\(\begin{bmatrix}1&\rho\\\rho&1\end{bmatrix}\) 的特征值正是 \(1\pm\rho\),特征向量恒为 \([1,1],[1,-1]\) 方向。又因为半轴长 \(\propto\sqrt{\text{特征值}}\),所以长短轴比 \(=\sqrt{\lambda_{\max}/\lambda_{\min}}=\sqrt{(1+\rho)/(1-\rho)}\)——相关越强,方差越集中到 45° 那条轴上。
import numpy as np
for rho in [0.0, 0.5, 0.9]:
Sigma = np.array([[1.0, rho], [rho, 1.0]])
w, v = np.linalg.eigh(Sigma) # 升序特征值
ratio = np.sqrt(w.max() / w.min()) # 长短轴比
print(f"rho={rho}: eigvals={np.round(w,3)} 长短轴比={ratio:.3f}")
调一调 2:求和项数 → 偏度衰减
改什么:把每组求和的项数 \(k\) 从 1 加到 30(基分布用右偏的指数)。
预期现象:偏度从约 2.0 依次降到约 1.41、0.89、0.37,几乎正好是 \(2/\sqrt{k}\)(理论上 iid 之和的偏度精确等于 \(2/\sqrt{k}\),模拟值有少量采样误差);标准化直方图从"左高右拖尾"变成对称钟形。
为什么:这就是 CLT 的定量版——独立同分布之和的偏度按 \(1/\sqrt{k}\) 衰减。
import numpy as np
rng = np.random.default_rng(0)
N = 200000
def skew(a):
a = (a - a.mean()) / a.std()
return np.mean(a**3)
for k in [1, 2, 5, 30]:
s = rng.exponential(1.0, size=(N, k)).sum(axis=1) # k 个指数之和
print(f"k={k:2d} 偏度={skew(s):+.3f} 参考 2/sqrt(k)={2/np.sqrt(k):.3f}")
调一调 3:均匀分布求和 → 钟形
改什么:把 \(k\) 个 \(U(0,1)\) 相加(\(k=1,2,12\)),看标准化后落入各区间的计数。
预期现象(注意标准化后的取值范围):\(k=1\) 时,单个均匀标准化后只落在 \([-\sqrt3,\sqrt3]\approx[-1.73,1.73]\) 内——所以分箱区间 \([-3,3]\) 最外侧的 bin 恒为 0,落在 \([-1.73,1.73]\) 内的中间若干 bin 大致持平(这就是均匀的"平台"),而紧邻平台两端的边缘 bin 因为只覆盖了半格宽度,计数约为中间满 bin 的一半。\(k=2\) 变成三角形;\(k=12\) 时中间高两边低、对称如钟形。再看 |z|<1 占比:它只在 \(k\) 大、接近高斯时才逼近 68.3%——\(k=1\) 时约 57.7%(恰为 \(1/\sqrt3\),因为单个均匀的 \(\pm1\) 标准差只盖住整个平台的 \(1/\sqrt3\)),\(k=2\) 约 65%,\(k=12\) 才到约 67.9%。
为什么:均匀虽"无聊",但相加同样被 CLT 拉成高斯;\(k=12\) 时已非常接近(历史上甚至被用来快速生成近似高斯样本)。
import numpy as np
rng = np.random.default_rng(1)
N = 300000
for k in [1, 2, 12]:
s = rng.random((N, k)).sum(axis=1)
z = (s - s.mean()) / s.std()
# 注意:k=1 时 z 只在 ±sqrt(3)≈±1.73 内,外侧 bin 恒为 0
counts, _ = np.histogram(z, bins=np.linspace(-3, 3, 13))
within1 = np.mean(np.abs(z) < 1) * 100
print(f"k={k:2d} 分箱计数={counts}")
print(f" |z|<1 占比={within1:.1f}% (k=1≈57.7%, 高斯≈68.3%)")
动手练习
- 协方差与相关系数。对本课例题数据 \(X=(1,2,3,4,5),\ Y=(1,3,2,5,4)\),用 numpy 算出协方差和相关系数,验证 \(\rho=0.8\)。注意
np.cov默认除以 \(N-1\),请同时手动算"除以 \(N\)"的版本对比。import numpy as np X = np.array([1.,2,3,4,5]); Y = np.array([1.,3,2,5,4]) # np.cov 默认 ddof=1(除以 N-1),ddof=0 除以 N C = np.cov(X, Y, ddof=0) # 2x2 协方差矩阵 print("协方差矩阵(ddof=0):\n", C) rho = C[0,1] / np.sqrt(C[0,0]*C[1,1]) print("rho =", round(rho, 4)) # 应为 0.8 print("np.corrcoef:\n", np.round(np.corrcoef(X, Y), 4)) - 从协方差矩阵生成相关高斯样本。给定 \(\Sigma=\begin{bmatrix}2&1\\1&2\end{bmatrix}\),用 Cholesky 分解 \(\Sigma=LL^\top\) 把标准高斯 \(Z\) 变换成 \(X=LZ\),再用样本估回 \(\Sigma\),验证样本协方差 ≈ 真值。
import numpy as np rng = np.random.default_rng(0) Sigma = np.array([[2.,1.],[1.,2.]]) L = np.linalg.cholesky(Sigma) # 下三角,LL^T = Sigma Z = rng.standard_normal((2, 20000)) # 标准高斯 Xs = L @ Z # 相关高斯 print("样本协方差:\n", np.round(np.cov(Xs), 3)) # 应≈[[2,1],[1,2]] - 验证"主轴=特征向量、特征值≈各轴方差"。承上题,对样本协方差做特征分解;再把样本点投影到每个特征向量上,算投影的方差,验证它≈对应特征值。
import numpy as np rng = np.random.default_rng(0) Sigma = np.array([[2.,1.],[1.,2.]]) L = np.linalg.cholesky(Sigma) Xs = L @ rng.standard_normal((2, 50000)) S = np.cov(Xs) w, V = np.linalg.eigh(S) # 特征值(升序) w, 特征向量列 V print("特征值:", np.round(w, 3)) # 应≈[1, 3] print("特征向量(列):\n", np.round(V, 3)) # 应≈±[1,-1]/√2 和 ±[1,1]/√2 for i in range(2): proj = V[:, i] @ Xs # 投影到第 i 个主轴 print(f"轴{i} 投影方差={proj.var():.3f} 对应特征值={w[i]:.3f}") - CLT 偏度实验。用调一调 2 的代码,把基分布从指数换成"掷一颗六面骰"(取值 1–6 均匀),观察 \(k=1,2,5,30\) 个骰子之和的偏度。预测:骰子本身对称,偏度本就≈0,求和后仍≈0,但分布会从"平台→三角→钟形"。打印分箱计数确认形状变化。
- 68–95–99.7 自验。采样 \(2\times10^6\) 个标准高斯样本,用
np.mean(np.abs(x)<k)统计落在 \(\pm1,\pm2,\pm3\) 标准差内的比例,验证≈68.3%、95.5%、99.7%。
掌握自检
- 给一个现实场景("统计一分钟内到店顾客数""下一个顾客还要等多久""一封邮件是不是垃圾"),我能立刻说出该用泊松/指数/伯努利里的哪一只,并写出它的均值。
- 我能不查公式写出一维高斯密度,并口算"\(\mathcal{N}(10,2^2)\) 中约 95% 的样本落在哪个区间"(答:\([6,14]\))。
- 给一组成对数据,我能手算协方差和相关系数,并解释 \(\rho\) 的符号与"为什么除以两个标准差"。
- 给一个 2×2 对称半正定矩阵,我能求特征值/特征向量,并画出对应协方差椭圆的朝向与长短轴比(半轴 \(\propto\sqrt{\lambda}\)),能指出"哪个方向方差最大"。
- 我能用一句话解释 CLT,说清它解释了"高斯为何无处不在",并能预测"30 个指数之和"的分布大致形状。
- 我能指出 softmax 分母就是归一化常数/配分函数,并说出它和 Categorical 分布的关系。
下一课我们从"单个/联合分布"转向条件概率与贝叶斯:当我们观察到一部分信息后,如何更新对其余部分的信念?并由此揭示自回归语言模型的概率根——为什么"预测下一个词"本质上是在反复套用条件概率的链式法则,以及那条链上每一环(一个 Categorical 分布)如何用交叉熵来训练。今天的 Categorical 分布与归一化常数,正是那条链上每一环的形状。
可以先放过的点
- 多维高斯的完整密度公式(含 \(\Sigma^{-1}\) 和 \(\det\Sigma\))现在不必背——你只需掌握"协方差椭圆=特征分解"这个几何画面,等模块3 讲 PCA 和高斯判别时再回来吃公式。
- 配分函数 \(Z\) 的深层意义(能量模型、为什么它难算)今天只埋点,等到讲对比学习/扩散/玻尔兹曼分布时再展开,现在记住"softmax 分母=归一化常数"即可。
- CLT 的严格证明(特征函数、矩生成函数)可以先放过;你能跑实验看到偏度按 \(1/\sqrt n\) 下降、相信结论就够用了。
- \(N\) vs \(N-1\)(无偏估计/贝塞尔校正)的统计学缘由暂不深究,知道"corrcoef 不受影响、算方差时确认 ddof"即可,等讲到估计理论再回来。