期望极大算法(Expectation Maximization)
概率模型有时既含有观测变量( observable variable),又含有隐变量或潜在变量( latent variable)。如果概率模型的变量都是观测变量,那么给定数据,可以直接用极大似然估计法估计模型参数。但是,当模型含有隐变量时,就不能简单地使用这些估计方法。EM算法就是含有隐变量的概率模型参数的极大似然估计法。
- 介绍:EM算法是一种迭代算法,1977年由 Dempster等人总结提出,用于含有隐变量( hidden variable)的概率模型参数的极大似然估计等
- 组成:E步,求期望( expectation);M步,求极大( maximization)
- 应用:高斯混合模型GMM、隐式马尔科夫模型HMM等
EM算法的引出
假设有3枚硬币,分别记作A,B,C。这些硬币正面出现的概率分别是π,p和q。进行如下掷硬币试验:先掷硬币A,根据其结果选出硬币B或硬币C,正面选硬币B,反面选硬币C;然后掷选出的硬币,掷硬币的结果,出现正面记作1,出现反面记作0;独立地重复n次试验(这里,n=10),观测结果为1,1,0,1,0,0,1,0,1,1
假设只能观测到掷硬币的结果,不能观测掷硬币的过程。问如何估计三硬币各自的正面朝上的概率,即三硬币模型的参数。三硬币模型可以写作:
这是一个很神奇的式子,p和(1-p)二选一的效果,q和(1-q)也是二选一的效果。
考虑求模型参数θ=(π,p,q)的极大似然估计,即
EM算法
我们面对一个含有隐变量的概率模型,目标是极大化观测数据(不完全数据)Y关于参数θ的对数似然函数,即极大化:
注意到这一极大化的主要困难是式中有未观测数据并有包含和(或积分)的对数。事实上,EM算法是通过迭代逐步近似极大化L(θ)的。假设在第i次迭代后θ的估计值是θ(i)。我们希望新估计值θ能使L(θ)增加,即L(θ)>L(θ(i)),并逐步达到极大值。为此,考虑两者的差:
利用Jensen不等式( Jensen inequality)得到其下界:
L(θ)的下界为:
B可以简约的看做:B = L(θi) + L(θi) * log(L(θ)/L(θi)) (理解一下)
因此,任何使B增大的θ,也可以让L(θ)增大,为了使L(θ)有尽可能大的增长,选择θ(i+1)
使B达到极大,即
省去对求θ极大化而言是常数的项:
这里可以理解为:最大化=L(θi)*log(L(θ))
EM算法步骤
- 步骤一: 参数的初值可以任意选择,但需注意EM算法对初值是敏感的
- 步骤二: E步求Q(θ,θ(i))。Q函数式中Z是未观测数据,Y是观测数据。注意,Q(θ,θ(i))的第1个变元表示要极大化的参数,第2个变元表示参数的当前估计值。
- 步骤三: M步求Q(θ,θ(i))的极大化,得到θ(i+1)。
- 步骤四: 给出停止迭代的条件,一般是对较小的正数ε1,ε2,若满足下面条件则停止迭代
EM算法简易理解
- EM算法就是含有隐变量的概