机器学习笔记(十七)——EM算法的推导
一、Jensen 不等式
在EM算法的推导过程中,用到了数学上的Jensen不等式,这里先来介绍一下。
若Ω是有限集合{x1,x2,…,xn}{x1,x2,…,xn}\{x_1,x_2,\ldots,x_n\},而μ是Ω上的正规计数测度,则不等式的一般形式可以简单地用和式表示:
\varphi\left(\sum_{i=1}^{n} g(x_i)\lambda_i \right) \le \sum_{i=1}^{n} \varphi(g(x_i))\lambda_i,(17-1)
其中 λ1+λ2+⋯+λn=1,λi≥0λ1+λ2+⋯+λn=1,λi≥0\lambda_1 + \lambda_2 + \cdots + \lambda_n = 1, \lambda_i \ge 0。
若φ是凹函数,只需把不等式符号调转。主要参考文献【1】
二、EM算法推导
面对一个含有隐含变量的概率模型,目标是极大化观测数据YYY关于参数θ" role="presentation" style="position: relative;">θθ\theta的对数似然函数,即极大化:
L(\theta) = log P(Y;\theta) = log \sum_{z} P(Y,Z; \theta)\\ = log \sum_{z} P(Y|Z; \theta) P(Z; \theta)
事实上,EM算法是通过迭代逐步极大化 L(θ)L(θ)L(\theta)的。假设在第 iii 次迭代后 θθ\theta的估计值是 θ(i)θ(i)\theta^{(i)}。我们希望新的估计值 θθ\theta能使 L(θ)L(θ)L(\theta)增加,即 L(θ)>L(θ(i))L(θ)>L(θ(i))L(\theta) > L(\theta^{(i)}),并逐步达到极大值。为此考虑两者的差:
L(\theta) - L(\theta^{(i)}) =log (\sum_{z} P(Y|Z; \theta) P(Z; \theta)) - log P(Y;\theta^{(i)}) \\ = log (\sum_{z} P(Z|Y;\theta^{(i)}) \frac{P(Y|Z; \theta) P(Z; \theta)}{P(Z|Y; \theta^{(i)})}) - log P(Y;\theta^{(i)}) \\ \ge \sum_{z} P(Z|Y;\theta^{(i)}) log \frac{P(Y|Z; \theta) P(Z; \theta)}{P(Z|Y; \theta^{(i)})} -log P(Y;\theta^{(i)}) \\ = \sum_{z} P(Z|Y;\theta^{(i)}) log \frac{P(Y|Z; \theta) P(Z; \theta)}{P(Z|Y; \theta^{(i)})P(Y;\theta^{(i)})}
上式利用了Jensen不等式,在17-1式中, 令 φφ\varphi 为 logloglog, 且∑zP(Z|Y;θ(i))=1∑zP(Z|Y;θ(i))=1\sum_{z} P(Z|Y;\theta^{(i)}) =1,则可得上述推导。注意logloglog为凹函数,不等号要改变方向。
令
B(\theta,\theta^{(i)}) = L(\theta^{(i)}) + \sum_{z} P(Y|Z;\theta^{(i)}) log \frac{P(Y|Z; \theta) P(Z; \theta)}{P(Y|Z; \theta^{(i)})P(Y;\theta^{(i)})} ,(17-2)
则:
L(\theta) \ge B(\theta,\theta^{(i)})
那么, B(θ,θ(i))B(θ,θ(i))B(\theta,\theta^{(i)})是 L(θ)L(θ)L(\theta)的一个下界,由17-2知道:
L(\theta^{(i)}) = B(\theta^{(i)},\theta^{(i)})
因此,任何可以使 B(θ,θ(i))B(θ,θ(i))B(\theta,\theta^{(i)})增大的 θθ\theta,都可使 L(θ)L(θ)L(\theta)增大,选择 θ(i+1)θ(i+1)\theta^{(i+1)}使 B(θ,θ(i))B(θ,θ(i))B(\theta,\theta^{(i)})达到极大,即:
\theta^{(i+1)} = arg \max_{\theta} B(\theta,\theta^{(i)})
现在求 θ(i+1)θ(i+1)\theta^{(i+1)} 的表达式,省去对于 θθ\theta而言都是常数的项:
\theta^{(i+1)} = arg\max_{\theta} \left(L(\theta^{(i)})+\sum_{z}P(Y|Z;\theta^{(i)}) log \frac{P(Y|Z; \theta) P(Z; \theta)}{P(Y|Z;\theta^{(i)})P(Y;\theta^{(i)})}\right)\\ = arg\max_{\theta} \left(\sum_{z}P(Y|Z;\theta^{(i)}) log{P(Y|Z; \theta) P(Z; \theta)}\right)\\ = arg\max_{\theta} \left(\sum_{z}P(Y|Z;\theta^{(i)})log P(Y,Z;\theta)\right)\\ = arg\max_{\theta} Q(\theta, \theta^{(i)})
EM算法并不能保证全局最优值,直观解释如图所示。
参考文献
http://wiki.mbalib.com/wiki/%E8%A9%B9%E6%A3%AE%E4%B8%8D%E7%AD%89%E5%BC%8F
机器学习笔记(十七)——EM算法的推导相关推荐
- 机器学习笔记之EM算法(二)EM算法公式推导过程
机器学习笔记之EM算法--EM算法公式推导过程 引言 回顾:EM算法公式 推导过程 引言 上一节介绍了隐变量和EM算法,以及 以EM算法公式为条件,证明了随着EM算法迭代步骤的增加,每次迭代得到新的模 ...
- 机器学习笔记之EM算法(一)隐变量与EM算法公式的收敛性
机器学习笔记之EM算法--隐变量与EM算法公式的收敛性 引言 隐变量 示例1 示例2 EM算法 包含隐变量的混合概率模型 EM算法的表达形式 EM算法的收敛性 EM算法的收敛性证明的条件与目标 EM算 ...
- python 数学期望_python机器学习笔记:EM算法
完整代码及其数据,请移步小编的GitHub 传送门:请点击我 如果点击有误:https://github.com/LeBron-Jian/MachineLearningNote EM算法也称期望最大化 ...
- 白板机器学习笔记 P60-P65 EM算法
视频地址:https://www.bilibili.com/video/BV1aE411o7qd?p=46 笔记地址:https://www.yuque.com/books/share/f4031f6 ...
- EM算法讲推导原理讲的懂了的,表达清晰易懂的, 收藏cnblog上的大牛的
博客1长于理论推导 https://zhuanlan.zhihu.com/p/149810914 EM算法的十重境界 https://www.zhihu.com/question/40797593/a ...
- 机器学习系列之EM算法
机器学习系列之EM算法 我讲EM算法的大概流程主要三部分:需要的预备知识.EM算法详解和对EM算法的改进. 一.EM算法的预备知识 1.极大似然估计 (1)举例说明:经典问题--学生身高问题 我们需要 ...
- 机器学习笔记——支持向量机SMO算法完整版代码分析
机器学习笔记--支持向量机SMO算法完整版代码分析 代码大体分析 外循环 参数类 内循环 KKT条件判断 eCache参数 完整SMO代码 添加核函数代码 代码参考书籍:<机器学习实战> ...
- 机器学习-白板推导-系列(十)笔记:EM算法
文章目录 0 笔记说明 1 算法收敛性证明 2 公式导出 2.1 ELBO+KL Divergence 2.2 ELBO+Jensen Inequlity 2.3 最后的工作 3 从狭义EM到广义EM ...
- em算法 实例 正态分布_【机器学习】EM算法详细推导和讲解
今天不太想学习,炒个冷饭,讲讲机器学习十大算法里有名的EM算法,文章里面有些个人理解,如有错漏,还请读者不吝赐教. 众所周知,极大似然估计是一种应用很广泛的参数估计方法.例如我手头有一些东北人的身高的 ...
最新文章
- Java 理解泛型的基本含义
- vCenter Server Appliance 5.5忘记root密码
- 精彩---rtl8139网卡驱动程序分析
- web端ios布局fixed元素软键盘唤起时fixed失效
- [译]深度神经网络的多任务学习概览(An Overview of Multi-task Learning in Deep Neural Networks)...
- 聚类分析(Clustering Analysis)
- html页面选择指定条件在下方显示,如何从符合特定条件的HTML中找到CSS选择器?...
- hashmap移除元素_Java HashMap 如何正确遍历并删除元素的方法小结
- 一维卷积神经网络、卷积神经网络的基础知识
- Java多线程:生命周期,实现与调度
- jdk的selector(2)channel的注册
- c语言数据结构的主函数怎么写,您好,关于数据结构C语言的问题,上次百度知道里面主函数没有发上去? 爱问知识人...
- 记录——《C Primer Plus (第五版)》第八章编程练习第三题
- 基于表格存储的高性能监控数据存储计算方案
- 如何求最小三元组距离
- 【嗅探工具】wireshark初步认识
- python在线问卷调查系统_GitHub - imze/surveySystem: 问卷调查系统
- Python网络爬虫——爬取视频网站源视频!
- favicon 尺寸问题
- Scrapy对接Selenium(说明在哪里进行对接为什么在这里):小猪短租网实战分析
热门文章
- 利用python进行数据分析之准备工作(1)
- oracle格式化列宽度,ORACLE日期时间的格式化参数大全
- 计算机科学和软件工程区别,计算机科学和软件工程的区别
- kafka php 教程,php的kafka踩坑(一)
- 项目案例:在线拍卖系统_冀拓公司在张家口开展尾矿库在线监测监控系统 建设项目...
- 三菱a系列motion软体_工控电缆如何制作?(以三菱PLC、触摸屏为例)
- UserWarning: Matplotlib is currently using agg in Object Detection API
- 【贪心算法】POJ-1017
- android:Android中用文件初始化sqlite数据库(zz)
- Jmeter响应中中文乱码怎么解决?