1、EM算法
EM算法是针对含有隐变量的一种优化算法,如果不含有隐变量,我们可以直接利用极大似然估计方法,对需要优化的变量求导,用梯度下降的方法进行参数的更新。而当变量中含有隐变量时,就无法用极大似然估计方法,就需要用到EM算法进行迭代的求解,EM算法分为两步,第一步是E步,即得到隐变量的期望,第二步是M步,即需要更新需要优化的参数。公式如下所示
- step1:E步
[Q( heta, heta^{i}) = sumlimits_{Z} P(Z | Y, heta^{i}) log P(Y , Z| heta)
]
第一步是求期望,这里的期望是对隐变量的期望,这里,我们首先根据先验知识获得( heta^{i}),这样我们便可以得到(P(Z | Y, heta^{i})),这个公式表示在已知( heta^{i})的情况下,我们通过样本数据得到在每一个隐变量上的概率值,通过该概率值,便可以求出(P(Y , Z| heta)),但是这里的( heta)是未知变量,我们进而对( heta)进行求导,并令求导公式等于0,得到更新的( heta^{i+1}),即M步。
- step1:M步
[ heta^{i+1} = mathop{argmax}_{ heta} Q( heta, heta^{i})
]
2、EM算法解释
下面,我们来讲解EM算法是如何得出来的。首先,得到需要优化的函数
[L( heta) = log P(Y | heta) \
= log sumlimits_{Z} P(Y,Z| heta) \
= log sumlimits_{Z} P(Z | heta) P(Y | Z, heta)
]
接下来,我们定义
[L( heta) - L( heta^{i}) = log sumlimits_{Z} P(Z | heta) P(Y | Z, heta) - log P(Y | heta^{i}) \
= log sumlimits_{Z} P(Z | Y, heta^{i}) frac {P(Z | heta) P(Y | Z, heta)} {P(Z | Y, heta^{i})} - log P(Y | heta^{i}) \
根据jensen不等式可以得到 \
>= sumlimits_{Z} P(Z | Y, heta^{i}) log frac {P(Z | heta) P(Y | Z, heta)} {P(Z | Y, heta^{i})} - log P(Y | heta^{i}) \
= sumlimits_{Z} P(Z | Y, heta^{i}) log frac {P(Z | heta) P(Y | Z, heta)} {P(Z | Y, heta^{i}) P(Y | heta^{i})}
]
我们令
[B( heta, heta^{i}) = L( heta^{i}) + sumlimits_{Z} P(Z | Y, heta^{i}) log frac {P(Z | heta) P(Y | Z, heta)} {P(Z | Y, heta^{i}) P(Y | heta^{i})} \
则 L( heta) >= B( heta, heta^{i})
]
在什么时候(L( heta))和(B( heta, heta^{i}))两者相等呢?其实在(L( heta^{i})=B( heta^{i}, heta^{i}))时两者相等,即在( heta= heta^{i})的时候两者相等,由这个等式可知,(L( heta^{i}))和(B( heta^{i}, heta^{i}))同增同减,那么我们只需要最大化(B( heta, heta^{i}))就可以更新( heta)了,即
[ heta^{i+1} = mathop{argmax}_{ heta} B( heta, heta^{i}) \
= mathop{argmax}_{ heta} L( heta^{i}) + sumlimits_{Z} P(Z | Y, heta^{i}) log frac {P(Z | heta) P(Y | Z, heta)} {P(Z | Y, heta^{i}) P(Y | heta^{i})} \
= mathop{argmax}_{ heta} sumlimits_{Z} P(Z | Y, heta^{i}) log P(Z | heta) P(Y | Z, heta) \
= mathop{argmax}_{ heta} Q( heta, heta^{i})
]