1.引言
EM算法是一种迭代算法,用于含有隐含变量的概率模型参数的极大似然估计或最大后验概率估计。EM算法每次迭代由两步组成:E步,求期望(Ecpectation);M步,求极大值(Maximization)。所以该算法也称为期望极大算法。
极大似然算法已经其他文章中进行了讨论:极大似然估计初探。极大似然估计虽然简单有效,但可能存在一些问题:对于许多具体问题无法轻易构造似然函数的解析表达式,即使构造出来也可能因为表达式过于复杂导致求解方程组非常困难。
例如使用极大似然估计(MLE)求解正态分布的均值和方差,求log后的似然函数为:
l n ( μ , σ ) = − n l o g σ + { − 1 2 σ 2 ∑ N i = 1 ( X − μ ) 2 } l_n(\mu,\sigma) = -nlog\sigma + \left\{-\frac{1}{2\sigma^2}\underset{i=1}{\overset{N}{\sum}}{(X - \mu)^2} \right\} ln(μ,σ)=−nlogσ+{
−2σ21i=1∑N(X−μ)2}
分别求导:
{ ∂ l n ( μ ^ , σ ^ ) ∂ μ = 0 ∂ l n ( μ ^ , σ ^ ) ∂ σ = 0 \begin{cases} \frac{\partial l_n(\hat{\mu},\hat{\sigma})}{\partial\mu}=0\\ \frac{\partial l_n(\hat{\mu},\hat{\sigma})}{\partial\sigma}=0 \end{cases} {
∂μ∂ln(μ^,σ^)=0∂σ∂ln(μ^,σ^)=0
得到:
{ μ ^ = X ˉ n σ ^ 2 = 1 n ∑ n i = 1 ( X i − X ˉ n ) 2 \begin{cases} \hat{\mu} = \bar{X}_n\\ {\hat{\sigma}}^2 = \frac{1}{n}\underset{i=1}{\overset{n}{\sum}}(X_i - \bar{X}_n)^2 \end{cases} ⎩⎨⎧μ^=Xˉnσ^2=n1i=1∑n(Xi−Xˉn)2
基于这些问题,出现了EM算法,通过假设隐藏变量的存在以及迭代的方法,对非完全数据进行估计,极大简化了似然函数方程,方便求解。
2.EM算法实例
以三硬币模型为例进行说明,假设有三枚硬币,分别记为A,B,C。这些硬币正面出现概率分别为a,b,c。进行如下的掷硬币试验:先掷A,如果结果为正面选择投硬币B,为反面投C;然后再掷所选硬币,出现正面记为1,出现反面记为0;独立重复10次该实验观测结果Y为:
1,1,0,1,0,0,1,0,1,1
由于只能观察投掷硬币的结果,无法观察投掷硬币的过程,假设其中A硬币投掷结果为隐含变量Z,试估计三硬币出现正面的概率,即a,b,c的值。
三硬币模型可以写为下式, θ \theta θ表示未知参数:
P ( y ∣ θ ) = ∑ z P ( y , z ∣ θ ) = ∑ z P ( y ∣ z , θ ) = a b y ( 1 − b ) 1 − y + ( 1 − a ) c y ( 1 − c ) 1 − y P(y|\theta) = \underset{z}{\sum}P(y,z|\theta) = \underset{z}{\sum}P(y|z,\theta) \newline =ab^y(1-b)^{1-y}+(1-a)c^y(1-c)^{1-y} P(y∣θ)=z∑P(y,z∣θ)=z∑P(y∣z,θ)=aby(1−b)1−y+(1−a)cy(1−c)1−y
其中随机变量y为可观测变量,随机变量z为未能观测到的投掷硬币A的结果,即隐变量。
观测数据和未观测到的数表示如下:
Y = ( Y 1 , Y 2 , . . . , Y N ) T Z = ( Z 1 , Z 2 , . . . , Z N ) T Y = (Y_1,Y_2,...,Y_N)^T \newline Z = (Z_1,Z_2,...,Z_N)^T Y=(Y1,Y2,...,YN)TZ=(Z1,Z2,...,ZN)T
则观测数据的似然函数为:
P ( Y ∣ θ ) = ∑ Z P ( Y ∣