【机器学习】期望最大化(EM)算法

news2024/11/17 5:57:10

文章目录

  • 一、极大似然估计
    • 1.1 基本原理
    • 1.2 举例说明
  • 二、Jensen不等式
  • 三、EM算法
    • 3.1 隐变量 与 观测变量
    • 3.2 为什么要用EM
    • 3.3 引入Jensen不等式
    • 3.4 EM算法步骤
    • 3.5 EM算法总结
  • 参考资料

EM是一种解决 存在隐含变量优化问题 的有效方法。EM的意思是“期望最大化(Expectation Maximization)” 。EM是解决(不完全数据,含有隐变量)最大似然估计(MLE)问题的迭代算法 。

EM算法有很多的应用,最广泛的就是混合高斯模型GMM、隐马尔可夫模型HMM、贝叶斯网络模型等等。

在介绍具体的EM算法前,我们先介绍 极大似然估计Jensen不等式

一、极大似然估计

极大似然估计法是一种求估计的统计方法,它建立在极大似然原理的基础之上。

1.1 基本原理

极大似然估计的原理是:一个随机试验如有若干个可能的结果A,B,C,…。若在一次试验中,结果A出现,则一般认为试验条件对A出现有利,也即A出现的概率很大。极大似然估计就是利用已知的样本结果,反推最有可能(最大概率)导致这样结果的参数值。 这也是统计学中用样本估计整体的一种阐述。

在这里插入图片描述

1.2 举例说明

【任务】:估计某个学校的男生的身高分布。 假设你在校园里随便找了100个男生,他们的身高是服从高斯分布的。但是这个分布的均值u和方差σ我们不知道,记作 θ = [ u , σ ] θ=[u, σ] θ=[u,σ]
  
【问题】:我们知道样本所服从的概率分布的模型和一些样本,而不知道该模型中的参数?

【如何估计】

  • 样本集 X = x 1 , x 2 , … , x N X={x_1,x_2,…,x_N} X=x1,x2,,xN,其中 N=100
  • 概率密度: p ( x i ∣ θ ) p(x_i|θ) p(xiθ) 为抽到男生i(的身高)的概率。 100个样本之间独立同分布,所以我同时抽到这100个男生的概率就是他们各自概率的乘积。就是从分布是 p ( x ∣ θ ) p(x|θ) p(xθ) 的总体样本中抽取到这100个样本的概率,也就是样本集X中各个样本的联合概率,用下式表示:
    在这里插入图片描述

上式反映了在概率密度函数的参数是θ时,得到X这组样本的概率。

需要找到一个参数θ,其对应的似然函数L(θ)最大,也就是说抽到这100个男生(的身高)概率最大。这个叫做θ的最大似然估计量,记为:
在这里插入图片描述

【求解步骤】

  1. 首先,写出似然函数:
    在这里插入图片描述
  2. 然后,对似然函数取对数:
    在这里插入图片描述
  3. 求导数,令导数为0,得到似然方程;
  4. 最后,解似然方程,得到的参数即为所求。

【总结】:
极大似然法:知道样本所服从的概率分布模型,而不知道该模型中的参数,需要求参数。

具体步骤如下:

  1. 已知概率模型,根据概率密度函数写出联合概率(似然函数);
  2. 对似然函数取对数;
  3. 求导。令导数等于0,求出参数。

注意:这里是通过求导来实现求解。若是求导不好解,可以在似然函数前面乘以负值,改写成最小化目标函数,然后用梯度下降法求解。具体可以参考logistic regression的求解方法。

多数情况下我们是根据已知条件来推算结果,而极大似然估计是已经知道了结果,然后寻求使该结果出现的可能性最大的条件,以此作为估计值。

二、Jensen不等式

设f是定义域为实数的函数,如果对于所有的实数x。如果对于所有的实数x,f(x)的二次导数大于等于0,那么f是凸函数。
Jensen不等式表述如下:如果f是凸函数,X是随机变量,那么:E[f(X)]>=f(E[X])。当且仅当X是常量时,上式取等号。

在这里插入图片描述

三、EM算法

【任务】:估计某个学校的男生和女生的身高分布。 我们抽取了100个男生和100个女生样本的身高,但是我们不知道每一个人到底是从男生还是女生的身高分布中抽取的。

用数学的语言就是,抽取得到的每个样本都不知道是从哪个分布抽取的。 这个时候,对于每一个样本,就有两个东西需要猜测或者估计:
(1)这个人是男的还是女的?
(2)男生和女生对应的身高的高斯分布的参数?

EM算法要解决的问题是:
(1)求出每一个样本属于哪个分布
(2)求出每一个分布对应的参数

如果把这个数据集的概率密度画出来,大约是这个样子:
在这里插入图片描述
 其实这个双峰的概率密度函数是有模型的,称作混合高斯模型(GMM)。GMM其实就是k个高斯模型加权组成,α是各高斯分布的权重,Θ是参数。
在这里插入图片描述
 对GMM模型的参数估计,就要用EM算法。更一般的讲,EM算法适用于带有隐变量的概率模型的估计。

3.1 隐变量 与 观测变量

首先给出观测变量与隐变量的定义:

  • 观测变量: 模型中可以直接观测,即在研究中能够收集到的变量成为观测变量。
  • 隐变量: 模型中不可观测的随机变量,我们通常通过可观测变量的样本对隐变量作出推断。

在上述例子中,隐变量就是对每一个身高而言,它属于男生还是女生。

3.2 为什么要用EM

我们来具体考虑一下上面这个问题。如果使用极大似然估计(这是我们最开始最单纯的想法),那么我们需要极大化的似然函数应该是这个:
在这里插入图片描述
然而我们并不知道p(x;θ)的表达式。这里考虑隐变量,如果我们已经知道哪些样本来自男生,哪些样本来自女生。用Z=0或Z=1标记样本来自哪个总体,则Z就是隐变量,需要最大化的似然函数就变为:

在这里插入图片描述
然而我们并不知道隐变量的取值。要估计一个样本是属于男生还是女生,我们就要有模型参数,要估计模型参数,我们首先要知道一个样本属于男生还是女生的可能性。(鸡生蛋,蛋生鸡)

这里,我们利用假设来求解:

  • 首先假设一个模型参数θ,然后每个样本属于男生还是女生的概率p(zi)就能算出来了,p(xi,zi)=p(xi|zi)p(zi)。而x|z=0服从女生身高分布,x|z=1服从男生身高分布,所以似然函数可以写成含有θ的函数,极大化它我们可以得到一个新的θ。
  • 新的θ因为考虑了样本来自哪个分布,会比原来的更能反应数据规律。有了这个更好的θ我们再对每个样本重新计算它属于男生还是女生的概率,用更好的θ算出来的概率会更准确。
  • 有了更准确的信息,我们可以继续像上面一样估计θ,自然而然这次得到的θ会比上一次更棒,如此直到收敛(参数变动不明显了)。

实际上,EM算法就是这么做的。

事实上,隐变量估计问题也可以通过梯度下降等优化算法求解,但由于求和的项数将随着隐变量的数目以指数级上升,会给梯度计算带来麻烦。而EM算法则可以看作是一种非梯度优化方法。

3.3 引入Jensen不等式

然而事情并没有这么简单,上面的思想理论上可行,实践起来不成。主要是因为似然函数有“和的log”这一项,log里面是一个和的形式,求导复杂。直接强来你要面对 “两个正态分布的概率密度函数相加”做分母,“两个正态分布分别求导再相加”做分子的分数形式。m个这玩意加起来令它等于0,要求出关于θ的解析解,你对自己的数学水平想的不要太高。此处,考虑到Jensen不等式,有
直接最大化似然函数做不到,那么如果我们能找到似然函数的一个紧的下界一直优化它,并保证每次迭代能够使总的似然函数一直增大,其实也是一样的。(利用紧下界迭代逼近)

在这里插入图片描述

横坐标是参数,纵坐标是似然函数,首先我们初始化一个θ1,根据它求似然函数一个紧的下界,也就是图中第一条黑短线。黑短线上的值虽然都小于似然函数的值,但至少有一点可以满足等号(所以称为紧下界),最大化小黑短线我们就hit到至少与似然函数刚好相等的位置,对应的横坐标就是我们的新的θ2。如此进行,只要保证随着θ的更新,每次最大化的小黑短线值都比上次的更大,那么算法收敛,最后就能最大化到似然函数的极大值处。

构造这个小黑短线,就要靠Jensen不等式。注意我们这里的log函数是个凹函数,所以我们使用的Jensen不等式的凹函数版本。根据Jensen函数,需要把log里面的东西写成数学期望的形式,注意到log里的和是关于隐变量Z的和。于是,这个数学期望一定是和Z有关,如果设Q(z)是Z的分布函数,那么可以这样构造:
在这里插入图片描述
在这里插入图片描述
所以log里其实构造了一个随机变量Y,Y是Z的函数,Y取p/Q的值的概率是Q。构造好数学期望,下一步根据Jensen不等式进行放缩:

在这里插入图片描述
有了这一步,我们看一下整个式子:
在这里插入图片描述
也就是说我们找到了似然函数的一个下界,那么优化它是否就可以呢?不是的,上面说了必须保证这个下界是紧的,也就是至少有点能使等号成立。由Jensen不等式,等式成立的条件是随机变量是常数,具体就是:
在这里插入图片描述

又因为Q(z)是z的分布函数,所以:
  在这里插入图片描述

把C乘过去,可得C就是p(xi,z)对z求和,所以我们终于知道了:
  在这里插入图片描述

得到Q(z),大功告成。Q(z)就是p(zi|xi),或者写成p(zi),代表第i个数据是来自zi的概率。

3.4 EM算法步骤

初始化分布参数θ,重复以下步骤直到收敛:

1. E-Step:根据参数初始值或上一次迭代的模型参数来计算出隐性变量的后验概率,其实就是隐性变量的期望。 作为隐变量的现估计值。(根据参数θ计算每个样本属于zi的概率,即这个身高来自男生或女生的概率)

2. M-Step:将似然函数最大化以获得新的参数值。 根据计算得到的Q,求出含有θ的似然函数的下界并最大化它,得到新的参数θ。

3.5 EM算法总结

  • EM算法是一种从不完全数据或有数据丢失的数据集(存在隐变量)中求解概率模型参数的最大似然估计方法。
    • 第一步求隐变量的期望(E)
    • 第二步求似然函数极大(M)
  • EM算法在一般情况是收敛的,但是不保证收敛到全局最优,即有可能进入局部的最优。
  • 应用到的地方:混合高斯模型GMM、隐马尔科夫模型HMM、贝叶斯网络模型等。

参考资料

  • 【机器学习】EM算法详细推导和讲解

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

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

相关文章

初识Java--开启我的Java学习之旅

目录 一、JAVA语言概述二、JAVA语言的重要性2.1语言使用广泛程度2.2工作领域2.3在校招岗位的需求2.4 java语言发展简史2.5Java语言特性 三、初识java的main方法四、运行java程序五、【面试题】JDK、JRE、JVM之间的关系? 一、JAVA语言概述 Java是一种优秀的程序设计…

在线人才测评在企业招聘和大学生求职中的应用场景

每年的春招秋招,都是毕业生们忙着找工作的季节,相比社招来说,春招秋招是每个毕业生务必重视的机会,大厂名企毕竟名额有限,如果找到自己心仪的职业岗位,作为毕业生就必须提前准备,深入了解招聘的…

09.责任链模式

09. 责任链模式 什么是责任链设计模式? 责任链设计模式(Chain of Responsibility Pattern)是一种行为设计模式,它允许将请求沿着处理者对象组成的链进行传递,直到有一个处理者对象能够处理该请求为止。这种模式的目的…

docker ps显示的参数具体是什么意思

1,运行一个容器 docker run -d ubuntu:15.10 /bin/sh -c "while true; do echo hello world; sleep 1; done"这段命令的作用是使用 docker run 命令运行一个基于 ubuntu:15.10 镜像的 Docker 容器,并在容器中执行一个无限循环的命令。 具体解…

PID控制中的积分到底是什么,为什么它可以将矩形线转换为曲线?simulink搭建PID控制,积分模块1/s

PID控制中的积分到底是什么,为什么它可以将矩形线转换为曲线, 这个问题呢其实道理很简单,用到的是初中的知识 我们做几个测试案例 如下面matlab搭建了积分1/s 那显示如下(红色曲线相当于加速度、蓝色曲线相当于速度)&a…

从0到1!得物如何打造通用大模型训练和推理平台

1.背景 近期,GPT大模型的发布给自然语言处理(NLP)领域带来了令人震撼的体验。随着这一事件的发生,一系列开源大模型也迅速崛起。依据一些评估机构的评估,这些开源模型大模型的表现也相当不错。一些大模型的评测情况可…

【MSSQL】因为数据库正在使用,所以无法获得对数据库的独占访问权” 解决方案汇总

文章目录 前言一、事故现场方案一:设置数据库再单用户模式下工作:方案二:利用SQL语句,断开所有用户连接,并回滚所有事务,具体SQL语句如下:方案三:利用SQL语句,杀死正在使用该数据库的所有进程方案四:修改数据库的登录密码或重启数据库服务(不太建议)二、结尾日志备份…

MDS800-16-ASEMI整流模块800A 1600V

编辑:ll MDS800-16-ASEMI整流模块800A 1600V 型号:MDS800-16 品牌:ASEMI 封装:MDS 批号:2024 分类:整流模块 特性:整流模块、整流桥 平均正向整流电流(Id)&#…

C语言实现Hash Map(2):Map代码实现详解

在上一节C语言实现Hash Map(1):Map基础知识入门中,我们介绍了Map的基础概念和在C中的用法。但我写这两篇文章的目的是,能够在C语言中实现这样的一个数据结构,毕竟有时我们的项目中可能会用到Map,但是C语言库中并没有提…

香蕉成熟度检测YOLOV8NANO

香蕉成熟度检测YOLOV8NANO,采用YOLOV8NANO训练,得到PT模型,然后转换成ONNX模型,让OEPNCV调用,从而摆脱PYTORCH依赖,支持C。python,安卓开发。能检测六种香蕉类型freshripe freshunripe overripe…

下载CentOS系统或者下载Ubuntu系统去哪下?

因为Centos官网是挂在国外的服务器上,下载镜像时相比于国内的下载速度会慢很多,分享国内的镜像站去阿里巴巴下载Centos镜像。 首先分享两种下载方式,如果只想下载Centos那么就访问方式一的下载地址即可,如果还想下载其他的系统&a…

Xfce4桌面背景和桌面图标消失问题解决@FreeBSD

问题:Xfce4桌面背景和桌面图标消失 以前碰到过好几次桌面背景和桌面图标消失,整个桌面除了上面一条和下面中间的工具条,其它地方全是黑色的问题,但是这次重启之后也没有修复,整个桌面乌黑一片,啥都没有&am…

[书生·浦语大模型实战营]——第二节:轻松玩转书生·浦语大模型趣味 Demo

1. 部署InternLM2-Chat-1.8B 模型进行智能对话 1.1配置环境 创建开发机 Intern Studio 官网网址:https://studio.intern-ai.org.cn/ 进入官网后,选择创建开发机,填写 开发机名称 后,点击 选择镜像 使用 Cuda11.7-conda 镜像&am…

楼房vr安全逃生模拟体验让你在虚拟环境中亲身体验火灾的紧迫与危险

消防VR安全逃生体验系统是深圳VR公司华锐视点引入了前沿的VR虚拟现实、web3d开发和多媒体交互技术,为用户打造了一个逼真的火灾现场应急逃生模拟演练环境。 相比传统的消防逃生模拟演练,消防VR安全逃生体验系统包含知识讲解和模拟实训演练,体…

码蹄集部分题目(2024OJ赛16期;单调栈集训+差分集训)

&#x1f9c0;&#x1f9c0;&#x1f9c0;单调栈集训 &#x1f96a;单调栈 单调递增栈伪代码&#xff1a; stack<int> st; for(遍历数组) {while(栈不为空&&栈顶元素大于当前元素)//单调递减栈就是把后方判断条件变为小于等于即可{栈顶元素出栈;//同时进行其他…

C语言笔记22 •结构体•

C语言结构体 1.结构体类型的声明 struct Stu { char name[ 20 ]; // 名字 int age; // 年龄 char sex[ 5 ]; // 性别 char id[ 20 ]; // 学号 }; 2.结构体变量的创建和初始化 #include <stdio.h>// 定义一个结构体类型 Point struct Point {int x;int y; };i…

【三个数的最大乘积】python

三层循环必然超时&#xff0c;是的 hhh,换种思路&#xff0c;就很巧 class Solution:def maximumProduct(self, nums: List[int]) -> int:nums.sort()mxnums[-1]*nums[-2]*nums[-3]if nums[0]*nums[1]*nums[-1]>mx:mxnums[0]*nums[1]*nums[-1]return mx

装修:尽显个性品味

家&#xff0c;是心灵的港湾&#xff0c;也是生活的舞台。装修&#xff0c;不仅是对空间的改造&#xff0c;更是对生活态度的诠释。无论是温馨的北欧风&#xff0c;还是华丽的欧式古典&#xff0c;或是简约的现代感&#xff0c;我们的专业团队都能为您量身打造。每一个细节&…

分布式数据库HBase入门指南

目录 概述 HBase 的主要特点包括: HBase 的典型应用场景包括: 访问接口 1. Java API: 2. REST API: 3. Thrift API: 4. 其他访问接口: HBase 数据模型 概述 该模型具有以下特点&#xff1a; 1. 面向列: 2. 多维: 3. 稀疏: 数据存储: 数据访问: HBase 的数据模型…

01-02.Vue的常用指令(二)

01-02.Vue的常用指令&#xff08;二&#xff09; 前言v-model&#xff1a;双向数据绑定v-model举例&#xff1a;实现简易计算器Vue中通过属性绑定为元素设置class 类样式引入方式一&#xff1a;数组写法二&#xff1a;在数组中使用三元表达式写法三&#xff1a;在数组中使用 对…