#通俗理解# 从极大似然估计(MLE)到最大期望(EM)算法

2024-01-08 06:59

本文主要是介绍#通俗理解# 从极大似然估计(MLE)到最大期望(EM)算法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

  • 1. 期望(Expectation)
  • 2. 极大似然估计(Maximum Likelihood Estimate,MLE)
  • 3. 最大方差估计(Expectation-Maximum,EM)
    • 对于第2步的解释
    • 对于第3步的解释
    • 对于第4步的解释

1. 期望(Expectation)

顾名思义,最大期望算法就是让某个函数的期望最大化从而得到最优参数,首先我们先要了解期望的公式:
在这里插入图片描述
期望本质上就是根据随机变量的分布对函数值的加权求和,平均值是期望的一种特殊形式,平均值假设随机变量取到每种值得概率相同(均分分布)

2. 极大似然估计(Maximum Likelihood Estimate,MLE)

对于一个样本数据,如果我们可以得到通过一个公式(带有未知参数)得到这个样本出现的概率,那么我们就可以称这个公式为似然函数

因为这个样本数据被我们观测到了,因此我们认为这个样本出现的概率最大,我们通过最大化似然函数的值就能够得到函数中参数的最优值

为了得到最大化似然函数下参数的最优值,我们首先求的似然函数对参数的偏导数,然后令偏导数等于0从而得到参数的最优值;极大似然函数一般一次就能够得到结果,不需要迭代

极大似然估计的公式如下:
θ m l e = arg ⁡ max ⁡ θ ( θ ) l o g P ( x ∣ θ ) θ_{mle}=\mathop{\arg\max}\limits_{\theta}(θ)logP(x|θ) θmle=θargmax(θ)logP(xθ)
上式之所以要去 log,是因为取完log后内部的乘法变为加法,能够简化运算

3. 最大方差估计(Expectation-Maximum,EM)

对于包含隐变量的似然函数,计算参数的偏导数为零时的参数值往往十分困难,因此对于包含隐变量的似然函数使用极大似然估计很难得到结果

EM算法一般用来求解包含隐变量函数的参数问题,EM算法将隐变量的概率分布Z和似然函数内的参数θ看作是两个部分依次迭代优化,具体实现方式如下:

  1. 随机初始化似然函数的参数θ
  2. 根据似然函数内的参数估计隐变量z
  3. 最大化似然函数对于隐变量的期望,并最求得期望最大时似然函数内部参数的更新值θ
  4. 跳到第2步用更新后的θ估计隐变量分布Z,然后执行3步…直至函数收敛

EM算法的迭代公式如下:
θ t + 1 = arg ⁡ max ⁡ θ ∫ z l o g ( P ( x , z ∣ θ ) ) P ( x ∣ z , θ t ) d z θ^{t+1}=\mathop{\arg\max}\limits_{\theta}\int_zlog(P(x,z|\theta))P(x|z,\theta^t)dz θt+1=θargmaxzlog(P(x,zθ))P(xz,θt)dz
其实这就是一个求期望的公式,积分号内可以看做两部分,一部分是 log似然函数,一部分是隐变量的概率分布函数(先验概率)总结来说就是求log似然函数在隐变量上的积分(期望)

对于第2步的解释

隐变量z由多个隐状态组成( z 1 , z 2 . . . z n z_1,z_2...z_n z1,z2...zn),估计隐变量z的概率分布,换句话说就是就算隐变量每种情况出现的概率;

  • 以混合高斯模型(GMM)为例,隐变量是每种高斯分布的权重参数,估计隐变量z等价于估计各个权重系数的概率分布(连续分布)

  • 以隐马尔可夫模型(HMM)为例,隐变量是HMM观测序列对应的隐层状态序列,估计隐变量z等价于估计当前观测序列由每种隐层状态序列得出的概率(离散分布)

对于第3步的解释

第3步的作用是计算似然函数在隐变量上的期望,换个角度理解是:令似然函数在每种隐变量的情况下同时最大化(当然每种情况的权重不同);离散分布的隐变量和连续分布的隐变量求期望的方式有所不同:

  • 离散分布的隐变量,EM算法等价于对隐变量取不同值时的似然函数进行加权求和,权重是隐变量取得不同值时的概率;最后,令加权之后的似然函数最大化从而得到更新后的参数值θ
  • 连续分布的隐变量,EM算法等价于对似然函数在隐变量上进行积分,然后对积分后的函数最大化从而得到更新后的参数值θ

对于第4步的解释

第3步我们更新了似然函数中的参数θ,接着跳到第2步得到新的隐变量z,然后执行第3步,这样依次循环更新参数θ和隐变量直至模型收敛

这篇关于#通俗理解# 从极大似然估计(MLE)到最大期望(EM)算法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/582632

相关文章

一文带你理解Python中import机制与importlib的妙用

《一文带你理解Python中import机制与importlib的妙用》在Python编程的世界里,import语句是开发者最常用的工具之一,它就像一把钥匙,打开了通往各种功能和库的大门,下面就跟随小... 目录一、python import机制概述1.1 import语句的基本用法1.2 模块缓存机制1.

深入理解C语言的void*

《深入理解C语言的void*》本文主要介绍了C语言的void*,包括它的任意性、编译器对void*的类型检查以及需要显式类型转换的规则,具有一定的参考价值,感兴趣的可以了解一下... 目录一、void* 的类型任意性二、编译器对 void* 的类型检查三、需要显式类型转换占用的字节四、总结一、void* 的

深入理解Redis大key的危害及解决方案

《深入理解Redis大key的危害及解决方案》本文主要介绍了深入理解Redis大key的危害及解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着... 目录一、背景二、什么是大key三、大key评价标准四、大key 产生的原因与场景五、大key影响与危

Python中的随机森林算法与实战

《Python中的随机森林算法与实战》本文详细介绍了随机森林算法,包括其原理、实现步骤、分类和回归案例,并讨论了其优点和缺点,通过面向对象编程实现了一个简单的随机森林模型,并应用于鸢尾花分类和波士顿房... 目录1、随机森林算法概述2、随机森林的原理3、实现步骤4、分类案例:使用随机森林预测鸢尾花品种4.1

深入理解C++ 空类大小

《深入理解C++空类大小》本文主要介绍了C++空类大小,规定空类大小为1字节,主要是为了保证对象的唯一性和可区分性,满足数组元素地址连续的要求,下面就来了解一下... 目录1. 保证对象的唯一性和可区分性2. 满足数组元素地址连续的要求3. 与C++的对象模型和内存管理机制相适配查看类对象内存在C++中,规

如何提高Redis服务器的最大打开文件数限制

《如何提高Redis服务器的最大打开文件数限制》文章讨论了如何提高Redis服务器的最大打开文件数限制,以支持高并发服务,本文给大家介绍的非常详细,感兴趣的朋友跟随小编一起看看吧... 目录如何提高Redis服务器的最大打开文件数限制问题诊断解决步骤1. 修改系统级别的限制2. 为Redis进程特别设置限制

不懂推荐算法也能设计推荐系统

本文以商业化应用推荐为例,告诉我们不懂推荐算法的产品,也能从产品侧出发, 设计出一款不错的推荐系统。 相信很多新手产品,看到算法二字,多是懵圈的。 什么排序算法、最短路径等都是相对传统的算法(注:传统是指科班出身的产品都会接触过)。但对于推荐算法,多数产品对着网上搜到的资源,都会无从下手。特别当某些推荐算法 和 “AI”扯上关系后,更是加大了理解的难度。 但,不了解推荐算法,就无法做推荐系

康拓展开(hash算法中会用到)

康拓展开是一个全排列到一个自然数的双射(也就是某个全排列与某个自然数一一对应) 公式: X=a[n]*(n-1)!+a[n-1]*(n-2)!+...+a[i]*(i-1)!+...+a[1]*0! 其中,a[i]为整数,并且0<=a[i]<i,1<=i<=n。(a[i]在不同应用中的含义不同); 典型应用: 计算当前排列在所有由小到大全排列中的顺序,也就是说求当前排列是第

认识、理解、分类——acm之搜索

普通搜索方法有两种:1、广度优先搜索;2、深度优先搜索; 更多搜索方法: 3、双向广度优先搜索; 4、启发式搜索(包括A*算法等); 搜索通常会用到的知识点:状态压缩(位压缩,利用hash思想压缩)。

csu 1446 Problem J Modified LCS (扩展欧几里得算法的简单应用)

这是一道扩展欧几里得算法的简单应用题,这题是在湖南多校训练赛中队友ac的一道题,在比赛之后请教了队友,然后自己把它a掉 这也是自己独自做扩展欧几里得算法的题目 题意:把题意转变下就变成了:求d1*x - d2*y = f2 - f1的解,很明显用exgcd来解 下面介绍一下exgcd的一些知识点:求ax + by = c的解 一、首先求ax + by = gcd(a,b)的解 这个