机器学习笔记<二>:EM算法详解

往期文章回顾:


引入

假设存在一些观测数据(相互独立,符合某种概率分布),那么如何通过观测到的数据来估计模型的参数(可以理解为已知结果反推原因)?最常用的方法是极大似然估计(MLE):

  • 首先是计算出基于每个观测数据的似然并将其作为估计参数 θ \theta θ的函数(本质上是PDF,概率密度函数);
  • 将上述的每个观测数据的似然组合就构成了似然函数;
  • 接下来就是最大化问题,即似然函数最大时的参数就是我们要估计的参数 θ ^ \hat\theta θ^

假设有N个样本数据,每个数据为n维,每个观测数据的似然函数可以使用概率密度函数描述为: p ( x ( i ) ∣ θ ) p(\bf x^{(i)}|\theta) p(x(i)θ),假设观测数据iid,那么整体观测数据的似然函数可以表示为:
L ( x ∣ θ ) = p ( x ∣ θ ) = ∏ i = 1 N p ( x ( i ) ∣ θ ) (1) L(\bf x| \theta)=p(\bf x|\theta)=\prod_{i=1}^{N} p(x^{(i)}|\theta) \tag1 L(xθ)=p(xθ)=i=1Np(x(i)θ)(1)

因为MLE的问题就可以表示为:

θ ^ = a r g m a x θ L ( x ∣ θ ) (2) \hat \theta= \underset {\theta}{argmax}L(\bf x| \theta)\tag2 θ^=θargmaxL(xθ)(2)

更常用的是log似然函数:
l o g ( L ( x ∣ θ ) ) = l o g ( ∏ i = 1 N p ( x ( i ) ∣ θ ) ) = ∑ i = 1 N l o g ( p ( x ( i ) ∣ θ ) ) ( 3 ) \begin{aligned} log(L(\bf x| \theta)) &= log(\prod_{i=1}^{N} p(x^{(i)}|\theta)) \\ &= \sum_{i=1}^{N}log(p(x^{(i)}|\theta))\qquad (3) \end{aligned} log(L(xθ))=log(i=1Np(x(i)θ))=i=1Nlog(p(x(i)θ))(3)

对于常用的MLE,若该似然函数解析且关于参数易求导,那就可以轻易求得模型的参数;但实际情况中因为还可能存在隐变量等因素使得想要得到解析的似然函数并不简单,因此,在此引入EM算法解决隐变量问题。

EM算法

算法思想

从表面上看,上述的MLE的似然函数中似乎只有 θ \theta θ一个未知参数(对于一维变量来说,x作为观测数据已知),使用常规手段(求导)即可计算出最佳参数 θ ^ \hat\theta θ^;但实际中某些含有隐变量的似然函数的最优化问题很难进行,若此时假设隐变量存在且已知,那么就可以简化似然函数(因为此时已知观测数据和隐变量,只有 θ \theta θ未知,而此时就是要计算 θ \theta θ,就转换为一般的MLE问题,计算多未知变量转换为计算单未知变量的问题)。前面只是固定隐变量 z z z而对参数 θ \theta θ进行优化,但实际情况中 z z z θ \theta θ二者相互依赖、相互影响,按照同样的方法需要固定 θ \theta θ z z z进行优化。因此EM算法的本质是 z z z θ \theta θ交替优化的过程,是一种启发式的迭代方法。

举例说明:假设在一个学校中抽取200名学生进行身高估计,假设学生身高符合正态分布,于是使用MLE对抽取的200个样本进行参数估计,但是存在的问题是男、女生的身高不一样,男生身高一般情况下高于女生,所以理论上应该将男生和女生的身高分开估计,各抽取100个。而实际情况中不知道抽取抽取的样本是男生还是女生,因此学生的身高就作为观测数据,性别就作为隐变量(未观测数据)。在这种情况下,我们需要估计的问题包括两个:一个是这个样本是男生还是女生,二是男生和女生对应身高的正态分布参数分别是多少。这种情况下常规的极大似然估计就不太好使了,要估计男女身高分布,那必须先估计该学生是男还是女,反过来要估计该学生是男还是女,又得从身高来判断(男生身高相对较高,女生身高相对较矮)。但二者相互依赖,直接用极大似然估计没法算,于是就引入了EM算法……

算法推导

假设观测数据为 X = { x ( 1 ) , x ( 2 ) , x ( 3 ) … … x ( N ) } \bf X=\{x^{(1)},x^{(2)},x^{(3)}……x^{(N)} \} X={x(1),x(2),x(3)x(N)},对用的隐变量 Z = { z ( 1 ) , z ( 2 ) , z ( 3 ) … … z ( N ) } \bf Z=\{z^{(1)},z^{(2)},z^{(3)}……z^{(N)} \} Z={z(1),z(2),z(3)z(N)},隐变量 z ( i ) \bf z^{(i)} z(i)的分布 Q ( z ) Q(z) Q(z)满足: ∑ z i Q ( z ) \sum_{z^{i}}Q(z) ziQ(z)=1,完全数据为 S = ( X , Z ) S=(\bf X, \bf Z) S=(X,Z),样本模型参数为 θ \theta θ,于是式(3)可以改写为: l o g ( L ( X ∣ θ ) ) = l o g ( ∏ i = 1 N p ( x ( i ) ∣ θ ) ) = ∑ i = 1 N l o g ( p ( x ( i ) ∣ θ ) ) = ∑ i = 1 N l o g ( ∑ z i p ( x ( i ) , z ( i ) ∣ θ ) ) = ∑ i = 1 N l o g ( ∑ z i Q i ( z i ) p ( x ( i ) , z ( i ) ∣ θ ) ) Q i ( z i ) ) ( 4 ) ≥ ∑ i = 1 N ∑ z i Q i ( z i ) l o g ( p ( x ( i ) , z ( i ) ∣ θ ) Q i ( z i ) ) ( 5 ) \begin{aligned} log(L(\bf X| \theta)) &= log(\prod_{i=1}^{N} p(\bf x^{(i)}|\theta)) \\ &= \sum_{i=1}^{N}log(p(\bf x^{(i)}|\theta)) \\ &=\sum_{i=1}^{N}log(\sum_{z^{i}}p(\bf x^{(i)},z^{(i)}|\theta)) \\ &= \sum_{i=1}^{N} log(\sum_{z^{i}}Q_{i}(z^{i}) \frac{p(\bf x^{(i)},z^{(i)}|\theta))}{Q_{i}(z^{i})})\qquad (4)\\ & \geq \sum_{i=1}^{N}\sum_{z^{i}}Q_{i}(z^{i})log(\frac{p(\bf x^{(i)},z^{(i)}|\theta)}{Q_{i}(z^{i})}) \qquad (5) \end{aligned} log(L(Xθ))=log(i=1Np(x(i)θ))=i=1Nlog(p(x(i)θ))=i=1Nlog(zip(x(i),z(i)θ))=i=1Nlog(ziQi(zi)Qi(zi)p(x(i),z(i)θ)))(4)i=1NziQi(zi)log(Qi(zi)p(x(i),z(i)θ))(5)

因为最后需要使用MLE对含隐变量的似然函数 l o g ( L ( X ∣ θ ) ) log(L(\bf X| \theta)) log(L(Xθ))进行z最优化求解,因此式(4)和式(5)必须取得等号,因为log函数是一个凸函数,因此由Jensen不等式可知: l o g ( E ( x ) ) ≥ E ( l o g ( x ) ) log(E(x))\geq E(log(x)) log(E(x))E(log(x)),当且仅当 x = E ( x ) x=E(x) x=E(x)时取等号,即此时x为常数,对应到式(5)中取等号的条件为: p ( x ( i ) , z ( i ) ∣ θ ) Q i ( z i ) ) = c (6) \frac{p(\bf x^{(i)},z^{(i)}|\theta)}{Q_{i}(z^{i})}) = c \tag6 Qi(zi)p(x(i),z(i)θ))=c(6)

将式(6)变形为: Q i ( z i ) = 1 c p ( x ( i ) , z ( i ) ∣ θ ) (7) Q_{i}(z^{i}) = \frac{1}{c}p(\bf x^{(i)},z^{(i)}|\theta) \tag7 Qi(zi)=c1p(x(i),z(i)θ)(7)

在式(7)两边同时计算关于z积分得: 1 = 1 c ∫ z p ( x ( i ) , z ( i ) ∣ θ ) d z = 1 c p ( x ( i ) ∣ θ ) (8) \begin{aligned} 1 &= \frac{1}{c}\int_{\bf z}p(\bf x^{(i)},z^{(i)}|\theta) dz \\ &= \frac{1}{c} p(\bf x^{(i)}|\theta) \tag8 \end{aligned} 1=c1zp(x(i),z(i)θ)dz=c1p(x(i)θ)(8)

式(8)得出: c = p ( x ( i ) ∣ θ ) (9) c=p(\bf x^{(i)}|\theta) \tag9 c=p(x(i)θ)(9)

将式(9)代入式(7)可得: Q i ( z i ) = p ( x ( i ) , z ( i ) ∣ θ ) p ( x ( i ) ∣ θ ) = p ( z ( i ) ∣ x ( i ) ; θ ) (10) \begin{aligned} Q_{i}(z^{i}) & = \frac{p(\bf x^{(i)},z^{(i)}|\theta)}{p(\bf x^{(i)}|\theta)} \\ &=p(\bf z^{(i)}|x^{(i)};\theta) \tag{10} \end{aligned} Qi(zi)=p(x(i)θ)p(x(i),z(i)θ)=p(z(i)x(i);θ)(10)

因此可以将式(10)作为Jensen不等式取等号的条件。则式(4)和式(5)就可以改写为: l o g ( L ( X ∣ θ ) ) = ∑ i = 1 N l o g ( ∑ z i Q i ( z i ) p ( x ( i ) , z ( i ) ∣ θ ) ) Q i ( z i ) ) = ∑ i = 1 N ∑ z i Q i ( z i ) l o g ( p ( x ( i ) , z ( i ) ∣ θ ) Q i ( z i ) ) ( 11 ) \begin{aligned} log(L(\bf X| \theta)) &= \sum_{i=1}^{N} log(\sum_{z^{i}}Q_{i}(z^{i}) \frac{p(\bf x^{(i)},z^{(i)}|\theta))}{Q_{i}(z^{i})}) \\ & = \sum_{i=1}^{N}\sum_{z^{i}}Q_{i}(z^{i})log(\frac{p(\bf x^{(i)},z^{(i)}|\theta)}{Q_{i}(z^{i})}) \qquad (11) \end{aligned} log(L(Xθ))=i=1Nlog(ziQi(zi)Qi(zi)p(x(i),z(i)θ)))=i=1NziQi(zi)log(Qi(zi)p(x(i),z(i)θ))(11)

由式(11)可知,第二个加和符号就是对 l o g ( p ( x ( i ) , z ( i ) ∣ θ ) Q i ( z i ) ) log(\frac{p(\bf x^{(i)},z^{(i)}|\theta)}{Q_{i}(z^{i})}) log(Qi(zi)p(x(i),z(i)θ))的加权求和,也即是 l o g ( p ( x ( i ) , z ( i ) ∣ θ ) Q i ( z i ) ) log(\frac{p(\bf x^{(i)},z^{(i)}|\theta)}{Q_{i}(z^{i})}) log(Qi(zi)p(x(i),z(i)θ))的期望,即E步,求解期望值。

因此根据上述表述,欲进行多变量的MLE,就需要一个变量一个变量的进行优化,于是就形成了如下的EM算法:

  • 首先是初始化参数 θ 0 \theta^{0} θ0;
  • E E E步:计算 z z z关于 x , θ x, \theta x,θ的后验概率: Q i ( z i ) = p ( z ( i ) ∣ x ( i ) ; θ ) Q_{i}(z^{i})=p(\bf z^{(i)}|x^{(i)};\theta) Qi(zi)=p(z(i)x(i);θ)
  • M M M步:再对式(11)进行关于参数 θ \theta θ的似然函数求解: θ ^ = a r g m a x θ l o g ( L ( X ∣ θ ) ) = a r g m a x θ ∑ i = 1 N ∑ z i Q i ( z i ) l o g ( p ( x ( i ) , z ( i ) ∣ θ ) Q i ( z i ) ) \begin{aligned} \hat \theta &= \underset {\theta}{argmax}log(L(\bf X| \theta)) \\ &=\underset {\theta}{argmax} \sum_{i=1}^{N}\sum_{z^{i}}Q_{i}(z^{i})log(\frac{p(\bf x^{(i)},z^{(i)}|\theta)}{Q_{i}(z^{i})}) \end{aligned} θ^=θargmaxlog(L(Xθ))=θargmaxi=1NziQi(zi)log(Qi(zi)p(x(i),z(i)θ))
    通过上述过程的不断迭代即可获得最优化参数 θ ^ \hat \theta θ^

总结

  1. EM算法是基于MLE进行的(M步),因为模型中含有两个参数,并且相互联系,因此采用启发式的迭代方法进行计算,以寻求最佳模型参数;
  2. EM算法是很多算法的解决思路,比如k_means聚类算法,初始化k个聚类中心的过程就是EM算法的E步,而经计算后将每个样本归属到每一个cluster的过程是EM算法的M步,重复E步和M步就能得到聚类中心,不同的是k_means属于"硬聚类",而EM算法对应的方法属于"软聚类",k_means可以视为EM算法的简化版(聚类算法会在后期更新);
  3. EM算法的具体应用有HMM、 GMM、SMO、FCM以及上面说到的k_means聚类算法。

EM算法的收敛性详细以及具体案例请参照李航老师的《统计学习方法》,另外上面推导过程中用到的凸函数、Jensen不等式、边缘概率等公式请查阅相关资料

[1].机器学习及其运用
[2].《统计学习方法》
[3].数学推导+纯Python实现机器学习算法22:EM算法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值