EM算法公式详细推导

EM算法是什么?

EM算法是一种迭代算法,用于含隐变量概率模型参数的极大似然估计,或极大后验概率估计。EM算法由两步组成:E步,求期望;M步:求极大。EM算法的优点是简单性和普适性。


符号说明:

  • Y:观测数据,又称不完全数据
  • Z:隐变量
  • (Y,Z)完全数据
  • \theta:模型参数
  • \theta^{(i)}:第i次迭代后\theta的估计值
  • P(Y,Z|\theta):联合分布
  • P(Z|Y,\theta):条件分布
  • P(Y|\theta):似然

EM算法的导出

我们面对一个含有隐变量的概率模型,目标是极大化Y关于\theta的对数似然函数:

\arg\max\limits_{\theta}\log P(Y|\theta)

我们把Y关于Z的依赖体现到我们的模型也就是似然里面来:

L(\theta)=\log P(Y|\theta)=\log \sum\limits_{Z}P(Y,Z|\theta)=\log \biggl(\sum\limits_{Z}P(Y|Z,\theta) P(Z|\theta)\biggl)

造成这一似然的极大化困难的根源有两点

  • 未观测数据Z
  • 对数里面包含求和

我们虽然无法一次性做到极大化,但是EM算法提出,我们可以用迭代的方式来近似逼近极大化只需在迭代过程中保证新的估计值\theta能使L(\theta)不断增加:

L(\theta)-L(\theta^{(i)})=\log \biggl(\sum\limits_{Z}P(Y|Z,\theta)P(Z|\theta)\biggl)-\log P(Y|\theta^{(i)})

 利用Jensen不等式,可以得到其下界:

\because \log \sum\limits_{j}\lambda_jy_j\geq \sum\limits_{j}\lambda_j\log y_j, \ (\lambda_j\geq 0,\sum\limits_{j}\lambda_j=1)\ (\mbox{Jensen inequality})\\\therefore L(\theta)-L(\theta^{(i)})= \log \biggl(\sum\limits_{Z}P(Y|Z,\theta)P(Z|\theta)\biggl)-\log P(Y|\theta^{(i)})\\\\= \log \biggl(\sum\limits_{Z}P(Z|Y,\theta^{(i)})\frac{P(Y|Z,\theta)P(Z|\theta)}{P(Z|Y,\theta^{(i)})}\biggl)-\sum\limits_{Z}P(Z|Y,\theta^{(i)})\log P(Y|\theta^{(i)})\\\\\geq \sum\limits_{Z}P(Z|Y,\theta^{(i)})\log \frac{P(Y|Z,\theta)P(Z|\theta)}{P(Z|Y,\theta^{(i)})}-\sum\limits_{Z}P(Z|Y,\theta^{(i)})\log P(Y|\theta^{(i)})\\\\ =\sum\limits_{Z}P(Z|Y,\theta^{(i)})\log \frac{P(Y|Z,\theta)P(Z|\theta)}{P(Z|Y,\theta^{(i)})P(Y|\theta^{(i)})}\\\\\\ \Rightarrow L(\theta)\geq L(\theta^{(i)})+\sum\limits_{Z}P(Z|Y,\theta^{(i)})\log \frac{P(Y|Z,\theta)P(Z|\theta)}{P(Z|Y,\theta^{(i)})P(Y|\theta^{(i)})}\\\mbox{Let.} \ B(\theta,\theta^{(i)})=L(\theta^{(i)})+\sum\limits_{Z}P(Z|Y,\theta^{(i)})\log \frac{P(Y|Z,\theta)P(Z|\theta)}{P(Z|Y,\theta^{(i)})P(Y|\theta^{(i)})}

即函数B(\theta,\theta^{(i)})L(\theta)的一个下界,且B(\theta^{(i)},\theta^{(i)})=L(\theta^{(i)})

B(\theta^{(i)},\theta^{(i)})=L(\theta^{(i)})+\sum\limits_{Z}P(Z|Y,\theta^{(i)})\log \frac{P(Y|Z,\theta^{(i)})P(Z|\theta^{(i)})}{P(Z|Y,\theta^{(i)})P(Y|\theta^{(i)})}\\\\=L(\theta^{(i)})+\sum\limits_{Z}P(Z|Y,\theta^{(i)})\log \frac{P(Y,Z|\theta^{(i)})}{P(Y,Z|\theta^{(i)})}\\\\=L(\theta^{(i)})

因此任何可以使B(\theta,\theta^{(i)})增大的\theta,也可以使L(\theta)增大。为了使L(\theta)有尽可能大的增长,选择\theta^{(i+1)}使B(\theta,\theta^{(i)})达到最大,计算过程中可以省去对\theta的极大化而言是常数的项:

 \theta^{(i+1)}=\arg\max\limits_{\theta} B(\theta,\theta^{(i)})\\\\ =\arg\max\limits_{\theta}\biggl( L(\theta^{(i)})+\sum\limits_{Z}P(Z|Y,\theta^{(i)})\log \frac{P(Y|Z,\theta)P(Z|\theta)}{P(Z|Y,\theta^{(i)})P(Y|\theta^{(i)})}\biggl)\\\\=\arg\max\limits_{\theta}\biggl( \sum\limits_{Z}P(Z|Y,\theta^{(i)})\log P(Y|Z,\theta)P(Z|\theta)\biggl)\\\\=\arg\max\limits_{\theta}\biggl( \sum\limits_{Z}P(Z|Y,\theta^{(i)})\log P(Y,Z|\theta)\biggl)\\\\

 我们令

EM算法公式详细推导_第1张图片

则EM算法的一次迭代,即极大化Q函数,这也是EM算法的核心:

\theta^{(i+1)}=\arg\max\limits_{\theta}Q(\theta,\theta^{(i)})

即EM算法是通过不断求解下界的极大化逼近求解对数似然函数极大化的算法。


EM算法的定义

  • 输入:Y,Z,P(Y,Z|\theta),P(Z|Y,\theta)
  • 输出:\theta
  • (1) 选择参数的初值\theta^{(0)},开始迭代;
  • (2) E步:计算Q函数:Q(\theta,\theta^{(i)})=\sum\limits_{Z}P(Z|Y,\theta^{(i)})\log P(Y,Z|\theta)
  • (3) M步:求第i+1次迭代的参数的估计值:\theta^{(i+1)}=\arg\max\limits_{\theta}Q(\theta,\theta^{(i)})
  • (4) 重复第(2)步和第(3)步,直到收敛,停止迭代的条件,一般是对较小的正数\varepsilon_1,\varepsilon_2,满足\left \|\theta^{(i+1)}-\theta^{(i)} \right \|<\varepsilon_1 或 \left \|Q(\theta^{(i+1)},\theta^{(i)})-Q(\theta^{(i)},\theta^{(i)}) \right \|<\varepsilon_2,则停止迭代 。

EM算法的收敛性

只需说明:

P(Y|\theta^{(i+1)})\geq P(Y|\theta^{(i)})

证明:

P(Y|\theta)=\frac{P(Y,Z|\theta)}{P(Z|Y,\theta)}

Q(\theta,\theta^{(i)})=\sum\limits_{Z}P(Z|Y,\theta^{(i)})\log P(Y,Z|\theta)

H(\theta,\theta^{(i)})=\sum\limits_{Z}P(Z|Y,\theta^{(i)})\log P(Z|Y,\theta)

\log P(Y|\theta)=Q(\theta,\theta^{(i)})-H(\theta,\theta^{(i)})

\log P(Y|\theta^{(i+1)})-\log P(Y|\theta^{(i)})\\\\=[Q(\theta^{(i+1)},\theta^{(i)})-Q(\theta^{(i)},\theta^{(i)})]-[H(\theta^{(i+1)}),\theta^{(i)})-H(\theta^{(i)}),\theta^{(i)})]\geq 0

其中,

Q(\theta^{(i+1)},\theta^{(i)})-Q(\theta^{(i)},\theta^{(i)})\geq 0

H(\theta^{(i+1)},\theta^{(i)})-H(\theta^{(i)},\theta^{(i)})=\sum\limits_{Z}\biggl(\log\frac{P(Z|Y,\theta^{(i+1)})}{P(Z|Y,\theta^{(i)})}\biggl) P(Z|Y,\theta^{(i)})\\\\\leq \log\biggl(\sum\limits_{Z}\frac{P(Z|Y,\theta^{(i+1)})}{P(Z|Y,\theta^{(i)})} P(Z|Y,\theta^{(i)})\biggl)\\\\= \log \biggl(\sum\limits_{Z} P(Z|Y,\theta^{(i+1)})\biggl)=0


EM算法在高斯混合模型学习中的应用

高斯混合模型如下:

P(y|\theta)=\sum\limits_{k=1}^K\alpha_k\phi(y|\theta_k),\quad\sum_{k=1}^K\alpha_k=1

\phi(y|\theta_k)\sim N(\mu_k,\sigma^2_k),\quad \theta_k=(\mu_k,\sigma^2_k)

观测数据y_1,...,y_N 由高斯混合模型生成。我们用EM算法估计参数\theta=(\alpha_1,...,\alpha_K;\theta_1,...,\theta_K)

明确隐变量:

EM算法公式详细推导_第2张图片

\gamma_{jk}是0-1随机变量。

有了观测数据y_j以及未观测数据\gamma_{jk},那么完全数据是(y_j,\gamma_{j1},\gamma_{j2},...,\gamma_{jK}),j=1,2,...,N

于是,可以写出完全数据的似然函数:

P(y,\gamma|\theta)\\=\prod\limits_{k=1}^K\prod\limits_{j=1}^N[\alpha_k\phi(y_j|\theta_k)]^{\gamma_{jk}}=\prod\limits_{k=1}^K\alpha_k^{n_k}\prod\limits_{j=1}^N[\frac{1}{\sqrt{2\pi}\sigma_k}\exp(-\frac{(y_j-\mu_k)^2}{2\sigma^2_k})]^{\gamma_{jk}},\\ n_k=\sum\limits_{j=1}^N\gamma_{jk},\sum\limits_{j=1}^Nn_k=N,

完全数据的对数似然:

\log P(y,\gamma|\theta)\\=\sum\limits_{k=1}^K\{n_k \log \alpha_k+\sum\limits_{j=1}^N{\gamma_{jk}}[\log(\frac{1}{\sqrt{2\pi}})-\log \sigma_k-\frac{(y_j-\mu_k)^2}{2\sigma^2_k})]\}

E步:

\hat \gamma _{jk}=\frac{\alpha_k\phi(y_j|\theta_k)}{\sum\limits_{k=1}^K\alpha_k\phi(y_j|\theta_k)}

M步:

\hat \mu_k=\frac{\sum\limits_{j=1}^N\hat \gamma_{jk}y_i}{\sum\limits_{j=1}^N\hat \gamma_{jk}}

\hat\sigma_k^2=\frac{\sum\limits_{j=1}^N\hat \gamma_{jk}(y_{j}-\mu_k)^2}{\sum\limits_{j=1}^N\hat \gamma_{jk}}

\hat \alpha_k=\frac{\sum\limits_{j=1}^N\hat \gamma_{jk}}{N}

你可能感兴趣的:(统计学习方法,算法,机器学习,概率论)