EM算法
EM算法的来源
李航的《统计学习方法一书》通过三硬币模型引入了对EM的用法,但是并没有讲解怎么通过EM算法推导出三硬币模型的递推公式。
从三硬币法开始讲起
三硬币模型
假设有三枚硬币A,B,C,硬币A以π \pi π 的概率掷出正面,以1 − π 1-\pi 1 − π 的概率掷出反面,硬币B以p p p 的概率掷出正面,以1 − p 1-p 1 − p 的概率掷出反面,硬币C以q q q 的概率掷出正面,以1 − q 1-q 1 − q 的概率掷出反面。定义以下规则:掷出硬币A,如果掷出正面,选择硬币B,记录掷出硬币B的结果;否则掷出硬币C,记录C的结果。记正面为1,反面为0,得到:1 , 1 , 1 , 1 , 1 , 0 , 0 , 0 , 0 , 1 , 1 , 1 , 1 1,1,1,1,1,0,0,0,0,1,1,1,1 1 , 1 , 1 , 1 , 1 , 0 , 0 , 0 , 0 , 1 , 1 , 1 , 1
求π \pi π 、p p p 、q q q 的最大似然估计。
这是一个典型的存在隐形变量的问题。即“硬币A的结果”是隐含变量,这里将硬币A的结果用Z Z Z 表示,观测变量用Y Y Y 表示,用y i ∈ { 0 , 1 } y_i\in \{0,1\} y i ∈ { 0 , 1 } 表示每一次掷出的结果。可以得到P ( y i ) = π p y i ( 1 − p ) 1 − y i + ( 1 − π ) q y i ( 1 − q ) 1 − y i P(y_i)=\pi p^{y_i}(1-p)^{1-y_i}+(1-\pi)q^{y_i}(1-q)^{1-y_i} P ( y i ) = π p y i ( 1 − p ) 1 − y i + ( 1 − π ) q y i ( 1 − q ) 1 − y i
用参数θ = [ π , p , q ] \theta = \left[\pi,p,q\right] θ = [ π , p , q ] 表示未知参数。Y的联合概率可以表示为P ( Y ∣ θ ) = ∏ i = 1 N P ( y i ∣ θ ) P\left(Y\right|\theta) = \prod_{i=1}^{N} P\left( y_i|\theta\right) P ( Y ∣ θ ) = i = 1 ∏ N P ( y i ∣ θ )
最大似然估计就是寻找一个可以使得Y的联合概率达到最大的θ \theta θ ,写成对数形式比较容易计算,并带入上面的公式即θ ^ = arg max θ ln ( ∏ i = 1 N P ( y i ∣ θ ) ) = arg max θ ∑ i = 1 N ln ( π p y i ( 1 − p ) 1 − y i + ( 1 − π ) q y i ( 1 − q ) 1 − y i ) \hat{\theta}=\argmax_{\theta}\ln\left(\prod_{i=1}^{N}P(y_i|\theta)\right)=\argmax_{\theta}\sum_{i=1}^{N}\ln\left(\pi p^{y_i}(1-p)^{1-y_i}+(1-\pi)q^{y_i}(1-q)^{1-y_i}\right) θ ^ = θ a r g m a x ln ( i = 1 ∏ N P ( y i ∣ θ ) ) = θ a r g m a x i = 1 ∑ N ln ( π p y i ( 1 − p ) 1 − y i + ( 1 − π ) q y i ( 1 − q ) 1 − y i )
按照极大似然法的流程,下一步应当计算似然函数的极值d L d θ = 0 \frac{dL}{d\theta}=\mathbf{0} d θ d L = 0 ,其中L ( θ ) = ∑ i = 1 N ln ( π p y i ( 1 − p ) 1 − y i + ( 1 − π ) q y i ( 1 − q ) 1 − y i ) L(\theta)=\sum_{i=1}^{N}\ln\left(\pi p^{y_i}(1-p)^{1-y_i}+(1-\pi)q^{y_i}(1-q)^{1-y_i}\right) L ( θ ) = ∑ i = 1 N ln ( π p y i ( 1 − p ) 1 − y i + ( 1 − π ) q y i ( 1 − q ) 1 − y i ) 0 = d L ( θ ) d π = ∑ i = 1 N ln ( π p y i ( 1 − p ) 1 − y i + ( 1 − π ) q y i ( 1 − q ) 1 − y i ) = ∑ i = 1 N p y i ( 1 − p ) 1 − y i − q y i ( 1 − q ) 1 − y i π p y i ( 1 − p ) 1 − y i + ( 1 − π ) q y i ( 1 − q ) 1 − y i = 0
\mathbf{0}=\frac{dL(\theta)}{d\pi}=\sum_{i=1}^{N}\ln\left(\pi p^{y_i}(1-p)^{1-y_i}+ (1-\pi)q^{y_i}(1-q)^{1-y_i} \right)\\
=\sum_{i=1}^{N}\frac{p^{y_i}(1-p)^{1-y_i}-q^{y_i}(1-q)^{1-y_i}}{\pi p^{y_i}(1-p)^{1-y_i}+ (1-\pi)q^{y_i}(1-q)^{1-y_i} }\\
= \mathbf{0}\\
0 = d π d L ( θ ) = i = 1 ∑ N ln ( π p y i ( 1 − p ) 1 − y i + ( 1 − π ) q y i ( 1 − q ) 1 − y i ) = i = 1 ∑ N π p y i ( 1 − p ) 1 − y i + ( 1 − π ) q y i ( 1 − q ) 1 − y i p y i ( 1 − p ) 1 − y i − q y i ( 1 − q ) 1 − y i = 0
0 = d ∣ ( θ ) d p = ∑ i = 1 N π p y i ( y i − 1 ) ( 1 − p ) − y i + ( 1 − π ) q y i ( y i − 1 ) ( 1 − q ) − y i π p y i ( 1 − p ) 1 − y i + ( 1 − π ) q y i ( 1 − q ) 1 − y i
\mathbf{0} = \frac{d|(\theta)}{dp} = \sum_{i=1}^{N} \frac{\pi p^{y_i}(y_i-1)(1-p)^{-y_i}+ (1-\pi)q^{y_i}(y_i-1)(1-q)^{-y_i} }{\pi p^{y_i}(1-p)^{1-y_i}+ (1-\pi)q^{y_i}(1-q)^{1-y_i}}
0 = d p d ∣ ( θ ) = i = 1 ∑ N π p y i ( 1 − p ) 1 − y i + ( 1 − π ) q y i ( 1 − q ) 1 − y i π p y i ( y i − 1 ) ( 1 − p ) − y i + ( 1 − π ) q y i ( y i − 1 ) ( 1 − q ) − y i
发现无法往下往下计算了……,由于目标函数并非凸函数。这个方程没有解析解。
因此考虑放缩法。
EM算法的推导
这一部分主要参考李航著《统计学习方法》
用符号Y Y Y 表示观测数据,符号Z Z Z 表示隐含数据,上述似然函数是观测数据的似然函数,即L ( θ ) = ln P ( Y ∣ θ ) = ln ∑ Z P ( Y , Z ∣ θ ) = ln ∑ Z P ( Y ∣ Z , θ ) P ( Z ∣ θ ) L(\theta)=\ln P(Y|\theta) = \ln \sum_Z P(Y,Z | \theta) = \ln \sum_{Z} P(Y|Z,\theta)P(Z|\theta) L ( θ ) = ln P ( Y ∣ θ ) = ln Z ∑ P ( Y , Z ∣ θ ) = ln Z ∑ P ( Y ∣ Z , θ ) P ( Z ∣ θ )
极大化此函数的难度在于对数函数中含有数据求和,EM算法是通过不断迭代来极大化似然函数的。简单来说就是保证每一次迭代都使得L ( θ ) L(\theta) L ( θ ) 不会缩小。L ( θ ) − L ( θ ( i ) ) = ln ∑ Z P ( Y , Z ∣ θ ) − ln ( Y ∣ θ ( i ) ) = ln ∑ Z P ( Y ∣ Z , θ ) P ( Z ∣ θ ) − ln P ( Y , θ ( i ) )
L(\theta) - L(\theta^{(i)}) = \ln\sum_{Z} P(Y,Z|\theta) - \ln(Y|\theta^{(i)})\\
=\ln \sum_{Z}P(Y|Z,\theta)P(Z|\theta) - \ln P(Y,\theta^{(i)})
L ( θ ) − L ( θ ( i ) ) = ln Z ∑ P ( Y , Z ∣ θ ) − ln ( Y ∣ θ ( i ) ) = ln Z ∑ P ( Y ∣ Z , θ ) P ( Z ∣ θ ) − ln P ( Y , θ ( i ) )
利用Jensen不等式(详情见湖北高考2014年数学卷),这是对于上凸函数ln ( x ) \ln(x) ln ( x ) 满足的不等式:ln ∑ j λ j y j ≥ ∑ j λ i ln y i \ln \sum_{j}\lambda_jy_j\geq \sum_{j}\lambda_i\ln y_i ln j ∑ λ j y j ≥ j ∑ λ i ln y i
运用此结论可以得到L ( θ ) − L ( θ ( i ) ) = ln ( ∑ Z P ( Z ∣ Y , θ ( i ) ) P ( Y ∣ Z , θ ) P ( Z ∣ θ ) P ( Z ∣ Y , θ ( i ) ) ) − ln P ( Y ∣ θ ( i ) ≥ ∑ Z P ( Z ∣ Y , θ ( i ) ) ln P ( Y ∣ Z , θ ) P ( Z ∣ θ ) P ( Z ∣ Y , θ ( i ) ) − ln P ( Y ∣ θ ( i ) ) = ∑ Z P ( Z ∣ Y , θ ( i ) ) ln P ( Y ∣ Z , θ ) P ( Z ∣ θ ) P ( Z ∣ Y , θ ( i ) ) P ( Y , θ ( i ) )
L(\theta)-L(\theta^{(i)})=\ln \left(\sum_{Z} P(Z|Y,\theta^{(i)}) \frac{P(Y|Z,\theta)P(Z|\theta)}{P(Z|Y,\theta^{(i)})}\right)-\ln P(Y|\theta^{(i)}\\
\geq \sum_Z P(Z|Y,\theta^{(i)})\ln \frac{P(Y|Z,\theta)P(Z|\theta)}{P(Z|Y,\theta^{(i)})}-\ln P(Y|\theta^{(i)})\\
=\sum_Z P(Z|Y,\theta^{(i)}) \ln\frac{P(Y|Z,\theta)P(Z|\theta)}{P(Z|Y,\theta^{(i)})P(Y,\theta^{(i)})}
L ( θ ) − L ( θ ( i ) ) = ln ( Z ∑ P ( Z ∣ Y , θ ( i ) ) P ( Z ∣ Y , θ ( i ) ) P ( Y ∣ Z , θ ) P ( Z ∣ θ ) ) − ln P ( Y ∣ θ ( i ) ≥ Z ∑ P ( Z ∣ Y , θ ( i ) ) ln P ( Z ∣ Y , θ ( i ) ) P ( Y ∣ Z , θ ) P ( Z ∣ θ ) − ln P ( Y ∣ θ ( i ) ) = Z ∑ P ( Z ∣ Y , θ ( i ) ) ln P ( Z ∣ Y , θ ( i ) ) P ( Y , θ ( i ) ) P ( Y ∣ Z , θ ) P ( Z ∣ θ )
注:这里利用了∑ Z P ( Z ∣ Y , θ ) = 1 \sum_Z P(Z|Y,\theta)=1 ∑ Z P ( Z ∣ Y , θ ) = 1
令 B ( θ , θ ( i ) = L ( θ ( i ) ) + ∑ Z P ( Y ∣ Z , θ ( i ) ) ln P ( Z ∣ Y , θ ) P ( Z ∣ θ ) P ( Z ∣ Y , θ ( i ) ) P ( Y , θ ( i ) ) B(\theta,\theta^{(i)} =L(\theta^{(i)})+\sum_Z P(Y|Z,\theta^{(i)}) \ln\frac{P(Z|Y,\theta)P(Z|\theta)}{P(Z|Y,\theta^{(i)})P(Y,\theta^{(i)})} B ( θ , θ ( i ) = L ( θ ( i ) ) + ∑ Z P ( Y ∣ Z , θ ( i ) ) ln P ( Z ∣ Y , θ ( i ) ) P ( Y , θ ( i ) ) P ( Z ∣ Y , θ ) P ( Z ∣ θ ) ,可以得到L ( θ ) ≥ B ( θ , θ ( i ) )
L(\theta) \geq B(\theta,\theta^{(i)})
L ( θ ) ≥ B ( θ , θ ( i ) )
即函数B ( θ , θ ( i ) B(\theta,\theta^{(i)} B ( θ , θ ( i ) 是函数L ( θ ) L(\theta) L ( θ ) 的下界。因此,任何使得B ( θ , θ ( i ) B(\theta,\theta^{(i)} B ( θ , θ ( i ) 增大的θ \theta θ 也能使得L ( θ ) L(\theta) L ( θ ) 增大,为了使得L ( θ ) L(\theta) L ( θ ) 得到极大,应该使得B ( θ , θ ( i ) B(\theta,\theta^{(i)} B ( θ , θ ( i ) 得到极大 θ ( i + 1 ) = arg max θ B ( θ , θ ( i ) )
\theta^{(i+1)}=\argmax_\theta B(\theta,\theta^{(i)})
θ ( i + 1 ) = θ a r g m a x B ( θ , θ ( i ) )
然后省略对θ \theta θ 来说是常数项的部分,得到θ ( i + 1 ) = arg max θ { L ( θ ( i ) ) + ∑ Z P ( Z ∣ Y , θ ( i ) ) ln P ( Y ∣ Z , θ ) P ( Z ∣ θ ) P ( Z ∣ Y , θ ( i ) ) P ( Y , θ ( i ) ) } = arg max θ ∑ Z P ( Z ∣ Y , θ ( i ) ) ln P ( Y ∣ Z , θ ) P ( Z ∣ θ ) P ( Z ∣ Y , θ ( i ) ) P ( Y , θ ( i ) ) = arg max θ ∑ Z P ( Z ∣ Y , θ ( i ) ) ln P ( Y ∣ Z , θ ) P ( Z ∣ θ ) = arg max θ ∑ Z P ( Z ∣ Y , θ ( i ) ) ln P ( Y , Z ∣ θ ) = arg max θ Q ( θ , θ ( i ) )
\theta^{(i+1)} = \argmax_\theta \{ L(\theta^{(i)})+\sum_Z P(Z|Y,\theta^{(i)}) \ln\frac{P(Y|Z,\theta)P(Z|\theta)}{P(Z|Y,\theta^{(i)})P(Y,\theta^{(i)})}\}\\
=\argmax_\theta \sum_Z P(Z|Y,\theta^{(i)}) \ln\frac{P(Y|Z,\theta)P(Z|\theta)}{P(Z|Y,\theta^{(i)})P(Y,\theta^{(i)})}\\
=\argmax_\theta \sum_Z P(Z|Y,\theta^{(i)}) \ln P(Y|Z,\theta)P(Z|\theta)\\
=\argmax_\theta \sum_Z P(Z|Y,\theta^{(i)}) \ln P(Y,Z|\theta)\\
=\argmax_\theta Q(\theta,\theta^{(i)})
θ ( i + 1 ) = θ a r g m a x { L ( θ ( i ) ) + Z ∑ P ( Z ∣ Y , θ ( i ) ) ln P ( Z ∣ Y , θ ( i ) ) P ( Y , θ ( i ) ) P ( Y ∣ Z , θ ) P ( Z ∣ θ ) } = θ a r g m a x Z ∑ P ( Z ∣ Y , θ ( i ) ) ln P ( Z ∣ Y , θ ( i ) ) P ( Y , θ ( i ) ) P ( Y ∣ Z , θ ) P ( Z ∣ θ ) = θ a r g m a x Z ∑ P ( Z ∣ Y , θ ( i ) ) ln P ( Y ∣ Z , θ ) P ( Z ∣ θ ) = θ a r g m a x Z ∑ P ( Z ∣ Y , θ ( i ) ) ln P ( Y , Z ∣ θ ) = θ a r g m a x Q ( θ , θ ( i ) )
由此推导出Q Q Q 函数,即完全数据的对数似然函数对于条件概率的期望 Q ( θ , θ ( i ) ) = ∑ Z P ( ∣ Z ∣ Y , θ ( i ) ) ln P ( Y , Z ∣ θ ( i ) )
Q(\theta,\theta^{(i)}) = \sum_Z P(|Z|Y,\theta^{(i)}) \ln P(Y,Z|\theta^{(i)})
Q ( θ , θ ( i ) ) = Z ∑ P ( ∣ Z ∣ Y , θ ( i ) ) ln P ( Y , Z ∣ θ ( i ) )
EM算法流程
设置参数初始值θ ( 0 ) \theta^{(0)} θ ( 0 ) ,注意EM算法对于初始值的敏感的
E step: 求Q ( θ , θ ( i ) ) Q(\theta,\theta^{(i)}) Q ( θ , θ ( i ) )
M step:更新参数,极大化Q函数:θ ( i + 1 ) = arg max θ Q ( θ , θ ( i ) )
\theta^{(i+1)}=\argmax_\theta Q(\theta,\theta^{(i)})
θ ( i + 1 ) = θ a r g m a x Q ( θ , θ ( i ) )
给出迭代停止的条件 一般是给出较小正数ϵ 1 \epsilon_1 ϵ 1 或者ϵ 2 \epsilon_2 ϵ 2 满足
$
|\theta^{(i+1)} - \theta^{(i)}|\leq \epsilon_1
$或者∣ Q ( θ ( i + 1 ) , θ ( i ) ) − Q ( θ ( i ) , θ ( i ) ) ∣ ≤ ϵ 2 |Q(\theta^{(i+1)},\theta^{(i)})-Q(\theta^{(i)},\theta^{(i)})|\leq \epsilon_2 ∣ Q ( θ ( i + 1 ) , θ ( i ) ) − Q ( θ ( i ) , θ ( i ) ) ∣ ≤ ϵ 2 的时候迭代停止。
EM算法的直观解释
EM 算法是寻找非凸函数的极值的一种有效思路。在算法中有一种对偶问题的思想,原问题的极小值转化为对偶问题的极大值,在满足KKT条件的时候,可以通过对偶问题解决原问题,这也是将非凸函数转换为凸函数的一种有效方法。和此思路类似,EM算法将原函数转换为函数下界的极大值问题,通过对下界的极大化逼近来求解对数似然函数的最大值。
李航书中指出,EM算法找到的下一个点θ ( i + 1 ) \theta^{(i+1)} θ ( i + 1 ) 使得函数B ( θ , θ ( i ) ) B(\theta,\theta^{(i)}) B ( θ , θ ( i ) ) 极大化,也使得Q ( θ , θ ( i ) ) Q(\theta,\theta^{(i)}) Q ( θ , θ ( i ) ) 极大化。 由于L ( θ ) ≥ B ( θ , θ ( i ) ) L(\theta)\geq B(\theta,\theta^{(i)}) L ( θ ) ≥ B ( θ , θ ( i ) ) ,在迭代过程中,保证每次迭代L θ L\theta L θ 都是增加的,在整个过程中,L ( θ ) L(\theta) L ( θ ) 是不断增加的。EM算法不能保证找到全局的最优值。
用EM算法求解三硬币模型
回到最开始的问题,下面用EM算法求解一开始提出的三硬币模型。
要计算Q函数,先计算P ( Z ∣ Y ) P(Z|Y) P ( Z ∣ Y ) ,根据贝叶斯公式:P ( Z = 1 ∣ y i ) = P ( Z = 1 , y i ) P ( y i ) = π p y i ( 1 − p ) 1 − y i π p y i ( 1 − p ) 1 − y i + ( 1 − π ) q y i ( 1 − q ) 1 − y i
P(Z=1|y_i)=\frac{P(Z=1,y_i)}{P(y_i)}=\frac{\pi p^{y_i}(1-p)^{1-y_i}}{\pi p^{y_i}(1-p)^{1-y_i}+(1-\pi)q^{y_i}(1-q)^{1-y_i}}
P ( Z = 1 ∣ y i ) = P ( y i ) P ( Z = 1 , y i ) = π p y i ( 1 − p ) 1 − y i + ( 1 − π ) q y i ( 1 − q ) 1 − y i π p y i ( 1 − p ) 1 − y i P ( Z = 0 ∣ y i ) = P ( Z = 0 , y i ) P ( y i ) = ( 1 − π ) q y i ( 1 − q ) 1 − y i π p y i ( 1 − p ) 1 − y i + ( 1 − π ) q y i ( 1 − q ) 1 − y i
P(Z=0|y_i)=\frac{P(Z=0,y_i)}{P(y_i)}=\frac{(1-\pi) q^{y_i}(1-q)^{1-y_i}}{\pi p^{y_i}(1-p)^{1-y_i}+(1-\pi)q^{y_i}(1-q)^{1-y_i}}
P ( Z = 0 ∣ y i ) = P ( y i ) P ( Z = 0 , y i ) = π p y i ( 1 − p ) 1 − y i + ( 1 − π ) q y i ( 1 − q ) 1 − y i ( 1 − π ) q y i ( 1 − q ) 1 − y i
所以:u i = P ( Z = 1 ∣ y i ) = P ( Z = 0 , y i ) P ( y i ) = π p y i ( 1 − p ) 1 − y i π p y i ( 1 − p ) 1 − y i + ( 1 − π ) q y i ( 1 − q ) 1 − y i
u_{i}=P(Z=1|y_i)=\frac{P(Z=0,y_i)}{P(y_i)}=\frac{\pi p^{y_i}(1-p)^{1-y_i}}{\pi p^{y_i}(1-p)^{1-y_i}+(1-\pi)q^{y_i}(1-q)^{1-y_i}} u i = P ( Z = 1 ∣ y i ) = P ( y i ) P ( Z = 0 , y i ) = π p y i ( 1 − p ) 1 − y i + ( 1 − π ) q y i ( 1 − q ) 1 − y i π p y i ( 1 − p ) 1 − y i 1 − u i = P ( Z = 0 ∣ y i ) = P ( Z = 0 , y i ) P ( y i ) = ( 1 − π ) q y i ( 1 − q ) 1 − y i π p y i ( 1 − p ) 1 − y i + ( 1 − π ) q y i ( 1 − q ) 1 − y i
1-u_i=P(Z=0|y_i)=\frac{P(Z=0,y_i)}{P(y_i)}=\frac{(1-\pi) q^{y_i}(1-q)^{1-y_i}}{\pi p^{y_i}(1-p)^{1-y_i}+(1-\pi)q^{y_i}(1-q)^{1-y_i}} 1 − u i = P ( Z = 0 ∣ y i ) = P ( y i ) P ( Z = 0 , y i ) = π p y i ( 1 − p ) 1 − y i + ( 1 − π ) q y i ( 1 − q ) 1 − y i ( 1 − π ) q y i ( 1 − q ) 1 − y i E step :计算Q函数 Q ( θ , θ ( i ) ) = ∑ Z P ( Z ∣ Y , θ ( i ) ) ln P ( Y , Z ∣ θ ( i ) ) = ∑ i = 1 N P ( Z = 0 ∣ y i , θ ( i ) ) ln ( π p y i ( 1 − p ) 1 − y i ) + ∑ i = 1 N P ( Z = 1 ∣ y i , θ ( i ) ) ln ( ( 1 − π ) q y i ( 1 − q ) 1 − y i )
Q(\theta,\theta^{(i)})=\sum_Z P(Z|Y,\theta^{(i)})\ln P(Y,Z|\theta^{(i)})\\
=\sum_{i=1}^{N}P(Z=0|y_i,\theta^{(i)})\ln\left(\pi p^{y_i}(1-p)^{1-y_i} \right)+\\
\sum_{i=1}^{N}P(Z=1|y_i,\theta^{(i)})\ln\left((1-\pi)q^{y_i}(1-q)^{1-y_i} \right)
Q ( θ , θ ( i ) ) = Z ∑ P ( Z ∣ Y , θ ( i ) ) ln P ( Y , Z ∣ θ ( i ) ) = i = 1 ∑ N P ( Z = 0 ∣ y i , θ ( i ) ) ln ( π p y i ( 1 − p ) 1 − y i ) + i = 1 ∑ N P ( Z = 1 ∣ y i , θ ( i ) ) ln ( ( 1 − π ) q y i ( 1 − q ) 1 − y i ) M step
极大化Q函数,对参数求导0 = d Q ( θ , θ ( i ) ) d π = ∑ i = 1 N u 1 p y i ( 1 − p ) 1 − y i π p y i ( 1 − p ) 1 − y i + ∑ i = 1 N u 2 − q y i ( 1 − q ) 1 − y i ( 1 − π ) q y i ( 1 − q ) 1 − y i
0= \frac{\text{d}Q(\theta,\theta^{(i)})}{\text{d}\pi}= \sum_{i=1}^{N}u_1\frac{p^{y_i}(1-p)^{1-y_i}}{\pi p^{y_i}(1-p)^{1-y_i}} + \sum_{i=1}^{N}u_2\frac{-q^{y_i}(1-q)^{1-y_i}}{(1-\pi)q^{y_i}(1-q)^{1-y_i}}
0 = d π d Q ( θ , θ ( i ) ) = i = 1 ∑ N u 1 π p y i ( 1 − p ) 1 − y i p y i ( 1 − p ) 1 − y i + i = 1 ∑ N u 2 ( 1 − π ) q y i ( 1 − q ) 1 − y i − q y i ( 1 − q ) 1 − y i
推导得到π ( i + 1 ) = 1 N ∑ i = 1 N u i
\pi^{(i+1)} = \frac{1}{N}\sum_{i=1}^{N}u_{i}
π ( i + 1 ) = N 1 i = 1 ∑ N u i
对p p p 求导,得到0 = d Q ( θ , θ ( i ) ) d p = ∑ i = 1 N P ( Z = 1 ∣ y i , θ ( i ) ) ( y i p − 1 − y i 1 − p )
0=\frac{\text{d}Q(\theta,\theta^{(i)})}{\text{d}p}\\
=\sum_{i=1}^{N}P(Z=1|y_i,\theta^{(i)})\left(\frac{y_i}{p}-\frac{1-y_i}{1-p}\right)
0 = d p d Q ( θ , θ ( i ) ) = i = 1 ∑ N P ( Z = 1 ∣ y i , θ ( i ) ) ( p y i − 1 − p 1 − y i )
化简∑ i = 1 N u i y i = ∑ i = 1 N u i p = p ∑ i = 1 N u i
\sum_{i=1}^{N}u_i y_i = \sum_{i=1}^{N}u_i p = p\sum_{i=1}^{N}u_i
i = 1 ∑ N u i y i = i = 1 ∑ N u i p = p i = 1 ∑ N u i
计算得到p ( i + 1 ) = ∑ i = 1 N u i y i ∑ i = 1 N u i
p^{(i+1)}=\frac{\sum_{i=1}^{N}u_i y_i}{\sum_{i=1}^{N}u_i}
p ( i + 1 ) = ∑ i = 1 N u i ∑ i = 1 N u i y i
同样的方法可以得到对q来说有q ( i + 1 ) = ∑ i = 1 N ( 1 − u i ) y i ∑ i = 1 N ( 1 − u i )
q^{(i+1)} = \frac{\sum_{i=1}^{N}(1-u_i)y_i}{\sum_{i=1}^{N}(1-u_i)}
q ( i + 1 ) = ∑ i = 1 N ( 1 − u i ) ∑ i = 1 N ( 1 − u i ) y i
这样就推导出θ ( i + 1 ) = { π ( i + 1 ) , p ( i + 1 ) , q ( i + 1 ) } \theta^{(i+1)} = \{\pi^{(i+1)},p^{(i+1)},q^{(i+1)}\} θ ( i + 1 ) = { π ( i + 1 ) , p ( i + 1 ) , q ( i + 1 ) }
用EM算法求解高斯混合模型参数
EM算法在无监督学习中起着重要的作用,对于没有标签的数据( x 1 , _ ) , ( x 2 , _ ) , ( x 3 , _ ) , … , ( x n , _ ) (x_1,\_),(x_2,\_),(x_3,\_),\dots,(x_n,\_) ( x 1 , _ ) , ( x 2 , _ ) , ( x 3 , _ ) , … , ( x n , _ ) ,EM算法可以用于生成模型的无监督学习,生成模型由联合概率P ( X , Y ) P(X,Y) P ( X , Y ) 表示,可以认为无监督学习的训练数据是联合概率分布产生的数据。将X视为观测数据,Y视为隐含数据,
“高斯混合模型应用广泛,EM算法是估计高斯混合模型(Gaussian Mixture Model,GMM)的有效方法”
李航书中采用给出了一维高斯混合模型的推导,为了更具有一般性,这里给出多维度高斯混合模型的推导
高斯混合模型的定义
对于d维数据x ( i ) = { x 1 , x 2 , x 3 , … x d } T \mathbf{x}^{(i)}=\{x_1,x_2,x_3,\dots x_d\}^T x ( i ) = { x 1 , x 2 , x 3 , … x d } T ,上标表示样本数目,i = 1 , 2 , 3 , 4 , 5 , … N i={1,2,3,4,5,\dots N} i = 1 , 2 , 3 , 4 , 5 , … N ,符合分布为P ( x ) = ∑ k = 1 K π k N ( x ∣ μ k , Σ k ) subject to ∑ k = 1 K π k = 1
P(\mathbf{x})= \sum_{k=1}^{K}\pi_k \mathcal{N}(\mathbf{x}|\mu_k,\Sigma_k)\\
\text{subject to} \sum_{k=1}^{K}\pi_k=1
P ( x ) = k = 1 ∑ K π k N ( x ∣ μ k , Σ k ) subject to k = 1 ∑ K π k = 1
其中d维正态分布的表达式是:N ( x ∣ μ k , Σ k ) = 1 ( 2 π ) d 2 ∣ Σ k ∣ 1 2 exp { − 1 2 ( x − μ k ) T Σ k − 1 ( x − μ k ) }
\mathcal{N}(\mathbf{x}|\mu_k,\Sigma_k)=\frac{1}{
{(2\pi)}^\frac{d}{2}|\Sigma_k|^{\frac{1}{2}}}\exp\{ -\frac{1}{2}{(\mathbf{x}-\mu_k)^T\Sigma_k^{-1}(\mathbf{x}-\mu_k)}\}
N ( x ∣ μ k , Σ k ) = ( 2 π ) 2 d ∣ Σ k ∣ 2 1 1 exp { − 2 1 ( x − μ k ) T Σ k − 1 ( x − μ k ) }
模型中需要估计的参数有{ π k , μ k , Σ k } , k = 1 , 2 , 3 , … K \{\pi_k,\mu_k,\Sigma_k\},k=1,2,3,\dots K { π k , μ k , Σ k } , k = 1 , 2 , 3 , … K 。
采用EM算法的基础是将样本x ( i ) \mathbf{x}^{(i)} x ( i ) 看作观测数据,观测数据所述的成分y i ∈ { 1 , 2 , … , K } y^{i}\in \{1,2,\dots,K\} y i ∈ { 1 , 2 , … , K } 看作隐含数据。那么完全数据就是( x ( i ) , y ( i ) ) (\mathbf{x}^{(i)},y^{(i)}) ( x ( i ) , y ( i ) ) ,其中混合模型中的N ( μ i , Σ i ) \mathcal{N}(\mu_i,\Sigma_i) N ( μ i , Σ i ) 可以用其他模型代替,高斯混合模型应用最广。
先试试最大似然
P ( X ) = ∏ n = 1 N P ( x ( n ) ) = ∏ n = 1 N ( ∑ k = 1 K π k N ( x ( n ) ∣ μ k , Σ k ) ) P(\mathbf{X})=\prod_{n=1}^{N}P(x^{(n)})=\prod_{n=1}^{N}\left(\sum_{k=1}^{K}\pi_k\mathcal{N}(\mathbf{x}^{(n)}|\mu_k,\Sigma_k)\right) P ( X ) = n = 1 ∏ N P ( x ( n ) ) = n = 1 ∏ N ( k = 1 ∑ K π k N ( x ( n ) ∣ μ k , Σ k ) )
记θ = { μ 1 , μ 2 , … μ K , Σ 1 , . Σ 2 , … , Σ K } \theta=\{\mu_1,\mu_2,\dots \mu_K,\Sigma_1,.\Sigma_2,\dots,\Sigma_K\} θ = { μ 1 , μ 2 , … μ K , Σ 1 , . Σ 2 , … , Σ K }
对数似然L ( θ ) = ln P ( x ) = ∑ n = 1 N ln [ ∑ k = 1 K π k N ( x ( n ) ∣ μ k , Σ k ) ]
L(\theta)=\ln P(\mathbf{x})=\sum_{n=1}^{N}\ln\left[\sum_{k=1}^{K}\pi_k\mathcal{N}(\mathbf{x}^{(n)}|\mu_k,\Sigma_k)\right]
L ( θ ) = ln P ( x ) = n = 1 ∑ N ln [ k = 1 ∑ K π k N ( x ( n ) ∣ μ k , Σ k ) ]
求个导数看看d L ( θ ) d π k = 0
\frac{dL(\theta)}{d\pi_k}=0
d π k d L ( θ ) = 0 d L ( θ ) d μ k = 0
\frac{dL(\theta)}{d\mu_k}=0
d μ k d L ( θ ) = 0 d L ( θ ) d Σ k = 0
\frac{dL(\theta)}{d\Sigma_k}=0
d Σ k d L ( θ ) = 0
TODO 老师说这里没有解析解就没有往下算了,日后有兴趣再补上
EM算法
第一步 导出完全数据的对数似然函数
记z n k = { 1 第n个样本来自第k个成分 0 otherwise z_{nk}=\begin{cases}
1 \quad\text{第n个样本来自第k个成分}\\
0 \quad\text{otherwise}
\end{cases} z n k = { 1 第 n 个样本来自第 k 个成分 0 otherwise
其中n = 1 , 2 , 3 , … N n=1,2,3,\dots N n = 1 , 2 , 3 , … N ,k = 1 , 2 , 3 , … , K k=1,2,3,\dots,K k = 1 , 2 , 3 , … , K
(注:李航书上使用的γ \gamma γ ,含义相同)
完全数据的对数似然函数ln P ( X , Z ) = ln ∏ n = 1 N P ( x ( n ) , z n 1 , z n 2 , … , z n K ∣ θ ) = ln ∏ n = 1 N ∏ k = 1 K ( π k N ( x ( n ) ∣ μ k , Σ k ) ) z n k = ∑ n = 1 N ∑ k = 1 K ln π k N ( x ( n ) ∣ μ k , Σ k )
\ln P(\mathbf{X,\mathbf{Z}})=\ln \prod_{n=1}^{N}P(\mathbf{x}^{(n)},z_{n1},z_{n2},\dots,z_{nK}|\theta)\\
=\ln\prod_{n=1}^{N}\prod_{k=1}^{K}\left(\pi_k\mathcal{N}(\mathbf{x}^{(n)}|\mu_k,\Sigma_k)\right)^{z_{nk}}\\
=\sum_{n=1}^{N}\sum_{k=1}^{K}\ln\pi_k\mathcal{N(\mathbf{x}^{(n)}|\mu_k,\Sigma_k)}\\
ln P ( X , Z ) = ln n = 1 ∏ N P ( x ( n ) , z n 1 , z n 2 , … , z n K ∣ θ ) = ln n = 1 ∏ N k = 1 ∏ K ( π k N ( x ( n ) ∣ μ k , Σ k ) ) z n k = n = 1 ∑ N k = 1 ∑ K ln π k N ( x ( n ) ∣ μ k , Σ k )
计算Q函数
Q函数为完全对数似然函数对条件概率的期望Q ( θ , θ ( i ) ) = E P ( Z ∣ X ) ln P ( X , Z ) = ∑ n = 1 N ∑ k = 1 K P ( z n k ∣ x ( n ) , θ ( i ) ) ln π k N ( x ( n ) ∣ μ k , Σ k ) = ∑ n = 1 N ∑ k = 1 K z ^ n k ln π k N ( x ( n ) ∣ μ k , Σ k )
Q(\theta,\theta^{(i)})=\mathcal{E}_{P(Z|X)}\ln P(\mathbf{X},\mathbf{Z})\\
=\sum_{n=1}^{N}\sum_{k=1}^{K}P(z_{nk}|\mathbf{x}^{(n)},\theta^{(i)})\ln\pi_k\mathcal{N(\mathbf{x}^{(n)}|\mu_k,\Sigma_k)}\\
=\sum_{n=1}^{N}\sum_{k=1}^{K}\hat{z}_{nk}\ln\pi_k\mathcal{N(\mathbf{x}^{(n)}|\mu_k,\Sigma_k)}
Q ( θ , θ ( i ) ) = E P ( Z ∣ X ) ln P ( X , Z ) = n = 1 ∑ N k = 1 ∑ K P ( z n k ∣ x ( n ) , θ ( i ) ) ln π k N ( x ( n ) ∣ μ k , Σ k ) = n = 1 ∑ N k = 1 ∑ K z ^ n k ln π k N ( x ( n ) ∣ μ k , Σ k )
需要计算P ( z n k ∣ x ( i ) , θ ( i ) ) P(z_{nk}|\mathbf{x}^{}(i),\theta^{(i)}) P ( z n k ∣ x ( i ) , θ ( i ) ) ,记为z ^ n k = P ( z n k ∣ x ( n ) , θ ( i ) ) = P ( z n k = 1 , x ( i ) ) P ( x ) = P ( x n ∣ z n k = 1 , θ ( i ) ) P ( z n k ) ∑ k = 1 K P ( x n ∣ z n k = 1 , θ ( i ) ) P ( z n k ) = π k N ( x ( x ) ∣ μ i , Σ i ) ∑ k = 1 K π k N ( x ( n ) ∣ μ k , Σ k )
\hat{z}_{nk} = P(z_{nk}|x^{(n)},\theta^{(i)}) \\
=\frac{P(z_{nk}=1,\mathbf{x}^{}(i))}{P(\mathbf{x})}\\
=\frac{P(\mathbf{x}^{n}|z_{nk}=1,\theta(i))P(z_{nk})}{\sum_{k=1}^{K}P(\mathbf{x}^{n}|z_{nk}=1,\theta(i))P(z_{nk})}\\
=\frac{\pi_k\mathcal{N}(\mathbf{x}^{(x)}|\mu_i,\Sigma_i)}{\sum_{k=1}^{K}\pi_k\mathcal{N}(\mathbf{x^{(n)}}|\mu_k,\Sigma_k)}
z ^ n k = P ( z n k ∣ x ( n ) , θ ( i ) ) = P ( x ) P ( z n k = 1 , x ( i ) ) = ∑ k = 1 K P ( x n ∣ z n k = 1 , θ ( i ) ) P ( z n k ) P ( x n ∣ z n k = 1 , θ ( i ) ) P ( z n k ) = ∑ k = 1 K π k N ( x ( n ) ∣ μ k , Σ k ) π k N ( x ( x ) ∣ μ i , Σ i )
最大化Q函数
z ^ n k \hat{z}_{nk} z ^ n k 在每次迭代的过程中可以当作一个常数代入,因此Q函数的形式还是比较简洁的,但是求导的难度比较大,尤其是对协方差矩阵求导,涉及到矩阵的行列式、矩阵的逆对矩阵求导,这个工作量比较大。先看简单一点的求π k ( i + 1 ) \pi_k^{(i+1)} π k ( i + 1 )
Q函数先写为Q ( θ , θ ( i ) ) = ∑ n = 1 N ∑ k = 1 K z ^ n k ( ln π k + ln N ( x ( n ) ∣ μ k , Σ k ) ) = ∑ n = 1 N ∑ k = 1 K z ^ n k ( ln π k − d 2 ln ( 2 π ) − 1 2 ln ∣ Σ k ∣ − 1 2 ( x ( n ) − μ k ) T Σ k − 1 ( x ( n ) − μ k ) )
Q(\theta,\theta^{(i)})=\sum_{n=1}^{N}\sum_{k=1}^{K}\hat{z}_{nk}\left(\ln\pi_k+\ln\mathcal{N(\mathbf{x}^{(n)}|\mu_k,\Sigma_k)}\right)\\
=\sum_{n=1}^{N}\sum_{k=1}^{K}\hat{z}_{nk}\left(\ln\pi_k-\frac{d}{2}\ln(2\pi)-\frac{1}{2}\ln|\Sigma_k|-\frac{1}{2}(\mathbf{x}^{(n)}-\mu_k)^T\Sigma_k^{-1}(\mathbf{x}^{(n)}-\mu_k)\right)
Q ( θ , θ ( i ) ) = n = 1 ∑ N k = 1 ∑ K z ^ n k ( ln π k + ln N ( x ( n ) ∣ μ k , Σ k ) ) = n = 1 ∑ N k = 1 ∑ K z ^ n k ( ln π k − 2 d ln ( 2 π ) − 2 1 ln ∣ Σ k ∣ − 2 1 ( x ( n ) − μ k ) T Σ k − 1 ( x ( n ) − μ k ) )
求μ k \mu_k μ k 和Σ k \Sigma_k Σ k 的估计值可以直接令导数等于0d Q ( θ , θ ( i ) ) d μ k = ∑ n = 1 N z ^ n k Σ k − 1 ( x ( n ) − μ k ) = 0 ∑ n = 1 N z ^ n k x n = ∑ n = 1 N z ^ n k μ k
\frac{dQ(\theta,\theta^{(i)})}{d\mu_k}=\sum_{n=1}^{N}\hat{z}_{nk}\Sigma_k^{-1}(\mathbf{x}^{(n)}-\mu_k)=0\\
\sum_{n=1}^{N}\hat{z}_{nk}\mathbf{x}^{n}=\sum_{n=1}^{N}\hat{z}_{nk}\mu_k\\
d μ k d Q ( θ , θ ( i ) ) = n = 1 ∑ N z ^ n k Σ k − 1 ( x ( n ) − μ k ) = 0 n = 1 ∑ N z ^ n k x n = n = 1 ∑ N z ^ n k μ k
所以化简得到μ k \mu_k μ k 的更新公式为:μ k ( i + 1 ) = ∑ n = 1 N z ^ n k x ( n ) ∑ n = 1 N z ^ n k
\mu_k^{(i+1)} = \frac{\sum_{n=1}^{N}\hat{z}_{nk}\mathbf{x}^{(n)}}{\sum_{n=1}^{N}\hat{z}_{nk}}
μ k ( i + 1 ) = ∑ n = 1 N z ^ n k ∑ n = 1 N z ^ n k x ( n )
协方差矩阵的更新公式推导需要单独整理成博客。这里先给出结果Σ k ( i + 1 ) = ∑ n = 1 N z ^ n k ( x ( n ) − μ k ( i + 1 ) ) ( x ( n ) − μ k ( i + 1 ) ) T ∑ n = 1 N z ^ n k
\Sigma_k^{(i+1)}=\frac{\sum_{n=1}^{N}\hat{z}_{nk}(\mathbf{x}^{(n)}-\mu_k^{(i+1)})(\mathbf{x}^{(n)}-\mu_k^{(i+1)})^T}{\sum_{n=1}^{N}\hat{z}_{nk}}
Σ k ( i + 1 ) = ∑ n = 1 N z ^ n k ∑ n = 1 N z ^ n k ( x ( n ) − μ k ( i + 1 ) ) ( x ( n ) − μ k ( i + 1 ) ) T π k \pi_k π k 的更新公式π k ( i + 1 ) = ∑ n = 1 N z ^ n k N
\pi_k^{(i+1)} = \frac{\sum_{n=1}^{N}\hat{z}_{nk}}{N}
π k ( i + 1 ) = N ∑ n = 1 N z ^ n k
EM算法的典型应用之隐马尔可夫模型
EM算法的拓展