EM算法简易推导

EM算法推导

网上和书上有关于EM算法的推导,都比较复杂,不便于记忆,这里给出一个更加简短的推导,用于备忘。算法

在不包含隐变量的状况下,咱们求最大似然的时候只须要进行求导使导函数等于0,求出参数便可。可是包含隐变量,直接求导就变得异常复杂,此时须要EM算法,首先求出隐变量的指望值(E步),而后,把隐变量当中常数,按照不包含隐变量的求解最大似然的方法解出参数(M步),反复迭代,最终收敛到局部最优。下面给出EM算法的推导函数

咱们有对数似然函数
\[ L(\theta)=\log P(y|\theta) = \log\sum_zp(y,z|\theta) \]
能够表示成包含隐变量\(z\)的形式,而后经过边缘化再消除\(z\),效果是同样的。spa

因为是迭代,咱们须要每次获得的新的似然结果比上一次的似然结果要大,因而咱们的目标是下式
\[ \theta = \arg\max_\theta L(\theta) - L(\theta') \]
因为$L(\theta') $ 是常量,因此,使得\(L(\theta)\)最大化便可。下面看看如何最大化 \(L(\theta)\) :
\[ \begin{split} \theta &= \arg\max_\theta L(\theta)\\ &= \arg\max_\theta \log\sum_zp(y,z|\theta)\\ &= \arg\max_\theta \log\sum_zp(z|y, \theta')\dfrac{p(y, z|\theta)}{p(z|y, \theta')}\\ &= \arg\max_\theta \sum_zp(z|y,\theta')\log\dfrac{p(y,z| \theta)}{p(z|y,\theta')}\\ &= \arg\max_\theta\sum_zp(z|y,\theta')\log(p(y, z|\theta))\\ &= \arg\max_\theta Q(\theta, \theta') \end{split} \]it

至此,获得传说中的Q函数,而后求解出参数\(\theta\)便可class

相关文章
相关标签/搜索