EM算法是一种迭代算法,用于含有隐变量(latent variable)的概率模型参数的极大似然估计,或极大后验概率估计。EM算法也是一种无监督机器学习算法与K-means算法十分类似。
Expectation-Maximization 算法简述
如果概率模型仅含有可观测变量,那么给定数据,可以直接用极大似然法估计模型参数,或用贝叶斯法估计模型参数。然而如果模型含有隐变量,就不能简单的使用这些估计方法。下面我们讨论含有隐变量的概率模型参数极大似然估计法,即EM算法。
变量定义:
- Y Y Y:观测的随机变量数据,或称不完全数据(incomplete-data)。
- Z Z Z:隐随机变量数据。 Y Y Y 和 Z Z Z 连在一起成为完全数据(complete-data)。
- θ \theta θ:需要估计的模型参数。
EM算法通过迭代的方式求不完全数据对数似然函数 L ( θ ) = log P ( Y ∣ θ ) L(\theta)=\log P(Y|\theta) L(θ)=logP(Y∣θ) 的极大似然估计。介绍EM算法之前,我们首先介绍其核心——Q函数。
Q ( θ , θ ( i ) ) = E Z [ log P ( Y , Z ∣ θ ) ∣ Y , θ ( i ) ] Q(\theta,\theta^{(i)}) = E_{Z}[\log P(Y,Z | \theta)|Y,\theta^{(i)}] Q(θ,θ(i))=EZ[logP(Y,Z∣θ)∣Y,θ(i)] 它是完全数据的对数似然函数 log P ( Y , Z ∣ θ ) \log P(Y,Z | \theta) logP(Y,Z∣θ) 关于给定的观测数据 Y Y Y 和当前参数 θ ( i ) \theta^{(i)} θ(i) 下对隐藏数据 Z Z Z 的条件概率分布 P ( Z ∣ Y , θ ( i ) ) P(Z|Y,\theta^{(i)}) P(Z∣Y,θ(i)) 的期望值。下面我们导出EM算法:
我们的目标是极大化观测数据关于参数的对数似然函数,即极大化1 L ( θ ) = log P ( Y ∣ θ ) = log ∑ Z P ( Y , Z ∣ θ ) = log ∑ Z P ( Y ∣ Z , θ ) P ( Z ∣ θ ) L(\theta) = \log P(Y|\theta) = \log\sum_{Z}P(Y,Z|\theta) = \log\sum_{Z}P(Y |Z,\theta)P(Z|\theta) L(θ)=logP(Y∣θ)=logZ∑P(Y,Z∣θ)=logZ∑P(Y∣Z,θ)P(Z∣θ)
由于包含了隐变量和求和(或积分)的对数,直接极大化非常困难。因此我们采用迭代的方法逐步近似,假设第 i i i 次迭代后参数的估计值是 θ ( i ) \theta^{(i)} θ(i)。我们希望新的估计值能提高 L ( θ ) L(\theta) L(θ) 的值,并逐步收敛到极大值。基于此思路,我们考虑更新后的增量:
L ( θ ) − L ( θ ( i ) ) = log ( ∑ Z P ( Y ∣ Z , θ ) P ( Z ∣ θ ) ) − log P ( Y ∣ θ ( i ) ) L(\theta)-L(\theta^{(i)}) = \log\left(\sum_{Z}P(Y |Z,\theta)P(Z|\theta)\right) - \log P(Y|\theta^{(i)}) L(θ)−L(θ(i))=log(Z∑P(Y∣Z,θ)P(Z∣θ))−logP(Y∣θ(i))
利用Jensen不等式2进行放缩,可求出其下界:
L ( θ ) − L ( θ ( i ) ) = log ( ∑ Z P ( Y ∣ Z , θ ( i ) ) P ( Y ∣ Z , θ ) P ( Z ∣ θ ) P ( Y ∣ Z , θ ( i ) ) ) − log P ( Y ∣ θ ( i ) ) ≥ ∑ Z P ( Y ∣ Z , θ ( i ) ) log P ( Y ∣ Z , θ ) P ( Z ∣ θ ) P ( Y ∣ Z , θ ( i ) ) − log P ( Y ∣ θ ( i ) ) = ∑ Z P ( Y ∣ Z , θ ( i ) ) log P ( Y ∣ Z , θ ) P ( Z ∣ θ ) P ( Y ∣ Z , θ ( i ) ) P ( Y ∣ θ ( i ) ) \begin{aligned} L(\theta)-L(\theta^{(i)}) &= \log\left(\sum_{Z}P(Y |Z,\theta^{(i)})\frac{P(Y |Z,\theta)P(Z|\theta)}{P(Y |Z,\theta^{(i)})}\right) - \log P(Y|\theta^{(i)}) \\ &\geq \sum_{Z}P(Y |Z,\theta^{(i)})\log\frac{P(Y |Z,\theta)P(Z|\theta)}{P(Y |Z,\theta^{(i)})} - \log P(Y|\theta^{(i)}) \\ &= \sum_{Z}P(Y |Z,\theta^{(i)})\log\frac{P(Y |Z,\theta)P(Z|\theta)}{P(Y |Z,\theta^{(i)})P(Y|\theta^{(i)})} \end{aligned} L(θ)−L(θ(i))=log(Z∑P(Y∣Z,θ(i))P(Y∣Z,θ(i))P(Y∣Z,θ)P(Z∣θ))−logP(Y∣θ(i))≥Z∑P(Y∣Z,θ(i))logP(Y∣Z,θ(i))P(Y∣Z,θ)P(Z∣θ)−logP(Y∣θ(i))=Z∑P(Y∣Z,θ(i))logP(Y∣Z,θ(i))P(Y∣θ(i))P(Y∣Z,θ)P(Z∣θ) 到这里,我们得到了更新后的一个下界,当然不是下确界:
L ( θ ) ≥ L ( θ ( i ) ) + ∑ Z P ( Y ∣ Z , θ ( i ) ) log P ( Y ∣ Z , θ ) P ( Z ∣ θ ) P ( Y ∣ Z , θ ( i ) ) P ( Y ∣ θ ( i ) ) L(\theta) \geq L(\theta^{(i)}) + \sum_{Z}P(Y |Z,\theta^{(i)})\log\frac{P(Y |Z,\theta)P(Z|\theta)}{P(Y |Z,\theta^{(i)})P(Y|\theta^{(i)})} L(θ)≥L(θ(i))+Z∑P(Y∣Z,θ(i))logP(Y∣Z,θ(i))P(Y∣θ(i))P(Y∣Z,θ)P(Z∣θ)
任何使这个下界增大的 θ \theta θ 都可以使我们的目标函数增大,此时我们希望使这个下界尽可能增大,即求解: θ ( i + 1 ) = arg max θ [ L ( θ ( i ) ) + ∑ Z P ( Y ∣ Z , θ ( i ) ) log P ( Y ∣ Z , θ ) P ( Z ∣ θ ) P ( Y ∣ Z , θ ( i ) ) P ( Y ∣ θ ( i ) ) ] \theta^{(i+1)} = \arg\max_{\theta}\left[ L(\theta^{(i)}) + \sum_{Z}P(Y |Z,\theta^{(i)})\log\frac{P(Y |Z,\theta)P(Z|\theta)}{P(Y |Z,\theta^{(i)})P(Y|\theta^{(i)})} \right] θ(i+1)=argθmax[L(θ(i))+Z∑P(Y∣Z,θ(i))logP(Y∣Z,θ(i))P(Y∣θ(i))P(Y∣Z,θ)P(Z∣θ)] 求解过程非常直接,我们去掉与 θ \theta θ 无关的项,得到:
θ ( i + 1 ) = arg max θ ( ∑ Z P ( Z ∣ Y , θ ( i ) ) log P ( Y , Z ∣ θ ) ) = arg max θ Q ( θ , θ ( i ) ) \theta^{(i+1)} = \arg\max_{\theta} \left( \sum_{Z}P(Z|Y,\theta^{(i)})\log P(Y,Z|\theta) \right) = \arg\max_{\theta}Q(\theta,\theta^{(i)}) θ(i+1)=argθmax(Z∑P(Z∣Y,θ(i))logP(Y,Z∣θ))=argθmaxQ(θ,θ(i)) 反复执行上述过程即可。EM算法的收敛性此处不做讨论。EM算法的另外一个推导参考此文。
总结一下,EM算法可分为如下几步:
- 初始化参数 θ ( 1 ) \theta^{(1)} θ(1),注意EM算法对初值是敏感的。
- E 步:基于 θ ( i ) \theta^{(i)} θ(i),求出 Q ( θ , θ ( i ) ) Q(\theta,\theta^{(i)}) Q(θ,θ(i))。即求期望。
- M 步:以 θ \theta θ 为参数极大化 Q ( θ , θ ( i ) ) Q(\theta,\theta^{(i)}) Q(θ,θ(i)),得到 θ ( i + 1 ) \theta^{(i+1)} θ(i+1)。
- 当参数变化足够小时停止迭代,否则返回步骤2。
EM算法其实是在给定观测数据的情况下最大化完全数据的似然。
这里给出一个混合伯努利分布的例子,简单展示一下EM算法的执行步骤。
假设有一类二值化的数据: x n = { 000110 … } x_{n} = \{000110\dots\} xn={ 000110…} 其中 [ x n ] i = 0 or 1 , i = 1 , 2 , … , D [x_{n}]_{i} = 0 \text