EM算法简单理解
2015-09-29 18:05
211 查看
EM算法是为了解决什么问题?
在求解概率模型的时候,如果需要的变量都是观测变量,不涉及到隐藏变量的话,可以使用极大似然或者贝叶斯估计来求解模型的参数。比如:对于单高斯模型来讲,如果知道观测变量,那么就可以使用极大似然或者最小均方误差来估计高斯模型的均值和方差。如果模型同时包含观察变量和隐藏变量的话,传统的方法不能完成模型的估计,此时就需要引入EM算法。比如:对于混合高斯模型来讲,除了需要估计高斯模型的均值和方差,还涉及到每个高斯模型的权重信息,这个权重信息就可以认为是隐变量,所以一般使用EM来求解GMM的参数。
EM算法的目标函数
其中Y表示观测变量,Z表示隐含变量。
由于包含隐含变量Z,所以无法正常求解。
EM算法的思想
使用迭代的方法,一步步的求模型参数,使其逐渐逼近于最优,即保证本次的模型参数qi+1相比上一次的模型参数qi,使得似然函数的值变大。为了实现似然函数的递增,基于观察数据Y和本次的模型参数qi,构造基于未知变量q的Q(q,qi)函数,作为似然函数L的下限,Q函数最大值对应的q即为本次迭代的模型参数qi+1。
为什么可以保证Q函数的最大值一定会使得似然函数L的值变大呢?
因为Q有两个性质:一个是作为L的下限,同时还满足在qi这个点L和Q函数的值是相等的,如果qi+1满足Q(qi+1)>=Q(qi),同时
Q(qi)==L(qi)
L(qi)>=Q(qi), L(qi+1)>=Q(qi+1)
不难推出L(qi+1)>=L(qi+1),但是无法保证求出的模型参数是全局最优,所以初值的选择非常重要。
EM算法的具体执行
EM算法是expectationmaximization的简称,每次迭代分为两步:
E步,求期望:
即为Q函数
M步,求极大:
求Q函数最大时对应的q作为qi+1
如果q对应于多组未知变量,分别求导等于0求解
EM算法的应用
1. 非监督学习对于监督学习,训练数据(x,y)都是已知的,对于非监督学习,只知道输入x,不知道输出y。
可以将输出y作为隐藏变量(未观测数据),EM算法可以学习非监督学习的生成模型。
2. GMM训练
相关文章推荐
- 系统26M晶体贴错导致的异常问题解决过程
- linux常用命令(61):ps命令
- MoleHill Getting Started AGAL(转)
- Java Web程序工作原理
- 个人项目总结
- Android系统栏相关(SystemBar)
- OpenStack Nova启动实例流程
- Java中的“虚函数”,抽象类的抽象函数
- 黑马程序员----C 语言学习笔记之结构体数组,指针,嵌套的使用
- 在Python中使用protobuf2.6.1 string format utf-8 and unicode error
- 【Unity】UGUI中RectTransform中Top和Bottom的设置,宽和高的设置,以及postion和锚点的设置
- MyEclipse连接MySQL数据库中文乱码问题
- 安卓:service,AID通信,有服务端和客户端的
- angularjs 未整理--笔记--简单使用和简介
- mybatis 简单配置
- 八种创建等高列布局(转载)
- 百度地图API使用系列4-基本地图2
- GET和POST有什么区别?
- java 替换反斜杠 Unexpected internal error near index 1
- srm 547