机器学习 之 EM算法

EM(Expectation-Maximum)算法也称期望最大化算法
EM算法是最常见的隐变量估计方法,在机器学习中有极为广泛的用途,例如常被用来学习高斯混合模型(Gaussian mixture model,简称GMM)的参数;隐式马尔科夫算法(HMM)。有隐含参数的模型是无法用极大似然估计计算的。

EM算法解决这个的思路是使用启发式的迭代方法,
我们可以先猜想隐含数据(EM算法的E步),
接着基于观察数据和猜测的隐含数据一起来极大化对数似然,求解我们的模型参数(EM算法的M步)。
我们基于当前得到的模型参数,继续猜测隐含数据(EM算法的E步),然后继续极大化对数似然,求解我们的模型参数(EM算法的M步)。以此类推,不断的迭代下去,直到模型分布参数基本无变化,算法收敛,找到合适的模型参数。

下面是公式推导:
这里有 n n n个样本 D = ( D 1 , D 2 , . . . D n ) D=(D_1, D_2,...D_n) D=(D1,D2,...Dn),我们要得出模型参数 θ \theta θ,按理说极大似然函数为:
θ = a r g m a x θ ∑ i = 1 n l o g P ( D i ∣ θ ) \theta = argmax_\theta \sum^n_{i=1}logP(D_i|\theta) θ=argmaxθi=1nlogP(Diθ)

但是这里有隐变量 z z z( n n n个,与样本数量相同,例如掷骰子顺序),此时最大似然的对数函数为:
θ = a r g m a x θ ∑ i = 1 n l o g ∑ z i P ( D i , z i ∣ θ ) \theta = argmax_\theta \sum^n_{i=1}log\sum_{z_i} P(D_i,z_i|\theta) θ=argmaxθi=1nlogziP(Di,ziθ)

这就没办法求了,因此这里用杰森不等式放缩:
∑ i = 1 n log ⁡ ∑ z i P ( D i , z i ∣ θ ) = ∑ i = 1 n log ⁡ ∑ z i Q i ( z i ) P ( D i , z i ∣ θ ) Q i ( z i ) ≤ ∑ i = 1 n ∑ z i Q i ( z i ) log ⁡ P ( D i , z i ∣ θ ) Q i ( z i ) \sum^n_{i=1}\log\sum_{z_i} P(D_i,z_i|\theta)=\sum^n_{i=1}\log\sum_{z_i} Q_i(z_i)\frac{P(D_i,z_i|\theta)}{Q_i(z_i)}\\ \leq \sum^n_{i=1}\sum_{z_i} Q_i(z_i)\log \frac{P(D_i,z_i|\theta)}{Q_i(z_i)} i=1nlogziP(Di,ziθ)=i=1nlogziQi(zi)Qi(zi)P(Di,ziθ)i=1nziQi(zi)logQi(zi)P(Di,ziθ)

杰森不等式相等时,有
P ( x i , z i ∣ θ ) Q i ( z i ) = c ∑ z p ( x i z i ∣ θ ) = c Q i ( z i ) = P ( x i , z i ∣ θ ) ∑ z p ( x i z i ∣ θ ) = P ( z i ∣ x i , θ ) \frac{P(x_i,z_i|\theta)}{Q_i(z_i)}=c\\ \sum_zp(x_iz_i|\theta)=c\\ Q_i(z_i)=\frac{P(x_i,z_i|\theta)}{\sum_zp(x_iz_i|\theta)}=P(z_i|x_i,\theta) Qi(zi)P(xi,ziθ)=czp(xiziθ)=cQi(zi)=zp(xiziθ)P(xi,ziθ)=P(zixi,θ)
在这里插入图片描述
现在我们总结下EM算法的流程。

例如身高统计,男女不知,就这么一串数字。可以先确定男生的分布为N(175, 5)(必须知道分布,就像极大似然一样,都要先知道分布才行),女生为N(163, 5)(这里就体现了初始参数是非常重要的,初始值设不对会有严重错误,并且每个初始值确实有不同才行)。

然后先根据这个默认分布求出每个人是男是女。
然后用分好的男女数据分别训练男女概率分布,更新参数。
就这样循环J次,直到不再发生变动(收敛),完成,这样不仅想求的参数也求出来了,每个人是男是女也求出来了(隐变量)。

例如求硬币的模型,就一串正反,可以先确定每个硬币的模型,然后判断这个正反是哪个硬币掷出来的(实际上,这样就没道理了,数据应该是一共n组,每组掷m次),这样才有意义,这样求出每组是哪个硬币掷出来的。
然后根据所得结果分别最大似然对应的模型,然后用修正的模型再预测硬币组,然后再分别最大似然,直到收敛。

每日小常识
EM算法能保证收敛吗?
EM算法如果收敛,那么能保证收敛到全局最大值吗?
首先我们来看第一个问题, EM算法的收敛性。要证明EM算法收敛,则我们需要证明我们的对数似然函数的值在迭代的过程中一直在增大(一直往峰上走,而不会下降,这就是收敛)。
在这里插入图片描述
完全是数学的方法,这些概率并没有什么现实的意义。
在这里插入图片描述
非常的不好做,恐怕也不会考,相比之下是太难了。技巧性太强(又用了一次杰森不等式)。

从上面的推导可以看出,EM算法可以保证收敛到一个稳定点,但是却不能保证收敛到全局的极大值点,因此它是局部最优的算法,当然,如果我们的优化目标L(θ,θj)L ( θ , θ j ) 是凸的,则EM算法可以保证收敛到全局最大值,这点和梯度下降法这样的迭代算法相同。至此我们也回答了上面提到的第二个问题。

如果我们从算法思想的角度来思考EM算法,我们可以发现我们的算法里已知的是观察数据,未知的是隐含数据和模型参数,在E步,我们所做的事情是固定模型参数的值,优化隐含数据的分布,而在M步,我们所做的事情是固定隐含数据分布,优化模型参数的值。比较下其他的机器学习算法,其实很多算法都有类似的思想。比如SMO算法(支持向量机原理(四)SMO算法原理),坐标轴下降法(Lasso回归算法: 坐标轴下降法与最小角回归法小结), 都使用了类似的思想来求解问题。

猜你喜欢

转载自blog.csdn.net/HeroIsUseless/article/details/109387542