首页 > 编程语言 >EM算法笔记

EM算法笔记

时间:2023-06-09 15:05:14浏览次数:40  
标签:EM 变量 笔记 如下 算法 参数 优化


EM算法笔记

背景

        EM(Expectation-Maximum)算法也称期望最大化算法,是最常见的隐变量估计方法,它的思想在很多算法上有所体现。例如高斯混合模型(Gaussian mixture model,简称GMM)的参数;隐式马尔科夫算法(HMM)、LDA主题模型的变分推断、还有VAE、GAN等等。

        在机器学习算法中,一般学习包含两种数据情况,一种是完整数据(complete case )其包含我们可见的配对数据(z,x),所以我们能够直接用最大似然估计MLE的方式去估计参数,就能学习到z和x之间的表示关系。而另一种是不完整数据(incomplete case),这种情况下直接使用MLE是无法进行参数估计,这时的z就是所述的隐变量。比如我们对机器输入一段语音,机器只知道声音数据,却不知道其背后所表达的意思,这里的声音可以比作x,背后的意思可以比作z。

对于完整数据(complete case ),我们的目标函数如下:

EM算法笔记_数据

虽然参数

EM算法笔记_em_02

未知,但是分别对

EM算法笔记_最大似然估计_03


EM算法笔记_数据_04

用MLE的方式进行估计即可。(chain rule)

对于不完整数据(incomplete case ),我们的目标函数如下:

EM算法笔记_迭代_05

           

EM算法笔记_机器学习_06

因为此时的z是不可见的隐变量,所以我们通过全概率公式,将其转换,最后拆分成基于z的后验概率和x的后验概率的乘积,即,此时的参数

EM算法笔记_em_02

和z都是未知的。不过,如果我们能够通过先求得z的参数,再求x的参数,这样问他就能够迎刃而解。

EM算法推导

 给定模型参数

EM算法笔记_em_02

(未知),观测变量x(已知),以及隐变量z(未知)

目标函数即为,用最大似然估计求如下公式:

EM算法笔记_迭代_05

   (1)目的就是求如下目标所求的最大参数

EM算法笔记_em_02

,(arg max 下面 是

EM算法笔记_em_02

  我不知道怎么打)

  (2)假设经过n次迭代,我们得到了第n次迭代的参数

,这个时候

假定其已知,那么目标函数就可以写成如下形式,(arg max 下面 是

EM算法笔记_em_02

  我不知道这么打):

  (3)

同时,在这里引入隐变量z,先把左边拆开,右边暂时不管。

EM算法笔记_em_13

   (4)

继续用全概率公式的方式进行拆解(chain rule)

EM算法笔记_em_14

  (5)

在这里引入一个小小的变换,乘上1

EM算法笔记_em_15

   (6)

并进行整理,就是把位置对应的换一下

EM算法笔记_数据_16

    (7)

因为在log 包含求和是比较不好算的,所以这里用优化其下届的方式进行优化,就有

EM算法笔记_em_17

   (8)

为什么会得到上述的公式呢?这里用到了琴生不等式((Jensen)不等式(也称为詹森不等式)),通俗来讲就是,可以通过琴生不等式对上述的情况进行近似求解。解释如下:

比方说,要求解

EM算法笔记_数据_18

,但这种形式求解是不很好求,但是如果我们求

EM算法笔记_迭代_19

的话,却比较好解决,所以,琴生不等式,就将

EM算法笔记_数据_18

转化成了

EM算法笔记_最大似然估计_21

的情形,其具体形式和条件如下:

EM算法笔记_数据_22

  并且 要求   

EM算法笔记_迭代_23

回到公式(7)我们就会发现,这样正好符合上述的不等式要求,即

EM算法笔记_迭代_24

可以类比成 

EM算法笔记_最大似然估计_25

,后面那部分就对应另一部分,因为在给定x和参数

的情况下,

EM算法笔记_机器学习_26

。接着,继续从(8)继续往下,因为

EM算法笔记_机器学习_26

,所以我们把

EM算法笔记_数据_28

直接合并到前面去,(log 相减 等于 log 里面相除)得到:

EM算法笔记_最大似然估计_29

  (9)

那么最终,就是从公式(3)转换到如下式子:

EM算法笔记_迭代_30

   (10)那么第n+1 次迭代后的参数

的求解就可以写成如下形式(arg max 下面 是

EM算法笔记_em_02

  我不知道这么打):

    (11)即,最后优化其下届,就能够做到不断优化的作用。由于只需要求

EM算法笔记_em_02

的优化,所以其他无关项都可以舍去,

EM算法笔记_最大似然估计_33

可以直接划去,

EM算法笔记_em_34

中,和

EM算法笔记_em_02

无关的项也都可以舍去,参照公式(9),得到最终的优化目标:

EM算法笔记_迭代_36

   (12)

再对其进行整理,得到:

EM算法笔记_迭代_37

    (13)即,最终的目标为求在给定x和

的情况下,求z的期望,并乘上

EM算法笔记_em_38

就是最后的优化目标,得到下式:

EM算法笔记_em_39

     (14)

那么,最后的优化就分为两步:

1.先求出z在给定参数x和

的情况下,关于在

EM算法笔记_em_38

的期望值,也称为E步,即求期望

EM算法笔记_em_41

   (15)2.求得关于z的期望之后,可以认为此时z为已知,这个时候就是上述的完整数据(complete case )的情形,所以可以用MLE的方式去优化求解参数

EM算法笔记_em_02

,就可以求解最大化

EM算法笔记_em_38

,也称为M步,即最大化目标函数:

EM算法笔记_最大似然估计_44

    (16)

最后总结就是,从整个优化过程来看

1.在E步的时候,假设参数

EM算法笔记_em_02

已知,来求解隐变量z2.在求得隐变量z之后,再假设z已知,来求解参数

EM算法笔记_em_02

,这里用MLE 的方式进行优化

如此往复,就能求得最终的参数 。

EM算法性质

1.EM算法并不是全局最优的,所以使用的时候,要重复多次,找到最优的结果,(隐变量模型他本身不是凸函数)。

2.EM的趋势,其最大似然的估计过程,最大化的过程一定是严格递增的,即一定能够收敛,如下图所示

EM算法笔记_迭代_47

EM算法笔记_迭代_48

图1,EM算法 极大似然优化过程的曲线图

暂时写到这,

欢迎批评指正

 

 

标签:EM,变量,笔记,如下,算法,参数,优化
From: https://blog.51cto.com/u_11384719/6447891

相关文章

  • 一定要收藏的PKPM学习笔记
    01裂缝与挠度裂缝,模型里计算裂缝是按矩形截面计算弯矩,而不考虑翼缘影响,实际上翼缘影响是很大的,也就是说模型计算出的结果裂缝偏大,一般梁支座裂缝不考虑,因为本来强柱弱梁也是要出现塑性铰的,但是梁底部裂缝要考虑,而且梁尤其是KL底筋配筋结果最好比计算结构稍大,也就是弯矩调幅0.8而不......
  • RALB负载均衡算法的应用 | 京东云技术团队
    一、背景搜索推荐算法架构为京东集团所有的搜索推荐业务提供服务,实时返回处理结果给上游。部门各子系统已经实现了基于CPU的自适应限流,但是Client端对Server端的调用依然是RR轮询的方式,没有考虑下游机器性能差异的情况,无法最大化利用集群整体CPU,存在着Server端CPU不均衡的问题。京......
  • 密码学(1):常见算法分类
    前言有任何问题欢迎提出,便于及时修正......
  • yum源使用报错-RockyLInux8.7-Modular dependency problem:
    报错信息如下:Kubernetes11kB/s|173kB00:15Modulardependencyproblem:Problem:conflic......
  • Mac专用远程工具-Microsoft Remote Desktop
    MicrosoftRemoteDesktop是一款专为Mac用户设计的远程桌面工具,它可以让用户通过网络连接到其他计算机,实现远程控制和操作。该工具支持多种远程连接协议,包括RDP、VNC、SSH等,可以实现跨平台连接,支持Windows、Linux、Mac等多种操作系统。→→↓↓载MicrosoftRemoteDesktop Mic......
  • Memcache升级版:CouchBase的安装配置与使用说明
    Memcache基本上已经是开发的标配了,但是对于Memcache集群,很多线上部署仍然是很单薄的。几个存在的问题:不健壮、数据不安全、配置变更可能导致存取异常、后备数据的一致性鉴于存在以上问题,Memcache的开发团队开发了Membase,支持多台服务器集群,数据的切片和复制,有效的提高了服务稳定性......
  • 基于ASP.NET轻笔记系统设计与实现
    移动互联网时代,用户接触的信息爆炸式增长,有效储存和管理信息是现阶段面临的挑战。在云计算中起基础支撑作用的云存储,可作为一种服务提供给用户,为解决现在面临的多终端跨平台个人文件存取困境提供了良好的技术基础。经过本人的综合考虑,轻笔记系统的设计是基于asp.net技术+sqlserver......
  • 【黑马C++笔记】(二)实战:通讯录管理系统
    通讯录管理系统1、系统需求通讯录是一个可以记录亲人、好友信息的工具。本教程主要利用C++来实现一个通讯录管理系统系统中需要实现的功能如下:添加联系人:向通讯录中添加新人,信息包括(姓名、性别、年龄、联系电话、家庭住址)最多记录1000人显示联系人:显示通讯录中所有联系人信......
  • 【黑马C++笔记】(一)C++基础语法入门
    C++基础入门1C++初识1.1第一个C++程序编写一个C++程序总共分为4个步骤创建项目创建文件编写代码运行程序1.1.1创建项目​ VisualStudio是我们用来编写C++程序的主要工具,我们先将它打开1.1.2创建文件右键源文件,选择添加->新建项给C++文件起个名称,然后点击添......
  • Qt+QtWebApp开发笔记(五):http服务器html中使用json触发ajax与后台交互实现数据更新传递
    前言  前面完成了页面的跳转、登录,很多时候不刷新页面就想刷新局部数据,此时ajax就是此种技术,且是异步的。  本篇实现网页内部使用js调用ajax实现异步交互数据。  在js中使用ajax是通过XMLHttpRequest来实现的。下载地址  链接:https://pan.baidu.com/s/1tJMTPhIIyVE40......