EM算法公式详细推导

news2024/11/27 2:14:45

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.coloradmin.cn/o/1354344.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

QT基础知识

QT基础知识 文章目录 QT基础知识1、QT是什么2、Qt的发展史3、为什么学习QT4、怎么学习QT1、工程的创建(环境的下载与安装请百度&#xff09;2、创建的工程结构说明3、怎么看帮助文档1、类使用的相关介绍2. 查看所用部件&#xff08;类&#xff09;的相应成员函数&#xff08;功…

文章解读与仿真程序复现思路——电网技术EI\CSCD\北大核心《基于碳捕集与封存-电转气-电解熔融盐协同的虚拟电厂优化调度》

本专栏栏目提供文章与程序复现思路&#xff0c;具体已有的论文与论文源程序可翻阅本博主的专栏栏目《论文与完整程序》 这个标题涉及到多个关键概念&#xff0c;让我们逐一解读&#xff1a; 碳捕集与封存&#xff08;Carbon Capture and Storage&#xff0c;CCS&#xff09;&a…

【Linux】常用的基本命令指令①

前言&#xff1a;从今天开始&#xff0c;我们逐步的学习Linux中的内容&#xff0c;和一些网络的基本概念&#xff0c;各位一起努力呐&#xff01; &#x1f496; 博主CSDN主页:卫卫卫的个人主页 &#x1f49e; &#x1f449; 专栏分类:数据结构 &#x1f448; &#x1f4af;代码…

如何解决大模型的「幻觉」问题?

如何解决大模型的「幻觉」问题&#xff1f; 如何解决大模型的「幻觉」问题&#xff1f;幻觉产生原因&#xff1f;模型原因数据层面 幻觉怎么评估&#xff1f;Reference-based&#xff08;基于参考信息&#xff09;基于模型的输入、预先定义的目标输出基于模型的输入 Reference-…

基于ssm的资产管理信息系统+vue论文

摘要 当下&#xff0c;正处于信息化的时代&#xff0c;许多行业顺应时代的变化&#xff0c;结合使用计算机技术向数字化、信息化建设迈进。以前企业对于资产信息的管理和控制&#xff0c;采用人工登记的方式保存相关数据&#xff0c;这种以人力为主的管理模式已然落后。本人结…

《Linux C编程实战》笔记:实现自己的myshell

ok&#xff0c;考完试成功复活 这次是自己的shell命令程序的示例 流程图&#xff1a; 关键函数 1.void print_prompt() 函数说明&#xff1a;这个函数打印myshell提示符&#xff0c;即“myshell$$”. 2.void get_input(char *buf) 函数说明&#xff1a;获得一条指令&#…

13|代理(下):结构化工具对话、Self-Ask with Search以及Plan and execute代理

13&#xff5c;代理&#xff08;下&#xff09;&#xff1a;结构化工具对话、Self-Ask with Search以及Plan and execute代理 什么是结构化工具 LangChain 的第一个版本是在 2022 年 11 月推出的&#xff0c;当时的设计是基于 ReAct 论文构建的&#xff0c;主要围绕着代理和工…

2024美赛数学建模常用数学建模模型之——层次分析法

一、层次分析法的基本原理与步骤 人们在进行社会的、经济的以及科学管理领域问题的系统分析中&#xff0c;面临的常常是 一个由相互关联、相互制约的众多因素构成的复杂而往往缺少定量数据的系统。层次 分析法为这类问题的决策和排序提供了一种新的、简洁而实用的建模方法。 …

GPU的硬件架构

SM: streaming Multiprocessor 流多处理器 sm里面有多个(sp)cuda core 32个线程称为一个warp&#xff0c;一个warp是一个基本执行单元 抽象概念&#xff1a;grid 网格 block 块 thread 线程 块中的线程大小是有讲究的&#xff0c;关乎到资源的调度&#xff0c;一般是128&#x…

macbook电脑2024免费好用的系统清理优化软件CleanMyMac X4.14.7

CleanMyMac X2024来帮助你找到和删除不需要的文件。CleanMyMac X是一款专业的mac清理软件&#xff0c;它可以智能地扫描你的磁盘空间&#xff0c;找出并删除大型和旧文件&#xff0c;系统垃圾&#xff0c;iTunes垃圾&#xff0c;邮件附件&#xff0c;照片库垃圾等&#xff0c;让…

【Vue2+3入门到实战】(22)VUE3之组合式API - setup、reactive和ref函数、computed、watch、生命周期函数详细讲解

目录 一、组合式API - setup选项1. setup选项的写法和执行时机2. setup中写代码的特点3. <script setup>语法糖 二、组合式API - reactive和ref函数1. reactive2. ref3. reactive 对比 ref 三、组合式API - computed四、组合式API - watch1. 侦听单个数据2. 侦听多个数据…

Java学习,一文掌握Java之SpringBoot框架学习文集(3)

&#x1f3c6;作者简介&#xff0c;普修罗双战士&#xff0c;一直追求不断学习和成长&#xff0c;在技术的道路上持续探索和实践。 &#x1f3c6;多年互联网行业从业经验&#xff0c;历任核心研发工程师&#xff0c;项目技术负责人。 &#x1f389;欢迎 &#x1f44d;点赞✍评论…

electron进程通信之预加载脚本和渲染进程对主进程通信

主进程和预加载脚本通信 主进程 mian,js 和预加载脚本preload.js,在主进程中创建预加载脚本, const createWindow () > {// Create the browser window.const mainWindow new BrowserWindow({width: 300,height: 300,// 指定预加载脚本webPreferences: {preload: path.j…

数据结构【查找篇】

数据结构【查找篇】 文章目录 数据结构【查找篇】前言为什么突然想学算法了&#xff1f;为什么选择码蹄集作为刷题软件&#xff1f; 目录一、顺序查找二、折半查找三、 二叉排序树的查找四、红黑树 结语 前言 为什么突然想学算法了&#xff1f; > 用较为“官方”的语言讲&am…

22 闪烁按钮

效果演示 实现了一个按钮的样式&#xff0c;包括背景颜色、边框、圆角、点击效果等。当鼠标悬停在按钮上时&#xff0c;按钮的背景颜色和文字颜色会发生变化&#xff0c;同时按钮会出现闪烁的效果。 Code <button class"btn"><svg height"24" wi…

UDP通信(服务器-客户端)

一、 UDP服务器-客户端通信 UDP&#xff08;User Datagram Protocol&#xff09;是一种面向无连接的传输层协议&#xff0c;它提供了一种简单的、不可靠的数据传输服务。与TCP&#xff08;Transmission Control Protocol&#xff09;不同&#xff0c;UDP不建立连接&#xff0c;…

奈奎斯特定理

奈奎斯特定理是通信领域中重要的理论基础之一&#xff0c;它对于数字通信系统中的信号采样和重构具有至关重要的作用。在数字信号处理和通信技术中&#xff0c;奈奎斯特定理的应用不仅具有理论意义&#xff0c;还对通信系统的设计、优化和性能提升起着重要的指导作用。本文将以…

MySQL8.0主从复制实现及遇到的个人问题

文章目录 1、准备两个服务器或者虚拟机2、主库配置3、从库配置4、配置过程中使用到的命令5、遇到的问题 1、准备两个服务器或者虚拟机 这里使用的VM虚拟机的Centos、MySQL版本是8.0.26、使用FinalShell进行远程操作。 2、主库配置 修改MySQL配置文件(/etc/my.cnf) #启用二进…

leetcode:1464. 数组中两元素的最大乘积(python3解法)

难度&#xff1a;简单 给你一个整数数组 nums&#xff0c;请你选择数组的两个不同下标 i 和 j&#xff0c;使 (nums[i]-1)*(nums[j]-1) 取得最大值。 请你计算并返回该式的最大值。 示例 1&#xff1a; 输入&#xff1a;nums [3,4,5,2] 输出&#xff1a;12 解释&#xff1a;如…

麒麟Kylin服务器版-破解root密码

一、单用户模式修改root密码 1.重启服务器系统后&#xff0c;将光标移动到第二项&#xff0c;按【e】键进入用户登录页面。 2.在【username】下方所在行输入root名称&#xff0c;【password】下方所在行输入密码Kylin123123后&#xff0c;进入编辑模式。代码如下&#xff1a; …