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)\\\\

 我们令

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

则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)

明确隐变量:

img

\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}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/318809.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

关于系统设计的一些思考

0.前言 当我们站在系统设计的起点&#xff0c;面对一个新的需求&#xff0c;我们该如何开始呢&#xff1f;这是许多处于系统分析与设计领域的新手常常思考的问题。有些人可能会误以为&#xff0c;只要掌握了诸如面向对象、统一建模语言、设计模式、微服务、Serverless、Servic…

Postman版IDEA插件!免费!

Postman是大家最常用的API调试工具&#xff0c;那么有没有一种方法可以不用手动写入接口到Postman&#xff0c;即可进行接口调试操作&#xff1f;今天给大家推荐一款IDEA插件&#xff1a;Apipost Helper&#xff0c;写完代码就可以调试接口并一键生成接口文档&#xff01;而且还…

CMU15-445-Spring-2023-Project #0 - C++ Primer

前置任务。 Task #1 - Copy-On-Write Trie Copy-on-write (COW) Trie 在进行修改时&#xff0c;不会立即复制整个数据结构。相反&#xff0c;它会在需要修改的节点被多个引用的时候才进行复制。当要对某个节点进行写操作&#xff08;添加子节点或者继续向下insert&#xff09…

花了一小时,拿python手搓了一个考研背单词软件

听说没有好用的电脑端背单词软件&#xff1f;只好麻烦一下&#xff0c;花了一小时&#xff0c;拿python手搓了一个考研背单词软件。 代码已经开源在我的github上&#xff0c;欢迎大家STAR&#xff01; 其中&#xff0c;数据是存放在sqlite中&#xff0c;形近词跳转是根据jaro …

OpenHarmony源码转换器—多线程特性转换

本文讨论了如何将多线程的 Java 代码转换为 OpenHarmony ArkTS 代码​ 一、简介 Java 内存共享模型 以下示例伪代码和示意图展示了如何使用内存共享模型解决生产者消费者问题。 生产者消费者与共享内存间交互示意图 为了避免不同生产者或消费者同时访问一块共享内存的容器时…

【小程序开发】解决 HBuilder X “本项目类型无法运行到小程序模拟器”

今天遇到一个奇怪的问题&#xff0c;从git导入的微信小程序项目准备运行到小程序模拟器时菜单没有展示出模拟器工具列表&#xff0c;而是展示了这么一个子菜单“本项目类型无法运行到小程序模拟器&#xff0c;点击看详情”。如下图&#xff1a; 点击是跳转到一个web链接。 我通…

【零基础入门TypeScript】判断条件和循环

目录 定环 无限循环 示例&#xff1a;while 与 do..while 中断语句 句法 流程图 例子 继续语句 句法 流程图 例子 输出 无限循环 语法&#xff1a;使用 for 循环的无限循环 示例&#xff1a;使用 for 循环的无限循环 语法&#xff1a;使用 while 循环进行无限循…

使用生成式AI查询大型BI表

在拥有大量表格形式数据的组织中&#xff0c;数据分析师的工作是通过提取、转换和围绕数据构建故事来理解这些数据。 分析师访问数据的主要工具是 SQL。 鉴于大型语言模型 (LLM) 令人印象深刻的功能&#xff0c;我们很自然地想知道人工智能是否可以帮助我们将信息需求转化为格式…

优雅地展示20w单细胞热图|非Doheatmap 超大数据集 细胞数太多

单细胞超大数据集的热图怎么画&#xff1f;昨天刚做完展示20万单细胞的热图要这么画吗&#xff1f; 今天就有人发消息问我为啥他画出来的热图有问题。 问题起源 昨天分享完 20万单细胞的热图要这么画吗&#xff1f;&#xff0c;就有人问为啥他的数据会出错。我们先来看下他的…

sql | sql 语句中的case when

通过case when 进行更细致的分类 ################################################## ####### 参考 ####### 如果没有添加case when 最终的sql 语句 就只是查询表中的name 而且添加 case when [age] > 18 then 1 else 0 end as [AgeType] 记就表示找表中的两个字段 一个是…

智能编程助手!华为云CodeArts Snap免费公测:基于盘古研发大模型

近日&#xff0c;华为云CodeArts Snap正式开启公测。 这是一款基于华为云研发大模型的智能化编程助手&#xff0c;旨在为开发者提供高效且智能的编程体验&#xff0c;提升研发人员的单兵作战能力。 该服务公测期间免费&#xff0c;不向用户收取任何费用&#xff0c;商用后&am…

在 UEFI+GPT 模式下,使用Symantec_Ghost_12.0.0.8006备份统信UOS+Windows10系统,固态硬盘也顺利

在 UEFIGPT 模式下&#xff0c;使用Symantec_Ghost_12.0.0.8006备份统信UOSWindows10系统&#xff0c;安装时双系统不说了。 ipxe系统下载好 某桃系统中pe64.wim下载好&#xff08;这个要注意&#xff0c;因为某桃系统pe较新适合新一些的电脑&#xff09;&#xff0c;替换掉p…