动机
位于两个群组之间的数据,未必明显属于其中一组。硬分配只保留选中的群组;混合模型则结合多个概率密度,为每条观测保留属于各分量的概率,再用这些概率加权重新估计分量。
困难在于似然的每一项都包含“总和的对数”。即使单个高斯分量很简单,不同分量的参数仍通过总和相互关联。期望最大化算法,简称 EM,引入责任度,将参数更新拆成加权估计问题。它的两个步骤共同改善一个在当前参数处与观测对数似然相切的下界。
本节先推导权重和更新式,再完整计算一次迭代。软概率与硬标签的区别是关键:最大化选中分量的密度,与最大化混合密度具有不同的目标。加权协方差的分母也必须从所最大化的似然中推导。
几何软权重
软权重也可以由几何定义。设互异站点 S={s1,…,sK} 的旧 Voronoi 单元为 Vj,距离相同时固定分给其中一个单元。插入查询点 x∈/S,用 Vx 表示它的新单元,并假设该单元有界,体积有限且为正。定义
0<vol(Vx)<∞,wj=vol(Vx)vol(Vx∩Vj),j=1∑Kwj=1.
旧单元将新单元分割,所以重叠体积之和等于新单元体积。各权重非负,没有正体积重叠的站点得到零权重;这些比例衡量新区域原来分属各旧站点的份额。
一维体积就是长度。取两个站点和一个新查询点:
S={0,4},x=1,Vx=[21,25],(w1,w2)=(23/2,21/2)=(43,41).
旧边界为 2,新区间在其左右的重叠长度分别是 3/2 和 1/2,总长为 2。这是几何分配权重;下文的高斯责任度是混合模型下的条件概率。两者都跨分量规范,但定义所用的信息不同。
定义
设 x1,…,xn∈Rd 为独立观测,固定高斯分量数目 K。分量 k 具有权重 πk>0、均值 μk∈Rd 和正定协方差 Σk,且 ∑k=1Kπk=1。用 θ 表示全部参数,以下对数均为自然对数。
定义
高斯混合与观测对数似然
高斯密度和混合密度分别为
ϕd(x;μ,Σ)=(2π)d/2det(Σ)1/2exp(−21(x−μ)⊤Σ−1(x−μ)),pθ(x)=k=1∑Kπkϕd(x;μk,Σk).观测对数似然为
ℓ(θ)=i=1∑nlogpθ(xi).潜在分量标签 zi 以概率 πk 取值 k;分量密度描述给定该标签时 xi 的分布。
混合权重本身属于模型,不是选定分量后才加入的规范。即使两个分量在某条观测处的密度相同,权重仍然影响结果。对全部可能标签求和,才得到观测密度。
如果标签也已观测,对数似然就是 logπzi+logϕd(xi;μzi,Σzi) 的总和,也可以用各分量的零一指示量选出对应项。未知标签使我们无法直接按这种方式分组;EM 转而取这些指示量的条件期望,得到 Q 中的责任度。因此,分数权重具有明确的概率含义,是当前模型下潜在指示量的期望。
这也区分了推导中的三个函数:观测对数似然在每个对数内对标签求和;完整数据对数似然使用已知标签;Q 则在当前后验分布下平均完整数据表达式。分清观测量、潜在量和暂时固定的量,可以理解加权高斯拟合为什么能够改善更复杂的混合似然。
定义
责任度与分量的有效样本数
在当前参数 θold 下,Bayes 公式给出
rik=θoldPr(zi=k∣xi)=∑j=1Kπjoldϕd(xi;μjold,Σjold)πkoldϕd(xi;μkold,Σkold),Nk=i=1∑nrik.每一行满足 ∑krik=1。混合权重为正、协方差正定时,每个 rik 都为正,所以 Nk>0,且 ∑kNk=n。
Nk 是在当前后验标签下,预期归于分量 k 的观测数量,可以不是整数。责任度是给定当前模型与观测后的概率,不是随数据提供的已知类别标签。
这里存在两种不同的归一化。E 步针对每条观测跨分量规范,因此每行总和为一;均值更新则针对一个分量跨观测规范,分母是列总和 Nk。若均值更新除以 n,就会把分给其他分量的责任度也计入本分量总量。两个分母回答不同的条件问题。
一点的高斯密度本身不是成员概率:密度可以大于一,也会随测量单位改变尺度。责任度则是比较同一观测的加权密度后得到的无量纲概率。一般协方差下,比较同时包含指数中的 Mahalanobis 距离和规范中的行列式。更分散的分量具有更大体积和更低峰值,πk 控制其总体混合权重。在等权重、共同各向同性协方差下,分量密度排序可以化为欧几里得距离比较。
定理/命题
定理
高斯 M 步使用有效样本数规范
固定责任度,定义完整数据对数似然的条件期望
Q(θ∣θold)=i=1∑nk=1∑Krik[logπk+logϕd(xi;μk,Σk)].当下面的加权协方差均为正定时,最大化更新为
πknew=nNk,μknew=Nk1i=1∑nrikxi,Σknew=Nk1i=1∑nrik(xi−μknew)(xi−μknew)⊤.若模型预先指定共同协方差为 σ2Id、σ2>0,则保持该协方差固定,只使用相同的权重和均值更新。
当且仅当加权中心化观测张成全部特征方向,这个协方差才正定;否则所得矩阵奇异,不属于正定高斯协方差。固定方差模型使我们能够在不估计协方差矩阵的情况下,逐步计算有效模型更新。
定理
有效的 EM 迭代不会降低观测对数似然
先在 θold 处计算精确后验责任度,再选择满足下式的有效新参数:
Q(θnew∣θold)≥Q(θold∣θold).则
ℓ(θnew)≥ℓ(θold).精确 M 步最大化 Q;只使它增加的更新称为广义 EM 步。结论针对观测对数似然的值;全局最优与参数向量收敛是另外的数学主张。
证明思路
推导加权更新
权重部分是在 ∑kπk=1 下最大化 ∑kNklogπk。引入乘数 λ,驻点条件为 Nk/πk=λ。对 k 求和得到 λ=n,所以 πk=Nk/n。
各均值的相关项是加权 Mahalanobis 距离平方和的负数,求导得到
Σk−1i∑rik(xi−μk)=0.
由于 Σk 可逆且 Nk>0,均值必须是命题中的加权平均。预先指定共同各向同性协方差时,这就是加权最小二乘的最小点。每条观测按责任度贡献给各分量,不只是贡献给责任度最大的分量。
推导协方差时,令
Sk=i∑rik(xi−μknew)(xi−μknew)⊤,Λk=Σk−1.
Q 的相关部分为
2NklogdetΛk−21tr(ΛkSk).
驻点方程是 NkΛk−1=Sk。当 Sk 正定时,由对数行列式的凹性,最大点为 Σk=Sk/Nk。这是似然估计,所以分母为 Nk,不减一;省略分母得到的是尺度不同的加权散布矩阵。
与当前似然相切的下界
对任意正概率行 qi=(qi1,…,qiK),Jensen 不等式给出
logk∑πkϕd(xi;μk,Σk)≥k∑qiklogqikπkϕd(xi;μk,Σk).
将右侧对观测求和,定义
F(q,θ)=i,k∑qik[logπk+logϕd(xi;μk,Σk)−logqik].
精确差距为
ℓ(θ)−F(q,θ)=i∑KL(qi∥ri(θ))≥0,
其中 KL(q∥r)=∑kqklog(qk/rk),ri(θ) 为参数 θ 下的后验行。当 qi=ri(θ) 时,差距为零。
E 步选择 q=r(θold),使下界在当前观测对数似然处取等号。固定 q 后,其熵 −∑i,kqiklogqik 为常数,所以增加 Q 也会增加 F,得到
ℓ(θnew)≥F(rold,θnew)≥F(rold,θold)=ℓ(θold).
两个步骤各有作用:E 步使下界在当前模型处精确,M 步在固定下界下改善模型。用硬标签代替后验概率,会失去证明所依赖的相切等号。
一次 M 步始终固定责任度。新均值、新协方差和新权重,都使用完整旧参数算出的同一后验矩阵。协方差公式用新加权均值中心化,因为它最大化的是同一个固定 Q 问题。形成新模型之后,下一次 E 步才重新计算后验;不等式链中间的比较,是保留一个概率矩阵而改变参数。
按 0log0=0 并通过连续延伸解释零权重项,下界与 KL 恒等式也适用于含零元素的概率行。因此可以比较精确后验的相切下界与硬分配产生的较松下界。
例题
例题
1. 相同的分量密度仍可具有不同混合权重
考虑一维混合模型,均值为 μ1=0、μ2=2,共同方差为 σ2=1,权重为 (π1,π2)=(3/4,1/4)。在 x=1,到两个均值的距离相同,因此高斯密度相同。代入 Bayes 公式,共同密度抵消:
r1=(3/4)ϕ1(1;0,1)+(1/4)ϕ1(1;2,1)(3/4)ϕ1(1;0,1)=43,r2=41.中点与两个分量形状同样相容,但模型给第一分量三倍的先验权重。省略混合权重、只规范两个密度,会得到 1/2 和 1/2;那是另一个混合模型的后验。所以软成员概率同时取决于密度和权重。
例题
2. 固定方差下的完整一次 E 步与 M 步
取观测 x1=0、x2=2,初始均值为 (0,2),混合权重相同,并指定共同方差为 1。令
a=1+e−21≈0.880797078.每条观测到另一均值的距离平方,比到对应均值大 4,所以密度比为 e−2。因此
R=[a1−a1−aa],N1=N2=1.M 步给出
πnew=(1/2,1/2),μnew=(2(1−a),2a)≈(0.238405844,1.761594156).每条观测最初虽然恰好位于一个分量均值处,对另一个分量仍有正责任度,从而把两个新均值向内拉。共同方差保持为 1。使用完整高斯密度计算,观测对数似然从 −2.970315405 升至 −2.886562696,约增加 0.083752710。
下面的 NumPy 程序重现同一次迭代。对数规范同时使用全部分量计算后验,不会先挑选某个分量再形成分母。
import numpy as np
X = np.array([0.0, 2.0])
means = np.array([0.0, 2.0])
weights = np.array([0.5, 0.5])
variance = 1.0
def log_components(means, weights):
return (np.log(weights)[None, :]
- 0.5 * np.log(2.0 * np.pi * variance)
- 0.5 * (X[:, None] - means[None, :]) ** 2 / variance)
joint = log_components(means, weights)
normalizer = np.logaddexp.reduce(joint, axis=1)
responsibilities = np.exp(joint - normalizer[:, None])
mass = responsibilities.sum(axis=0)
new_weights = mass / len(X)
new_means = (responsibilities.T @ X) / mass
before = normalizer.sum()
after = np.logaddexp.reduce(
log_components(new_means, new_weights), axis=1
).sum()
assert np.allclose(responsibilities.sum(axis=1), 1.0)
assert after >= before
print("responsibilities =", np.round(responsibilities, 6).tolist())
print("mass =", np.round(mass, 6).tolist())
print("weights =", np.round(new_weights, 6).tolist())
print("means =", np.round(new_means, 6).tolist())
print(f"log_likelihood: {before:.6f} -> {after:.6f}")
输出为
responsibilities = [[0.880797, 0.119203], [0.119203, 0.880797]]
mass = [1.0, 1.0]
weights = [0.5, 0.5]
means = [0.238406, 1.761594]
log_likelihood: -2.970315 -> -2.886563
例题
3. 协方差塌缩可以使似然无上界
取观测 0 和 3。两个分量的权重各为 1/2,均值为 0 和 3,方差分别为 ε2 和 1。每个 ε>0 都给出有效高斯分量,其混合密度满足
pθ(0)≥22πε1,pθ(3)≥22π1.因此
ℓ(θ)≥−logε−log(8π)⟶+∞(ε↓0).将一个分量收缩到某条观测附近,可以使该处密度任意高;另一个分量继续解释其余观测。这个不受限制的似然没有有限最大值。问题在统计目标本身,不是要求计算奇异协方差的高斯密度。像例题 2 那样预先指定正的共同方差,是另一个不会出现这种塌缩的模型。
如何理解 EM 的进度
指定共同各向同性方差时,各分量密度至多为 (2πσ2)−d/2;它们的加权平均也有相同上界,所以
ℓ(θ)≤−2ndlog(2πσ2).
因此,这个模型的不下降似然值存在有限极限。这是针对实数目标值序列的结论,不会指定最佳混合模型,也不会建立每个参数坐标的极限。交换分量标签也会描述同一混合密度。
初始模型决定第一次后验权重,这些权重再决定第一次加权拟合问题。不同初始模型可以沿不同的相切下界序列前进。似然用于检查所选模型内部的优化进度,不会自动选择分量数量或比较不同的协方差假设。
等权重、共同各向同性方差下,责任度是负距离平方的指数再作规范。方差越小,责任度越集中于唯一最近的均值。对于每个正方差,后验仍然是软分配;硬最近中心更新则改变优化问题。这解释了加权均值更新与中心式聚类的相似之处,同时保留两种目标的区别。
常见错误
常见错误
用硬 argmax 代替 E 步
从例题 2 的新均值出发,硬分配将 0 归于第一分量、2 归于第二分量,再按各组观测均值更新,就会回到 (0,2)。共同方差与等权重不变时,观测对数似然从约 −2.886563 降至 −2.970315。硬分配不是使 EM 下界与当前似然相切的后验分布。
常见错误
将散布当成协方差,或省略混合权重
高斯协方差更新将加权散布除以 Nk;E 步则跨分量规范 πkϕd(xi;μk,Σk)。两个因子都来自混合似然。改变任何一个规范,都会改变拟合方程,使上述 EM 推导不再成立。
总结
高斯混合将分量密度加权求和。E 步使用规范后的后验责任度,M 步按有效样本数更新权重、均值和需要估计的协方差。Jensen 下界在当前后验处精确,M 步增加 Q 时下界也增加,从而证明观测对数似然不下降。正权重、正定协方差和正有效样本数,使公式保持在指定模型内。估计协方差或预先指定方差,是目标的一部分;不受限制的协方差可以因分量塌缩而使似然无上界。
练习
思考检查
1. 在 x=1,两个分量的均值为 0 和 2、共同方差为 1、权重为 (3/4,1/4)。求两个责任度。只保留最大责任度对应的分量,会丢失什么信息?
思考检查
2. 对观测 (0,2),固定责任度为 R=[0.90.30.10.7]。指定共同方差时,求 M 步的权重和均值。
先计算每个 Nk,再用它规范加权总和。
思考检查
3. 对观测 (0,2,4),某分量的责任度为 (4/5,1/2,1/5)。求有效样本数、新均值,以及估计协方差时的一维协方差值。
思考检查
4. 对例题 2 更新后的模型作硬分配和均值更新。比较得到的观测对数似然与当前值;EM 证明中的哪个等号不再成立?
解答
解答 · 1. 后验保留两个比例
责任度为 (3/4,1/4),因为共同密度会抵消。只保留第一分量,就只记录一个选定标签,丢失剩余后验质量 1/4。
解答 · 2. 分数样本量也会更新混合权重
有效样本数为 (N1,N2)=(6/5,4/5)。所以 πnew=(3/5,2/5),且
μ1new=(0.9⋅0+0.3⋅2)/(6/5)=1/2,
而
μ2new=(0.1⋅0+0.7⋅2)/(4/5)=7/4。
解答 · 3. 用有效样本数规范加权散布
有效样本数为 N=3/2,均值为
((4/5)0+(1/2)2+(1/5)4)/(3/2)=6/5。
加权距离平方和为
(4/5)(6/5)2+(1/2)(4/5)2+(1/5)(14/5)2=76/25,
所以协方差估计为 (76/25)/(3/2)=152/75。
解答 · 4. 下界不再与当前似然相切
硬分配使每个分量各有一条观测,均值回到 (0,2),权重回到 (1/2,1/2)。观测对数似然从 −2.886562696 降至 −2.970315405。硬概率行 q 不同于严格为正的后验,因此
F(q,θold)=ℓ(θold)
不再成立。改善这个硬分配下界,无法用 EM 的不等式链保证观测似然改善。
可以继续阅读最小二乘与残差,
或查看课程阅读书目。