文章目录
本篇笔记主要思路来自《统计学习方法》
EM算法的引入
EM算法用于含有隐变量的概率模型参数的极大似然估计或极大后验概率估计。和其他估计方法不同之处就在于,最大化观测数据的似然函数变成最大化完全数据的似然函数。
如果概率模型的变量都是观测变量,那给定数据就能直接用极大似然估计或贝叶斯估计来估计模型参数。但是,当模型含有隐变量时,就不能简单使用这些估计方法。EM算法就是含有隐变量的概率模型参数的极大似然估计法或极大后验概率估计法。
EM算法
《统计学习方法》中用三硬币模型引出了EM算法,该模型描述如下:
三硬币模型用表达式可以写成如下形式
P ( y ∣ θ ) = ∑ z P ( y , z ∣ θ ) = ∑ z P ( z ∣ θ ) P ( y ∣ z , θ ) = π p y ( 1 − p ) 1 − y + ( 1 − π ) q y ( 1 − q ) 1 − y \begin{aligned} P(y | \theta) &=\sum_{z} P(y, z | \theta)=\sum_{z} P(z | \theta) P(y | z, \theta) \\ &=\pi p^{y}(1-p)^{1-y}+(1-\pi) q^{y}(1-q)^{1-y} \end{aligned} P(y∣θ)=z∑P(y,z∣θ)=z∑P(z∣θ)P(y∣z,θ)=πpy(1−p)1−y+(1−π)qy(1−q)1−y
y是观测变量(0或1),z是隐变量,表示未观测到的掷硬币A的结果, θ = ( π , p , q ) \theta=(\pi, p, q) θ=(π,p,q)是模型参数。这个模型就是以上数据的生成模型。最后要求的就是联合的分布,也就是把z也考虑在内。
将观测数据表示为 Y = ( Y 1 , Y 2 , ⋯ , Y n ) T Y=\left(Y_{1}, Y_{2}, \cdots, Y_{n}\right)^{\mathrm{T}} Y=(Y1,Y2,⋯,Yn)T,未观测数据表示为 Z = ( Z 1 , Z 2 , ⋯ , Z n ) T Z=\left(Z_{1}, Z_{2}, \cdots, Z_{n}\right)^{\mathrm{T}} Z=(Z1,Z2,⋯,Zn)T。则观测数据似然函数为:
P ( Y ∣ θ ) = ∑ Z P ( Z ∣ θ ) P ( Y ∣ Z , θ ) P(Y | \theta)=\sum_{Z} P(Z | \theta) P(Y | Z, \theta) P(Y∣θ)=∑ZP(Z∣θ)P(Y∣Z,θ)
即
P ( Y ∣ θ ) = ∏ j = 1 n [ π p y j ( 1 − p ) 1 − y j + ( 1 − π ) q y j ( 1 − q ) 1 − y j ] P(Y | \theta)=\prod_{j=1}^{n}\left[\pi p^{y_{j}}(1-p)^{1-y_{j}}+(1-\pi) q^{y_{j}}(1-q)^{1-y_{j}}\right] P(Y∣θ)=j=1∏n[πpyj(1−p)1−yj+(1−π)qyj(1−q)1−yj]
于是就考虑求模型参数 θ = ( π , p , q ) \theta=(\pi, p, q) θ=(π,p,q)的极大似然估计,即
θ ^ = arg max θ log P ( Y ∣ θ ) \hat{\theta}=\arg \max _{\theta} \log P(Y | \theta) θ^=argθmaxlogP(Y∣θ)
这个问题没有解析解,只有通过迭代的方法求解。由此就引出了EM算法。在给出针对以上问题的EM算法之前,先对整个问题进行一个求解思路的概括。
最终目标是估计出模型参数求得具体概率预测模型。要是没隐变量那直接用极大似然估计问题就解决了,但是有隐变量。所以我们的目标是最大化完全数据(观测变量+隐变量)的似然函数,完全数据的似然函数就是联合分布,也就是求联合分布 P ( Y , Z ∣ θ ) P(Y, Z | \theta) P(Y,Z∣θ)的极大似然估计就可以估计出模型的参数了。观测变量y的值是知道的,但是Z的情况我们是不知道的,所以EM算法思想就是用Z的期望来替代所有的 Z i Z_i Zi。那么怎么求期望?需要先知道Z的分布才能求期望,但是这个Z的分布又取决于参数 θ = ( π , p , q ) \theta=(\pi, p, q) θ=(π,p,q)以及随机变量Y的值(Z的分布就是联合分布的边缘分布)。随机变量Y是观测到的属于已知,但是参数 θ = ( π , p , q ) \theta=(\pi, p, q) θ=(π,p,q)未知,所以又要求参数,那就回到了一开始的目标。这样就陷入了死循环了。
如何打破这个死循环让思路可以继续下去?我们可以先给参数 θ = ( π , p , q ) \theta=(\pi, p, q) θ=(π,p,q)一个任意的初值,在这个任意初值的情况下先求得一个Z的期望值(E步),再利用Y和Z组成的已知的似然函数来极大似然估计参数 θ = ( π , p , q ) \theta=(\pi, p, q) θ=(π,p,q),回过头来更正这个参数(M步)。但是这样的一次更正肯定达不到目标,那就不断迭代反复更正这个参数 θ \theta θ,直到最后 θ \theta θ收敛至某个值(有EM算法的收敛性证明),这个值很有可能就会是真正的模型参数了(也有可能是局部最优解)。
上面就是EM算法的核心思想,接下来就用这个思想来解决一开始提到的三硬币模型吧。
首先选取参数的初值,记作 θ ( 0 ) = ( π ( 0 ) , p ( 0 ) , q ( 0 ) ) \theta^{(0)}=\left(\pi^{(0)}, p^{(0)}, q^{(0)}\right) θ(0)=(π(0),p(0),q(0)),然后通过下面的步骤迭代计算参数的估计值,直至收敛。第i次迭代参数的估计值为 θ ( i ) = ( π ( i ) , p ( i ) , q ( i ) ) \theta^{(i)}=\left(\pi^{(i)}, p^{(i)}, q^{(i)}\right) θ(i)=(π(i),p(i),q(i))。EM算法的第i+1次迭代如下。
E步:计算在模型参数 θ ( i ) = ( π ( i ) , p ( i ) , q ( i ) ) \theta^{(i)}=\left(\pi^{(i)}, p^{(i)}, q^{(i)}\right) θ(i)=(π(i),p(i),q(i))下第j个观测数据 y j y_j yj来自硬币B的概率
μ j ( i + 1 ) = π ( i ) ( p ( i ) ) y j ( 1 − p ( i ) ) 1 − y j π ( i ) ( p ( i ) ) y j ( 1 − p ( i ) ) 1 − y j + ( 1 − π ( i ) ) ( q ( i ) ) y j ( 1 − q ( i ) ) 1 − y j \mu_{j}^{(i+1)}=\frac{\pi^{(i)}\left(p^{(i)}\right)^{y_{j}}\left(1-p^{(i)}\right)^{1-y_{j}}}{\pi^{(i)}\left(p^{(i)}\right)^{y_{j}}\left(1-p^{(i)}\right)^{1-y_{j}}+\left(1-\pi^{(i)}\right)\left(q^{(i)}\right)^{y_{j}}\left(1-q^{(i)}\right)^{1-y_{j}}} μj(i+1)=π(i)(p(i))yj(1−p(i))1−yj+(1−π(i))(q(i))yj(1−q(i))1−yjπ(i)(p(i))yj(1−p(i))1−yj
分子是A扔出正面后接着扔B的概率分布,分母是A扔出正面后接着扔B的概率分布 + A扔出反面后接着扔C的概率分布。
M步:计算模型参数的新估计值
π ( i + 1 ) = 1 n ∑ j = 1 n μ j ( i + 1 ) \pi^{(i+1)}=\frac{1}{n} \sum_{j=1}^{n} \mu_{j}^{(i+1)} π(i+1)=n1j=1∑nμj(i+1)
掷硬币A掷出正面的概率,也就是所有样本结果里来自B的结果占的比率,也就是单个样本来自B的概率的总和的平均值。
p ( i + 1 ) = ∑ j = 1 n μ j ( i + 1 ) y j ∑ j = 1 n μ j ( i + 1 ) p^{(i+1)}=\frac{\sum_{j=1}^{n} \mu_{j}^{(i+1)} y_{j}}{\sum_{j=1}^{n} \mu_{j}^{(i+1)}} p(i+1)=∑j=1nμj(i+1)∑j=1nμj(i+1)yj
B扔正面的概率就是属于B的结果里,观测变量Y=1的个数
q ( i + 1 ) = ∑ j = 1 n ( 1 − μ j ( i + 1 ) ) y j ∑ j = 1 n ( 1 − μ j ( i + 1 ) ) q^{(i+1)}=\frac{\sum_{j=1}^{n}\left(1-\mu_{j}^{(i+1)}\right) y_{j}}{\sum_{j=1}^{n}\left(1-\mu_{j}^{(i+1)}\right)} q(i+1)=∑j=1n(1−μj(i+1))∑j=1n(1−μj(i+1))yj
C扔正面的概率就是不属于B的结果(只能属于C)里,观测变量Y=1的个数。
值得注意的是,EM算法与初值的选择有关,不同初值可能得到不同的参数估计值。《统计学习方法》中对EM算法的概括如下:
可以看到,求期望的Q函数是EM算法的核心,书中对其定义以及对所给出的算法概括的说明如下:
EM算法的导出
上面是通过实例对EM算法思路的叙述。那么为什么EM算法能近似实现对观测数据的极大似然估计?下面内容就通过近似求解观测数据的对数似然函数的极大化问题来导出EM算法,看清其作用。
我们面对一个含有隐变量的概率模型,目标是极大化观测数据Y关于参数的对数似然函数,即极大化
L ( θ ) = log P ( Y ∣ θ ) = log ∑ Z P ( Y , Z ∣ θ ) = log ( ∑ Z P ( Y ∣ Z , θ ) P ( Z ∣ θ ) ) \begin{aligned} L(\theta) &=\log P(Y | \theta)=\log \sum_{Z} P(Y, Z | \theta) \\ &=\log \left(\sum_{Z} P(Y | Z, \theta) P(Z | \theta)\right) \end{aligned} L(θ)=logP(Y∣θ)=log