EM算法是一种迭代算法,用于含有隐变量的概率模型参数的极大似然估计,或极大后验概率估计。EM算法的每次迭代由两步组成:E步,求期望(expectation);M步,求极大(maximization)。所以这一算法称为期望极大算法,简称EM算法。
概率模型有时既含有观测变量,又含有隐变量或潜在变量。如果概率模型的变量都是观测变量,那么给定数据,可以直接用极大似然估计法,或贝叶斯估计法估计模型参数。但是,当模型含有隐变量时,就不能简单地使用这些估计方法。EM算法就是含有隐变量的概率模型参数的极大似然估计法,或极大后验概率估计法。
EM算法提供一种近似计算含有隐变量概率模型的极大似然估计的方法。EM算法的最大优点是简单性和普适性。我们很自然地要问:EM算法得到的估计序列是否收敛?如果收敛,是否收敛到全局最大值或局部最大值?下面给出关于EM算法收敛性的两个定理。
EM算法的一个重要应用是高斯混合模型的参数估计。高斯混合模型应用广泛,在许多情况下,EM算法是学习高斯混合模型的有效方法。
高斯混合模型
定义2(高斯混合模型) 高斯混合模型是指具有如下形式的概率分布模型:
(18) P ( y ∣ θ ) = ∑ k = 1 K α k ϕ ( y ∣ θ k ) P(y|\theta)=\sum_{k=1}^K\alpha_k\phi(y|\theta_k) \tag{18} P(y∣θ)=k=1∑Kαkϕ(y∣θk)(18)
其中, α k \alpha_k αk是系数, α k ≥ 0 \alpha_k\geq0 αk≥0, ∑ k = 1 K α k = 1 \sum_{k=1}^K\alpha_k=1 ∑k=1Kαk=1; ϕ ( y ∣ θ k ) \phi(y|\theta_k) ϕ(y∣θk)是高斯分布密度, θ k = ( μ k , σ k 2 ) \theta_k=(\mu_k,\sigma_k^2) θk=(μk,σk2),
(19) ϕ ( y ∣ θ k ) = 1 2 π σ k exp ( − ( y − μ k ) 2 2 σ k 2 ) \phi(y|\theta_k)=\frac{1}{\sqrt{2\pi}\sigma_k}\exp\bigg(-\frac{(y-\mu_k)^2}{2\sigma_k^2}\bigg) \tag{19} ϕ(y∣θk)=2πσk1exp(−2σk2(y−μk)2) (19)
称为第 k k k个分模型。
一般混合模型可以由任意概率分布密度代替式(19)中的高斯分布密度,我们只介绍最常用的高斯混合模型。
高斯混合模型参数估计的EM算法
假设观测数据 y 1 , y 2 , ⋯   , y N y_1,y_2,\cdots,y_N y1,y2,⋯,yN由高斯混合模型生成,
(20) P ( y ∣ θ ) = ∑ k = 1 K α k ϕ ( y ∣ θ ) P(y|\theta)=\sum_{k=1}^K\alpha_k\phi(y|\theta) \tag{20} P(y∣θ)=k=1∑Kαkϕ(y∣θ)(20)
其中, θ = ( α 1 , α 2 , ⋯   , α K ; θ 1 , θ 2 , ⋯   , θ K ) \theta=(\alpha_1,\alpha_2,\cdots,\alpha_K;\theta_1,\theta_2,\cdots,\theta_K) θ=(α1,α2,⋯,αK;θ1,θ2,⋯,θK)。我们用EM算法估计高斯混合模型的参数 θ \theta θ。
EM算法还可以解释为F函数的极大-极大算法,基于这个解释有若干变形与推广,如广义期望极大算法。下面予以介绍。
F函数的极大-极大算法
首先引进F函数并讨论其性质。
定义3(F函数) 假设隐变量数据 Z Z Z的概率分布为 P ~ ( Z ) \tilde P(Z) P~(Z),定义分布 P ~ \tilde P P~与参数 θ \theta θ的函数 F ( P ~ , θ ) F(\tilde P, \theta) F(P~,θ)如下:
(27) F ( P ~ , θ ) = E P ~ [ log P ( Y , Z ∣ θ ) ] + H ( P ~ ) F(\tilde P,\theta)=E_{\tilde P}[\log P(Y,Z|\theta)]+H(\tilde P) \tag{27} F(P~,θ)=EP~[logP(Y,Z∣θ)]+H(P~)(27)
称为F函数。式中 H ( P ~ ) = − E P ~ log P ~ ( Z ) H(\tilde P)=-E_{\tilde P}\log\tilde P(Z) H(P~)=−EP~logP~(Z)是分布 P ~ ( Z ) \tilde P(Z) P~(Z)的熵。
在定义3中,通常假设 P ( Y , Z ∣ θ ) P(Y,Z|\theta) P(Y,Z∣θ)是 θ \theta θ的连续函数,因而 F ( P ~ , θ ) F(\tilde P,\theta) F(P~,θ)是 P ~ \tilde P P~和 θ \theta θ的连续函数。函数 F ( P ~ , θ ) F(\tilde P,\theta) F(P~,θ)还有以下重要性质:
引理1 对于固定的 θ \theta θ,存在唯一的分布 P ~ θ \tilde P_\theta P~θ极大化 F ( P ~ , θ ) F(\tilde P,\theta) F(P~,θ),这时 P ~ θ \tilde P_\theta P~θ由下式给出:
(28) P ~ θ ( Z ) = P ( Z ∣ Y , θ ) \tilde P_\theta(Z)=P(Z|Y,\theta) \tag{28} P~θ(Z)=P(Z∣Y,θ)(28)
并且 P ~ θ \tilde P_\theta P~θ随 θ \theta θ连续变化。
证明 对于固定的 θ \theta θ,可以求得使 F ( P ~ , θ ) F(\tilde P,\theta) F(P~,θ)达到极大的分布 P ~ θ ( Z ) \tilde P_\theta(Z) P~θ(Z)。为此,引进拉格朗日乘子 λ \lambda λ,拉格朗日函数为
(29) L = E P ~ log P ( Y , Z ∣ θ ) − E P ~ log P ~ ( Z ) + λ ( 1 − ∑ Z P ~ ( Z ) ) L=E_{\tilde P}\log P(Y,Z|\theta)-E_{\tilde P}\log \tilde P(Z)+\lambda\bigg(1-\sum_Z\tilde P(Z)\bigg) \tag{29} L=EP~logP(Y,Z∣θ)−EP~logP~(Z)+λ(1−Z∑P~(Z))(29)
将其对 P ~ \tilde P P~求偏导数:
∂ L ∂ P ~ ( Z ) = log P ( Y , Z ∣ θ ) − log P ~ ( Z ) − 1 − λ \frac{\partial L}{\partial\tilde P(Z)}=\log P(Y,Z|\theta)-\log\tilde P(Z)-1-\lambda ∂P~(Z)∂L=logP(Y,Z∣θ)−logP~(Z)−1−λ
令偏导数等于0,得出
λ = log P ( Y , Z ∣ θ ) − log P ~ θ ( Z ) − 1 \lambda=\log P(Y,Z|\theta)-\log \tilde P_\theta(Z)-1 λ=logP(Y,Z∣θ)−logP~θ(Z)−1
由此推出 P ~ θ ( Z ) \tilde P_\theta(Z) P~θ(Z)与 P ( Y , Z ∣ θ ) P(Y,Z|\theta) P(Y,Z∣θ)成比例
P ( Y , Z ∣ θ ) P ~ θ ( Z ) = e 1 + λ \frac{P(Y,Z|\theta)}{\tilde P_\theta(Z)}=e^{1+\lambda} P~θ(Z)P(Y,Z∣θ)=e1+λ
再从约束条件 ∑ Z P ~ θ ( Z ) = 1 \sum_Z\tilde P_\theta(Z)=1 ∑ZP~θ(Z)=1得式(28)。
由假设 P ( Y , Z ∣ θ ) P(Y,Z|\theta) P(Y,Z∣θ)是 θ \theta θ的连续函数,得到 P ~ θ \tilde P_\theta P~θ是 θ \theta θ的连续函数。
引理2 若 P ~ θ ( Z ) = P ( Z ∣ Y , θ ) \tilde P_\theta(Z)=P(Z|Y,\theta) P~θ(Z)=P(Z∣Y,θ),则
(30) F ( P ~ , θ ) = log P ( Y ∣ θ ) F(\tilde P,\theta)=\log P(Y|\theta) \tag{30} F(P~,θ)=logP(Y∣θ)(30)
由以上引理,可以得到关于EM算法用F函数的极大-极大算法的解释。
定理3 设 L ( θ ) = log P ( Y ∣ θ ) L(\theta)=\log P(Y|\theta) L(θ)=logP(Y∣θ)为观测数据的对数似然函数, θ ( i ) , i = 1 , 2 , ⋯ \theta^{(i)},i=1,2,\cdots θ(i),i=1,2,⋯,为EM算法得到的参数估计序列,函数 F ( P ~ , θ ) F(\tilde P,\theta) F(P~,θ)由式(27)定义。若果 F ( P ~ , θ ) F(\tilde P,\theta) F(P~,θ)在 P ~ ∗ \tilde P^* P~∗和 θ ∗ \theta^* θ∗有局部极大值,那么 L ( θ ) L(\theta) L(θ)也在 θ ∗ \theta^* θ∗有局部极大值。类似地,如果 F ( P ~ , θ ) F(\tilde P,\theta) F(P~,θ)在 P ~ ∗ \tilde P^* P~∗和 θ ∗ \theta^* θ∗达到全局最大值,那么 L ( θ ) L(\theta) L(θ)也在 θ ∗ \theta^* θ∗达到全局最大值。
证明 由引理1和引理2可知, L ( θ ) = log P ( Y ∣ θ ) = F ( P ~ θ , θ ) L(\theta)=\log P(Y|\theta)=F(\tilde P_\theta,\theta) L(θ)=logP(Y∣θ)=F(P~θ,θ)对任意 θ \theta θ成立。特别地,对于使 F ( P ~ , θ ) F(\tilde P,\theta) F(P~,θ)达到极大的参数 θ ∗ \theta^* θ∗,有
(31) L ( θ ∗ ) = F ( P ~ θ ∗ , θ ∗ ) = F ( P ~ ∗ , θ ∗ ) L(\theta^*)=F(\tilde P_{\theta^*},\theta^*)=F(\tilde P^*,\theta^*) \tag{31} L(θ∗)=F(P~θ∗,θ∗)=F(P~∗,θ∗)(31)
为了证明 θ ∗ \theta^* θ∗是 L ( θ ) L(\theta) L(θ)的极大点,需要证明不存在接近 θ ∗ \theta^* θ∗的点 θ ∗ ∗ \theta^{**} θ∗∗,使 L ( θ ∗ ∗ ) > L ( θ ∗ ) L(\theta^{**})>L(\theta^*) L(θ∗∗)>L(θ∗)。加入存在这样的点 θ ∗ ∗ \theta^{**} θ∗∗,那么应有 F ( P ~ ∗ ∗ , θ ∗ ∗ ) > F ( P ~ ∗ , θ ∗ ) F(\tilde P^{**},\theta^{**})>F(\tilde P^*,\theta^*) F(P~∗∗,θ∗∗)>F(P~∗,θ∗),这里 P ~ ∗ ∗ = P ~ θ ∗ ∗ \tilde P^{**}=\tilde P_{\theta^{**}} P~∗∗=P~θ∗∗。但因 P ~ θ \tilde P_\theta P~θ是随 θ \theta θ连续变化的, P ~ ∗ ∗ \tilde P^{**} P~∗∗应接近 P ~ ∗ \tilde P^* P~∗,这与 P ~ ∗ \tilde P^* P~∗和 θ ∗ \theta^* θ∗是 F ( P ~ , θ ) F(\tilde P,\theta) F(P~,θ)的局部极大点的假设矛盾。
类似可以证明关于全局最大值的结论。
定理4 EM算法的一次迭代可由F函数的极大-极大算法实现。
设 θ ( i ) \theta^{(i)} θ(i)为第 i i i次迭代参数 θ \theta θ的估计, P ~ ( i ) \tilde P^{(i)} P~(i)为第 i i i次迭代函数 P ~ \tilde P P~的估计。在第 i + 1 i+1 i+1次迭代的两步为
(1) 对固定的 θ ( i ) \theta^{(i)} θ(i),求 P ~ ( i + 1 ) \tilde P^{(i+1)} P~(i+1)使 F ( P ~ , θ ( i ) ) F(\tilde P,\theta^{(i)}) F(P~,θ(i))极大化;
(2) 对固定的 P ~ ( i + 1 ) \tilde P^{(i+1)} P~(i+1),求 θ i + 1 \theta^{i+1} θi+1使 F ( P ~ ( i + 1 ) , θ ) F(\tilde P^{(i+1)},\theta) F(P~(i+1),θ)极大化。
证明 (1) 由引理1,对于固定的 θ ( i ) \theta^{(i)} θ(i),
P ~ ( i + 1 ) ( Z ) = P ~ θ ( i ) ( Z ) = P ( Z ∣ Y , θ ( i ) ) \tilde P^{(i+1)}(Z)=\tilde P_{\theta^{(i)}}(Z)=P(Z|Y,\theta^{(i)}) P~(i+1)(Z)=P~θ(i)(Z)=P(Z∣Y,θ(i))
使 F ( P ~ , θ ( i ) ) F(\tilde P,\theta^{(i)}) F(P~,θ(i))极大化。此时
F ( P ~ ( i + 1 ) , θ ) = E P ~ ( i + 1 ) [ log P ( Y , Z ∣ θ ) ] + H ( P ~ ( i + 1 ) ) = ∑ Z log P ( Y , Z ∣ θ ) P ( Z ∣ Y , θ ( i ) ) + H ( P ~ ( i + 1 ) ) \begin{aligned} F(\tilde P^{(i+1)},\theta)&=E_{\tilde P^{(i+1)}}[\log P(Y,Z|\theta)]+H(\tilde P^{(i+1)}) \\ &=\sum_Z\log P(Y,Z|\theta)P(Z|Y,\theta^{(i)})+H(\tilde P^{(i+1)}) \end{aligned} F(P~(i+1),θ)=EP~(i+1)[logP(Y,Z∣θ)]+H(P~(i+1))=Z∑logP(Y,Z∣θ)P(Z∣Y,θ(i))+H(P~(i+1))
由 Q ( θ , θ ( i ) ) Q(\theta,\theta^{(i)}) Q(θ,θ(i))的定义式(5)有
F ( P ~ ( i + 1 ) , θ ) = Q ( θ , θ ( i ) ) + H ( P ~ ( i + 1 ) ) F(\tilde P^{(i+1)},\theta)=Q(\theta,\theta^{(i)})+H(\tilde P^{(i+1)}) F(P~(i+1),θ)=Q(θ,θ(i))+H(P~(i+1))
(2) 固定 P ~ ( i + 1 ) \tilde P^{(i+1)} P~(i+1),求 θ ( i + 1 ) \theta^{(i+1)} θ(i+1)使 F ( P ~ ( i + 1 ) , θ ) F(\tilde P^{(i+1)},\theta) F(P~(i+1),θ)极大化。得到
θ ( i + 1 ) = arg max θ F ( P ~ ( i + 1 ) , θ ) = arg max θ Q ( θ , θ ( i ) ) \theta^{(i+1)}=\arg\max_\theta F(\tilde P^{(i+1)},\theta)=\arg\max_\theta Q(\theta,\theta^{(i)}) θ(i+1)=argθmaxF(P~(i+1),θ)=argθmaxQ(θ,θ(i))
通过以上两步完成了EM算法的一次迭代。由此可知,由EM算法与F函数的极大-极大算法得到的参数估计序列 θ ( i ) , i = 1 , 2 , ⋯ \theta^{(i)},i=1,2,\cdots θ(i),i=1,2,⋯,是一致的。
这样,就有EM算法的推广。
GEM算法
算法3(GEM算法1)
输入:观测数据,F函数;
输出:模型参数。
(1) 初始化参数 θ ( 0 ) \theta^{(0)} θ(0),开始迭代
(2) 第 i + 1 i+1 i+1次迭代,第1步:记 θ ( i ) \theta^{(i)} θ(i)为参数 θ \theta θ的估计值, P ~ ( i ) \tilde P^{(i)} P~(i)为函数 P ~ \tilde P P~的估计。求 P ~ ( i + 1 ) \tilde P^{(i+1)} P~(i+1)使 P ~ \tilde P P~极大化 F ( P ~ , θ ( i ) ) F(\tilde P,\theta^{(i)}) F(P~,θ(i))
(3) 第2步:求 θ ( i + 1 ) \theta^{(i+1)} θ(i+1)使 F ( P ~ ( i + 1 ) , θ ) F(\tilde P^{(i+1)},\theta) F(P~(i+1),θ)极大化
(4) 重复(2)和(3),直到收敛。
在GEM算法1中,有时求 Q ( θ , θ ( i ) ) Q(\theta,\theta^{(i)}) Q(θ,θ(i))的极大化是很困难的。下面介绍的GEM算法2和GEM算法3并不是直接求 θ ( i + 1 ) \theta^{(i+1)} θ(i+1)使 Q ( θ , θ ( i ) ) Q(\theta,\theta^{(i)}) Q(θ,θ(i))达到极大的 θ \theta θ,而是找一个 θ ( i + 1 ) \theta^{(i+1)} θ(i+1)使得 Q ( θ ( i + 1 ) , θ ( i ) ) > Q ( θ ( i ) , θ ( i ) ) Q(\theta^{(i+1)},\theta^{(i)})>Q(\theta^{(i)},\theta^{(i)}) Q(θ(i+1),θ(i))>Q(θ(i),θ(i))。
算法4(GEM算法2)
输入:观测数据,Q函数;
输出:模型参数。
(1) 初始化参数 θ ( 0 ) \theta^{(0)} θ(0),开始迭代
(2) 第 i + 1 i+1 i+1次迭代,第1步:记 θ ( i ) \theta^{(i)} θ(i)为参数 θ \theta θ的估计值,计算
Q ( θ , θ ( i ) ) = E Z [ log P ( Y , Z ∣ θ ) ∣ Y , θ ( i ) ] = ∑ Z P ( Z ∣ Y , θ ( i ) ) log P ( Y , Z ∣ θ ) \begin{aligned} Q(\theta,\theta^{(i)})&=E_Z[\log P(Y,Z|\theta)|Y,\theta^{(i)}] \\ &=\sum_ZP(Z|Y,\theta^{(i)})\log P(Y,Z|\theta) \end{aligned} Q(θ,θ(i))=EZ[logP(Y,Z∣θ)∣Y,θ(i)]=Z∑P(Z∣Y,θ(i))logP(Y,Z∣θ)
(3) 第2步:求 θ ( i + 1 ) \theta^{(i+1)} θ(i+1)使
KaTeX parse error: Expected 'EOF', got '\thata' at position 35: …theta^{(i)})>Q(\̲t̲h̲a̲t̲a̲{(i)},\theta^{(…
(4) 重复(2)和(3),直到收敛。
当参数 θ \theta θ的维数为 d ( d ≥ 2 ) d(d\geq 2) d(d≥2)时,可采用一种特殊的GEM算法,它将EM算法的M步分解为d次条件极大化,每次只改变参数向量的一个分量,其余分量不改变。
算法5(GEM算法3)
输入:观测数据,Q函数;
输出:模型参数。
(1) 初始化参数 θ ( 0 ) = ( θ 1 ( 0 ) , θ 2 ( 0 ) , ⋯   , θ d ( 0 ) ) \theta^{(0)}=(\theta_1^{(0)},\theta_2^{(0)},\cdots,\theta_d^{(0)}) θ(0)=(θ1(0),θ2(0),⋯,θd(0)),开始迭代
(2) 第 i + 1 i+1 i+1次迭代,第1步:记 θ ( i ) = ( θ 1 ( i ) , θ 2 ( i ) , ⋯   , θ d ( i ) ) \theta^{(i)}=(\theta_1^{(i)},\theta_2^{(i)},\cdots,\theta_d^{(i)}) θ(i)=(θ1(i),θ2(i),⋯,θd(i))为参数 θ = ( θ 1 , θ 2 , ⋯   , θ d ) \theta=(\theta_1,\theta_2,\cdots,\theta_d) θ=(θ1,θ2,⋯,θd)的估计值,计算
Q ( θ , θ ( i ) ) = E Z [ log P ( Y , Z ∣ θ ) ∣ Y , θ ( i ) ] = ∑ Z P ( Z ∣ Y , θ ( i ) ) log P ( Y , Z ∣ θ ) \begin{aligned} Q(\theta,\theta^{(i)})&=E_Z[\log P(Y,Z|\theta)|Y,\theta^{(i)}] \\ &=\sum_ZP(Z|Y,\theta^{(i)})\log P(Y,Z|\theta) \end{aligned} Q(θ,θ(i))=EZ[logP(Y,Z∣θ)∣Y,θ(i)]=Z∑P(Z∣Y,θ(i))logP(Y,Z∣θ)
(3) 第2步:进行d次条件极大化:
首先,在 θ 2 ( i ) , ⋯   , θ k ( i ) \theta_2^{(i)},\cdots,\theta_k^{(i)} θ2(i),⋯,θk(i)保持不变的条件下求使 Q ( θ , θ ( i ) ) Q(\theta,\theta^{(i)}) Q(θ,θ(i))达到极大的 θ 2 ( i + 1 ) \theta_2^{(i+1)} θ2(i+1);
然后,在 θ 1 = θ 1 ( i + 1 ) , θ j = θ j ( i ) , j = 2 , 3 , ⋯   , k \theta_1=\theta_1^{(i+1)},\theta_j=\theta_j^{(i)},j=2,3,\cdots,k θ1=θ1(i+1),θj=θj(i),j=2,3,⋯,k的条件下求使 Q ( θ , θ ( i ) ) Q(\theta,\theta^{(i)}) Q(θ,θ(i))达到极大的 θ 2 ( i + 1 ) \theta_2^{(i+1)} θ2(i+1);
如此继续,经过d次条件极大化,得到 θ ( i + 1 ) = ( θ 1 ( i + 1 ) , θ 2 ( i + 1 ) , ⋯   , θ d ( i + 1 ) ) \theta^{(i+1)}=(\theta_1^{(i+1)},\theta_2^{(i+1)},\cdots,\theta_d^{(i+1)}) θ(i+1)=(θ1(i+1),θ2(i+1),⋯,θd(i+1))使得
KaTeX parse error: Expected 'EOF', got '\thata' at position 35: …theta^{(i)})>Q(\̲t̲h̲a̲t̲a̲{(i)},\theta^{(…
(4) 重复(2)和(3),直到收敛。