什么是EM算法
EM算法属于似然思想下,对于模型参数更新的方法。具体而言,我们以神经网络为例,我们记这个神经网络的所有参数为 θ \theta θ,可以观测到的因变量为 y y y,不可观测的因素(隐变量)记为 x x x。通过EM算法,我们可以将参数 θ \theta θ更新到使得可观测变量 y y y的log likelihood变得最大,或者说最贴合我们的数据分布。
问题描述与化简
我们要优化的函数是:
L ( θ ) = log p ( y ∣ θ ) \mathcal{L}(\theta) = \log p(y|\theta) L(θ)=logp(y∣θ)
但是这个函数我们不太好操作,我们对它做一个变换
L ( θ ) = log ∫ p ( x , y ∣ θ ) d x \begin{aligned} \mathcal{L}(\theta) & =\log \int p(x,y|\theta)dx \\ \end{aligned} L(θ)=log∫p(x,y∣θ)dx
对于任意一个 x x x的分布 q ( x ) q(x) q(x),我们将上式转化为
L ( θ ) = log ∫ q ( x ) p ( x , y ∣ θ ) q ( x ) d x \begin{aligned} \mathcal{L}(\theta)=\log \int q(x) \frac{p(x,y|\theta)}{q(x)}dx \end{aligned} L(θ)=log∫q(x)q(x)p(x,y∣θ)dx
通过Jensen不等式,我们有关系:
L ( θ ) = log ∫ q ( x ) p ( x , y ∣ θ ) q ( x ) d x ≤ ∫ q ( x ) log p ( x , y ∣ θ ) q ( x ) d x ≜ F ( q ( x ) , θ ) \begin{aligned} \mathcal{L}(\theta)=&\log \int q(x) \frac{p(x,y|\theta)}{q(x)}dx \\ \leq& \int q(x)\log \frac{p(x,y|\theta)}{q(x)}dx \triangleq \mathcal{F}(q(x),\theta) \end{aligned} L(θ)=≤log∫q(x)q(x)p(x,y∣θ)dx∫q(x)logq(x)p(x,y∣θ)dx≜F(q(x),θ)
这里我们得到的 F ( q ( x ) , θ ) \mathcal{F}(q(x), \theta) F(q(x),