EM算法之不同的推导方法和自己的理解


一、前言

EM算法主要针对概率生成模型解决具有隐变量的混合模型的参数估计问题。
对于简单的模型,根据极大似然估计的方法可以直接得到解析解;可以在具有隐变量的复杂模型中,用MLE很难直接得到解析解,此时EM算法就发挥作用了。
E步解决隐变量的问题,M步求解模型的参数值,也就是极大似然的方法求取模型的参数值。

自己的理解:走一步看一步,走了看,看了再走,迭代过程
首先使用估计的方式直接设置一组模型的参数值,这组模型的参数值是先验的,甚至可以说是我们瞎设的,这么设肯定不够准确呀,我们期望得到更更精确的参数值,那么就用现在的这组参数值去解决隐变量的问题,得到的隐变量,再根据隐变量得到后验的参数值。后验是根据观测到的数据在先验的基础上进行修正,以使得参数值更匹配这组数据。


二、概览

假设一组数据,\(X=\{x^i,x^2 \cdots ,x^n\}\), 包含 \(n\) 个独立的样本,这组样本由一组混合模型生成而来,我们希望 \(\theta\) 满足:
\[\arg\max_{\theta} logP(X|\theta)\]

可是X是由一组混合模型而来,与隐变量 \(Z\) 有关,\(Z\) 表示样本归属于哪一个模型。
直接使用极大似然估计的方法求取上式很难由解析解,通过EM算法,转而求解:
\[\theta^{(t+1)} = \arg\max_{\theta} \int_Z \; P(Z|X,\theta^{(t)})\;logP(X,Z|\theta)\]

通过不断的迭代求解,求得的\(\theta\) 可以使得 \(logP(X|\theta)\) 不断增大,达到我们的目的。

如果把已知的数据当成由一个概率模型生成的,那么 \(P(X|\theta)\) 可能会非常复杂,而且我们不知道 \(P(X|\theta)\) 的形式,两眼一抹黑,啥都不知道,因此就使用了归纳偏置,假定它服从于某个模型,对于生成模型,假设存在一个隐变量 \(Z\), \(Z\) 负责了 \(X\) 的生成,有了假设,那么\(P(X)\) 就有了一种结构,有了结构就好具体处理了。此时
\(P(X)=\int_{Z}P(X,Z)dZ\),把 \(P(X)\) 分解处理。
引入隐变量 \(Z\) 求取 \(\theta\)。


三、收敛性

通过上述方式得到的 \(\theta\) 真的可以达到我们的目的吗?即使得 \(logP(X|\theta)\) 极大。
\[
\begin{aligned}
logP(X|\theta) &=log \frac {P(X,Z|\theta)}{P(Z|X,\theta)}\\
&=log {P(X,Z|\theta)} - log{P(Z|X,\theta)}
\end{aligned}
\]

左右两边同时对 \(P(Z|X,\theta^{(t)})\) 求取积分:
\[
\begin{aligned}
左边&=\int_{Z}P(Z|X,\theta^{(t)}) log {P(X|\theta)} dZ\\
&=log {P(X|\theta)} \int_{Z}P(Z|X,\theta^{(t)})dZ\\
&=log {P(X|\theta)}
\end{aligned}
\]

\[
\begin{aligned}
右边&=\int_{Z}P(Z|X,\theta^{(t)}) \left[log {P(X,Z|\theta)} - log{P(Z|X,\theta)}\right] dZ\\
&=\int_{Z}P(Z|X,\theta^{(t)}) log {P(X,Z|\theta)} dZ - \int_{Z}P(Z|X,\theta^{(t)}) log{P(Z|X,\theta)} dZ\\
&Q(\theta,\theta^{(t)}) = \int_{Z}P(Z|X,\theta^{(t)}) log {P(X,Z|\theta)} dZ\\
&H(\theta,\theta^{(t)}) = \int_{Z}P(Z|X,\theta^{(t)}) log{P(Z|X,\theta)} dZ\\
&log {P(X|\theta^{(t+1)})} -log {P(X|\theta^{(t)})} = Q(\theta^{(t+1)},\theta^{(t)}) -Q(\theta^{(t)},\theta^{(t)}) + H(\theta^{(t)},\theta^{(t)}) -H(\theta^{(t+1)},\theta^{(t)})
\end{aligned}
\]

根据\(\theta^{(t+1)}\) 的求取公式,直接得出:
\[Q(\theta^{(t+1)},\theta^{(t)})\geq Q(\theta,\theta^{(t)})\]

此时令\(\theta = \theta^{(t)}\),则:
\[Q(\theta^{(t+1)},\theta^{(t)})\geq Q(\theta^{(t)},\theta^{(t)})\]

\[
\begin{aligned}
H(\theta^{(t)},\theta^{(t)}) -H(\theta^{(t+1)},\theta^{(t)}&=\int_{Z}P(Z|X,\theta^{(t)}) log{P(Z|X,\theta^{(t)})}- \int_{Z}P(Z|X,\theta^{(t)}) log{P(Z|X,\theta^{(t+1)})}dZ\\
&=\int_{Z}P(Z|X,\theta^{(t)}) [log{P(Z|X,\theta^{(t)})}-log{P(Z|X,\theta^{(t+1)})}]dZ\\
&=\int_{Z}P(Z|X,\theta^{(t)})log \frac{P(Z|X,\theta^{(t)})}{P(Z|X,\theta^{(t+1)})}dZ\\
&=KL(P(Z|X,\theta^{(t)}) \;||\; P(Z|X,\theta^{(t+1)})) \geq 0
\end{aligned}
\]

所以 \[log {P(X|\theta^{(t+1)})} -log {P(X|\theta^{(t)})} \geq 0\]

\[log {P(X|\theta^{(t+1)})} \geq log {P(X|\theta^{(t)})} \]


四、完整的推导

Jesen不等式:当f是凹函数时:\[f[E] \geq E[f]\]

其中 \(f\) 表示凹函数,\(E\) 表示期望。比如说\(log[E(x)] \geq E[log(x)]\)

第一种推导方法
\[
\begin{aligned}
log {P(X|\theta)} &= log \int_{Z}P(X,Z|\theta)dZ=log \int_{Z} \frac{P(X,Z|\theta)}{q(Z)}q(Z)dZ\\
&=log E_{q(Z)}[\frac{P(X,Z|\theta)}{q(Z)}] \geq E_{q(Z)}[log \frac{P(X,Z|\theta)}{q(Z)}]
\end{aligned}
\]

取等号时是\(\frac{P(X,Z|\theta)}{q(Z)}=C\)
我们把\(E_{q(Z)}[log \frac{P(X,Z|\theta)}{q(Z)}]\)叫做 \(ELBO\)
换句话说就是 \(ELBO\) 是 \(log {P(X|\theta)}\) 的下界,不停的增大ELBO,就可以不断的增大 \(log {P(X|\theta)}\)

在后面我们可以看到 $ \int_Z ; P(Z|X,\theta^{(t)});logP(X,Z|\theta)$ 就是这里的 \(ELBO\)


第二种推导方法
\[
\begin{aligned}
log {P(X|\theta)} &=log\frac{P(X,Z|\theta)}{P(Z|X,\theta)}\\
&=log P(X,Z|\theta) - log P(Z|X,\theta)\\
&=log \frac {P(X,Z|\theta)}{q(Z)} - \frac {log P(Z|X,\theta)}{q(Z)}
\end{aligned}
\]

等式两边同时关于分布 \(q(Z)\) 求期望(两边同时对 \(q(Z)\) 求积分)
左边还是等于左边(具体步骤参考上面)
\[
\begin{aligned}
右边 &= \int_{Z}q(Z)log \frac {P(X,Z|\theta)}{q(Z)}dZ-\int_{Z}q(Z)log \frac {log P(Z|X,\theta)}{q(Z)}dZ\\
& = ELBO+KL(q(Z)\;||\;P(Z|X,\theta))
\end{aligned}
\]

当 \(q(Z)与P(Z|X,\theta)\) 同分布时取等号。

因此:
E步:找到一个q = p
M步:(多种不同的形式)
\[
\begin{aligned}
&\arg\max_{\theta} \int_{Z}q(Z)log \frac {P(X,Z|\theta)}{q(Z)}dZ \\ &\arg\max_{\theta}\int_{Z}q(Z)log {P(X,Z|\theta)}dZ\\ &\arg\max_{\theta}\int_{Z}P(Z|X,\theta^{(t)})log {P(X,Z|\theta)}dZ\\
&\arg\max_{\theta}\sum_{Z}P(Z|X,\theta^{(t)})log {P(X,Z|\theta)}
\end{aligned}
\]

题外话:在GMM中,我们直接把 \(q(Z)\) 写为 \(P(Z|X,\theta)\),也就是Z的后验。此时
\[log P(X|\theta) = ELBO\]

当我们不停的极大化 \(ELBO\) 时,就是在极大化 $ log P(X|\theta)$。
自己的理解就是从极大化 \(log P(X|\theta)\) 这个任务 变成了 极大化 \(log P(X,Z|\theta)\)这个任务。
因为直接极大化 \(log P(X|\theta)\) 这个任务我们做不出来,然后引入了隐变量 \(Z\)(对应样本属于哪个模型的分布) 来帮助我们解决问题。从一阶段变成了二阶段:求他们的联合分布的概率最大化。


五、广义EM

\[logP(X|\theta) = ELBO+KL(q(Z)||P(Z|X,\theta))\]


\[L(q,\theta)=ELBO = E_{q(Z)}[ log\frac{P(X,Z|\theta)} {q(Z)}] \]

发散一下
\(logP(X|\theta) = E_{q(Z)}[ log{P(X,Z|\theta)}]-E_{q(Z)}[log \;q(Z)]+KL(q(Z)||P(Z|X,\theta))\)
\(= E_{q(Z)}[ log{P(X,Z|\theta)}]+H(q(Z))+KL(q(Z)||P(Z|X,\theta))\)
\(= E_{q(Z)}[ log{P(X,Z|\theta)}]+H(q(Z),P(Z|X,\theta))\)

E-step:固定 \(\theta\),找出q,此时 \(logP(X|\theta)\)是定值:
\[
\begin{aligned}
q^{(t+1)} &= \arg\min_{q}KL(q||P) = \arg\max_{q}ELBO\\& = \arg\max_{q} L(q,\theta^{(t)})\\&=\arg\max_{\theta} E_{q(Z)}[ log\frac{P(X,Z|\theta^{(t)})} {q(Z)}]
\end{aligned}
\]

M-step:固定 \(q\),找出 \(\theta\):
\[
\begin{aligned}
\theta^{(t+1)} &= \arg\max_{\theta}ELBO =\arg\max_{\theta} L(q^{(t+1)},\theta)\\&= \arg\max_{\theta} E_{q^{(t+1)}(Z)}[ log\frac{P(X,Z|\theta)} {q^{(t+1)}(Z)}]\\&=
\arg\max_{\theta} E_{q^{(t+1)}(Z)}[ log{P(X,Z|\theta)} ]
\end{aligned}
\]


EM算法之不同的推导方法和自己的理解的更多相关文章

  1. EM算法-完整推导

    前篇已经对EM过程,举了扔硬币和高斯分布等案例来直观认识了, 目标是参数估计, 分为 E-step 和 M-step, 不断循环, 直到收敛则求出了近似的估计参数, 不多说了, 本篇不说栗子, 直接来 ...

  2. 【EM算法】EM(转)

    Jensen不等式 http://www.cnblogs.com/jerrylead/archive/2011/04/06/2006936.html 回顾优化理论中的一些概念.设f是定义域为实数的函数 ...

  3. 机器学习第三课(EM算法和高斯混合模型)

    极大似然估计,只是一种概率论在统计学的应用,它是参数估计的方法之一.说的是已知某个随机样本满足某种概率分布,但是其中具体的参数不清楚,参数估计就是通过若干次试验,观察其结果,利用结果推出参数的大概值. ...

  4. EM算法--第一篇

    在统计计算中,最大期望(EM)算法是在概率(probabilistic)模型中寻找参数最大似然估计或者最大后验估计的算法,其中概率模型依赖于无法观测的隐藏变量(LatentVariable).最大期望 ...

  5. EM算法(坐标上升算法)

    原文地址:https://www.cnblogs.com/to-creat/p/6075322.html 机器学习十大算法之一:EM算法.能评得上十大之一,让人听起来觉得挺NB的.什么是NB啊,我们一 ...

  6. <转>E-M算法

    转自http://blog.csdn.net/zouxy09/article/details/8537620/ 机器学习十大算法之一:EM算法.能评得上十大之一,让人听起来觉得挺NB的.什么是NB啊, ...

  7. 机器学习笔记—EM 算法

    EM 算法所面对的问题跟之前的不一样,要复杂一些. EM 算法所用的概率模型,既含有观测变量,又含有隐变量.如果概率模型的变量都是观测变量,那么给定数据,可以直接用极大似然估计法,或贝叶斯估计法来估计 ...

  8. 转载:EM算法的最精辟讲解

    机器学习十大算法之一:EM算法.能评得上十大之一,让人听起来觉得挺NB的.什么是NB啊,我们一般说某个人很NB,是因为他能解决一些别人解决不了的问题.神为什么是神,因为神能做很多人做不了的事.那么EM ...

  9. 含隐变量模型求解——EM算法

    1 EM算法的引入1.1 EM算法1.2 EM算法的导出2 EM算法的收敛性3EM算法在高斯混合模型的应用3.1 高斯混合模型Gaussian misture model3.2 GMM中参数估计的EM ...

随机推荐

  1. vuex的使用介绍

    1.vuex是什么? vuex是一个专为vue.js应用程序开发的状态管理模式(它采用集中式存贮管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化). 2.vuex的核心概念? ...

  2. PHP读取文件内容的方法

    下面我们就为大家详细介绍PHP读取文件内容的两种方法. 第一种方法:fread函数 <?php $file=fopen('1.txt','rb+'); echo fread($file,file ...

  3. java获取远程服务器应用程序服务状态

    package lct.conference.test; import java.io.BufferedReader; import java.io.IOException; import java. ...

  4. 重载new和delete运算符

    内存管理运算符 new.new[].delete 和 delete[] 也可以进行重载,其重载形式既可以是类的成员函数,也可以是全局函数.一般情况下,内建的内存管理运算符就够用了,只有在需要自己管理内 ...

  5. ros平台下python脚本控制机械臂运动

    在使用moveit_setup_assistant生成机械臂的配置文件后可以使用roslaunch demo.launch启动demo,在rviz中可以通过拖动机械臂进行运动学正逆解/轨迹规划等仿真运 ...

  6. cesium地下模式(地表透明)4

    这篇博客主要罗列一下解决地下模式(地表透明)的相关资源 1.Cesium的Github仓库地下模式issue 有人提了这个问题,但是cesium官方没有解决这个问题,持续跟踪一下问题说不定哪天官方就解 ...

  7. Hadoop(1)---运行Hadoop自带的wordcount出错问题。

    在hadoop2.9.0版本中,对namenode.yarn做了ha,随后在某一台namenode节点上运行自带的wordcount程序出现偶发性的错误(有时成功,有时失败),错误信息如下: // : ...

  8. SpringCloud学习整理

    参考文档 [1]: Spring Cloud Ribbon负载均衡

  9. 命令行启动模块的Python代码研究

    pyrasite的 __requires__ = 'pyrasite==2.0' import re import sys from pkg_resources import load_entry_p ...

  10. OpenResty之ngx.var.VARIABLE

    1. ngx.var.VARIABLE syntax: ngx.var.VAR_NAME context: set_by_lua*, rewrite_by_lua*, access_by_lua*, ...