为什么EM算法只能收敛到局部最优:Q函数单调递增
EM算法(期望最大化算法)是处理含有隐变量问题的经典方法。许多资料都强调它“只能收敛到局部最优”,这背后的核心原因,恰恰来自其赖以工作的根本机制:Q函数的单调递增。
1. 先理解EM算法要解决什么问题
想象 你有一堆数据,但这些数据不完整。例如,你看到用户的点击记录,但不知道每个用户是“真想要”还是“随便点”。这个“不知道”的部分,就是隐变量。
- 如果你知道所有完整信息(比如已知每个用户的意图),直接用最大似然估计就能算出模型参数。
- 但现实是,你不知道隐变量。直接最大化带隐变量的似然函数非常困难,因为它是一个复杂的“积分”或“求和”问题。
EM算法采取的策略是:拆成两步,轮流进攻。
2. 明确EM算法的两个步骤
每次迭代,EM算法都做两件事:
- E步(期望步):利用当前参数,计算隐变量的后验概率,进而构造一个函数——这个函数就是Q函数。Q函数是完整数据对数似然函数关于隐变量后验分布的期望。
- M步(最大化步): 寻找 让Q函数最大的新参数。
Q函数的定义(当需要精确表示时才使用公式):
$$Q(\theta | \theta^{(t)}) = E_{Z | X, \theta^{(t)}} [\log L(\theta; X, Z)]$$
其中 $\theta^{(t)}$ 是第 $t$ 步的当前参数,$X$ 是观测数据,$Z$ 是隐变量。这个Q函数衡量了,在已知当前参数和观测数据的条件下,完整数据似然的期望值。
现在,关键点来了:在M步中,你保证了新的参数 $\theta^{(t+1)}$ 让Q函数值不低于 $\theta^{(t)}$ 对应的Q函数值。也就是说:
$$Q(\theta^{(t+1)} | \theta^{(t)}) \geq Q(\theta^{(t)} | \theta^{(t)})$$
这一步是保证的、确切的。你通过显式优化做到了这一点。
3. Q函数单调递增如何导致局部最优
只保证Q函数单调递增还不够,因为EM算法真正想最大化的是观测数据的对数似然 $\log L(\theta; X)$。Q函数和这个目标函数之间存在一个差距,这个差距由“证据下界”(ELBO)和KL散度构成。
理解证据下界(当需要精确推导时):
观测对数似然可以分解为:
$$\log L(\theta; X) = E_{Z | X, \theta^{(t)}} [\log L(\theta; X, Z)] - E_{Z | X, \theta^{(t)}} [\log p(Z | X, \theta)]$$
右边第一项就是Q函数,第二项是一个负的KL散度。所以:
$$\log L(\theta; X) = Q(\theta | \theta^{(t)}) + \text{KL}(p(Z|X,\theta^{(t)}) \| p(Z|X,\theta))$$
这里 $\text{KL}(\cdot \| \cdot)$ 始终大于等于0。
现在,看一次迭代发生了什么:
-
E步之后:你用当前参数 $\theta^{(t)}$ 固定了隐变量的后验分布。此时,上面的分解式中,$\text{KL}$ 项为0(因为前后分布相同)。所以:
$$\log L(\theta^{(t)}; X) = Q(\theta^{(t)} | \theta^{(t)})$$
-
M步之后:你找到 $\theta^{(t+1)}$ 使得Q函数增大。即:
$$Q(\theta^{(t+1)} | \theta^{(t)}) \geq Q(\theta^{(t)} | \theta^{(t)})$$
-
同时,新参数的KL项 $\text{KL}(p(Z|X,\theta^{(t)}) \| p(Z|X,\theta^{(t+1)}))$ 是非负的。所以:
$$\log L(\theta^{(t+1)}; X) = Q(\theta^{(t+1)} | \theta^{(t)}) + \text{KL}(\cdot \| \cdot) \geq Q(\theta^{(t)} | \theta^{(t)}) = \log L(\theta^{(t)}; X)$$
结论:观测数据的对数似然在每一步都保证不下降(严格来说是非递减的)。这就是EM算法能稳定的根本原因。
4. 为什么只能到局部最优
现在,问题转化为:一个非递减的函数,在有限步后收敛到何处?
理解收敛的边界:
- 如果似然函数是凸函数,那么EM算法会收敛到全局最优(因为凸函数只有一个峰)。
- 但大多数实际问题中,似然函数是非凸的,有很多“山峰”和“山谷”。
想象 你身处一片连绵起伏的山脉,只能保证自己每一步都在往上走(或持平)。你无法保证能走到最高的那个山峰(全局最优),因为从当前山脚出发,你只能沿着山坡往上爬。你可能爬到一个小山头(局部最优)就停下了——那里就是局部最大值。
EM算法就是这种“爬山”策略:
- 每一步都保证Q函数单调递增,从而保证似然函数不下降。
- 这种保证只限于当前局部区域的上升,它没有能力跳出当前的山峰去探索其他山峰。
更精确地(当需要数学验证时):
EM算法本质上是在优化似然函数的一个下界(即证据下界ELBO)。这个下界在参数空间中是局部紧致的。当你找到下界的局部最大值时,它也对应原似然函数的局部最大值。但下界的形状受限于当前固定的隐变量后验分布,这限制了算法探索更远处的可能性。
举个例子:高斯混合模型
以一个包含2个簇的高斯混合模型为例。
- 如果初始参数把两个簇的中心都猜在右侧,EM算法会倾向于把所有数据点都“解释”为属于右侧的簇。算法会重复调整参数,让右侧的簇尽量拟合所有数据,而左侧的簇逐渐被“遗忘”。最终算法收敛到一个状态:所有数据都归入一个簇,另一个簇的参数变得奇怪(比如方差极大或极小)。
- 这就是一个局部最优。如果你从不同的初始值开始(比如把两个簇的中心分别放在左、右两侧),可能会收敛到另一个更好的解(两个簇各司其职),但仍然可能是局部最优——因为还可能存在更好的分离方式。
5. 如何应对局部最优
既然EM算法只能保证局部最优,实际应用时通常采用以下策略:
策略一:多次随机初始化
- 运行 EM算法 10到100次,每次用不同的初始参数。
- 比较 最终得到的对数似然值,选择 最大那个。
策略二:使用确定性退火
- 逐步降低 一个“温度”参数,让算法先从平滑的似然面开始(容易找到大区域),然后逐渐精细调整。
策略三:结合全局优化方法
- 先用 遗传算法或模拟退火找到大致的参数区域。
- 再用 EM算法进行局部精调。
6. 回到核心:Q函数单调递增的代价
总结一下:Q函数单调递增是EM算法的动力保障——它确保了每一步都在改进,不会退化。但这个保障是有代价的:它限制了改进的方向只存在于当前参数附近的局部区域。
Q函数单调递增意味着:
- 算法稳定、可靠,不会像纯梯度下降那样抖动或发散。
- 算法快速,通常几十步就能收敛。
- 但算法必然收敛到起始点附近的局部极值,因为它没有内在机制去探索远处的可能性。
这正是EM算法的美学:用一个精心构造的、可局部最大化的Q函数,以牺牲全局探索为代价,换取了对复杂问题的有效求解。在许多实际场景(如高斯混合模型、隐马尔可夫模型、缺失数据处理)中,这种代价是值得的——因为完全探索全局通常是不可能的,而一个较好的局部解已经足够使用。
当你下次使用EM算法时,记住:Q函数单调递增保证了你不会走错路,但也不会帮你找到更远的路。这就是它只能收敛到局部最优的真正原因。

暂无评论,快来抢沙发吧!