EM算法是一种迭代算法,用于含有隐变量的概率模型参数的极大似然估计或极大后验概率估计。注意,EM算法不是一种机器学习的模型,只是一种求参数的算法。EM算法的每次迭代都由两步组成:E步,求期望;M步,求极大值。所以该算法才被称为期望极大算法(Expectation Maximization algorithm)。
从上述描述可知,EM算法求解极大似然估计和其他模型很不同的一点是,它可以求解含有隐变量的概率模型参数。通常,概率模型的变量都是可观测变量,这时就可以根据给定的数据,直接使用极大似然估计法或贝叶斯估计法求解模型参数。但是,如果概率模型涉及到的变量其中有不可观测的变量怎么办?这个不可观测的变量就叫做隐变量。所谓不可观测,直观理解就是对于目标问题并没有给出该变量对应的任何信息,一切都是隐于深处的。
还是那句话,概念总是深奥且不易理解的,所以还是举个例子来加强对概念的理解。
案例:
假设有两个形状不规则的硬币A和B,我们希望求出每个硬币抛出正面的概率 θ ^ A , θ ^ B \hat{\theta}_A,\hat{\theta}_B θ^A,θ^B。目前,我们已知五组抛硬币的实验结果,每组抛10次,结果如下表。
实验组号 | 结果1(H表示正,T表示反) | 结果2("A:"表示用A硬币做该组实验,H表示正,T表示反) |
---|---|---|
1 | H T T T H H T H T H | B:H T T T H H T H T H |
2 | H H H H H H T H H H | A:H H H H H H T H H H |
3 | H T H H H H T H H H | A:H T H H H H T H H H |
4 | H T T T H T T H T H | B:H T T T H T T H T H |
5 | H H T H H H T H T H | A:H H T H H H T H T H |
如果问题的背景如表中结果2的类型,也就是每组实验都知道是用哪个硬币抛的,那么根据极大似然估计的方法,很容易就能求出:
θ ^ A = 24 24 + 6 = 0.8 , θ ^ B = 9 9 + 11 = 0.45 \hat{\theta}_A=\frac{24}{24+6}=0.8,\hat{\theta}_B=\frac{9}{9+11}=0.45 θ^A=24+624=0.8,θ^B=9+119=0.45
但是问题如果稍微做一点改变,实验结果是如结果1所示,也就是这时候,你只有5组正反的结果,却不知道每组是用哪个硬币做的实验,这时候问题就来了,极大似然估计是没法用的,因为这个问题存在一个隐变量,也就是你在分析结果的时候需要思考,这组结果是用A硬币做的还是B硬币做的?而这个事件,就是一个隐随机变量,这时候,EM算法就能派上用场了。
其实,现实中,包含隐变量的问题是很常见的,所以EM算法的应用是很广泛的。那么针对上述问题,EM算法是如何求解的呢?
首先,我们按随便取初值 θ ^ A = 0.6 , θ ^ B = 0.5 \hat{\theta}_A=0.6,\hat{\theta}_B=0.5 θ^A=0.6,θ^B=0.5,然后拿出一组结果数据(以第一组为例),由于不知道该结果是用哪个硬币做的,所以我们需要计算每个硬币产生这种结果的概率:
P ( r e s u l t 1 A ) = C 10 5 θ ^ A 5 ( 1 − θ ^ A ) 5 = 0.201 , P ( r e s u l t 1 B ) = C 10 5 θ ^ B 5 ( 1 − θ ^ B ) 5 = 0.246 P(result_{1A})=C_{10}^5\hat{\theta}_A^5(1-\hat{\theta}_A)^5=0.201,P(result_{1B})=C_{10}^5\hat{\theta}_B^5(1-\hat{\theta}_B)^5=0.246 P(result1A)=C105θ^A5(1−θ^A)5=0.201,P(result1B)=C105θ^B5(1−θ^B)5=0.246
那么,结果1是由A硬币或B硬币产生的概率就是:
P ( r e s u l t 1 ∣ A ) = 0.201 0.201 + 0.246 ≈ 0.45 , P ( r e s u l t 1 ∣ B ) = 0.246 0.201 + 0.246 ≈ 0.55 P(result_1|A)=\frac{0.201}{0.201+0.246}≈0.45,P(result_1|B)=\frac{0.246}{0.201+0.246}≈0.55 P(result1∣A)=0.201+0.2460.201≈0.45,P(result1∣B)=0.201+0.2460.246≈0.55
同理,可以计算出其他结果的类似概率,如下表。
组号 | 1 | 2 | 3 | 4 | 5 |
---|---|---|---|---|---|
A硬币 | 0.45 | 0.80 | 0.73 | 0.35 | 0.65 |
B硬币 | 0.55 | 0.20 | 0.27 | 0.65 | 0.35 |
当得到每组结果是由A硬币或B硬币产生的概率后,就可以根据极大似然估计的方法来进行估计,首先我们可以求出A硬币和B硬币分别对每组结果中,出现正反次数的期望(E步),如下表:
组号 | 1 | 2 | 3 | 4 | 5 | 总计 |
---|---|---|---|---|---|---|
A硬币 | 0.45×5H=2.2H,0.45×5T=2.2T | 7.2H,0.8T | 5.9H,1.5T | 1.4H,2.1T | 4.5H,1.9T | 21.3H,8.6T |
B硬币 | 0.55×5H=2.8H,0.55×5T=2.8T | 1.8H,0.2T | 2.1H,0.5T | 2.6H,3.9T | 2.5H,1.1T | 11.7H,8.4T |
然后按极大似然估计的方法就可以求出新一轮的参数:
θ ^ A ( 1 ) = 21.3 21.3 + 8.6 = 0.71 , θ ^ B ( 1 ) = 11.7 11.7 + 8.4 = 0.58 \hat{\theta}_A^{(1)}=\frac{21.3}{21.3+8.6}=0.71,\hat{\theta}_B^{(1)}=\frac{11.7}{11.7+8.4}=0.58 θ^A(1)=21.3+8.621.3=0.71,θ^B(1)=11.7+8.411.7=0.58
最后,将新得到的 θ ^ A ( 1 ) , θ ^ B ( 1 ) \hat{\theta}_A^{(1)},\hat{\theta}_B^{(1)} θ^A(1),θ^B(1)继续带入最开始的步骤,重新计算,又可以得到 θ ^ A ( 2 ) , θ ^ B ( 2 ) \hat{\theta}_A^{(2)},\hat{\theta}_B^{(2)} θ^A(2),θ^B(2),反复迭代,最终达到终止条件或者结果收敛为止。最后,可以得到 θ ^ A ( n ) = 0.8 , θ ^ B ( n ) = 0.52 \hat{\theta}_A^{(n)}=0.8,\hat{\theta}_B^{(n)}=0.52 θ^A(n)=0.8,θ^B(n)=0.52。这就是EM算法得到的参数估计结果。
一般地,用Y表示可观测变量,Z表示隐变量数据,两者的联合分布是 P ( Y , Z ∣ θ ) P(Y,Z|\theta) P(Y,Z∣θ),条件分布是 P ( Z ∣ Y , θ ) P(Z|Y,\theta) P(Z∣Y,θ)。Y和Z连在一起称为完全数据,单独的Y又称为不完全数据。
面对一个含有隐变量的概率模型,目标是极大化观测数据Y关于参数 θ \theta θ的对数似然函数,即求下式的极大值:
L ( θ ) = log P ( Y ∣ θ ) = log ∑ Z P ( Y , Z ∣ θ ) = log ( ∑ Z P ( Y ∣ Z , θ ) P ( Z ∣ θ ) ) L(\theta)=\log P(Y|\theta)=\log\sum_Z P(Y,Z|\theta)=\log\big(\sum_Z P(Y|Z,\theta)P(Z|\theta)\big) L(θ)=logP(Y∣θ)=logZ∑P(Y,Z∣θ)=log(Z∑P(Y∣Z,θ)P(Z∣θ))
上式中很难求解的部分一是带有不可观测数据Z的变量;二是具有包含求和公式的对数。稍微解释一下上式中的各项:
P ( Y ∣ θ ) P(Y|\theta) P(Y∣θ)表示已知参数 θ \theta θ的情况下,可观测数据Y取某一值的概率,由于问题包含隐变量,且隐变量不可观测,也就导致了 P ( Y ∣ θ ) P(Y|\theta) P(Y∣θ)其实是无法直接求解的,而是要将其进行分解;
∑ Z P ( Y , Z ∣ θ ) \sum_Z P(Y,Z|\theta) ∑ZP(Y,Z∣θ)表示,在已知参数 θ \theta θ的情况下,遍历所有隐变量Z的取值情况的变量Y取某一值的概率。很明显,Z是所有隐变量的集合,那么遍历所有Z的情况后,其概率之和自然就与 P ( Y ∣ θ ) P(Y|\theta) P(Y∣θ)相同了,这一步也就是把 P ( Y ∣ θ ) P(Y|\theta) P(Y∣θ)分解成了一个个子项,每个子项都与过程中的隐变量有关。
P ( Y , Z ∣ θ ) = P ( Y ∣ Z , θ ) P ( Z ∣ θ ) P(Y,Z|\theta)=P(Y|Z,\theta)P(Z|\theta) P(Y,Z∣θ)=P(Y∣Z,θ)P(Z∣θ)这其实就是条件概率公式,数学公式很好理解,但是其实 P ( Y ∣ Z , θ ) 、 P ( Z ∣ θ ) P(Y|Z,\theta)、P(Z|\theta) P(Y∣Z,θ)、P(Z∣θ)两项都无法求解,因为隐变量是无法确切得到的。
事实上,EM算法的本质是通过迭代逐步接近 L ( θ ) L(\theta) L(θ)的极大值的。假设在第i次迭代后 θ \theta θ的估计值是 θ ( i ) \theta^{(i)} θ(i)。EM算法希望保证每一次新的估计值 θ \theta θ都能使 L ( θ ) L(\theta) L(θ)增加,即 L ( θ ) > L ( θ ( i ) ) L(\theta)>L(\theta^{(i)}) L(θ)>L(θ(i)),这样就能逐步达到极大值。因此,考虑两者之差:
L ( θ ) − L ( θ ( i ) ) = log ( ∑ Z P ( Y ∣ Z , θ ) P ( Z ∣ θ ) ) − log P ( Y ∣ θ ( i ) ) L(\theta)-L(\theta^{(i)})=\log\bigg(\sum_Z P(Y|Z,\theta)P(Z|\theta)\bigg)-\log P(Y|\theta^{(i)}) L(θ)−L(θ(i))=log(Z∑P(Y∣Z,θ)P(Z∣θ))−logP(Y∣θ(i))
利用Jensen不等式( log ∑ j λ j y j ≥ ∑ j λ j log y j \log\sum_j \lambda_jy_j\ge\sum_j\lambda_j\log y_j log∑jλjyj≥∑jλjlogyj,其中 λ j ≥ 0 , ∑ j λ j = 1 \lambda_j\ge0,\sum_j\lambda_j=1 λj≥0,∑jλj=1)得到其下界:
L ( θ ) − L ( θ ( i ) ) = log ( ∑ Z P ( Z ∣ Y , θ ( i ) ) P ( Y ∣ Z , θ ) P ( Z ∣ θ ) P ( Z ∣ Y , θ ( i ) ) ) − log P ( Y ∣ θ ( i ) ) ≥ ∑ Z P ( Z ∣ Y , θ ( i ) ) log P ( Y ∣ Z , θ ) P ( Z ∣ θ ) P ( Z ∣ Y , θ ( i ) ) − log P ( Y ∣ θ ( i ) ) L(\theta)-L(\theta^{(i)})=\log\bigg(\sum_Z P(Z|Y,\theta^{(i)})\frac{P(Y|Z,\theta)P(Z|\theta)}{P(Z|Y,\theta^{(i)})}\bigg)-\log P(Y|\theta^{(i)})\ge \sum_Z P(Z|Y,\theta^{(i)})\log\frac{P(Y|Z,\theta)P(Z|\theta)}{P(Z|Y,\theta^{(i)})}-\log P(Y|\theta^{(i)}) L(θ)−L(θ(i))=log(Z∑P(Z∣Y,θ(i))P(Z∣Y,θ(i))P(Y∣Z,θ)P(Z∣θ))−logP(Y∣θ(i))≥Z∑P(Z∣Y,θ(i))logP(Z∣Y,θ(i))P(Y∣Z,θ)P(Z∣θ)−logP(Y∣θ(i))
∵ log P ( Y ∣ θ ( i ) ) = 1 × log P ( Y ∣ θ ( i ) ) = ∑ Z P ( Z ∣ Y , θ ( i ) ) log × P ( Y ∣ θ ( i ) ) = ∑ Z ( P ( Z ∣ Y , θ ( i ) ) log P ( Y ∣ θ ( i ) ) ) ∵\log P(Y|\theta^{(i)})=1×\log P(Y|\theta^{(i)})=\sum_Z P(Z|Y,\theta^{(i)})\log×P(Y|\theta^{(i)})=\sum_Z \big(P(Z|Y,\theta^{(i)})\log P(Y|\theta^{(i)})\big) ∵logP(Y∣θ(i))=1×logP(Y∣θ(i))=Z∑P(Z∣Y,θ(i))log×P(Y∣θ(i))=Z∑(P(Z∣Y,θ(i))logP(Y∣θ(i)))
∴ 原 式 ≥ ∑ Z P ( Z ∣ Y , θ ( i ) ) log P ( Y ∣ Z , θ ) P ( Z ∣ θ ) P ( Z ∣ Y , θ ( i ) ) P ( Y ∣ θ ( i ) ) ∴原式\ge \sum_Z P(Z|Y,\theta^{(i)})\log\frac{P(Y|Z,\theta)P(Z|\theta)}{P(Z|Y,\theta^{(i)})P(Y|\theta^{(i)})} ∴原式≥Z∑P(Z∣Y,θ(i))logP(Z∣Y,θ(i))P(Y∣θ(i))P(Y∣Z,θ)P(Z∣θ)
令 B ( θ , θ ( i ) ) = L ( θ ( i ) ) + ∑ Z P ( Z ∣ Y , θ ( i ) ) log P ( Y ∣ Z , θ ) P ( Z ∣ θ ) P ( Z ∣ Y , θ ( i ) ) P ( Y ∣ θ ( i ) ) , 则 有 L ( θ ) ≥ B ( θ , θ ( i ) ) 令B(\theta,\theta^{(i)})=L(\theta^{(i)})+\sum_Z P(Z|Y,\theta^{(i)})\log\frac{P(Y|Z,\theta)P(Z|\theta)}{P(Z|Y,\theta^{(i)})P(Y|\theta^{(i)})},则有L(\theta)\ge B(\theta,\theta^{(i)}) 令B(θ,θ(i))=L(θ(i))+Z∑P(Z∣Y,θ(i))logP(Z∣Y,θ(i))P(Y∣θ(i))P(Y∣Z,θ)P(Z∣θ),则有L(θ)≥B(θ,θ(i))
即 B ( θ , θ ( i ) ) B(\theta,\theta^{(i)}) B(θ,θ(i))是 L ( θ ) L(\theta) L(θ)的一个下界,且有 L ( θ ( i ) ) = B ( θ ( i ) , θ ( i ) ) L(\theta^{(i)})=B(\theta^{(i)},\theta^{(i)}) L(θ(i))=B(θ(i),θ(i))。所以,理论上,任何可以让 B ( θ , θ ( i ) ) B(\theta,\theta^{(i)}) B(θ,θ(i))增大的 θ \theta θ,也可以让 L ( θ ) L(\theta) L(θ)增大。为了让 L ( θ ) L(\theta) L(θ)尽可能的增大,所以选择新一轮迭代的参数值为:
θ ( i + 1 ) = arg max θ B ( θ , θ ( i ) ) \theta^{(i+1)}=\arg\max\limits_{\theta} B(\theta,\theta^{(i)}) θ(i+1)=argθmaxB(θ,θ(i))
因此,为了求 θ ( i + 1 ) \theta^{(i+1)} θ(i+1),忽略 B ( θ , θ ( i ) ) B(\theta,\theta^{(i)}) B(θ,θ(i))中所有与 θ \theta θ无关的常数项(留下 P ( Z ∣ Y , θ ( i ) ) P(Z|Y,\theta^{(i)}) P(Z∣Y,θ(i))):
θ ( i + 1 ) = arg max θ ( ∑ Z P ( Z ∣ Y , θ ( i ) ) log P ( Y ∣ Z , θ ) P ( Z ∣ θ ) ) = arg max θ ( ∑ Z P ( Z ∣ Y , θ ( i ) ) log P ( Y , Z ∣ θ ) ) \theta^{(i+1)}=\arg\max\limits_{\theta} \bigg( \sum_Z P(Z|Y,\theta^{(i)})\log P(Y|Z,\theta)P(Z|\theta) \bigg)=\arg\max\limits_{\theta} \bigg( \sum_Z P(Z|Y,\theta^{(i)})\log P(Y,Z|\theta) \bigg) θ(i+1)=argθmax(Z∑P(Z∣Y,θ(i))logP(Y∣Z,θ)P(Z∣θ))=argθmax(Z∑P(Z∣Y,θ(i))logP(Y,Z∣θ))
记 Q ( θ , θ ( i ) ) = ∑ Z P ( Z ∣ Y , θ ( i ) ) log P ( Y , Z ∣ θ ) Q(\theta,\theta^{(i)})=\sum_Z P(Z|Y,\theta^{(i)})\log P(Y,Z|\theta) Q(θ,θ(i))=∑ZP(Z∣Y,θ(i))logP(Y,Z∣θ),称为Q函数,是可以求解为关于 θ \theta θ的表达式,并根据表达式求解极大值的。
下图是 L ( θ ) L(\theta) L(θ)和 B ( θ , θ ( i ) ) B(\theta,\theta^{(i)}) B(θ,θ(i))的曲线(来自李航《统计学习方法》),根据上述推导,在 θ = θ ( i ) \theta=\theta^{(i)} θ=θ(i)处,两者是相同的, B ( θ , θ ( i ) ) B(\theta,\theta^{(i)}) B(θ,θ(i))取极大值后, L ( θ ) L(\theta) L(θ)也会上升。但是从图中也可以看出,EM算法并不能保证找到全局最优解。
EM算法也可以用在无监督学习中,当训练数据只有输入,没有对应标签时,需要学习模型的任务称为无监督学习。EM算法可以把无监督学习的训练数据看作是联合概率分布P(X,Y)产生的数据,其中X是可观测数据,Y是不可观测数据。
定理1:设 P ( Y ∣ θ ) P(Y|\theta) P(Y∣θ)为观测数据的似然函数, θ ( i ) ( i = 1 , 2 , . . . ) \theta^{(i)}(i=1,2,...) θ(i)(i=1,2,...)为EM算法得到的参数估计序列, P ( Y ∣ θ ( i ) ) ( i = 1 , 2 , . . . ) P(Y|\theta^{(i)})(i=1,2,...) P(Y∣θ(i))(i=1,2,...)为对应的似然函数序列,则 P ( Y ∣ θ ( i ) ) P(Y|\theta^{(i)}) P(Y∣θ(i))是单调递增的,即: P ( Y ∣ θ ( i + 1 ) ) ≥ P ( Y ∣ θ ( i ) ) P(Y|\theta^{(i+1)})\ge P(Y|\theta^{(i)}) P(Y∣θ(i+1))≥P(Y∣θ(i))。
证明:
P ( Y ∣ θ ) = P ( Z ∣ Y , θ ) P ( Y ∣ θ ) P ( Z ∣ Y , θ ) = P ( Y , Z ∣ θ ) P ( Z ∣ Y , θ ) P(Y|\theta)=\frac{P(Z|Y,\theta)P(Y|\theta)}{P(Z|Y,\theta)}=\frac{P(Y,Z|\theta)}{P(Z|Y,\theta)} P(Y∣θ)=P(Z∣Y,θ)P(Z∣Y,θ)P(Y∣θ)=P(Z∣Y,θ)P(Y,Z∣θ)
取 对 数 得 : log P ( Y ∣ θ ) = log P ( Y , Z ∣ θ ) − log P ( Z ∣ Y , θ ) 取对数得:\log P(Y|\theta)=\log P(Y,Z|\theta)-\log P(Z|Y,\theta) 取对数得:logP(Y∣θ)=logP(Y,Z∣θ)−logP(Z∣Y,θ)
{ 已 知 : Q ( θ , θ ( i ) ) = ∑ Z log P ( Y , Z ∣ θ ) P ( Z ∣ Y , θ ( i ) ) 设 定 : H ( θ , θ ( i ) ) = ∑ Z log P ( Z ∣ Y , θ ) P ( Z ∣ Y , θ ( i ) ) \begin{cases} 已知:Q(\theta,\theta^{(i)})=\sum_Z\log P(Y,Z|\theta)P(Z|Y,\theta^{(i)}) \\ 设定:H(\theta,\theta^{(i)})=\sum_Z\log P(Z|Y,\theta)P(Z|Y,\theta^{(i)}) \end{cases} { 已知:Q(θ,θ(i))=∑ZlogP(Y,Z∣θ)P(Z∣Y,θ(i))设定:H(θ,θ(i))=∑ZlogP(Z∣Y,θ)P(Z∣Y,θ(i))
所 以 对 数 似 然 函 数 可 以 写 成 : log P ( Y ∣ θ ) = Q ( θ , θ ( i ) ) − H ( θ , θ ( i ) ) 所以对数似然函数可以写成:\log P(Y|\theta)=Q(\theta,\theta^{(i)})-H(\theta,\theta^{(i)}) 所以对数似然函数可以写成:logP(Y∣θ)=Q(θ,θ(i))−H(θ,θ(i))
令 θ = θ ( i ) \theta=\theta^{(i)} θ=θ(i)和 θ ( i + 1 ) \theta^{(i+1)} θ(i+1)代入上式可得:
log P ( Y ∣ θ ( i + 1 ) ) − log P ( Y ∣ θ ( i ) ) = [ Q ( θ ( i + 1 ) , θ ( i ) ) − Q ( θ ( i + 1 ) , θ ( i ) ) ] − [ H ( θ ( i + 1 ) , θ ( i ) ) − H ( θ ( i + 1 ) , θ ( i ) ) ] \log P(Y|\theta^{(i+1)})-\log P(Y|\theta^{(i)})=[Q(\theta^{(i+1)},\theta^{(i)})-Q(\theta^{(i+1)},\theta^{(i)})]-[H(\theta^{(i+1)},\theta^{(i)})-H(\theta^{(i+1)},\theta^{(i)})] logP(Y∣θ(i+1))−logP(Y∣θ(i))=[Q(θ(i+1),θ(i))−Q(θ(i+1),θ(i))]−[H(θ(i+1),θ(i))−H(θ(i+1),θ(i))]
要证明 P ( Y ∣ θ ( i + 1 ) ) ≥ P ( Y ∣ θ ( i ) ) P(Y|\theta^{(i+1)})\ge P(Y|\theta^{(i)}) P(Y∣θ(i+1))≥P(Y∣θ(i)),则根据log函数单调性可知,上式右端是非负的即可。根据Q函数的定义,新选的 θ ( i + 1 ) \theta^{(i+1)} θ(i+1)需要使Q函数达到极大值,因此显然有:
Q ( θ ( i + 1 ) , θ ( i ) ) − Q ( θ ( i + 1 ) , θ ( i ) ) ≥ 0 Q(\theta^{(i+1)},\theta^{(i)})-Q(\theta^{(i+1)},\theta^{(i)})\ge 0 Q(θ(i+1),θ(i))−Q(θ(i+1),θ(i))≥0
又 ∵ H ( θ ( i + 1 ) , θ ( i ) ) − H ( θ ( i + 1 ) , θ ( i ) ) = ∑ Z log P ( Z ∣ Y , θ ( i + 1 ) ) P ( Z ∣ Y , θ ( i ) ) P ( Z ∣ Y , θ ( i ) ) ≤ log ∑ Z ( P ( Z ∣ Y , θ ( i + 1 ) ) P ( Z ∣ Y , θ ( i ) ) P ( Z ∣ Y , θ ( i ) ) ) 又∵H(\theta^{(i+1)},\theta^{(i)})-H(\theta^{(i+1)},\theta^{(i)})=\sum_Z\log \frac{P(Z|Y,\theta^{(i+1)})}{P(Z|Y,\theta^{(i)})}P(Z|Y,\theta^{(i)})\le \log \sum_Z\bigg(\frac{P(Z|Y,\theta^{(i+1)})}{P(Z|Y,\theta^{(i)})}P(Z|Y,\theta^{(i)})\bigg) 又∵H(θ(i+1),θ(i))−H(θ(i+1),θ(i))=Z∑logP(Z∣Y,θ(i))P(Z∣Y,θ(i+1))P(Z∣Y,θ(i))≤logZ∑(P(Z∣Y,θ(i))P(Z∣Y,θ(i+1))P(Z∣Y,θ(i)))
= log ∑ Z P ( Z ∣ Y , θ ( i + 1 ) ) = log 1 = 0 =\log \sum_Z P(Z|Y,\theta^{(i+1)})=\log 1=0 =logZ∑P(Z∣Y,θ(i+1))=log1=0
所以,定理1得证。
定理2:设 L ( θ ) = log P ( Y ∣ θ ) L(\theta)=\log P(Y|\theta) L(θ)=logP(Y∣θ)为观测数据的对数似然函数, θ ( i ) ( i = 1 , 2 , . . . ) \theta^{(i)}(i=1,2,...) θ(i)(i=1,2,...)为EM算法得到的参数估计序列, L ( θ ( i ) ) ( i = 1 , 2 , . . . ) L(\theta^{(i)})(i=1,2,...) L(θ(i))(i=1,2,...)为对应的对数似然函数序列。则:
1).如果 P ( Y ∣ θ ) P(Y|\theta) P(Y∣θ)有上界,则 L ( θ ( i ) ) = log P ( Y ∣ θ ( i ) ) L(\theta^{(i)})=\log P(Y|\theta^{(i)}) L(θ(i))=logP(Y∣θ(i))收敛到某一值 L ∗ L^* L∗
2).在函数 Q ( θ , θ ′ ) Q(\theta,\theta') Q(θ,θ′)与 L ( θ ) L(\theta) L(θ)满足一定条件下,由EM算法得到的参数估计序列 θ ( i ) \theta^{(i)} θ(i)的收敛值 θ ∗ \theta^* θ∗是 L ( θ ) L(\theta) L(θ)的稳定点。
第一条的证明显然 P ( Y ∣ θ ) ≤ 1 P(Y|\theta)\le 1 P(Y∣θ)≤1,再根据 L ( θ ) L(\theta) L(θ)的单调性就可以得到上述结论;
第二条的证明较为复杂,可参见文献“On the convergence properties of the EM algorithm”。
高斯混合模型是指某随机变量的概率分布模型是多个不同高斯模型的加法模型:
P ( y ∣ θ ) = ∑ k = 1 K α k ϕ ( y ∣ θ k ) P(y|\theta)=\sum_{k=1}^K \alpha_k\phi(y|\theta_k) P(y∣θ)=k=1∑Kαkϕ(y∣θk)
其中, α k \alpha_k αk是系数, α k ≥ 0 , ∑ k = 1 K α k = 1 \alpha_k\ge0,\sum_{k=1}^K\alpha_k=1 αk≥0,∑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)
第 k 个 分 模 型 为 : ϕ ( y ∣ θ k ) = 1 2 π σ k exp ( − ( y − μ k ) 2 2 σ k 2 ) 第k个分模型为:\phi(y|\theta_k)=\frac{1}{\sqrt{2\pi}\sigma_k}\exp \bigg(-\frac{(y-\mu_k)^2}{2\sigma_k^2}\bigg) 第k个分模型为:ϕ(y∣θk)=2πσk1exp(−2σk2(y−μk)2)
根据高斯混合模型的介绍可知,需要估计的参数为 θ = ( α 1 , α 2 , . . . , α K ; θ 1 , θ 2 , . . . , θ K ) \theta=(\alpha_1,\alpha_2,...,\alpha_K;\theta_1,\theta_2,...,\theta_K) θ=(α1,α2,...,αK;θ1,θ2,...,θK),其中 θ k = ( μ k , σ k 2 ) \theta_k=(\mu_k,\sigma_k^2) θk=(μk,σk2)。
1).首先要明确隐变量,写出完全数据的对数似然函数。
可以这么理解高斯混合模型得到的数据,第一步是根据概率 α k \alpha_k αk选择第k个高斯分布分模型 ϕ ( y ∣ θ k ) \phi(y|\theta_k) ϕ(y∣θk),然后根据该分模型得到观测数据。因此,已知的是观测数据,隐参数是该数据是来自第几个分模型。所以设定隐变量如下:
γ j k = { 1 , 第 j 个 观 测 来 自 第 k 个 分 模 型 0 , 其 他 , j = 1 , 2 , . . . , N ; k = 1 , 2 , . . . , K \gamma_{jk}=\begin{cases} 1,第j个观测来自第k个分模型\\ 0,其他 \end{cases},j=1,2,...,N; k=1,2,...,K γjk={ 1,第j个观测来自第k个分模型0,其他,j=1,2,...,N;k=1,2,...,K
综上,完全数据就是 ( y j , γ j 1 , γ j 2 , . . . , γ j K ) , j = 1 , 2 , . . . , N (y_j,\gamma_{j1},\gamma_{j2},...,\gamma_{jK}),j=1,2,...,N (yj,γj1,γj2,...,γjK),j=1,2,...,N
所以,完全数据的对数似然函数为:
P ( y , γ ∣ θ ) = ∏ j = 1 N P ( y j , γ j 1 , γ j 2 , . . . , γ j K ∣ θ ) P(y,\gamma|\theta)=\prod_{j=1}^N P(y_j,\gamma_{j1},\gamma_{j2},...,\gamma_{jK}|\theta) P(y,γ∣θ)=j=1∏NP(yj,γj1,γj2,...,γjK∣θ)
理解可知, ( γ j 1 , γ j 2 , . . . , γ j K ) (\gamma_{j1},\gamma_{j2},...,\gamma_{jK}) (γj1,γj2,...,γjK)中,只有一个为1,其他全为0,而 P ( y j , γ j 1 , γ j 2 , . . . , γ j K ∣ θ ) P(y_j,\gamma_{j1},\gamma_{j2},...,\gamma_{jK}|\theta) P(yj,γj1,γj2,...,γjK∣θ)是在 γ j k = 1 \gamma_{jk}=1 γjk=1时,用对应的分模型求出的,所以上式可以写成:
P ( y , γ ∣ θ ) = ∏ k = 1 K ∏ j = 1 N [ α k ϕ ( y i ∣ θ k ) ] γ j k = ∏ k = 1 K α k n k ∏ j = 1 N [ ϕ ( y i ∣ θ k ) ] γ j k = ∏ k = 1 K α k n k ∏ j = 1 N [ 1 2 π σ k exp ( − ( y j − μ k ) 2 2 σ k 2 ) ] γ j k P(y,\gamma|\theta)=\prod_{k=1}^K\prod_{j=1}^N [\alpha_k \phi(y_i|\theta_k)]^{\gamma_{jk}}=\prod_{k=1}^K\alpha_k^{n_k}\prod_{j=1}^N [ \phi(y_i|\theta_k)]^{\gamma_{jk}}=\prod_{k=1}^K\alpha_k^{n_k}\prod_{j=1}^N \bigg[\frac{1}{\sqrt{2\pi}\sigma_k}\exp \bigg(-\frac{(y_j-\mu_k)^2}{2\sigma_k^2}\bigg)\bigg]^{\gamma_{jk}} P(y,γ∣θ)=k=1∏Kj=1∏N[αkϕ(yi∣θk)]γjk=k=1∏Kαknkj=1∏N[ϕ(yi∣θk)]γjk=k=1∏Kαknkj=1∏N[2πσk1exp(−2σk2(yj−μk)2)]γjk
其中, n k = ∑ j = 1 N γ j k , ∑ k = 1 K n k = N n_k=\sum_{j=1}^N \gamma_{jk},\sum_{k=1}^K n_k=N nk=∑j=1Nγjk,∑k=1Knk=N,注意, n k n_k nk中是遍历下标j,而不是下标k。
所以,完全数据的对数似然函数即为:
log P ( y , γ ∣ θ ) = ∑ k = 1 K { n k log α k + ∑ j = 1 N γ j k [ log 1 2 π − log σ k − 1 2 σ k 2 ( y j − μ k ) 2 ] } \log P(y,\gamma|\theta)=\sum_{k=1}^K\bigg\{n_k\log\alpha_k+\sum_{j=1}^N \gamma_{jk}\bigg[\log\frac{1}{\sqrt{2\pi}}-\log \sigma_k-\frac{1}{2\sigma_k^2}(y_j-\mu_k)^2\bigg]\bigg\} logP(y,γ∣θ)=k=1∑K{ nklogαk+j=1∑Nγjk[log2π1−logσk−2σk21(yj−μk)2]}
2).EM算法E步,确定Q函数
Q ( θ , θ ( i ) ) = E [ log P ( y , γ ∣ θ ) ∣ y , θ ( i ) ] = E { ∑ k = 1 K { n k log α k + ∑ j = 1 N γ j k [ log 1 2 π − log σ k − 1 2 σ k 2 ( y j − μ k ) 2 ] } } Q(\theta,\theta^{(i)})=E[\log P(y,\gamma|\theta)|y,\theta^{(i)}]=E\bigg\{\sum_{k=1}^K\bigg\{n_k\log\alpha_k+\sum_{j=1}^N \gamma_{jk}\bigg[\log\frac{1}{\sqrt{2\pi}}-\log \sigma_k-\frac{1}{2\sigma_k^2}(y_j-\mu_k)^2\bigg]\bigg\}\bigg\} Q(θ,θ(i))=E[logP(y,γ∣θ)∣y,θ(i)]=E{ k=1∑K{ nklogαk+j=1∑Nγjk[log2π1−logσk−2σk21(yj−μk)2]}}
= ∑ k = 1 K { ∑ j = 1 N ( E γ j k ) log α k + ∑ j = 1 N E γ j k [ log 1 2 π − log σ k − 1 2 σ k 2 ( y j − μ k ) 2 ] } =\sum_{k=1}^K\bigg\{\sum_{j=1}^N \big(E_{\gamma_{jk}}\big)\log\alpha_k+\sum_{j=1}^N E_{\gamma_{jk}}\bigg[\log\frac{1}{\sqrt{2\pi}}-\log \sigma_k-\frac{1}{2\sigma_k^2}(y_j-\mu_k)^2\bigg]\bigg\} =k=1∑K{ j=1∑N(Eγjk)logαk+j=1∑NEγjk[log2π1−logσk−2σk21(yj−μk)2]}
其中,记 γ ^ j k = E γ j k = E ( γ j k ∣ y , θ ) = ∑ k = 1 K γ j k P ( γ j k ∣ y , θ ) = P ( γ j k = 1 ∣ y , θ ) \hat\gamma_{jk}=E_{\gamma_{jk}}=E(\gamma_{jk}|y,\theta)=\sum_{k=1}^K\gamma_{jk}P(\gamma_{jk}|y,\theta)=P(\gamma_{jk}=1|y,\theta) γ^jk=Eγjk=E(γjk∣y,θ)=∑k=1KγjkP(γjk∣y,θ)=P(γjk=1∣y,θ)
γ ^ j k = E ( γ j k ∣ y , θ ) = P ( γ j k = 1 ∣ y , θ ) = P ( γ j k = 1 , y j ∣ θ ) P ( y j ∣ θ ) ∑ t = 1 K P ( γ j t = 1 , y j ∣ θ ) P ( y j ∣ θ ) = P ( γ j k = 1 , y j ∣ θ ) ∑ t = 1 K P ( γ j t = 1 , y j ∣ θ ) \hat\gamma_{jk}=E(\gamma_{jk}|y,\theta)=P(\gamma_{jk}=1|y,\theta)=\frac{P(\gamma_{jk}=1,y_j|\theta)P(y_j|\theta)}{\sum_{t=1}^KP(\gamma_{jt}=1,y_j|\theta)P(y_j|\theta)}=\frac{P(\gamma_{jk}=1,y_j|\theta)}{\sum_{t=1}^KP(\gamma_{jt}=1,y_j|\theta)} γ^jk=E(γjk∣y,θ)=P(γjk=1∣y,θ)=∑t=1KP(γjt=1,yj∣θ)P(yj∣θ)P(γjk=1,yj∣θ)P(yj∣θ)=∑t=1KP(γjt=1,yj∣θ)P(γjk=1,yj∣θ)
此处j是固定量,由于 ( γ j 1 , γ j 2 , . . . , γ j K ) (\gamma_{j1},\gamma_{j2},...,\gamma_{jK}) (γj1,γj2,...,γjK)中,只有一个为1,其他全为0,所以期望 E ( γ j k ∣ y , θ ) E(\gamma_{jk}|y,\theta) E(γjk∣y,θ)是已知观测值和参数时,选中特定分模型的概率。
∴ γ ^ j k = P ( y j ∣ γ j k = 1 , θ ) P ( γ j k = 1 ∣ θ ) ∑ t = 1 K P ( y j ∣ γ j t = 1 , θ ) P ( γ j t = 1 ∣ θ ) = α k ϕ ( y j ∣ θ k ) ∑ t = 1 K α t ϕ ( y j ∣ θ t ) ∴\hat\gamma_{jk}=\frac{P(y_j|\gamma_{jk}=1,\theta)P(\gamma_{jk}=1|\theta)}{\sum_{t=1}^K P(y_j|\gamma_{jt}=1,\theta)P(\gamma_{jt}=1|\theta)}=\frac{\alpha_k\phi(y_j|\theta_k)}{\sum_{t=1}^K\alpha_t\phi(y_j|\theta_t)} ∴γ^jk=∑t=1KP(yj∣γjt=1,θ)P(γjt=1∣θ)P(yj∣γjk=1,θ)P(γjk=1∣θ)=∑t=1Kαtϕ(yj∣θt)αkϕ(yj∣θk)
注意,上述推导中分母求和的变量原书里使用的是’k’,很容易和分子里的k混起来,不建议按原书的写法,容易引起歧义。另外,求解 γ ^ j k \hat\gamma_{jk} γ^jk所用到的参数 α t , μ t , σ t \alpha_t,\mu_t,\sigma_t αt,μt,σt等都是当前模型下已知的参数,因此 γ ^ j k \hat\gamma_{jk} γ^jk是可求的,同理下文中的 n k n_k nk也是可求的。
将 γ ^ j k = E γ j k \hat\gamma_{jk}=E_{\gamma_{jk}} γ^jk=Eγjk和 n k = ∑ j = 1 N E γ j k n_k=\sum_{j=1}^N E_{\gamma_{jk}} nk=∑j=1NEγjk代入Q函数中可得
Q ( θ , θ ( i ) ) = ∑ k = 1 K { n k log α k + ∑ j = 1 N γ ^ j k [ log 1 2 π − log σ k − 1 2 σ k 2 ( y j − μ k ) 2 ] } Q(\theta,\theta^{(i)})=\sum_{k=1}^K\bigg\{n_k\log\alpha_k+\sum_{j=1}^N \hat\gamma_{jk}\bigg[\log\frac{1}{\sqrt{2\pi}}-\log \sigma_k-\frac{1}{2\sigma_k^2}(y_j-\mu_k)^2\bigg]\bigg\} Q(θ,θ(i))=k=1∑K{ nklogαk+j=1∑Nγ^jk[log2π1−logσk−2σk21(yj−μk)2]}
3). 确定EM算法的M步
求函数 Q ( θ , θ ( i ) ) Q(\theta,\theta^{(i)}) Q(θ,θ(i))对参数 θ \theta θ的极大值,从而得到新一轮迭代的模型参数:
θ ( i + 1 ) = arg max θ Q ( θ , θ ( i ) ) \theta^{(i+1)}=\arg\max\limits_{\theta}Q(\theta,\theta^{(i)}) θ(i+1)=argθmaxQ(θ,θ(i))
用 μ ^ t , σ ^ t 2 \hat\mu_t,\hat\sigma_t^2 μ^t,σ^t2和 α ^ t , t = 1 , 2 , . . . , K \hat\alpha_t,t=1,2,...,K α^t,t=1,2,...,K表示参数 θ ( i + 1 ) \theta^{(i+1)} θ(i+1)中的具体参数。求 μ ^ t , σ ^ t 2 \hat\mu_t,\hat\sigma_t^2 μ^t,σ^t2只需将 Q ( θ , θ ( i ) ) Q(\theta,\theta^{(i)}) Q(θ,θ(i))对求 μ ^ t , σ ^ t 2 \hat\mu_t,\hat\sigma_t^2 μ^t,σ^t2偏导并令其为0即可。
∂ Q ( θ , θ ( i ) ) ∂ μ ^ t = ∂ ∑ j = 1 N γ ^ j t [ log 1 2 π − log σ t − 1 2 σ t 2 ( y j − μ t ) 2 ] ∂ μ ^ t = ∑ j = 1 N γ ^ j t σ t 2 ( y j − μ t ) \frac{\partial Q(\theta,\theta^{(i)})}{\partial \hat\mu_t}=\frac{\partial\sum_{j=1}^N \hat\gamma_{jt}\bigg[\log\frac{1}{\sqrt{2\pi}}-\log \sigma_t-\frac{1}{2\sigma_t^2}(y_j-\mu_t)^2\bigg]}{\partial \hat\mu_t}=\sum_{j=1}^N \frac{\hat\gamma_{jt}}{\sigma_t^2}(y_j-\mu_t) ∂μ^t∂Q(θ,θ(i))=∂μ^t∂∑j=1Nγ^jt[log2π1−logσt−2σt21(yj−μt)2]=j=1∑Nσt2γ^jt(yj−μt)
令 ∂ Q ( θ , θ ( i ) ) ∂ μ ^ t = 0 , 得 μ ^ t = ∑ j = 1 N γ ^ j t y j ∑ j = 1 N γ ^ j t , t = 1 , 2 , . . . K 令\frac{\partial Q(\theta,\theta^{(i)})}{\partial \hat\mu_t}=0,得\hat\mu_t=\frac{\sum_{j=1}^N \hat\gamma_{jt}y_j}{\sum_{j=1}^N \hat\gamma_{jt}},t=1,2,...K 令∂μ^t∂Q(θ,θ(i))=0,得μ^t=∑j=1Nγ^jt∑j=1Nγ^jtyj,t=1,2,...K
∂ Q ( θ , θ ( i ) ) ∂ σ ^ t 2 = ∂ ∑ j = 1 N γ ^ j t [ log 1 2 π − log σ t − 1 2 σ t 2 ( y j − μ t ) 2 ] ∂ σ ^ t 2 = ∑ j = 1 N − γ ^ j t ( 1 σ t ⋅ 1 2 ⋅ 1 σ t − 1 2 σ 4 ( y j − μ t ) 2 ) \frac{\partial Q(\theta,\theta^{(i)})}{\partial \hat\sigma_t^2}=\frac{\partial\sum_{j=1}^N \hat\gamma_{jt}\bigg[\log\frac{1}{\sqrt{2\pi}}-\log \sigma_t-\frac{1}{2\sigma_t^2}(y_j-\mu_t)^2\bigg]}{\partial \hat\sigma_t^2}=\sum_{j=1}^N -\hat\gamma_{jt}(\frac{1}{\sigma_t}·\frac{1}{2}·\frac{1}{\sigma_t}-\frac{1}{2\sigma^4}(y_j-\mu_t)^2) ∂σ^t2∂Q(θ,θ(i))=∂σ^t2∂∑j=1Nγ^jt[log2π1−logσt−2σt21(yj−μt)2]=j=1∑N−γ^jt(σt1⋅21⋅σt1−2σ41(yj−μt)2)
令 ∂ Q ( θ , θ ( i ) ) ∂ σ ^ t 2 = 0 , 得 σ ^ t 2 = ∑ j = 1 N γ ^ j t ( y j − μ t ) 2 ∑ j = 1 N γ ^ j t , t = 1 , 2 , . . . K 令\frac{\partial Q(\theta,\theta^{(i)})}{\partial \hat\sigma_t^2}=0,得\hat\sigma_t^2=\frac{\sum_{j=1}^N \hat\gamma_{jt}(y_j-\mu_t)^2}{\sum_{j=1}^N \hat\gamma_{jt}},t=1,2,...K 令∂σ^t2∂Q(θ,θ(i))=0,得σ^t2=∑j=1Nγ^jt∑j=1Nγ^jt(yj−μt)2,t=1,2,...K
注意,上述推导中参数变量下标原书里使用的是’k’,求导时很容易Q函数里的求和下标k混起来,不建议按原书的写法,容易引起歧义。所以此处用t下标代替,下述推导也同样如此。
对 α ^ t \hat\alpha_t α^t的求导略微复杂,因为该求导是有约束条件的求导,约束条件为 ∑ k = 1 K α k = 1 \sum_{k=1}^K\alpha_k=1 ∑k=1Kαk=1。因此,需要使用拉格朗日乘子法求解极值。首先,去除 Q ( θ , θ ( i ) ) Q(\theta,\theta^{(i)}) Q(θ,θ(i))中与 α k \alpha_k αk无关的项:
Q ( θ , θ ( i ) ) → ∑ k = 1 K { n k log α k } Q(\theta,\theta^{(i)})\rightarrow \sum_{k=1}^K\bigg\{n_k\log\alpha_k \bigg\} Q(θ,θ(i))→k=1∑K{ nklogαk}
然后,用拉格朗日乘子法构造:
L ( α t ) = ∑ k = 1 K { n k log α k } + β ( ∑ k = 1 K α k − 1 ) L(\alpha_t)=\sum_{k=1}^K\bigg\{n_k\log\alpha_k \bigg\}+\beta\bigg(\sum_{k=1}^K\alpha_k-1\bigg) L(αt)=k=1∑K{ nklogαk}+β(k=1∑Kαk−1)
L ( α t ) L(\alpha_t) L(αt)对 α t \alpha_t αt求导可得:
∂ L ( α t ) ∂ α t = n t α t + β = 0 ⇒ β α t = − n t ⇒ ∑ t = 1 K β α t = − ∑ t = 1 K ∑ j = 1 N γ ^ j t ⇒ β = − N \frac{\partial L(\alpha_t)}{\partial \alpha_t}=\frac{n_t}{\alpha_t}+\beta=0 \Rightarrow \beta\alpha_t=-n_t \Rightarrow \sum_{t=1}^K\beta\alpha_t=-\sum_{t=1}^K\sum_{j=1}^N \hat\gamma_{jt} \Rightarrow \beta=-N ∂αt∂L(αt)=αtnt+β=0⇒βαt=−nt⇒t=1∑Kβαt=−t=1∑Kj=1∑Nγ^jt⇒β=−N
上述推导中,有 ∑ t = 1 K ∑ j = 1 N γ ^ j t = ∑ j = 1 N ∑ t = 1 K γ ^ j t = ∑ j = 1 N 1 = N \sum_{t=1}^K\sum_{j=1}^N \hat\gamma_{jt}=\sum_{j=1}^N\sum_{t=1}^K \hat\gamma_{jt}=\sum_{j=1}^N1=N ∑t=1K∑j=1Nγ^jt=∑j=1N∑t=1Kγ^jt=∑j=1N1=N。将 β = − N \beta=-N β=−N代入偏导方程 ∂ L ( α t ) ∂ α t \frac{\partial L(\alpha_t)}{\partial \alpha_t} ∂αt∂L(αt)可得:
α ^ t = n t N = ∑ j = 1 N γ ^ j t N , t = 1 , 2 , . . . , K \hat\alpha_t=\frac{n_t}{N}=\frac{\sum_{j=1}^N \hat\gamma_{jt}}{N},t=1,2,...,K α^t=Nnt=N∑j=1Nγ^jt,t=1,2,...,K
4).重复上述2,3步,直到参数收敛即可。
算法步骤总结:
待补充