EM算法
目录
- 最大似然
- Jensen不等式
- 算法推导
- 算法收敛性
- 算法举例
- 代码
最大似然(极大似然)
最大似然估计是一种概率论在统计学的应用,它是参数估计的方法之一。说的是已知某个随机样本满足某种概率分布,但是其中具体的参数不清楚,参数估计就是通过若干次试验,观察其结果,利用结果推出参数的大概值。 最大似然估计是建立在这样的思想上:已知某个参数能使这个样本出现的概率最大,当然不会再去选择其他小概率的样本,所以就把这个参数作为估计的真实值。
假设需要调查学校的男生和女生的身高分布。肯定是抽样解决,假设你在校园里随便地询问100个男生和100个女生。他们共200个人(也就是200个身高的样本数据,为了方便表示,下面说“人”的意思即对应其身高)都在教室里面了。那之后怎么办?通过某种办法将男女生分开,然后你就先统计抽样得到的100个男生的身高。 假设他们的身高是服从高斯分布的,但是这个分布的均值 μμ 和方差 σ2σ2 不知道,这两个参数是需要估计的。 记作θ=[μ,σ]Tθ=[μ,σ]T。
用数学的语言来说:在学校那么多男生(身高)中,我们独立地按照概率密度 p(x|θ)p(x|θ) 抽取100个(身高)组成样本集XX. 我们想通过样本集XX 来估计出未知参数θθ。已知概率密度 p(x|θ)p(x|θ) 是高斯分布N(μ,σ)N(μ,σ)的形式,其中的未知参数是θ=[μ,σ]Tθ=[μ,σ]T。抽到的样本集是X={x1,x2,…,xN}X={x1,x2,…,xN},其中xixi表示抽到的第ii个人的身高,这里NN就是100,表示抽到的样本个数。
由于每个样本都是独立地从p(x|θ)p(x|θ)中抽取的,且可以认为这些男生之间是没有关系的。 那么从学校那么多男生中为什么就恰好抽到了这100个人呢?抽到这100个人的概率是多少呢? 因为这些男生(的身高)是服从同一个高斯分布p(x|θ)p(x|θ)的。那么抽到男生A(的身高)的概率是p(xA|θ)p(xA|θ),抽到男生B的概率是p(xB|θ)p(xB|θ)。又因为它们是独立的,所以同时抽到男生A和男生B的概率是p(xA|θ)⋅p(xB|θ)p(xA|θ)⋅p(xB|θ); 同理,我同时抽到这100个男生的概率就是他们各自概率的乘积了。换句话就是从分布是p(x|θ)p(x|θ)的总体样本中抽取到这100个样本的概率,也就是样本集X中各个样本的联合概率,用下式表示:
L(θ)=L(x1,…,xN;θ)=N∏i=1p(xi;θ),θ∈ΘL(θ)=L(x1,…,xN;θ)=N∏i=1p(xi;θ),θ∈Θ
这个概率反映了,在概率密度函数的参数是θθ时,得到XX这组样本的概率。因为这里XX是已知的,也就是说抽取到的这100个人的身高可以测出来,也就是已知的了。而θθ是未知的,则上面这个公式只有θθ是未知数,所以它是θθ的函数。这个函数放映的是在不同的参数θθ取值下,取得当前这个样本集的可能性,因此称为参数θθ相对于样本集XX的似然函数(likehood function)。 记为L(θ)L(θ)。
在学校那么男生中,抽到这100个男生(表示身高)而不是其他人,则表示在整个学校中,这100个人(的身高)出现的概率最大。那么这个概率就可以用上面那个似然函数L(θ)L(θ)来表示。只需要找到一个参数θθ,其对应的似然函数L(θ)L(θ)最大,也就是说抽到这100个男生(的身高)概率最大。这个叫做θθ的最大似然估计量,记为:
ˆθ=argmaxθL(θ)^θ=argmaxθL(θ)
因此,当知道每个样例属于的分布时,求解分布的参数直接利用最大似然估计或贝叶斯估计法即可。但是对于含有隐变量时,就不能直接使用这些估计方法。EM算法就是含有隐变量的概率模型参数的极大似然估计法。
Jensen不等式
设ff是定义域为实数的函数,如果对于所有的实数xx,f′′(x)≥0f′′(x)≥0,那么ff是凸函数; 当xx是向量时,如果其hessian矩阵H是半正定的(H≥0H≥0),那么ff是凸函数。 如果f′′(x)>0f′′(x)>0或者H>0H>0,那么称ff是严格凸函数。
Jensen不等式表述如下:
如果ff是凸函数,XX是随机变量,那么E[f(X)]≥f(EX)E[f(X)]≥f(EX)。 特别地,如果ff是严格凸函数,那么E[f(X)]=f(EX)E[f(X)]=f(EX)当且仅当p(X=EX)=1p(X=EX)=1,也就是说XX是常量。
下图表示会更清晰:
图中,实线ff是凸函数,XX是随机变量,有0.5的概率是a,有0.5的概率是b。XX的期望值就是a和b的中值了。 图中可以看到E[f(x)]≥f(EX)E[f(x)]≥f(EX)成立。
当f是(严格)凹函数当且仅当-f是(严格)凸函数。Jensen不等式应用于凹函数时,不等号方向反向,即E[f(X)]≤f(EX)E[f(X)]≤f(EX)。
算法推导
给定的训练样本是{x(1),…,x(m)}{x(1),…,x(m)},样例间独立,想找到每个样例隐含的类别zz,能使得p(x,z)p(x,z)最大。 p(x,z)p(x,z)的最大似然估计如下:
L(θ)=m∑i=1logp(x(i);θ)=m∑i=1log∑zp(x(i),z;θ)L(θ)=m∑i=1logp(x(i);θ)=m∑i=1log∑zp(x(i),z;θ)
前一步是对极大似然取对数,后一步是对每个样例的每个可能类别zz求联合分布概率和。
对于每一个样例x(i)x(i),让QiQi表示该样例隐含变量zz的某种分布,QiQi满足的条件是∑zQi(z)=1,Qi(z)≥0∑zQi(z)=1,Qi(z)≥0。 (如果zz是连续性的,那么QiQi是概率密度函数,需要将求和符号换做积分符号)。比如要将班上学生聚类,假设隐藏变量zz是身高,那么就是连续的高斯分布。 如果按照隐藏变量是男女,那么就是伯努利分布了。
可以由前面阐述的内容得到下面的公式:
∑ilogp(x(i);θ)=∑ilog∑zp(x(i),z;θ)=∑ilog∑zQi(z)p(x(i),z;θ)Qi(z)≥∑i∑zQi(z)logp(x(i),z;θ)Qi(z)∑ilogp(x(i);θ)=∑ilog∑zp(x(i),z;θ)=∑ilog∑zQi(z)p(x(i),z;θ)Qi(z)≥∑i∑zQi(z)logp(x(i),z;θ)Qi(z)(1)
第二个等号比较直接,就是分子分母同乘以一个相等的函数;最后不等号利用了Jensen不等式,考虑到 log(x) 是凹函数(二阶导数小于0)。而且 ∑zQi(z)p(x(i),z;θ)Qi(z)∑zQi(z)p(x(i),z;θ)Qi(z) 就是p(x(i),z;θ)Qi(z)p(x(i),z;θ)Qi(z)的期望
这个过程可以看作是对L(θ)L(θ)求了下界。对于QiQi的选择,有多种可能,哪种更好的? 假设θθ已经给定,那么L(θ)L(θ)的值就决定于Qi(z)Qi(z)和p(x(i),z)p(x(i),z)了。 可以通过调整这两个概率使下界不断上升,以逼近L(θ)L(θ)的真实值,什么时候算是调整好了呢? 当不等式变成等式时,说明调整后的概率能够等价于L(θ)L(θ)了。按照这个思路,根据Jensen不等式,等式成立当且仅当随机变量为常数值,即:
p(x(i),z;θ)Qi(z)=cp(x(i),z;θ)Qi(z)=c c为常数,不依赖于zz;
对此式子做进一步推导,知道∑zQi(z)=1∑zQi(z)=1,那么也就有∑zp(x(i),z;θ)=c∑zp(x(i),z;θ)=c,那么有下式:
Qi(z)=p(x(i),z;θ)∑zp(x(i),z;θ)=p(x(i),z;θ)p(x(i);θ)=p(z|x(i);θ)Qi(z)=p(x(i),z;θ)∑zp(x(i),z;θ)=p(x(i),z;θ)p(x(i);θ)=p(z|x(i);θ)(2)
至此,推出了在固定其他参数θθ后,Qi(z)Qi(z)的计算公式就是后验概率,解决了Qi(z)Qi(z)如何选择的问题。 这一步就是E步,建立L(θ)L(θ)的下界。接下来的M步,就是在给定Qi(z)Qi(z)后,调整θθ,极大化L(θ)L(θ)的下界(在固定Qi(z)Qi(z)后,下界还可以调整的更大)。
那么一般的EM算法的步骤如下:
- 选择参数的初始值θ(0)θ(0),开始迭代;
- (E步)对于每一个 ii,计算 Qi(z)=p(z|x(i);θ(t))Qi(z)=p(z|x(i);θ(t));
- (M步)计算 θ(t+1)=argmaxθ(t)∑i∑zQi(z)logp(x(i),z;θ(t))Qi(z)θ(t+1)=argmaxθ(t)∑i∑zQi(z)logp(x(i),z;θ(t))Qi(z);
- 重复2-3步,直到收敛。
算法收敛性
假定θ(t)θ(t)和θ(t+1)θ(t+1)是EM第 t 次和 t+1 次迭代后的结果。如果我们证明了L(θ(t))≤L(θ(t+1))L(θ(t))≤L(θ(t+1)),也就是说最大似然估计单调增加,那么最终会到达最大似然估计的最大值。下面来证明,选定θ(t)θ(t)后,我们得到E步
Qi(z)=p(z|x(i);θ(t))Qi(z)=p(z|x(i);θ(t))
这一步保证了在给定θ(t)θ(t)时,Jensen不等式中的等式成立,也就是
L(θ)=∑i∑zQ(t)i(z)logp(x(i),z;θ(t))Qi(z)L(θ)=∑i∑zQ(t)i(z)logp(x(i),z;θ(t))Qi(z)
然后进行M步,固定Q(t)i(z)Q(t)i(z),并将θ(t)θ(t)视作变量,对上面的L(θ(t))L(θ(t))求导后,得到L(θ(t+1))L(θ(t+1)),这样经过一些推导会有以下式子成立:
L(θ(t+1))≥∑i∑zQ(t)i(z)logp(x(i),z;θ(t+1))Qi(z)≥∑i∑zQ(t)i(z)logp(x(i),z;θ(t))Qi(z)=L(θ(t))L(θ(t+1))≥∑i∑zQ(t)i(z)logp(x(i),z;θ(t+1))Qi(z)≥∑i∑zQ(t)i(z)logp(x(i),z;θ(t))Qi(z)=L(θ(t))(3)
第一个不等号,得到θ(t+1)时,只是最大化L(θ(t)),也就是L(θ(t+1))的下界,而没有使等式成立, 等式成立只有是在固定θ,并按E步得到Qi时才能成立。
况且根据前面得到的下式,对于所有的θ和Qi都成立
L(θ)≥∑i∑zQi(z)logp(x(i),z;θ)Qi(z)
第二个不等号利用了M步的定义,M步就是将θ(t)调整到θ(t+1),使得下界最大化。
这样就证明了L(θ)会单调增加。一种收敛方法是L(θ)不再变化,还有一种就是变化幅度很小。
算法举例
假设有两枚硬币A、B,以相同的概率随机选择一个硬币,进行如下的掷硬币实验:共做5次实验,每次实验独立的掷十次,结果如图中a所示,例如某次实验产生了H、T、T、T、H、H、T、H、T、H;(H代表证明朝上)。 a是在知道每次选择的是A还是B的情况下进行,b是在不知道选择的硬币情况下进行,问如何估计两个硬币正面出现的概率?
针对a情况,已知选择的A or B,重点是如何计算输出的概率分布,论文中直接统计了5次实验中A正面向上的次数再除以总次数作为A的ˆθA,这其实也是最大似然求导求出来的。
argmaxθlogP(Y|θ)=log((θ5B(1−θB)5)(θ9A(1−θA))(θ8A(1−θA)2)(θ4B(1−θB)6)(θ7A(1−θA)3))=log((θ24A(1−θA)6)(θ9B(1−θB)11))
上面这个式子求导之后就能得出ˆθA=2424+6=0.80以及ˆθB=99+11=0.45。
针对b情况,由于并不知道选择的是A还是B,因此采用EM算法。
E步:计算在给定的ˆθ(0)A和ˆθ(0)B下,选择的硬币可能是A or B的概率,例如第一个实验中选择A的概率为(由于选择A、B的过程是等概率的,这个系数被我省略掉了)
P(z=A|y1,θ)=P(z=A,y1|θ)P(z=A,y1|θ)+P(z=B,y1|θ)=0.65⋅0.450.65⋅0.45+0.510=0.45
M步:针对Q函数求导,在本题中Q函数形式如下,这里的yj代表的是每次正面朝上的个数。
Q(θ,θ(i))=N∑j=1∑zP(z|yj,θ(i))logP(yj,z|θ)=N∑j=1μjlog(θyjA(1−θA)10−yj)+(1−μj)log(θyjB(1−θB)10−yj)
从而针对这个式子来对参数求导,例如对θA求导
∂Q∂θA=μ1(y1θA−10−y11−θA)+…+μ5(y5θA−10−y51−θ5)=μ1(y1−10θAθA(1−θA))+…+μ5(y5−10θAθA(1−θA))=∑5j=1μjyj−∑5j=110μjθAθA(1−θA)
求导等于0之后就可得到图中的第一次迭代之后的参数值ˆθ(1)A=0.71和ˆθ(1)B=0.58。
这个例子可以非常直观的看出来,EM算法在求解M步是将每次实验硬币取A或B的情况都考虑进去了。
代码
https://blog.csdn.net/u010866505/article/details/77877345
参考
>