统计学习方法9—EM算法
EM算法是一种迭代算法,是一种用于计算包含隐变量概率模型的最大似然估计方法,或极大后验概率。EM即expectation maximization,期望最大化算法。
1. 极大似然估计
在概率模型中,若已知事件服从的分布或者其他概率模型的参数,那么我们可以通过计算得到某事件发生的概率。而在估计中,这些变成了方向过程:已知一组数据发生的结果,相当于获得了经验概率,通过这组数据假设模型服从什么分布,再通过经验概率求解模型参数。
比如统计学校学生身高服从的概率分布,抽样1000人得到他们的身高数据,再假设身高服从正态分布,于是只需要求解\(u,\sigma\)即可。剩下的问题就是如何确定这两个参数,极大似然估计的思想就是求解在这两个参数下,得到的这组样本发生的概率最大的情况便是这两个参数最有可能的取值。而抽取每个样本都是独立的,于是可用每个段身高的样本数量/总样本数量作为单个发生的概率p,让每个p最大化就是让其乘积最大化,于是得到最大似然函数
\[L(\theta) = \prod _xp(x | \theta)\] 再求解其关于\(\theta\)的极大化问题便能得到一个对\(\theta\)的估计
\[\widehat \theta = argmaxL(\theta)\]
2.EM算法
上面是模型变量都是可观测的情况,这种情况可以直接根据观测到的样本数据,使用极大似然估计对模型参数进行估计。但若模型中含有隐变量的时候,就不能简单的使用极大似然估计进行计算。EM算法就是针对含有隐变量的概率模型参数的极大似然估计方法。
例子:
假设三枚硬币,记为A、B、C,它们正面向上的概率分别为n、p、q。实验如下:先抛A,根据A的结果选择B或者C再次抛,将这次正面向上的结果记为1,反面记为0,其中A正面向上则选择B,反面则选择C。经过n次实验后得到n个观测值,根据这n个观测值估计n、p、q的参数值。实验过程中只能观测到最后结果,并不能观察实验过程,也就是A的结果是未知的。该模型可以表示如下
\[P(y|\theta) = \sum_zP(y,z|\theta) = \sum_zP(z|\theta)P(y|z,\theta)\] 其中y表示随机变量Y的观测值,表示该次结果是1或0。z代表隐变量,表示模型中未能观测到的A的结果,\(\theta=(n,p,q)\)是模型参数。其中Y是不完全数据,Y+Z是完全数据。
若是没有隐变量Z,那么可直接使用对数极大似然函数估计
\[\widehat \theta=arg\underset \theta {max}L(\theta)=arg\underset \theta {max}\sum_y logP(y|\theta)
\] 加入隐变量后,对数极大似然函数变为
\[L(\theta,z)=\sum_ylog\sum_zP(y,z|\theta)
\] 求解
\[
\widehat \theta,z=arg\underset {\theta,z} {max}L(\theta,z)
\] 按照极大似然估计中的方法,似乎应该对\(\theta,z\)求导然后令其为0解方程组,然后注意此时的\(L(\theta,z)\)函数,log内含有求和运算,若是直接求导计算十分困难,因此退而求其次,既然要极大化\(L(\theta,z)\),就先找到一个它的下界,再想办法提高这个下界,同样能达到极大化L的效果。使用Jense不等式对似然函数进行放缩。
- Jense不等式(琴生不等式)
凸函数:是定义在实数域上的函数,如果对于任意的实数,都有:
\[f”\geqslant 0\]
则该函数是凸函数。
当函数是凸函数的时候,Jense不等式的含义是函数的期望大于等于期望的函数(凹函数相反)。图下图所示
二维情况下可用凸函数定义来解释,当一个函数是凸函数的时候,它满足
\[f(\frac {a+b} 2)\leqslant \frac {f(a)+f(b)} 2\] 左边其实相当于其变量x先求期望后带入函数,右边是先求函数值再计算函数值的期望,也就是
\[f(E(x))\leqslant E(f(x))
\] 再回到\(L(\theta,z)\)中来,目的是为了将对数函数中的和项去掉,便可利用jense不等式的性质,将期望的函数变为函数的期望。先进行放缩
\[
\begin{aligned}
L(\theta,z)&=\sum_ylog\sum_zP(y,z|\theta)\\
&=\sum_ylog\sum_zQ(z)\frac {P(y,z|\theta)} {Q(z)}\\
&\geqslant \sum_y \sum_zQ(z)log\frac {P(y,z|\theta)} {Q(z)}\\
\end{aligned}
\] 其中最后一步用到了Jense不等式,因为对数函数是凹函数,所以不等号反了过来,\(f(E(x))\geqslant E(f(x))\),此处\[f(x) = log(x), x=\frac {P(y,z|\theta)} {Q(x)} ,\] 并且所添加的\(Q(x)\)满足\[\sum_zQ(z) = 1\] 这是根据第三类Jense不等式的条件设定的,不同系数的加权求和期望只要满足系数之和为1就能使用Jense不等式。
所以得到结论,\(log\frac {P(y,z|\theta)} {Q(z)}\)的加权平均就是\(L(\theta,z)\)的一个下界。这便是EM算法中E(期望)的来由。
目前\(Q(z)\)还是未知的,需要根据一些条件来选择一个合适的函数,再次强调最终目的是极大化似然函数,现在我们得到了似然函数的一个下界,一个想法就是让这个下界去更好的逼近似然函数的真实值,下界是根据不等式放缩后得到的,那么当不等式取等号的时候便是最接近原函数的时候。回忆Jense不等式\(f(E(x)) \leqslant E(f(x))\),显然当\(x\)为常数的时候不等式成立。即
\[x =\frac {P(y,z|\theta)} {Q(z)}=c\] 既然要确定的是\(Q(z)\),不妨设\(\theta\)为常数,由上式得
\[
\begin{aligned}
P(y,z|\theta) &=cQ(z) \\
\sum_zP(y,z|\theta)&=\sum_zcQ(z) \\
\sum_zP(y,z|\theta)&=c
\end{aligned}
\]
将c带入x
\[
\begin{aligned}
Q(z) &= \frac {P(y,z|\theta)} {\sum_zP(y,z|\theta)} \\
&=\frac {P(y,z|\theta)} {P(y|\theta)} \\
&= P(z|y,\theta)
\end{aligned}
\]
第二步用到边缘概率,第三步条件概率。至此,我们得出了Q(z)的表达式,Q(z)是已知样本观测和模型参数下的隐变量的分布。那么已经完成了E步,对对数似然函数下界的期望的表示
\[L(\theta,z)=\sum_y \sum_zQ(z)log\frac {P(y,z|\theta)} {Q(z)}\] 接下来需要做的便是极大化这个似然函数,也就是M步。这一步中将\(Q(z)\)视为常数,对\(\theta\)进行极大化,去掉常数项后
\[L(\theta,z)=\sum_y \sum_zQ(z)logP(y,z|\theta)\]