EM算法:
EM算法就是含有隐变量的概率模型参数的极大似然估计法,或极大后验概率估计法
分两步求解问题
- E步:求期望(expectation)
- M步:求极大(maximization)
概率模型有时候既含有观测变量,又含有隐变量或潜在变量,如果概率模型的变量都是观测变量,那么给定数据,可以直接用极大似然估计法,或贝叶斯估计方法估计模型参数,但是当模型含有隐变量时,就不能简单的使用这些方法,EM算法就是含有隐变量的概率模型参数的极大似然估计法,或极大后验概率估计法,我们讨论极大似然估计,极大后验概率估计与其类似
参考统计学习方法书中的一个例子来引入EM算法, 假设有3枚硬币,分别记做A、B、C,这些硬币正面出现的概率分别是𝜋π、𝑝p、𝑞q,进行如下实验:
-
先掷硬币A,根据结果选出硬币B和硬币C,正面选硬币B,反面选硬币C
-
通过选择出的硬币,掷硬币的结果出现正面为1,反面为0 如此独立地重复n次实验,我们当前规定n=10,则10次的结果如下所示:
1,1,0,1,0,0,1,0,1,11,1,0,1,0,0,1,0,1,1
假设只通过观测到掷硬币的结果,不能观测掷硬币的过程,问如何估计三个硬币出现正面的概率? 我们来构建这样一个三硬币模型: -
若𝑦=1y=1,表示这此看到的是正面,这个正面有可能是B的正面,也可能是C的正面,则
-
若𝑦=0y=0,则
y是观测变量,表示一次观测结果是1或0,z是隐藏变量,表示掷硬币A的结果,这个是观测不到结果的,𝜃=(𝜋,𝑝,𝑞)θ=(π,p,q)表示模型参数,将观测数据表示为𝑌=(𝑌1,𝑌2,...,𝑌𝑛)𝑇Y=(Y1,Y2,...,Yn)T,未观测的数据表示为𝑍=(𝑍1,𝑍2,...,𝑍𝑛)𝑇Z=(Z1,Z2,...,Zn)T,则观测函数的似然函数是:
考虑求模型参数𝜃=(𝜋,𝑝,𝑞)θ=(π,p,q)的极大似然估计,即:
这个问题没有解析解,只有通过迭代方法来求解,EM算法就是可以用于求解这个问题的一种迭代算法,下面给出EM算法的迭代过程:
-
首先选取初始值,记做𝜃0=(𝜋0,𝑝0,𝑞0)θ0=(π0,p0,q0),第i次的迭代参数的估计值为𝜃𝑖=(𝜋𝑖,𝑝𝑖,𝑞𝑖)θi=(πi,pi,qi)
-
E步:计算在模型参数𝜋𝑖,𝑝𝑖,𝑞𝑖πi,pi,qi下观测变量𝑦𝑖yi来源于硬币B的概率:
备注一下:这个公式的分母是𝑃(𝑌|𝜃)P(Y|θ),分子表示是来源与B硬币的概率。 -
M步:计算模型参数的新估计值:
因为B硬币A硬币出现正面的结果,所以A硬币概率就是𝜇𝑗μj的平均值。
分子乘以𝑦𝑖yi,所以其实是计算B硬币出现正面的概率。
(1−𝜇𝑖+1𝑗)(1−μji+1)表示出现C硬币的概率。
闭环形成,从𝑃(𝑌|𝜃)P(Y|θ) 到 𝜋、𝑝、𝑞π、p、q一个闭环流程,接下来可以通过迭代法来做完成。针对上述例子,我们假设初始值为𝜋0=0.5,𝑝0=0.5,𝑞0=0.5π0=0.5,p0=0.5,q0=0.5,因为对𝑦𝑖=1yi=1和𝑦𝑖=0yi=0均有𝜇1𝑗=0.5μj1=0.5,利用迭代公式计算得到𝜋1=0.5,𝑝1=0.6,𝑞1=0.6π1=0.5,p1=0.6,q1=0.6,继续迭代得到最终的参数:
𝜋0ˆ=0.5,𝑝0ˆ=0.6,𝑞0ˆ=0.6π0^=0.5,p0^=0.6,q0^=0.6
如果一开始初始值选择为:𝜋0=0.4,𝑝0=0.6,𝑞0=0.7π0=0.4,p0=0.6,q0=0.7,那么得到的模型参数的极大似然估计是𝜋ˆ=0.4064,𝑝ˆ=0.5368,𝑞ˆ=0.6432π^=0.4064,p^=0.5368,q^=0.6432,这说明EM算法与初值的选择有关,选择不同的初值可能得到不同的参数估计值。
EM算法
输入:观测变量数据Y,隐变量数据Z,联合分布𝑃(𝑌,𝑍|𝜃)P(Y,Z|θ),条件分布𝑃(𝑍|𝑌,𝜃)P(Z|Y,θ); 输出:模型参数𝜃θ
-
(1)选择参数的初值𝜃0,开始迭代
-
(2) E步:记𝜃𝑖θi为第i次迭代参数𝜃θ的估计值,在第i+1次迭代的E步,计算
这里,𝑃(𝑍|𝑌,𝜃𝑖)P(Z|Y,θi)是在给定观测数据Y和当前的参数估计𝜃𝑖θi下隐变量数据Z的条件概率分布; -
(3) M步:求使𝑄(𝜃,𝜃𝑖)Q(θ,θi)极大化的𝜃θ,确定第i+1次迭代的参数的估计值𝜃𝑖+1θi+1,
𝑄(𝜃,𝜃𝑖)Q(θ,θi)是EM算法的核心,称为Q函数(Q function),这个是需要自己构造的。 -
(4) 重复第(2)步和第(3)步,直到收敛,收敛条件:
或者:
推导逼近
主要讲解Jensen不等式,这个公式在推导和收敛都用到,主要是如下的结论:
- 𝑓(𝑥)f(x)是凸函数
- 𝑓(𝑥)f(x)是凹函数
证明收敛
我们知道已知观测数据的似然函数是𝑃(𝑌,𝜃)P(Y,θ),对数似然函数为:
要证明收敛,就证明单调递增
高斯混合分布
EM算法的一个重要应用场景就是高斯混合模型的参数估计。高斯混合模型就是由多个高斯模型组合在一起的混合模型(可以理解为多个高斯分布函数的线性组合,理论上高斯混合模型是可以拟合任意类型的分布)
如果有多个高斯模型,公式表示为: