上一篇介绍了 GMM:给每个数据点一个「属于第 k 个高斯」的概率——软分配。但我们从来没观测到「这个点到底属于哪个高斯」这件事。
这种存在但观测不到的变量,统计学叫它隐变量(latent variable)。隐变量无处不在:
- GMM 里每个点「属于哪个簇」是隐变量。
- 主题模型里每个词「属于哪个主题」是隐变量。
- HMM(隐马尔可夫模型)里系统的真实状态是隐变量——你只能看到观测值。
- VAE 里图像的低维编码 z 是隐变量。
有隐变量的模型通常比没有的更灵活、更贴近真实世界。但训练它们比标准 MLE 难得多——因为你需要对看不见的东西做推断。
假设我们有数据 X,隐变量 Z,参数 θ。完整数据的对数似然 logp(X,Z∣θ) 通常很好算(对 GMM 就是加权高斯的 log 和)。
但我们只观测到 X,不知道 Z。要算边际似然:
logp(X∣θ)=logZ∑p(X,Z∣θ)
这个 log 里面套着 sum。对 GMM 来说就是 log∑kπkN(x∣μk,Σk)——log 和 sum 不能交换,没有解析解,也没办法直接对 θ 求导等于零。
梯度下降当然可以做,但损失面非凸、容易卡住。EM 提供了一条更聪明的路。
EM 的核心想法出奇地简单:
既然隐变量看不见,那就先"猜"一个值;用猜的值当成观测来更新参数;然后用新参数重新猜。反复循环。
形式化地:
E 步(Expectation):用当前参数 θ(t) 计算隐变量的后验分布:
q(Z)=p(Z∣X,θ(t))
"如果参数是这样的,那每个点最可能属于哪个簇?" —— 这就是 E 步在回答的问题。
M 步(Maximization):把 E 步得到的 q(Z) 当成已知,最大化完整数据对数似然的期望:
θ(t+1)=argθmaxEq(Z)[logp(X,Z∣θ)]
M 步就是一个标准的 MLE,只不过隐变量被它的期望替代了——变成了一个加权 MLE。
这两步交替执行,参数一定会收敛到似然的一个局部最大值。为什么?下一节给出几何直觉。
EM 的收敛保证来自一个关键不等式。对任意分布 q(Z):
logp(X∣θ)=ELBO(θ,q)Eq[logq(Z)p(X,Z∣θ)]+≥0KL(q∥p(Z∣X,θ))
因为 KL 散度永远非负,所以 ELBO 永远小于等于真实的 log-likelihood——它是一个下界(Evidence Lower BOund)。
EM 做的事:
- E 步:固定 θ,选 q=p(Z∣X,θ),让 KL = 0。此时 ELBO = log-likelihood。
- M 步:固定 q,最大化 ELBO 关于 θ。ELBO 上升 → log-likelihood 至少不下降。
每一步都让 ELBO 单调上升,而 log-likelihood 有上界(概率不能大于 1),所以 EM 必定收敛。
EM 每步都让 ELBO 单调上升(蓝色虚线),同时逼近真实 log-likelihood(紫色实线)。两线之间的间隔是 KL 散度——E 步把它压到零,M 步把 ELBO 推高。
拖动滑条看收敛过程。紫色实线是真实 log-likelihood,蓝色虚线是 ELBO。两者之间的间距是 KL 散度——E 步把它压到零(ELBO 触碰 LL),M 步把整体推高。
把抽象的 EM 框架落到 上一篇 的 GMM 上:
模型:K 个高斯,权重 πk,均值 μk,协方差 Σk。隐变量 zi∈{1,…,K} 是点 i 属于哪个高斯。
E 步——计算「责任值」γik:
γik=∑j=1KπjN(xi∣μj,Σj)πkN(xi∣μk,Σk)
就是 Bayes 定理:给定当前参数,点 i 属于簇 k 的后验概率。
M 步——用 γ 加权更新参数:
μknew=∑iγik∑iγikxi,Σknew=∑iγik∑iγik(xi−μknew)(xi−μknew)⊤
πknew=N1i∑γik
直觉:每个点给每个簇一个"投票"(γik),新的均值就是加权平均,新的协方差就是加权方差,新的权重就是平均责任。
下面的交互就是这套公式在跑——点击迭代看椭圆如何一步步贴合数据:
EM 迭代:E 步估计每个点属于各高斯的概率(软分配),M 步更新椭圆的中心和形状。与 k-means 的硬分配不同,GMM 能捕获椭球形、大小不一的簇。
注意前几步变化很大,后面几步几乎不动——这就是 ELBO 曲线快速收敛的几何对应。