1. 什么是EM算法
EM算法主要用于求解具有隐变量的最大似然问题。一般我们在求最大似然时,会有以下式子:
对这个式子取对数得到:
但是有时候我们不能直接计算出$P(x_i|\theta)$,$P(x_i|\theta)$的计算需要一个中间变量使用全概率求得,即:
所以现在求最大似然等价于求下式:
正常的求解思路就是使用上式对$\theta$求导,令导数为0,然后解出最佳的$\theta$。但是注意到求对数内部还有一个求和,如果$P(x_i,z|\theta)$有着高斯分布或其他分布的形式,那么导数形式会非常难看,这时候EM算法就派上用场了。
2. 怎么使用EM算法求解
在使用EM算法之前,有一个很重要的不等式需要介绍一下,这个不等式就是琴生不等式。琴生不等式有以下形式:
其中$f(x)$是凸函数。如果$f(x)$是凹函数,则琴生不等式有以下形式:
琴生不等式取等号的条件是变量$x$是一个常数。
现在我们对最大似然式子变换一下得到:
已知对数函数是一个凸函数,我们将$\frac{P(x_i,z|\theta)}{Q_i(z)}$看作变量$x$,将对数函数看作函数$f$,将$Q_i(z)$看作随机变量$x$的分布,则根据琴生不等式有:
EM算法有两个步骤,第一个步骤是E步,使上述不等式取等号;第二步是M步,最大化下界。要使不等式取等号,需要使得$\frac{P(x_i,z|\theta)}{Q_i(z)}$是常数。已知$Q_i(z)$是一个分布,所以有:
所以有:
所以有:
所以$Q_i(z)$是关于变量$z$的后验概率$P(z|x_i,\theta)$。这就是EM算法的E步,根据当前的$\theta$求出关于隐变量$z$的后验概率。接下来,EM算法的M步,将$Q_i(z)$固定看作与$\theta$无关,使用琴生不等式的右边对$\theta$求导并令导数等于0,解出一个新的参数$\theta$最大化琴生不等式的右边式子,即最大化下界。现在通过M步得到一个新的$\theta$就可以利用当前$\theta$更新$Q_i(z)$,然后固定$Q_i(z)$更新$\theta$到达更大的下界,循环往复直到收敛。
现在总结一下EM算法的步骤:
(1) 列出最大似然式子
(2) 将最大似然式子分解出隐变量,并将最大似然式子转换成对数最大似然式子
(3) 使用琴生不等式得到对数最大似然式子的下界
(4) 选择一个$\theta$作为初值
(5) E步:利用$\theta$求出$Q_i(z)$,使琴生不等式取等号
(6) M步:固定$Q_i(z)$,使用下界对$\theta$求导令导数为0,找到一个新的$\theta$极大化下界
(7) 重复(5)(6)两步,直到收敛
3. 其他
EM算法的出现,使得具有隐变量的式子也可以求最大似然。但是EM算法是对似然函数的下界求极大值,所以可能会达到局部最优而无法达到全局最优,能否达到全局最优取决于初值的设定。EM算法对初值的设置是敏感,即$\theta$的初始设置对EM算法的效果有一定的影响,所以往往会设定不同的初值使用EM算法多次求解,从而缓解初值设置对EM算法效果的影响。