首页 > 技术文章 > EM算法

Towerb 2020-07-27 09:38 原文

EM算法(Expectation-Maximum)

原理篇

  • 本质概率模型,去估计一个密度函数,最大化对数似然函数去估计参数。无法直接用极大化对数似然函数得到模型分布的参数,用启发式跌代法用于求解含有隐变量的最大似然估计、最大后延概率估计问题。

    1. 隐变量:对概率模型有一定的影响,但无法观测;

    ​ 观测数据X+隐变量 = 完全数据

    1. 无法用极大似然的两种情况:数据缺失、含有未知隐变量
  • 作用:经常存在数据缺失或者不可用的的问题,这时候直接处理数据比较困难,而数据添加办法有很多种,常用的有神经网络拟合、添补法、卡尔曼滤波法等等,但是EM算法之所以能迅速普及主要源于它算法简单,稳定上升的步骤能非常可靠地找到“最优的收敛值”。

  • ⽬标:是使包含隐变量的数据集的后验概率或似然函数最⼤化, 进⽽得到最优的参数估计

  • 思想:我们可以发现我们的算法里已知的是观察数据,未知的是隐含数据和模型参数,在E步,我们所做的事情是固定模型参数的值,优化隐含数据的分布,而在M步,我们所做的事情是固定隐含数据分布,优化模型参数的值。

主要步骤:

已知:概率分布、随机抽取的样本;

未知:分类、模型参数

  • E-step:猜想隐含数据,更新隐含数据和模型参数

  • M-step:基于观察数据和猜测的隐含数据求极大对数似然,求解模型K

  • E-step:基于前面得到的模型K,继续猜测隐含数据,继续极大化对数似然

  • M-step:求模型参数

  • 直至模型分布无明显变化,算法收敛

    EM算法步骤如下:

    输入:观测变量数据X,隐变量Z,联合分布p(X,Z|Θ)

    输出:模型参数Θ

    (1) 选择初始参数Θ_0

    (2)E步:记Θi为第i次迭代参数Θ的估计值,在第i+1次迭代的E步,计算Q(Θ,Θg);

    (3)M步:确定第i+1次迭代的参数的估计值Θ(i+1),即为:

    \[Θ^{(i+1)}=argmax_ΘQ(Θ,Θ^{(i)}) \]

    (4)重复(2)和(3)步,直至收敛

EM算法的引入篇

有三枚硬币A、B、C

三枚硬币的模型:

\[p(y|\theta) = \sum_zP(y,z|\theta) = \sum_zp(z|\theta)p(y|z,\theta)\\ =\pi p ^y(1-p)^{1-y} + (1-\pi)q^y(1-q)^{1-y} \]

N枚硬币的模型:

\[P(Y|\Theta) = \sum_zP(Z|\Theta)P(Y|Z,\Theta)\\ = \prod_{j = 1}^n[\pi p^{y_j}](1-p)^{1-y_j} + (1-\pi)q^{y_j}(1-q)^{q-y_j} \]

求模型的参数 Θ= (π,p,q)的极大似然估计,即目标函数为:

\[\Theta = argmaxlogp(Y|\Theta) = argmaxlog\sum_zP(Y|Z,\Theta)p(Z,\Theta) \]

面对含隐变量的概率模型,目标是极大化观测数据(不完全数据)Y关于参数Θ的对数似然函数,即极大化(取对数方便计算):

\[L(\Theta) = logP(Y|\Theta) = log\sum_zP(Y,Z|\Theta) \\ = log(\sum_zP(Y|Z,\Theta)P(Z|\Theta)) \]

EM算法通过迭代逐步近似极大化L(θ)的 + Jensen不等式

\[L(\Theta) - L(\Theta^{i}) = log(\sum_Z P(Y|Z,\Theta)P(Z|\Theta)) - logP(Y|\Theta^{(i)})\\ =log[\sum_ZP(Z|Y,\Theta^{(i)})\frac{P(Y|Z)P(Z|\Theta)}{P(Z|Y,\Theta^{i})}] - logP(Y|\Theta^{(i)})\\ 由Jensen不等式且 \sum_zP(Z|Y,\Theta^{(i)}) = 1\\ \geq \sum_ZP(Z|Y,\Theta^{(i)})log\frac{P(Y|Z,\Theta)P(Z|\Theta)}{P(Z|Y,\Theta^{(i)})} - \frac{logP(Y|\Theta^{(i)})*\sum_ZP(Z|Y,\Theta^{(i)})}{\sum_ZP(Z|Y,\Theta^{(i)})}\\ = \sum_Z P(Z|Y,\Theta^{(i)})*log\frac{P(Y|Z,\Theta)P(Z|\Theta)}{P(Z|Y,\Theta^{(i)})P(Y|\Theta^{(i)})} \]

即:

\[\Theta^{(i+1)} = argmax [L(\Theta^{(i)})+ \sum_ZP(Z|Y,\Theta^{(i)})*log\frac{P(Y|Z,\Theta)P(Z|\Theta)}{P(Z|Y,\Theta^{(i)})P(Y|\Theta^{(i)})}] \]

去掉与Θ无关的变量的式子:

\[\Theta^{(i+1)} = argmax [\sum_ZP(Z|Y,\Theta^{(i)})*logP(Y|Z,\Theta)P(Z|\Theta)]\\ =argmaxQ(\Theta,\Theta^{(i)})= E[logP(Z|Y,\Theta^{(i)})]....(1) \]

观测数据 + 隐变量 = 完全数据

Jensen不等式:

\[log(\sum \alpha_i \varphi(x_i)) >= \sum\alpha_i log\varphi(x_i)\\ \sum \alpha_i = 1 且 \alpha_i >= 0 \]

EM算法的收敛性

证明:P(Y|θ)为观测数据的似然函数,且是递增的,即:

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

证明如下:

\[P(Y|\theta) = \frac{P(Y,Z|\theta)}{P(Z|Y,\theta)}......有贝叶斯公式展开得\\ logP(Y|\theta) = logP(Y.Z|\theta) - logP(Z|Y,\theta) ....取对数\\ \]

\[Q(\theta,\theta^{(i)}) = \sum_z logP(Y,Z|\theta)P(Z|Y,\theta^{(i)}) ...由(1)得\\ \]

构造下式(因为取对数方便相减和相除,同时构造了贝叶斯公式):

\[H(\theta,\theta^{(i)}) = \sum_zlogP(Z|Y,\theta)P(Z|Y,\theta^{(i)})\\ logP(Y|\theta) = Q(\theta,\theta^{(i)}) - H(\theta,\theta^{(i)}).....(2) \]

在式(2)中分别取θθi 和θ i+1,并相减

\[logP(Y|\theta^{(i+1)}) - logP(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)}))] \]

其中对H:

\[[H(\theta^{(i+1)},\theta^{(i)}) - H((\theta^{(i)},\theta^{(i)}))] = \sum_z(logP(Z|Y,\theta^{(i+1})) =\\ \sum_z(log\frac{P(Z|Y,\theta^{(i+1})}{P(Z|Y,\theta^{(i)})}P(Z|Y,\theta^{(i)})\leq\\ log(\sum_Z\frac{P(Z|Y,\theta^{(i+1})}{P(Z|Y,\theta^{(i)})}P(Z|Y,\theta^{(i)}))...Jensen不等式得\\ log(\sum_ZP(Z|Y,\theta^{(i+1)}))=log1 = 0 \]

对Q,由于Q的i+1项已经达到极大,所以有:

\[[Q(\theta^{(i+1)},\theta^{(i)})- Q((\theta^{(i)},\theta^{(i)}))]\geq0 \]

最后证明得到:

\[logP(Y|\theta^{(i+1)})\geq logP(Y|\theta^{(i)}) \]

应用篇--GMM

EM在GMM中的应用

高斯分布分析

图中可知:

  1. 单个高斯拟合效果差,均值应该分布在数据密集处

  2. 混合高斯模型中的隐变量,同时,隐变量在概率模型中不能改变边缘分布,即:

    \[p(x_i)=\int_{z_i}p(x_i|z_i)*p(z_i)dz_i = \alpha_z = \sum_{z_i=1}^k\alpha_{z_i}N(x_i|\mu_z,\Sigma_z) \]

    每个数据都有一个隐变量,告诉你在哪个高斯模型中(由两个高斯扩展到n个高斯)

    \[P(z_i = z_1|x_i,\Theta^{g}) = \frac{a}{a+b} \]

\[P(x) = \sum_{l=1}^{k}\alpha_l*N(X|\mu_l,\Sigma_l) \quad\quad\quad \sum^k_{l=1}\alpha_l = 1 \]

\[Θ=\{α_1 ,…,α_k,μ_1,…,μ_k,Σ_1,…,Σ_{k-1}\} \]

  1. 目标函数为:

    \[Θ_{MLE}=argmax_{Θ}*L(Θ∣X) =argmax_Θ(\sum_{l=1}^nlog*\sum_{l=1}^kα_lN(X∣μ_l,Σ_l)) \]

    该式子包含和(或积分)的对数,不能像单个高斯模型那样直接求导,再令导数为0来求解。这时我们需要利用 EM 算法通过迭代逐步近似极大化L(Θ∣X)来求解

EM算法在GMM中的应用:

高斯混合模型的概率分布模型如下:

\[P(Y|\theta) = \sum^{K}_{K=1}\alpha_k\phi(Y|\theta)\\ 其中:\sum_{K=1}^{K}\alpha_k = 1 , \theta_k = (\mu_k,\sigma_k^2)\\ \theta = (\alpha_1,\alpha_2,...,\alpha_k,\theta_1,\theta_2,...,\theta_k)\\ \phi(Y|\theta) = \frac{1}{\sqrt{2\pi}\sigma_k}exp(-\frac{(y-\mu_k)^2}{2\sigma_k^2}) \]

γ 作为隐变量,去确定是哪个模型,γ =1/0.

完整数据的似然函数为:

\[P(y,\gamma|\theta) = \prod_{j=1}^NP(y_j,\gamma_{j1},\gamma_{j2},...,\gamma_{jK}|\theta)\\ = \prod_{K=1}^K\prod_{j=1}^N[\alpha_k\phi(y_j|\theta_k)]^{\gamma^{jK}}\\ \]

完全数据的对数似然为

\[logP(y,\gamma|\theta) = \sum_{K=1}^K[\sum_{j=1}^Nlog\alpha_k + \sum_{j=1}^N\gamma_{jk}[log(\frac{1}{\sqrt{2\pi}})-log\sigma_k - \frac{1}{2\sigma^2_K}(y_j-\mu_k)^2]] \]

EM算法中的E步:确定Q函数,对每一个隐变量求期望

根据当前模型参数,计算分模型k对观测数据y_j的响应度

\[Q(\theta,\theta^{(i)}) = E[logP(y,\gamma|\theta)|y,\theta^{(i)}]\\ =E[\sum_{K=1}^K[\sum_{j=1}^Nlog\alpha_k + \sum_{j=1}^N\gamma_{jk}[log(\frac{1}{\sqrt{2\pi}})-log\sigma_k - \frac{1}{2\sigma^2_K}(y_j-\mu_k)^2]]]\\ =\sum_{K=1}^K[\sum_{j=1}^N(E_{\gamma_{jk}})log\alpha_K+\sum_{j=1}^N(E\gamma_{jk})[log(\frac{1}{\sqrt{2\pi}})-log\sigma_K-]\frac{1}{2\sigma_k^2}(y_j-\mu_k)2] \]

计算E

\[\gamma_{jk} = E(\gamma_{jk}|y,\theta)\\ =P(\gamma_{jk}=1|y,\theta)*1 + P(\gamma_{jk}=0,\theta)*0\\ =\frac{P(\gamma_{jk}=1,y_j|\theta)}{P(y_j|\theta)} = \frac{P(\gamma_{jk}=1,y_j|\theta)}{\sum_{K=1}^KP(\gamma=1,y_j|\theta)}\\ =...=\frac{\alpha_k\phi(y_j|\theta_k)}{\sum_{K=1}^K\alpha_k\phi(y_j|\theta_k)} \]

最终求得Q

\[Q(\theta,\theta^{(i)}) = \sum_{K=1}^K[\sum_{j=1}^Nlog\alpha_k+\sum_{j=1}^N\gamma_{jk}[log(\frac{1}{\sqrt{2\pi}})-log\sigma_k-\frac{1}{2\sigma_k^2}(y_j-\mu_k)^2]] \]

M步,进行迭代模型的参数

\[\theta^{(i+1)} = argmax_\theta Q(\theta,\theta^{(i)}) \]

\[\mu_k = \frac{\sum_{j=1}^N\gamma_{jk}y_j}{\sum_{j=1}^N\gamma_{jk}}\\ \\ \sigma^2_k = \frac{\sum_{j=1}^N\gamma_{jk}(y_j-\mu_k)^2}{\sum_{j=1}^N\gamma_{jk}}\\ \\ \alpha_k= \frac{\sum_{j=1}^N\gamma_{jk}}{N} \]

参考1:知乎关于EM

参考2:GMM应用

参考3:EM九个境界

参考4:统计学习方法

推荐阅读