EM算法即“期望极大算法”。
EM算法分两步:E步求期望,M步求极大。
但是期望是求谁的期望,极大是求谁的极大呢?这里面其实有两种解读角度。

“通俗”角度

通俗角度的话,求极大肯定是求似然函数的极大了,而且一般都是对数似然。我们一般解决模型参数求解问题,都是在给定数据的情况下,求解使得似然函数最大的参数的取值。用公式表示就是:
θ^=argmax⁡θlogP(X∣θ)\hat{\theta}= arg\ \max_\theta\ log\ P(X|\theta)θ^=arg θmax​ log P(X∣θ)
通常的做法是对似然函数求偏导,然后令偏导等于零,参数取得的数值就是近似最优值。但是,有些含有隐变量的模型没办法直接进行似然函数的偏导,但是如果假设已经知道隐变量的值,就可以将似然函数简化进行下一步的求偏导。
因此,我们需要引入一个隐变量,求这个隐变量的期望就成了这种理解角度下E步骤。然后将隐变量的期望代入到经过隐变量改写的对数似然函数中,就可以按照通常的极大似然估计求解参数了。不过需要不断迭代才能达到近似最优。

总结起来,这种角度的EM算法框架如下:

循环体
{E-step:求在观测数据的前提下隐变量的期望;
M-step:求经过隐变量改写的似然函数的极大;
}
end

这种角度的好处是由一般的极大似然估计自然地引入到EM方法,比较容易理解;但是缺点是一般很难写出引入隐变量的似然函数的改写。实际上,这种改写很多情况下是依据EM算法的另一个理解角度而直接写出来的。

“正式”角度

看过EM算法推导过程的朋友应该都知道,有一个概念叫做“Q函数”;还有EM算法是通过不断求解下界的极大化逼近求解对数似然函数的极大化。那么,这个Q函数是怎么来的呢?EM算法是怎么不断求解下界的极大化呢?

EM算法通过迭代逐步近似极大化L(θ)L(\theta)L(θ)。假设在第i次迭代后θ\thetaθ的估计值是θ(i)\theta^{(i)}θ(i)。我们希望新估计值θ\thetaθ能使L(θ)L(\theta)L(θ)增加,即L(θ)>L(θ(i))L(\theta)>L(\theta^{(i)})L(θ)>L(θ(i)),并逐步达到极大值。为此,考虑两者的差:

L(θ)−L(θ(i))L(\theta)-L(\theta^{(i)})L(θ)−L(θ(i))
然后,利用Jensen不等式得到其下界:B(θ,θ(i))B(\theta,\theta^{(i)})B(θ,θ(i))具体怎么得到的可以参考《统计学习方法》。
因此,任何可以使B(θ,θ(i))B(\theta,\theta^{(i)})B(θ,θ(i))增大的θ\thetaθ,也可以使L(θ)L(\theta)L(θ)增大。为了使L(θ)L(\theta)L(θ)有尽可能的增长,选择θ(i)\theta^{(i)}θ(i)使B(θ,θ(i))B(\theta,\theta^{(i)})B(θ,θ(i))达到极大。在使B(θ,θ(i))B(\theta,\theta^{(i)})B(θ,θ(i))达到极大的过程中,省去对θθ的极大化而言是常数的项,剩下的部分,我们给它起了一个名字,就叫做:Q函数

从形式上看,Q函数是完全数据的对数似然函数关于在给定观测数据和当前参数下对未观测数据的条件概率分布的期望。

总结起来,这种角度的EM算法框架如下:

循环体
{E-step:求Q函数;
M-step:求使Q函数极大的当前参数的取值;
}
end

这里面有几个细节需要说明一下;

细节一:

在使用Jensen不等式的时候,需要假设隐变量服从某种形式的概率分布,才可以将推导过程的一部分看成是期望的表达形式从而应用Jensen不等式。然而这个分布不是随便指定的。我们令Jensen不等式取等号的时候,可以计算出这个分布其实就是:已知观测数据的隐变量的后验概率分布。由于求Q函数需要先求出隐变量的后验概率的期望,因此,这就可以解释为什么EM算法的“通俗”理解角度的E步骤是求隐变量的期望了。

细节二:Q函数与完全数据的对数似然函数的关系

有时候在用EM算法解决某个具体问题的时候,会发现M步骤极大化的居然是完全数据的对数似然函数。这是因为,Q函数虽然是完全数据的对数似然函数的某种期望,但是求这个期望的过程有时其实就是将隐变量的后验概率的期望代入就可以了。因此,本质上我们其实还是在求Q函数的极大。

浅谈EM算法的两个理解角度相关推荐

  1. music算法_“要热爱 请深爱”系列(5)浅谈模拟退火算法

    黄乐天 浅谈模拟退火算法 背景 在实际生活中, 数学问题中,我们常常会遇到(一定范围内)函数求最值的问题.一般可以用数学方式解答,但如果遇到如下恶心的函数: 它的函数图像是这样的: 我们只好用计算机科 ...

  2. 浅谈PPO算法-玩转月球登陆

    浅谈PPO算法-玩转月球登陆 前言 github 什么是Actor-Critic? Actor-Critic代码 ppo算法 实现 前言 总感觉强化学习公式真难学,也难表达心中所想,我还是白话强化学习 ...

  3. 浅谈对java编程思想的理解

    浅谈对java编程思想的理解 刚从学校毕业的时候,对于这种概念的理解少之又少 ,只是单纯的从事编码工作,理解也只是停留在对java基本概念的使用上,很局限!随后工作了快三年的时间里,自己不断的理解这种 ...

  4. [原创]浅谈在创业公司对PMF的理解

    [原创]浅谈在创业公司对PMF的理解 在创业时,大多数人都常谈一个词叫"MVP",但PMF谈的比较少,PMF在创业公司尤为重要,以下谈谈个人一些看法. 1.什么是PMF? 创业公司 ...

  5. 浅谈对IT架构师的理解

    写此文章来源于到新公司的感触,我在新单位任职解决方案架构师职位,到了新公司碰到新同事大多以一种"异样"的眼光看着我,或者发出一些声音,比如:"哇,架构师啊..." ...

  6. EM算法-硬币实验的理解

    EM算法-使用硬币实验的例子理解 EM算法,即最大期望算法(Expectation-Maximization algorithm, EM),是一类通过迭代进行极大似然估计(Maximum Likeli ...

  7. Ybtoj 最优密码 单调队列(浅谈)树状数组 两种解法

    作者:hsez_yyh 链接:https://blog.csdn.net/yyh_getAC/article/details/123956399  来源:湖北省黄石二中竞赛组  著作权归作者所有.商业 ...

  8. 浅谈17------------------EM算法

    1.EM算法要解决的问题 如果使用基于最大似然估计的模型,模型中存在隐变量,就要用EM算法做参数估计. EM算法解决这个的思路是使用启发式的迭代方法,既然我们无法直接求出模型分布参数,那么我们可以先猜 ...

  9. 浅谈匈牙利算法(二分图最大匹配)

    前置知识 一张图是二分图,当且仅当它的点可以被分成两部分,而这张图上的所有边的两个端点,都分属不同的部分.我们称这两个点集,一个叫左部,一个叫右部.左部中的点叫左部点:右部中的点叫右部点. 一张图的一 ...

  10. 浅谈ICA算法的概念、本质和流程

    本文转自http://m.elecfans.com/article/699564.html ICA独立成分分析是近年来出现的一种强有力的数据分析工具(Hyvarinen A, Karhunen J, ...

最新文章

  1. 站长图卦:每天坚持搬砖 定有美好明天
  2. cordova 发布 android release 签名打包
  3. Java 面试经典题解析:谈谈你对 Java 平台的理解?
  4. 辛星浅谈PHP的混乱的编码风格
  5. 任意整数分频(图文并茂)
  6. 【树莓派学习笔记】四、OpenCV的安装与卸载
  7. 有没有人带?这些都是学习生信的一大助力!
  8. lodopa5预览时默认横向_微软Windows 10 20H1预览版18922开始推送,附更新内容
  9. 北风设计模式课程---代理模式
  10. 20200121每日一句
  11. NDK 开发之 Android LOG 工具类
  12. linux内核零拷贝技术
  13. 阿里云商标注册购物车功能怎么用?在哪查看?
  14. es远程主机强迫关闭了一个现有的连接
  15. 解决外网与内网或内网之间的通信,NAT穿透
  16. docker超强总结,docker这一篇就够了
  17. z-blog漏洞php,zblog1.51 php版GetShell漏洞
  18. a 标签实现文件下载(解决打开的问题)
  19. AspectJ与CGLIB
  20. 动作手游实时PVP技术揭密(服务器篇)

热门文章

  1. configure: error: Cannot find the WebServer
  2. 情人节那点事,Power BI告诉你
  3. [JNI] 开发前言
  4. vmware桥接模式、NAT网络地址转换、仅主机模式
  5. 高会职称计算机课程,2017高会《职称计算机》模块精讲:Windows Media Player(一)...
  6. python3生成exe文件_python3.7打包成exe就三步
  7. json_extract提取复杂json_Python中高效使用JSON的四个小窍门
  8. 光滑噪声数据常用的方法_数据挖掘部分课后习题
  9. python3.9性能_谁说Python性能差的
  10. c++ 数字后加f_电工电子学 | 数字集成电路