EM算法公式推导
最近一直在B站上看一个UP主的机器学习白板推导,感觉很有益处,因为之前看过的各种博客似乎都一直强调对EM算法的感性认识,缺少了很多的推导过程。我想,要完全理性地了解这个算法,还是要一步一步地通过推导。
主要参考资料:白板推导视频
以下所有推导公式都是latex手打。
参数估计与EM算法
EM算法解决的其实是一个参数估计的问题。在普通的参数估计中
我们要做的其实是
θ=argmaxP(X∣θ)
其中X是现有的已知数据(观测变量),而
θ则是参数,这个参数代表的可以只有一个参数,也可以是很多参数。
在概率统计中其实我们学过参数估计的方法,也就是矩估计法估计和极大似然估计。我们在实际中用的更多的是极大似然估计,在及算法的过程中常常有一个技巧,将连乘后的结果取log为底,这也就有了对数似然的这个概念。如下图所示:
L(X;θ)=P(x1∣θ)⋅P(x2∣θ)⋯P(xn∣θ)
logL(X;θ)=i=i∑nlog(xi∣θ)
最后对
θ进行求导并为0,可以得到
θ^关于
X的表达式。
回到EM算法,EM算法要解决的也就是一个参数估计的问题,但很多参数估计问题,你所知道的仅仅是观测变量,也就是
X,有很多问题还有隐变量(latent variables),这里用
Z来表示。
举个例子,在高斯分布中,如果要估计
μ和
σ其实很简单,根据刚刚所给出的极大似然估计公式,可以得到
μ^=Xˉ,
σ^2=∑i=1n(xi−Xˉ)2
但在也就是高斯混合模型 GMM中,我们得到了由这个分布生成了诸多数据X,求的是各个单独高斯模型的均值和方差,也就是
θ,但还有一个隐变量
Z我们是不知道的,也是生成
X这组数据的关键:每个点(
xi)到底是由哪一个高斯分布生成的。
所以,我们看似求的是
θ=argmaxP(X∣θ)
实际上求的是
θ=argmaxP(X,Z∣θ)
所以在EM算法的整个过程大致就是:
先计算
Z的期望
Ez∣x,θ(t)[logP(X,Z∣θ)],也就是EM的E-step(Expectation)
再求得
θ(t+1)=θargmaxEz∣x,θ(t)[logP(X,Z∣θ)],也就是EM的M-step(Maximization)。
以此往复迭代,最后得到我们所要的
θ
所以看出来了,EM是一个迭代算法,可以写出
θ的迭代公式:
θ(t+1)=θargmax∫zlogP(x,z∣θ)⋅P(z∣x,θ(t))dz
=θargmaxEz∣x,θ(t)[logP(x,z∣θ)]
EM算法的收敛性证明
实际上我们要证明的是下式,也就是说在不断迭代的过程中,对数似然在不断增加。
logP(x∣θ(t))⩽logP(x∣θ(t+1))
现在我们令
f(x)=logP(x∣θ)
也即是要证明:
f(θ(t))−f(θ(t+1))≤0
f(x)==∫zf(x)P(z∣x,θ(t))dz=−logP(x∣θ)=logP(z∣x,θ)P(x,z∣θ)logP(x,z∣θ)−logP(z∣x,θ)∫z[logP(x,z∣θ)]P(z∣x,θ(t))dz∫z[logP(z∣x,θ)]P(z∣x,θ(t))dz
最后一步是对左右两边同时求
Ez∣x,θ期望。左边由于
f(x)与
z无关,所以积分后仍然为
f(x)。
f(θ(t))−f(θ(t+1))=−−+∫z[logP(x,z∣θ(t))]P(z∣x,θ(t))dz∫z[logP(z∣x,θ(t))]P(z∣x,θ(t))dz∫z[logP(x,z∣θ(t+1))]P(z∣x,θ(t))dz∫z[logP(z∣x,θ(t+1))]P(z∣x,θ(t))dz
一共有四项加减,我们证明第一项和第三项和小于等于0,再证明第二项和第四项和小于等于0。
注意到
θ(t+1)=θargmax∫zlogP(x,z∣θ)⋅P(z∣x,θ(t))dz
所以
∫zlogP(x,z∣θ(t+1))⋅P(z∣x,θ(t))dz≥∫zlogP(x,z∣θ(t))⋅P(z∣x,θ(t))dz
要注意
θ和
θ(t)是不一样的,
θ是一个变量,而在计算
θ(t+1)时
θ(t)是一个已知量(常量)。
再有
−∫z[logP(z∣x,θ(t))]P(z∣x,θ(t))dz+∫z[logP(z∣x,θ(t+1))]P(z∣x,θ(t))dz=∫zP(z∣x,θ(t))logP(z∣x,θ(t))P(z∣x,θ(t+1))dx=−KL(P(z∣x,θ(t))∣∣P(z∣x,θt+1))≤0
也可以用Jensen Inequation来证明小于等于0。
综上,可以得到
f(θ(t))−f(θ(t+1))≤0
也就证明得到
logP(x∣θ(t))⩽logP(x∣θ(t+1))
EM算法的收敛性证明到此。