前言

EM算法和MLE算法的相同点在于,两者都需要知道确定的概率密度函数形式。

若没有隐藏变量,则可以用MLE进行估计。若数据欠缺,或存在隐含变量,则无法使用直接使用MLE进行估计,因此需要使用EM算法。

所谓的隐藏变量,指的是1. 在整个数据集中,有些数据是不完备的。2. 或者一个数学模型可以通过引入未知变量来简化。如:高斯混合模型引入权重变量。

什么时候使用EM算法

实际上,即使有隐藏变量,我们只不过多加一个参数来估计而已,因此理论上也可以使用MLE的方法进行估计,即:先求对数似然函数 log likelihood, 然后求导最大化这个对数似然函数。

之所以引入EM算法,更重要的是因为多了隐变量之后,log-likelihood虽然能写出来,但是求导麻烦了,因此不好优化了。
由于加了隐变量,我们估计模型参数时需要知道隐变量;而隐变量是不知道的,要想估计隐变量,又需要知道模型参数。因此看起来像是个死锁。总结来说,当Q函数比似然函数l好优化时,就可以用EM算法来求。[1]

那么EM算法是如何迭代的呢?我们可以先初始化模型参数和隐变量中的一个,然后用这个初始化的参数去估计第二个参数。然后用这个估计的第二个参数再去估计第一个参数。不断迭代,得到最终结果,且这种策略的收敛性得到了证明。

核心思想

EM算法的核心思想是根据给定数据,迭代地使用最大似然估计方法(MLE)求得未知参数 [1].

基本流程

EM算法的大概流程是:1. 先根据估计的参数来求得对数似然函数(log likelihood)的期望, 这个期望还是一个函数 2. 然后再计算使该期望最大时新的参数。3. 不断迭代前两步直至收敛

实例分析

推导过程

MLE回顾

回顾MLE,对数似然函数可以写成如下形式:

l(θ)=∑i=1nlog⁡p(xi∣θ)l(\theta) = \sum_{i=1}^{n}\log p(x_i|\theta) l(θ)=i=1∑n​logp(xi​∣θ)

其中X={x1,x2,...,xn}X=\{x_1, x_2, ..., x_n\}X={x1​,x2​,...,xn​}是观察数据。

EM

定义似然函数

相比于MLE,EM由于增加了隐随机变量Z={z1,z2,...,zn}Z=\{z_1, z_2, ..., z_n\}Z={z1​,z2​,...,zn​},则对数似然函数需要表示成如下形式:

l(θ)=∑i=1nlog⁡p(xi∣θ)=∑i=1nlog⁡∑zi=1kp(zi∣θ)p(xi∣zi,θ)=∑i=1nlog⁡∑zi=1kp(xi,zi∣θ)\begin{aligned} l(\theta) &= \sum_{i=1}^{n}\log p(x_i|\theta) \\ &= \sum_{i=1}^{n} \log \sum_{z_i=1}^{k}p(z_i|\theta)p(x_i|z_i, \theta)\\ &= \sum_{i=1}^{n}\log \sum_{z_i=1}^{k} p(x_i, z_i|\theta) \\ \end{aligned} l(θ)​=i=1∑n​logp(xi​∣θ)=i=1∑n​logzi​=1∑k​p(zi​∣θ)p(xi​∣zi​,θ)=i=1∑n​logzi​=1∑k​p(xi​,zi​∣θ)​

似然函数的近似

背景: 如果没有隐变量ZZZ, 则上述似然函数可以直接用MLE求解了。问题是log⁡\loglog函数里面还有个求和公式,因此很难直接求解这个似然函数。一种思路就是通过一种技巧把log⁡\loglog里面的求和公式干掉。

知识回顾:

  1. 对于离散型随机变量XXX, 其期望为E(X)=∑x∈XxP(x)E(X) = \sum_{x\in X} xP(x)E(X)=∑x∈X​xP(x)
  2. 设Y = g(X), 则E(Y)=∑x∈Xg(x)P(x)E(Y)=\sum_{x\in X}g(x)P(x)E(Y)=∑x∈X​g(x)P(x)
  3. 由于log⁡(x)\log(x)log(x)是个凹函数,有 log(E(X))≥E(log(X))log(E(X))\ge E(log(X))log(E(X))≥E(log(X)), 如图:

方法: 去除log⁡\loglog函数里面的求和公式需要用到一些近似,具体放缩方式如下:

l(θ)=∑i=1nlog⁡∑zi=1kp(xi,zi∣θ)=∑i=1nlog⁡∑zi=1kQi(zi)p(xi,zi∣θ)Qi(zi)≥∑i=1n∑zi=1kQi(zi)log⁡p(xi,zi∣θ)Qi(zi)\begin{aligned} l(\theta) &= \sum_{i=1}^{n}\log \sum_{z_i=1}^{k} p(x_i, z_i|\theta) \\ &= \sum_{i=1}^{n}\log \sum_{z_i=1}^{k} Q_i(z_i) \frac{p(x_i, z_i|\theta)}{Q_i(z_i)} \\ &\ge \sum_{i=1}^{n}\sum_{z_i=1}^{k} Q_i(z_i) \log \frac{p(x_i, z_i|\theta)}{Q_i(z_i)} \\ \end{aligned} l(θ)​=i=1∑n​logzi​=1∑k​p(xi​,zi​∣θ)=i=1∑n​logzi​=1∑k​Qi​(zi​)Qi​(zi​)p(xi​,zi​∣θ)​≥i=1∑n​zi​=1∑k​Qi​(zi​)logQi​(zi​)p(xi​,zi​∣θ)​​

推导: 根据要点回顾,我们引入了随机变量ziz_izi​ 的分布Qi(zi)Q_i(z_i)Qi​(zi​)。然后设

g(z)=p(xi,zi∣θ)Qi(zi)g(z)=\frac{p(x_i, z_i|\theta)}{Q_i(z_i)}g(z)=Qi​(zi​)p(xi​,zi​∣θ)​

则似然函数中第二行的∑zi=1kQi(zi)p(xi,zi∣θ)Qi(zi)\sum_{z_i=1}^{k} Q_i(z_i) \frac{p(x_i, z_i|\theta)}{Q_i(z_i)}∑zi​=1k​Qi​(zi​)Qi​(zi​)p(xi​,zi​∣θ)​可看作E(g(z))E(g(z))E(g(z)), 即
Ezi(p(xi,zi∣θ)Qi(zi))E_{z_i}\left (\frac{p(x_i, z_i|\theta)}{Q_i(z_i)} \right) Ezi​​(Qi​(zi​)p(xi​,zi​∣θ)​)

又根据对数函数的性质,有log(E(X))≥E(log(X)log(E(X))\ge E(log(X)log(E(X))≥E(log(X), 则:

∑inlog(Ezi(p(xi,zi∣θ)Qi(zi)))≥∑inEzi(log(p(xi,zi∣θ)Qi(zi)))\sum_{i}^{n}log\left( E_{z_i}\left (\frac{p(x_i, z_i|\theta)}{Q_i(z_i)} \right) \right) \ge \sum_{i}^{n} E_{z_i}\left( log \left( \frac{p(x_i, z_i|\theta)}{Q_i(z_i)}\right) \right) i∑n​log(Ezi​​(Qi​(zi​)p(xi​,zi​∣θ)​))≥i∑n​Ezi​​(log(Qi​(zi​)p(xi​,zi​∣θ)​))
即:
∑i=1nlog⁡∑zi=1kQi(zi)p(xi,zi∣θ)Qi(zi)≥∑i=1n∑zi=1kQi(zi)log⁡p(xi,zi∣θ)Qi(zi)\sum_{i=1}^{n}\log \sum_{z_i=1}^{k} Q_i(z_i) \frac{p(x_i, z_i|\theta)}{Q_i(z_i)} \ge \sum_{i=1}^{n}\sum_{z_i=1}^{k} Q_i(z_i) \log \frac{p(x_i, z_i|\theta)}{Q_i(z_i)} i=1∑n​logzi​=1∑k​Qi​(zi​)Qi​(zi​)p(xi​,zi​∣θ)​≥i=1∑n​zi​=1∑k​Qi​(zi​)logQi​(zi​)p(xi​,zi​∣θ)​
推导完成。

似然函数的求解

这个不等式右边被称为l(θ)l(\theta)l(θ)的下界,我们还需要确定下Qi(zi)Q_i(z_i)Qi​(zi​)才能求解这个下界的最大值。求解过程如下:

若取到等号时我们的下界函数最接近原始函数,此时有:

p(xi,zi∣θ)Qi(zi)=c(常数)\frac{p(x_i, z_i|\theta)}{Q_i(z_i)} = c(常数) Qi​(zi​)p(xi​,zi​∣θ)​=c(常数)

又因为Qi(zi)Q_i(z_i)Qi​(zi​)是概率分布,所以∑zi=1kQi(zi)=1\sum_{z_i=1}^{k}Q_i(z_i)=1∑zi​=1k​Qi​(zi​)=1. 将p(xi,zi∣θ)Qi(zi)=c\frac{p(x_i, z_i|\theta)}{Q_i(z_i)} = cQi​(zi​)p(xi​,zi​∣θ)​=c 带入对数似然函数中的∑zi=1kQi(zi)p(xi,zi∣θ)Qi(zi)\sum_{z_i=1}^{k}Q_i(z_i) \frac{p(x_i, z_i|\theta)}{Q_i(z_i)}∑zi​=1k​Qi​(zi​)Qi​(zi​)p(xi​,zi​∣θ)​, 得:

∑zi=1kp(xi,zi∣θ)=c\sum_{z_i=1}^{k} p(x_i, z_i|\theta) = c zi​=1∑k​p(xi​,zi​∣θ)=c

所以有:

Qi(zi)=p(xi,zi∣θ)c=p(xi,zi∣θ)∑zi=1kp(xi,zi∣θ)=p(xi,zi∣θ)p(xi∣θ)=p(zi∣xi,θ)\begin{aligned} Q_i(z_i) &= \frac{p(x_i, z_i|\theta)}{c} \\ &= \frac{p(x_i, z_i|\theta)}{\sum_{z_i=1}^{k} p(x_i, z_i|\theta)} \\ &= \frac{p(x_i, z_i|\theta)}{p(x_i|\theta)} \\ &= p(z_i|x_i, \theta) \end{aligned} Qi​(zi​)​=cp(xi​,zi​∣θ)​=∑zi​=1k​p(xi​,zi​∣θ)p(xi​,zi​∣θ)​=p(xi​∣θ)p(xi​,zi​∣θ)​=p(zi​∣xi​,θ)​

一旦这个Q确定了,我们就可以求解(θ)(\theta)(θ)的下界了。

我们再回顾下上述不等式,所谓E步骤,其实就是在计算一个期望,这个期望也就是l(θ)l(\theta)l(θ)的下界,即:

∑inEzi(log(p(xi,zi∣θ)Qi(zi)))=∑i=1n∑zi=1kQi(zi)log⁡p(xi,zi∣θ)Qi(zi)\sum_{i}^{n} E_{z_i}\left( log \left( \frac{p(x_i, z_i|\theta)}{Q_i(z_i)}\right) \right) = \sum_{i=1}^{n}\sum_{z_i=1}^{k} Q_i(z_i) \log \frac{p(x_i, z_i|\theta)}{Q_i(z_i)} i∑n​Ezi​​(log(Qi​(zi​)p(xi​,zi​∣θ)​))=i=1∑n​zi​=1∑k​Qi​(zi​)logQi​(zi​)p(xi​,zi​∣θ)​

然后我们再计算:

argmax∑i=1n∑zi=1kQi(zi)log⁡p(xi,zi∣θ)Qi(zi)argmax\sum_{i=1}^{n}\sum_{z_i=1}^{k} Q_i(z_i) \log \frac{p(x_i, z_i|\theta)}{Q_i(z_i)} argmaxi=1∑n​zi​=1∑k​Qi​(zi​)logQi​(zi​)p(xi​,zi​∣θ)​

这一步就被称为M步。

小结

通过上述分析,我们总结EM算法如下:

  1. 随机初始化模型参数θ0\theta^{0}θ0
  2. (E步)计算联合分布的条件概率期望 (j=0,1,2,3...)(j = 0, 1, 2, 3 ...)(j=0,1,2,3...)
    Qi(zi)=p(zi∣xi,θj)Q_i(z_i) = p(z_i|x_i, \theta^{j}) Qi​(zi​)=p(zi​∣xi​,θj)

l(θ,θj)=∑i=1n∑zi=1kQi(zi)log⁡p(xi,zi∣θ)Qi(zi)l(\theta, \theta^{j}) = \sum_{i=1}^{n}\sum_{z_i=1}^{k} Q_i(z_i) \log \frac{p(x_i, z_i|\theta)}{Q_i(z_i)} \\ l(θ,θj)=i=1∑n​zi​=1∑k​Qi​(zi​)logQi​(zi​)p(xi​,zi​∣θ)​
3. (M步)极大化l(θ,θj)l(\theta, \theta^{j})l(θ,θj)
θj+1=arg max⁡l(θ,θj)\theta^{j+1} = \argmax l(\theta, \theta^{j}) θj+1=argmaxl(θ,θj)
4. 重复2,3直至算法收敛

思考

参考文献

  1. R. O. Duda, P. E. Hart, and D. G. Stork, Pattern Classification. John Wiley & Sons, 2012.
  2. EM算法详解
  3. EM算法原理及推导
  4. 徐亦达机器学习:Expectation Maximization EM算法
  5. 如何感性地理解EM算法?
  6. 复旦-机器学习课程 第十讲 EM 算法

机器学习基础:期望最大化算法(Machine Learning Fundamentals: EM Algorithm)相关推荐

  1. 期望最大化算法(Expectation-Maximum,简称EM)算法+EM算法+EM的应用

    期望最大化算法(Expectation-Maximum,简称EM)算法+EM算法+EM的应用 EM的应用 EM算法有很多的应用,最广泛的就是GMM混合高斯模型.聚类.HMM等等.具体可以参考Jerry ...

  2. 机器学习之期望最大化算法(Expectation Maximization, EM)

    文章目录 期望最大化算法(Expectation Maximization, EM) 1. 基本内容 2. 从三硬币模型 2.1 问题提出 2.2 解决方案 2.3 换个角度 3. 到高斯混合模型(G ...

  3. MIT机器学习基础(Foundations of Machine Learning, author: Mehryar Mohri et al.)

    1. 简介 本章是对机器学习的初步介绍,包括一些关键的学习任务和应用,基本定义,术语,以及对一些一般场景的讨论. 1.1 何为机器学习   机器学习可以广泛地定义为使用经验来提高性能或进行准确预测的计 ...

  4. 机器学习---用python实现朴素贝叶斯算法(Machine Learning Naive Bayes Algorithm Application)...

    在<机器学习---朴素贝叶斯分类器(Machine Learning Naive Bayes Classifier)>一文中,我们介绍了朴素贝叶斯分类器的原理.现在,让我们来实践一下. 在 ...

  5. EM算法(Expectation Maximization)期望最大化算法

    原文:EM(期望最大化)算法初步认识 - 大数据和AI躺过的坑 - 博客园 https://www.cnblogs.com/zlslch/p/6965374.html 机器学习十大算法之一:EM算法( ...

  6. 【EM算法】期望最大化算法

    [摘要] EM(Expectation-Maximum)算法也称期望最大化算法,曾入选"数据挖掘十大算法"中,可见EM算法在机器学习.数据挖掘中的影响力.EM算法是最常见的隐变量估 ...

  7. EM算法(期望最大化算法)理论概述

    1.EM算法 1.1概述 EM(Expectation-Maximum)算法也称期望最大化算法,曾入选"数据挖掘十大算法"中,可见EM算法在机器学习.数据挖掘中的影响力.EM算法是 ...

  8. NLP --- 隐马尔可夫HMM(EM算法(期望最大化算法))

    期望最大化 (Expectation Maximization) 算法最初是由 Ceppellini[2] 等人 1950 年在讨论基因频率的估计的时候提出的.后来又被 Hartley[3] 和Bau ...

  9. 《数学之美》第27章 期望最大化算法

    1 文本的自收敛分类 两种文本分类算法,即利用事先设定好的类别对新的文本进行分类,以及自底向上地将文本两两比较进行聚类的方法.这两种方法,多少都有一些局限性,比如前一种方法需要有事先设定好的类别和文本 ...

  10. 第八讲:期望最大化算法(EM algorithm)

    在前面的若干讲义中,我们已经讲过了期望最大化算法(EM algorithm),使用场景是对一个高斯混合模型进行拟合(fitting a mixture of Gaussians).在本章里面,我们要给 ...

最新文章

  1. 【骚气的动效】无限循环往下往复淡入淡出运动,通常用于向下箭头,提示用户可以往下滚动或者点击展开
  2. linux 大量的TIME_WAIT解决办法
  3. ​万字总结83篇文献:深度强化学习之炒作、反思、回归本源
  4. Nginx+MSM+Tomcat做负载均衡,session共享
  5. 英伟达新卡皇3090Ti:功耗飙至450W换来性能涨11%
  6. onnx:Resize in opset 11 to support Pytorch‘s behavior
  7. 什么是AI“智慧芯片”?清华魏少军提出11点基本要素
  8. ie7ajax 跨域 no transport 解决办法
  9. 我理解Docker的过程2
  10. Linux之强大的selinux
  11. STM32中的位带(bit-band)操作
  12. 查找目录下固定文件目录以及路径(自然排序)
  13. 51Nod1253 Kundu and Tree 容斥原理
  14. 软件过程— 螺旋模型
  15. Springboot入门级教程详解
  16. 6python项目 体脂率计算优化2
  17. java_vinson_03:java变量与常量
  18. 12月18日科技资讯|支付宝、微信回应3D面具破解人脸识别;ofo 否认「发币」;Kafka 2.4.0 发布
  19. Tensorflow2.0之用遗传算法优化卷积神经网络结构 Version2
  20. SpringBoot 实现国际化 SpringBoot配置国际化 SpringBoot 国际化 springboot实现国际化 springboot配置国际化 springboot国际化代码实现

热门文章

  1. javascript traverse object attributes 遍历对象属性
  2. 模块/包 与Common.js
  3. git详细使用教程入门到精通(史上最全的git教程)
  4. 使用Microsoft R Server进行机器学习和模型发布(2)
  5. 对于 js 性能优化的启发,debounce 和 throttle。
  6. less--使用less.js将less文件转换成css
  7. ld: symbol(s) not found for architecture arm64
  8. Java web--过滤器
  9. Sass学习之路(2)——Sass环境安装(windows版)
  10. Jenkins 部署 jmeter + Ant