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

文章目录

  • 一、极大似然估计
    • 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.mzph.cn/pingmian/15946.shtml

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

相关文章

Aloha机械臂的mujoco仿真问题记录

今天在测试ACT代码时,遇到了仿真中的机械臂无法摆放正确的姿势来抓去红色方块。 后来经过测试,发现应该是python包的版本问题有误,下面记录下正确的包版本: 官方给出的包: conda create -n aloha python3.8.10 conda…

vue3 ts问题 找不到模块“@/views/home/index.vue”或其相应的类型声明。

1. 找不到模块“/views/HomeView.vue”或其相应的类型声明 今天帮同事看了一个问题,他尝试用vitevue3tspinia创建项目,结果刚上来就遇到这么一个问题 2. 解决办法 出现这个问题的原因就是:ts只支持导出导入模块,但是vue不是模块…

leetcode 1631. 最小体力消耗路径 二分+BFS、并查集、Dijkstra算法

最小体力消耗路径 题目与水位上升的泳池中游泳类似 二分查找BFS 首先,采用二分查找,确定一个体力值,再从左上角,进行BFS,查看能否到达右下角,如果不行,二分查找就往大的数字进行查找&#xff…

vscode中settings.json,c_cpp_properties.json的位置及作用,CLOCK_MONOTONIC报警。

当依次点击管理->设置后, 用户对应的settings.json文件在/C:/Users/Administrator/AppData/Roaming/Code/User/settings.json工作区对应的settings.json文件在工作目录的.vscode文件夹下面远程[SSH:192.168.238.3]对应的settings.json在/home/登录账号/.vscode-s…

Linux服务上MySQL的启动、重启和关闭

Linux服务上MySQL的启动、重启和关闭 MySQL是一种广泛使用的开源关系型数据库管理系统,常用于各种规模的应用程序中。在Linux服务器上管理MySQL服务是一个基本的运维任务。本文将详细介绍如何在Linux系统上启动、重启和关闭MySQL服务,涵盖不同Linux发行…

web及网络基础图文详解

目录 1.1TCP/IP 协议族 1.2TCP/IP 的分层管理 1.3TCP/IP通信传输流 1.4 与 HTTP 关系密切的协议 : IP、TCP 和 DNS (1)负责传输的 IP协议(网络层) (2)确保可靠的 TCP协议(传输层&#xff…

四七层负载均衡

负载均衡 负载均衡可以通过流量分发扩展应用系统对外的服务能力,通过消除单点故障提升应用系统的可用性。四层负载均衡(LVS)和七层负载均衡(HAProxy)是两种常用的负载均衡技术,它们在网络架构中扮演着重要…

kaggle竞赛实战2

接上一篇,本篇针对merchant以及transaction数据集进行预处理,包括缺失值、inf值处理以及object类型数据的独热编码转化,完成后详细代码如下: # In[5]: import os import numpy as np import pandas as pd # In[6]: pd.read_excel(…

一行代码实现UI拖拽的效果

演示 先来看效果吧! 实现方式 1.首先创建一个你想拖动的UI图片 2.创建一个C#的脚本 3.编写控制脚本(代码按我的敲就行) 付上代码片段 public void OnDrag(PointerEventData eventData){transform.position eventData.position;} 4.添加脚…

CMS是如何避免内存泄漏的

CMS(Concurrent Mark-Sweep)垃圾回收器本身并不直接避免内存泄漏,但它是Java虚拟机(JVM)中用于管理内存并自动回收不再使用的对象所占用的内存的机制。内存泄漏通常是由于程序中的错误导致对象无法被垃圾回收器正确回收…

利用SQL语句实现多表联合查询——多表关系介绍

1.多对多查询 先创建一个student表和course表,应该利用外键来实现,通过一个中间表分别对应student和course中的id CREATE TABLE student (id INT unsigned PRIMARY KEY,name VARCHAR(255),no VARCHAR(50) ); CREATE TABLE course (id INT PRIMARY KEY,…

产品经理-需求分析(三)

1. 需求分析 从业务的需要出发,确定业务目的和目标,将业务需求转为产品需求 1.1 业务需求 业务需求 业务动机 业务目标 就是最根本的动机和目标成果,通过这个需求解决特定的问题 1.2 产品需求 产品需求 解决方案 产品结构 产品流程…

等了10年,终于迎来RTX5/RTX4全家桶开源,开源,开源! 且免费商用

我们的V4, V5, V6 ,V7开发板都配套了大量的RTX4, RTX5教程和案例,从2015年发布首版RTX4内核教程以来,已经整整10年了。 1、制作这个RTX教程和案例,其实也承受了很大的压力,因为只有RTX内核是免费商用的,中间件并不免费…

AUTOMATIC1111/stable-diffusion-webui/stable-diffusion-webui-v1.9.3

配置环境介绍 目前平台集成了 Stable Diffusion WebUI 的官方镜像,该镜像中整合如下资源: GpuMall智算云 | 省钱、好用、弹性。租GPU就上GpuMall,面向AI开发者的GPU云平台 Stable Diffusion WebUI版本:v1.9.3 Python版本:3.10.…

数据结构(四)串

2024年5月26日一稿(王道P127) 定义和实现

P4391 [BOI2009] Radio Transmission 无线传输

题目描述 给你一个字符串 𝑠1,它是由某个字符串 𝑠2​ 不断自我连接形成的(保证至少重复 2 次)。但是字符串 𝑠2​ 是不确定的,现在只想知道它的最短长度是多少。 输入格式 第一行一个整数 &…

力扣一周题单 - 1

Day1(数组) A.移动零 B. 第三大的数 C. 找到所有数组中消失的数字 D. 生命游戏 E.合并区间 Day2(链表) A.合并两个有序链表 B.环形链表 C.环形链表 II D. 回文链表 E. 删除链表的倒数第 N 个结点 Day3(搜索&#x…

PostgreSQL的扩展(extensions)-常用的扩展之pg_statsinfo

PostgreSQL的扩展(extensions)-常用的扩展之pg_statsinfo pg_statsinfo 是一个用于 PostgreSQL 的监控和诊断工具。它能够收集广泛的数据库性能统计信息、系统运行状况以及活动日志,从而帮助数据库管理员进行系统优化、故障排除和性能监控。…

【计算机毕业设计】基于SSM+Vue的新能源汽车在线租赁管理系统【源码+lw+部署文档】

摘 要 随着科学技术的飞速发展,社会的方方面面、各行各业都在努力与现代的先进技术接轨,通过科技手段来提高自身的优势,新能源汽车在线租赁当然也不能排除在外。新能源汽车在线租赁是以实际运用为开发背景,运用软件工程开发方法&…

程序员做副业要知道重点在哪里

如果要在一年内赚取100万元,需要培养哪些能力、做哪些事情以及选择哪个行业赛道。 首先,要明确一个观念:学习、成长、破局、进化、认知提升和赚钱这些概念虽然重要,但它们本身并不能直接带来财富。当你专注于如何赚钱时&#xff…