最大期望算法(Expectation-Maximization algorithm, EM),或Dempster-Laird-Rubin算法,是一类通过迭代进行极大似然估计(Maximum Likelihood Estimation, MLE)的优化算法,通常作为牛顿迭代法(Newton-Raphson method)的替代用于对包含隐变量(latent variable)或缺失数据(incomplete-data)的概率模型进行参数估计。
EM算法的标准计算框架由E步(Expectation-step,求期望)和M步(Maximization step,求最大值)交替组成,算法的收敛性可以确保迭代至少逼近局部极大值。
概率模型有时既含有观测变量,又含有隐变量或潜在变量。如果概率模型的变量都是观测变量,那么给定数据,可以直接用极大似然估计法,或贝叶斯估计法估计模型参数。
但是当模型中含有隐变量时,就不能简单的使用这些估计方法。EM算法就是含有隐变量的概率模型参数的极大似然估计,或极大后验概率估计法。
下面给出详细的推导过程:
给定一组训练样本 x 1 , x 2 , . . . x n {x_{1},x_{2},...x_{n}} x1,x2,...xn,样本间独立,我们想找到每个样本间隐含的类别 z z z,能使 p ( x , z ) p(x,z) p(x,z)最大。
通过最大似然估计建立目标函数,其中 θ θ θ是需要估计的模型参数:
f ( x ∣ θ ) = ∏ i = 1 m P ( x i ∣ θ ) (1) f(x|θ) = \prod_{i=1}^{m}P(x_i|θ) \tag{1} f(x∣θ)=i=1∏mP(xi∣θ)(1)
对其取对数,则所以公式(1)又可以写成公式(2):
l ( θ ) = l o g f ( x ∣ θ ) = ∑ i m l o g P ( x ∣ θ ) = ∑ i m l o g ∑ z P ( x , z ∣ θ ) (2) l(θ)=logf(x|θ)=\sum_{i}^{m}logP(x|θ)\\ =\sum_{i}^{m}log\sum_zP(x,z|θ)\tag{2} l(θ)=logf(x∣θ)=i∑mlogP(x∣θ)=i∑mlogz∑P(x,z∣θ)(2)
式中第一个等号是对极大似然估计取对数,第二步是对每个样例间的每个可能类别z求联合分布概率和。
通过这个式子去求 l ( θ ) l(\theta) l(θ)还是很懵。
假如,存在一个下界 J J J,使得 l ( θ ) ≥ J l(\theta) ≥ J l(θ)≥J成立
那么对于如何求解最大的 l ( θ ) l(\theta) l(θ)就变得稍微容易点了:
对于 l ( θ ) l(\theta) l(θ)的下界 J J J,使得 J J J不断增大,那么 l ( θ ) l(\theta) l(θ)也会不断增大。当 J J J收敛时, l ( θ ) l(\theta) l(θ)也随之达到最大值。
此时,问题就转移到了 J J J这个下界的函数推导以及求其最大值上了
这时就会用到著名的Jensen不等式了:
对于每一个样本 x i x_{i} xi,用 Q i Q_{i} Qi表示该样本隐含变量z的某种分布,那么 Q i Q_{i} Qi满足条件是:
∑ z Q i ( z ) = 1 , Q i ( z ) ≥ 0 \sum_{z}Q_i(z) = 1,Q_i(z) \geq 0 z∑Qi(z)=1,Qi(z)≥0
于是对于(2)上下同乘以 Q i ( z ( i ) ) Q_i(z^{(i)}) Qi(z(i)):
l ( θ ) = ∑ i m l o g ∑ z P ( x , z ∣ θ ) = ∑ i m l o g ∑ z Q i ( z ( i ) ) P ( x , z ∣ θ ) Q i ( z ( i ) ) (3) \begin{aligned} l(\theta) &= \sum_{i}^{m}log\sum_zP(x,z|θ)\\ &= \sum_{i}^{m}log\sum_z Q_i(z^{(i)}) \frac {P(x,z|θ)} {Q_i(z^{(i)})} \tag{3} \end{aligned} l(θ)=i∑mlogz∑P(x,z∣θ)=i∑mlogz∑Qi(z(i))Qi(z(i))P(x,z∣θ)(3)
由于 ∑ z Q i ( z ) = 1 \sum_{z}Q_i(z) = 1 ∑zQi(z)=1。用到Jensen不等式,则有:
l ( θ ) = ∑ i m l o g ∑ z Q i ( z ( i ) ) P ( x , z ∣ θ ) Q i ( z ( i ) ) ≥ ∑ i m ∑ z Q i ( z ( i ) ) l o g P ( x , z ∣ θ ) Q i ( z ( i ) ) (4) \begin{aligned} l(\theta) &= \sum_{i}^{m}log\sum_z Q_i(z^{(i)}) \frac {P(x,z|θ)} {Q_i(z^{(i)})}\\ & \geq \sum_{i}^{m}\sum_z Q_i(z^{(i)})log \frac {P(x,z|θ)} {Q_i(z^{(i)})} \tag{4} \end{aligned} l(θ)=i∑mlogz∑Qi(z(i))Qi(z(i))P(x,z∣θ)≥i∑mz∑Qi(z(i))logQi(z(i))P(x,z∣θ)(4)
到这里, J J J就已经出来了。即:
l ( θ ) ≥ J ( z , Q ) = ∑ i m ∑ z Q i ( z ( i ) ) l o g P ( x , z ∣ θ ) Q i ( z ( i ) ) (5) \begin{aligned} l(\theta) &\geq J(z, Q)\\ &= \sum_{i}^{m}\sum_z Q_i(z^{(i)})log \frac {P(x,z|θ)} {Q_i(z^{(i)})}\tag{5} \end{aligned} l(θ)≥J(z,Q)=i∑mz∑Qi(z(i))logQi(z(i))P(x,z∣θ)(5)
而 J J J 中 ∑ z Q i ( z ( i ) ) l o g P ( x , z ∣ θ ) Q i ( z ( i ) ) \sum_z Q_i(z^{(i)})log \frac {P(x,z|θ)} {Q_i(z^{(i)})} ∑zQi(z(i))logQi(z(i))P(x,z∣θ)就是变量 P ( x , z ∣ θ ) Q i ( z ( i ) ) \frac {P(x,z|θ)} {Q_i(z^{(i)})} Qi(z(i))P(x,z∣θ)的期望。
设Y是随机变量X的函数,Y = g(X),那么:
若X是离散型变量,它的分布律有 P ( X = x k ) = p k , k = 1 , 2 , 3 , . . . 。 P(X = x_k) = p_k,k=1,2,3,...。 P(X=xk)=pk,k=1,2,3,...。
若 ∑ k = 1 ∞ g ( x k ) p k \sum_{k=1}^{\infty}g(x_k)p_k ∑k=1∞g(xk)pk绝对收敛,则:
E ( Y ) = E ( g ( X ) ) = ∑ k = 1 ∞ g ( x k ) p k E(Y) = E(g(X)) = \sum_{k=1}^{\infty}g(x_k)p_k E(Y)=E(g(X))=k=1∑∞g(xk)pk
对于上面的式子(5),Y是 p ( x ( i ) , z ( i ) ; θ ) Q i ( z ( i ) ) \frac{p(x^{(i)},z^{(i)};\theta)}{Q_{i}(z^{(i)})} Qi(z(i))p(x(i),z(i);θ),X对应于 z ( i ) z^{(i)} z(i), Q i ( z ( i ) ) Q_{i}(z^{(i)}) Qi(z(i))是 p k p_k pk。
故: ∑ z Q i ( z ( i ) ) l o g P ( x , z ∣ θ ) Q i ( z ( i ) ) \sum_z Q_i(z^{(i)})log \frac {P(x,z|θ)} {Q_i(z^{(i)})} ∑zQi(z(i))logQi(z(i))P(x,z∣θ)就是变量 P ( x , z ∣ θ ) Q i ( z ( i ) ) \frac {P(x,z|θ)} {Q_i(z^{(i)})} Qi(z(i))P(x,z∣θ)的期望。
l ( θ ) ≥ J ( z , Q ) l(\theta)\geq J(z,Q) l(θ)≥J(z,Q),那么我们可以通过不断最大化这个下界,来使得 l ( θ ) l(\theta) l(θ)不断提高,最终达到它的最大值。
其实到这里,E步基本就完成了。
整个E步过程可以看作是对 l ( θ ) l(\theta) l(θ)求了下界。
对于 Q i Q_{i} Qi的选择,有许多种可能,那么哪一种更好呢?不妨假定 θ \theta θ已经给定,那么 l ( θ ) l(\theta) l(θ)的值就取决于 Q i ( z ( i ) ) Q_{i}(z^{(i)}) Qi(z(i))和 p ( x ( i ) , z ( i ) ) p(x^{(i)},z^{(i)}) p(x(i),z(i))了。通过调整这两个参数使得下界不断上升,以逼近 l ( θ ) l(\theta) l(θ)的真实值。
那么什么时候算是调整好了呢?当然是当等号成立时,说明调整后的值等价于 l ( θ ) l(\theta) l(θ)了。
按照这个思路,我们要找到等式成立的条件,根据Jensen不等式,要想让等式成立,需要让随机变量变成常数值:
也就是 X 1 = X 2 = . . . = X k X_1 = X_2 = ... = X_k X1=X2=...=Xk,进而 g ( X 1 ) = g ( X 2 ) = . . . = g ( X k ) g(X_1) = g(X_2) = ... = g(X_k) g(X1)=g(X2)=...=g(Xk)。
即: g ( x k ) = C g(x_k) = C g(xk)=C,其中c为常数,并不依赖于 z ( i ) z^{(i)} z(i)。
也就得到:
g ( X k ) = p ( x ( i ) , z ( i ) ∣ θ ) Q i ( z ( i ) ) = C (6) g(X_k) = \frac{p(x^{(i)},z^{(i)}|\theta)}{Q_{i}(z^{(i)})} = C\tag{6} g(Xk)=Qi(z(i))p(x(i),z(i)∣θ)=C(6)
所以:
C = ∑ z p ( x ( i ) , z ( i ) ∣ θ ) ∑ z Q i ( z ( i ) ) = ∑ z p ( x ( i ) , z ( i ) ∣ θ ) \begin{aligned} C &= \frac{\sum_zp(x^{(i)},z^{(i)}|\theta)}{\sum_zQ_{i}(z^{(i)})} \\ &= \sum_zp(x^{(i)},z^{(i)}|\theta) \end{aligned} C=∑zQi(z(i))∑zp(x(i),z(i)∣θ)=z∑p(x(i),z(i)∣θ)
即: C = ∑ z p ( x ( i ) , z ( i ) ∣ θ ) C = \sum_zp(x^{(i)},z^{(i)}|\theta) C=∑zp(x(i),z(i)∣θ)。
将该式子带回到(6)中:
p ( x ( i ) , z ( i ) ∣ θ ) Q i ( z ( i ) ) = ∑ z p ( x ( i ) , z ( i ) ∣ θ ) \frac{p(x^{(i)},z^{(i)}|\theta)}{Q_{i}(z^{(i)})} = \sum_zp(x^{(i)},z^{(i)}|\theta) Qi(z(i))p(x(i),z(i)∣θ)=z∑p(x(i),z(i)∣θ)
所以:
Q i ( z ( i ) ) = p ( x ( i ) , z ( i ) ∣ θ ) ∑ z p ( x ( i ) , z ( i ) ∣ θ ) = p ( x ( i ) , z ( i ) ∣ θ ) p ( x i ∣ θ ) = p ( z ( i ) ∣ x ( i ) , θ ) \begin{aligned} Q_{i}(z^{(i)}) &= \frac{p(x^{(i)},z^{(i)}|\theta)}{\sum_zp(x^{(i)},z^{(i)}|\theta)} \\ &= \frac{p(x^{(i)},z^{(i)}|\theta)}{p(x_{i}|\theta)}\\ &= p(z^{(i)}|x^{(i)},\theta) \end{aligned} Qi(z(i))=∑zp(x(i),z(i)∣θ)p(x(i),z(i)∣θ)=p(xi∣θ)p(x(i),z(i)∣θ)=p(z(i)∣x(i),θ)
至此,我们在固定参数 θ \theta θ后, Q i ( z ( i ) ) Q_{i}(z^{(i)}) Qi(z(i))的计算公式就是后验概率,接下来就是M步,就是在给定 Q i ( z ( i ) ) Q_{i}(z^{(i)}) Qi(z(i))后,调整 θ \theta θ,去极大化 l ( θ ) l(\theta) l(θ)的下界 J ( z , Q ) J(z,Q) J(z,Q)。
当 J ( z , Q ) J(z,Q) J(z,Q)收敛时, l ( θ ) l(\theta) l(θ)的最大值也迭代出来了。
其实,整个EM算法归纳下来理解还是比较容易的:
(1)E-Step:
对于每一个i,计算:
Q i ( z ( i ) ) = p ( z ( i ) ∣ x ( i ) , θ ) Q_{i}(z^{(i)}) = p(z^{(i)}|x^{(i)},\theta) Qi(z(i))=p(z(i)∣x(i),θ)
(2)M-Step:
计算:
θ = a r g m a x θ ∑ i m ∑ z Q i ( z ( i ) ) l o g P ( x , z ∣ θ ) Q i ( z ( i ) ) \theta = \underset{\theta}{argmax}\sum_{i}^{m}\sum_z Q_i(z^{(i)})log \frac {P(x,z|θ)} {Q_i(z^{(i)})} θ=θargmaxi∑mz∑Qi(z(i))logQi(z(i))P(x,z∣θ)