详解最大似然估计(MLE)、最大后验概率估计(MAP),以及贝叶斯公式的理解

详解最大似然估计(MLE)、最大后验概率估计(MAP),以及贝叶斯公式的理解

声明:本文为原创文章,发表于nebulaf91的csdn博客。欢迎转载,但请务必保留本信息,注明文章出处。
本文作者: nebulaf91
本文原始地址:http://blog.csdn.net/u011508640/article/details/72815981

最大似然估计(Maximum likelihood estimation, 简称MLE)和最大后验概率估计(Maximum a posteriori estimation, 简称MAP)是很常用的两种参数估计方法,如果不理解这两种方法的思路,很容易弄混它们。下文将详细说明MLE和MAP的思路与区别。

但别急,我们先从概率和统计的区别讲起。

概率和统计是一个东西吗?

概率(probabilty)和统计(statistics)看似两个相近的概念,其实研究的问题刚好相反。

概率研究的问题是,已知一个模型和参数,怎么去预测这个模型产生的结果的特性(例如均值,方差,协方差等等)。 举个例子,我想研究怎么养猪(模型是猪),我选好了想养的品种、喂养方式、猪棚的设计等等(选择参数),我想知道我养出来的猪大概能有多肥,肉质怎么样(预测结果)。

统计研究的问题则相反。统计是,有一堆数据,要利用这堆数据去预测模型和参数。仍以猪为例。现在我买到了一堆肉,通过观察和判断,我确定这是猪肉(这就确定了模型。在实际研究中,也是通过观察数据推测模型是/像高斯分布的、指数分布的、拉普拉斯分布的等等),然后,可以进一步研究,判定这猪的品种、这是圈养猪还是跑山猪还是网易猪,等等(推测模型参数)。

一句话总结:概率是已知模型和参数,推数据。统计是已知数据,推模型和参数。

显然,本文解释的MLE和MAP都是统计领域的问题。它们都是用来推测参数的方法。为什么会存在着两种不同方法呢? 这需要理解贝叶斯思想。我们来看看贝叶斯公式。

贝叶斯公式到底在说什么?

学习机器学习和模式识别的人一定都听过贝叶斯公式(Bayes’ Theorem):
P(A∣B)=P(B∣A)P(A)P(B)【式1】P(A|B)=\frac{P(B|A)P(A)}{P(B)}\ \ \ \ \ \ \ \ \ 【式1】 P(AB)=P(B)P(BA)P(A)         【式1
贝叶斯公式看起来很简单,无非是倒了倒条件概率和联合概率的公式。

把B展开,可以写成:

P(A∣B)=P(B∣A)P(A)P(B∣A)P(A)+P(B∣Aˉ)P(Aˉ)【式2】P(A|B)=\frac{P(B|A)P(A)}{P(B|A)P(A)+P(B|\bar{A})P(\bar{A})}\ \ \ \ \ \ \ \ 【式2】 P(AB)=P(BA)P(A)+P(BAˉ)P(Aˉ)P(BA)P(A)        【式2
其中 Aˉ\bar{A}Aˉ 表示:非AAA

这个式子就很有意思了。

想想这个情况。一辆汽车(或者电瓶车)的警报响了,你通常是什么反应?有小偷?撞车了? 不。。 你通常什么反应都没有。因为汽车警报响一响实在是太正常了!每天都要发生好多次。本来,汽车警报设置的功能是,出现了异常情况,需要人关注。然而,由于虚警实在是太多,人们渐渐不相信警报的功能了。

贝叶斯公式就是在描述,你有多大把握能相信一件证据?(how much you can trust the evidence)

我们假设响警报的目的就是想说汽车被砸了。把A计作“汽车被砸了”,B计作“警报响了”,带进贝叶斯公式里看。我们想求等式左边 A∣BA|BAB 发生的概率,这是在说警报响了,汽车也确实被砸了。汽车被砸引起(trigger) 警报响,即 B∣AB|ABA。但是,也有可能是汽车被小孩子皮球踢了一下、被行人碰了一下等其他原因(统统计作 Aˉ\bar{A}Aˉ),其他原因引起汽车警报响了,即 B∣AˉB|\bar{A}BAˉ。那么,现在突然听见警报响了,这时汽车已经被砸了的概率是多少呢(这即是说,警报响这个证据有了,多大把握能相信它确实是在报警说汽车被砸了?)想一想,应当这样来计算。用警报响起、汽车也被砸了这事件的数量,除以响警报事件的数量(这即【式1】)。进一步展开,即警报响起、汽车也被砸了的事件的数量,除以警报响起、汽车被砸了的事件数量加上警报响起、汽车没被砸的事件数量(这即【式2】)。

可能有点绕,请稍稍想一想。

再思考【式2】。想让 P(A∣B)=1P(A|B)=1P(AB)=1,即警报响了,汽车一定被砸了,该怎么做呢?让 P(B∣Aˉ)P(Aˉ)=0P(B|\bar{A})P(\bar{A}) = 0P(BAˉ)P(Aˉ)=0 即可 。 很容易想清楚 , 假若让 P(Aˉ)=0P(\bar{A}) = 0P(Aˉ)=0,即杜绝了汽车被球踢、被行人碰到等等其他所有情况,那自然,警报响了,只剩下一种可能——汽车被砸了。这即是提高了响警报这个证据的说服力。

从这个角度总结贝叶斯公式:做判断的时候,要考虑所有的因素。 老板骂你,不一定是你把什么工作搞砸了,可能只是他今天出门前和太太吵了一架。

再思考【式2】。观察【式2】右边的分子,P(B∣A)P(B|A)P(BA) 为汽车被砸后响警报的概率。姑且仍为这是1吧。但是,若 P(A)P(A)P(A) 很小,即汽车被砸的概率本身就很小,则 P(B∣A)P(A)P(B|A)P(A)P(BA)P(A) 仍然很小,即【式2】右边分子仍然很小,P(A∣B)P(A|B)P(AB) 还是大不起来。 这里,P(A)P(A)P(A) 即是常说的先验概率,如果 AAA 的先验概率很小,就算 P(B∣A)P(B|A)P(BA)较大,可能 AAA 的后验概率 P(A∣B)P(A|B)P(AB) 还是不会大(假设 P(B∣Aˉ)P(Aˉ)P(B|\bar{A})P(\bar{A})P(BAˉ)P(Aˉ) 不变的情况下)。

从这个角度思考贝叶斯公式:一个本来就难以发生的事情,就算出现某个证据和他强烈相关,也要谨慎。证据很可能来自别的虽然不是很相关,但发生概率较高的事情。 发现刚才写的代码编译报错,可是我今天状态特别好,这语言我也很熟悉,犯错的概率很低。因此觉得是编译器出错了。 ————别,还是先再检查下自己的代码吧。

好了好了,说了这么多,下面言归正传,说一说MLE。——————不行,还得先说似然函数(likelihood function)。

似然函数

似然(likelihood)这个词其实和概率(probability)是差不多的意思,Colins字典这么解释:The likelihood of something happening is how likely it is to happen. 你把likelihood换成probability,这解释也读得通。但是在统计里面,似然函数和概率函数却是两个不同的概念(其实也很相近就是了)。

对于这个函数:

P(X∣θ)P(X|\theta) P(Xθ)
输入有两个:XXX 表示某一个具体的数据;θ\thetaθ 表示模型的参数。

如果 θ\thetaθ 是已知确定的,XXX 是变量,这个函数叫做概率函数(probability function),它描述对于不同的样本点 XXX,其出现概率是多少。

如果 XXX 是已知确定的,θ\thetaθ 是变量,这个函数叫做似然函数(likelihood function), 它描述对于不同的模型参数,出现 XXX 这个样本点的概率是多少。

这有点像“一菜两吃”的意思。其实这样的形式我们以前也不是没遇到过。例如,f(x,y)=xyf(x, y) = x^yf(x,y)=xy , 即 , 即 xxxyyy 次方。如果 xxx 是已知确定的(例如 x=2x=2x=2) ,那这就是 f(y)=2yf(y)=2^yf(y)=2y ,是指数函数;如果 yyy 是已知确定的(例如 y=2y=2y=2 ),那就是 f(x)=x2f(x)=x^2f(x)=x2 ,是二次函数。同一个数学形式,从不同的变量角度观察,可以有不同的名字。

这么说应该清楚了吧? 如果还没讲清楚,别急,下文会有具体例子。

现在真要先讲讲MLE了。。

最大似然估计(MLE)

假设有一个造币厂生产某种硬币,现在我们拿到了一枚这种硬币,想试试这硬币是不是均匀的。即想知道抛这枚硬币,正反面出现的概率(记为 θ\thetaθ)各是多少?

这是一个统计问题,回想一下,解决统计问题需要什么? 数据!

于是我们拿这枚硬币抛了10次,得到的数据 x0x_0x0 是:反正正正正反正正正反。我们想求的正面概率 θ\thetaθ 是模型参数,而抛硬币模型我们可以假设是二项分布。

那么,出现实验结果 x0x_0x0(即反正正正正反正正正反)的似然函数是多少呢?

f(x0,θ)=(1−θ)×θ×θ×θ×θ×(1−θ)×θ×θ×θ×(1−θ)=θ7(1−θ)3=f(θ)\begin{align} f(x_0,\theta)&=(1-\theta)\times\theta\times\theta\times\theta\times\theta\times(1-\theta)\times\theta\times\theta\times\theta\times(1-\theta)\\ &=\theta^7(1-\theta)^3\\ &=f(\theta) \end{align} f(x0,θ)=(1θ)×θ×θ×θ×θ×(1θ)×θ×θ×θ×(1θ)=θ7(1θ)3=f(θ)
注意,这是个只关于 θ\thetaθ 的函数。而最大似然估计,顾名思义,就是要最大化这个函数。我们可以画出 f(θ)f(\theta)f(θ) 的图像:

在这里插入图片描述

可以看出,在 θ=0.7\theta=0.7θ=0.7 时,似然函数取得最大值。

这样,我们已经完成了对 θ\thetaθ 的最大似然估计。即,抛10次硬币,发现7次硬币正面向上,最大似然估计认为正面向上的概率是0.7。ummm…这非常直观合理,对吧?

且慢,一些人可能会说,硬币一般都是均匀的啊! 就算你做实验发现结果是“反正正正正反正正正反”,我也不信 θ=0.7\theta=0.7θ=0.7

这里就包含了贝叶斯学派的思想了——要考虑先验概率。 为此,引入了最大后验概率估计。

最大后验概率估计(MAP)

最大似然估计是求参数 θ\thetaθ , 使似然函数 P(x0∣θ)P(x_0|\theta)P(x0θ) 最 大 。 而最大后验概率估计则是想求 θ\thetaθ 使得 P(x0∣θ)P(θ)P(x_0|\theta)P(\theta)P(x0θ)P(θ) 最大。求得的 θ\thetaθ 不单单让似然最大,而且 θ\thetaθ 自己的先验也得大。这有点像正则化里加惩罚项的思想,不过正则化里是利用加法,而MAP里是利用乘法。

MAP其实是在最大化 P(θ∣x0)=P(x0∣θ)P(θ)P(x0)P(\theta|x_0)=\frac{P(x_0|\theta)P(\theta)}{P(x_0)}P(θx0)=P(x0)P(x0θ)P(θ) ,不过因为观测数据 x0x_0x0 是确定的,即投出的“反正正正正反正正正反”。所以 P(x0)P(x_0)P(x0) 是一个已知值,所以最终的形式去掉了分母 P(x0)P(x_0)P(x0) 。比如假设 “投10次硬币记为一次实验”,实验做了 1000 次,出现 “反正正正正反正正正反” 的次数为 nnn ,则 P(x0)=n1000P(x_0)=\frac{n}{1000}P(x0)=1000n 。总之,这是由观测数据所确定的值。最大化 P(θ∣x0)P (\theta ∣ x_0 )P(θx0) 的意义也很明确,x0x_0x0 已经出现了,要求 θ\thetaθ 取什么值使 P(θ∣x0)P(\theta|x_0)P(θx0) 最大。顺带一提,P(θ∣x0)P(\theta|x_0)P(θx0) 就是后验概率,这就是最大后验概率估计名称的由来。

对于投硬币的例子来看,我们认为 ”先验地知道“ θ\thetaθ 取0.5的概率很大,取其他值的概率小一些。我们用一个高斯分布来具体描述我们掌握的这个先验知识,例如假设 P(θ)P(\theta)P(θ) 为均值 0.5,方差0.1的高斯函数,如下图:

在这里插入图片描述

P(x0∣θ)P(θ)P(x_0|\theta)P(\theta)P(x0θ)P(θ) 的函数图像为:

在这里插入图片描述

注意,此时函数取最大值时, θ\thetaθ 取值已向左偏移,不再是 0.7。在 θ=0.558\theta=0.558θ=0.558 时函数取得了最大值。即,用最大后验概率估计,得到 θ=0.558\theta=0.558θ=0.558

最后,那要怎样才能说服一个贝叶斯派相信 θ=0.7\theta=0.7θ=0.7 呢?你得多做点实验。。

如果做了1000次实验,其中700次都是正面向上,如果仍然假设 P(θ)P(\theta)P(θ) 为均值0.5,方差 0.1 的高斯函数,P(x0∣θ)P(θ)P(x_0|\theta)P(\theta)P(x0θ)P(θ) 的函数图像为:

在这里插入图片描述

θ=0.696\theta=0.696θ=0.696 处取得最大值。

这样,就算一个考虑了先验概率的贝叶斯派,也不得不承认得把 θ\thetaθ 估计在0.7附近了。

PS. 要是遇上了顽固的贝叶斯派,认为 P(θ=0.5)=1P(\theta=0.5)=1P(θ=0.5)=1,那就没得玩了。。 无论怎么做实验,使用MAP估计出来都是 θ=0.5\theta=0.5θ=0.5。这也说明,一个合理的先验概率假设是很重要的。通常,先验概率能从数据中直接分析得到。

最大似然估计和最大后验概率估计的区别

相信读完上文,MLE和MAP的区别应该是很清楚的了。MAP就是多了个作为因子的先验概率 P(θ)P(\theta)P(θ)。或者,也可以反过来,认为MLE是把先验概率 P(θ)=1P(\theta)=1P(θ)=1 认为等于1,即认为 θ\thetaθ 是均匀分布。

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

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

相关文章

重新打开_iPhone 应用停止响应或无法打开的解决办法

如果当您在 iPhone 上使用某个重要应用时,遇到应用停止响应、意外退出或无法打开的问题,请参考如下步骤尝试解决:1.强制退出应用:在 iPhone 后台强制关闭该应用之后,再次重新打开看看。2.重启您的设备,然后…

机器学习理论——优雅的模型:变分自编码器(VAE)

机器学习理论——优雅的模型:变分自编码器(VAE) 转自:机器学习理论—优雅的模型(一):变分自编码器(VAE) 另外直观理解 VAE, 推荐 台大李宏毅老师的课程&#…

基于流的(Flow-based)生成模型简介

基于流的(Flow-based)生成模型简介 生成任务 我们先回顾一下所谓的生成任务,究竟是做什么事情。我们认为,世界上所有的图片,是符合某种分布 pdata(x)p_{data}(x)pdata​(x) 的。当然,这个分布肯定是个极其复杂的分布。而我们有一…

iec60870-5-104通讯协议编程_三菱FX编程口通讯协议1——协议解读

三菱PLC编程口通讯协议:1、三菱PLC编程口通讯协议有四个命令,如下:2、三菱FX系列PLC地址对应表:PLC_X Group Base AddRess128;Const PLC_Y_Group Base AddRess160;M _Group Base_AddRess 256;P…

DETR精读笔记

DETR精读笔记 论文:End-to-End Object Detection with Transformers (发表于 ECCV-2020) 代码:https://github.com/facebookresearch/detr 解读视频:DETR 论文精读【论文精读】 本笔记主要基于 Yi Zhu 老师的解读 引言…

GAN网络评估指标:IS、FID、PPL

GAN网络评估指标:IS、FID、PPL 转自:IS、FID、PPL,GAN网络评估指标 另外关于GAN的评价指标,推荐李宏毅老师的视频:【機器學習2021】生成式對抗網路 (Generative Adversarial Network, GAN) (三) – 生成器效能評估與條…

降维后输入分类器分类时报错_逻辑回归解决多分类方法及其优缺点分析

众所周知,逻辑回归常用于解决二分类任务,但是在工作/学习/项目中,我们也经常要解决多分类问题。本文总结了 3 种逻辑回归解决多分类的方法,并分析了他们的优缺点。一、One-Vs-Rest假设我们要解决一个分类问题,该分类问…

PyTorch 的 Autograd

PyTorch 的 Autograd 转自:PyTorch 的 Autograd PyTorch 作为一个深度学习平台,在深度学习任务中比 NumPy 这个科学计算库强在哪里呢?我觉得一是 PyTorch 提供了自动求导机制,二是对 GPU 的支持。由此可见,自动求导 (a…

商场楼层导视牌图片_百宝图商场电子导视软件中预约产品功能简介

百宝图商场电子导视软件中预约产品功能简介 管理端,可配合百宝图商场电子导视软件配套使用 1:数据展示:图形展示总预约数/预约时间峰值/预约途径/各途径数量对比 2:数据统计:有效预约数量/无效预约数量/无效预约原因备…

Pytorch autograd.grad与autograd.backward详解

Pytorch autograd.grad与autograd.backward详解 引言 平时在写 Pytorch 训练脚本时,都是下面这种无脑按步骤走: outputs model(inputs) # 模型前向推理 optimizer.zero_grad() # 清除累积梯度 loss.backward() # 模型反向求导 optimizer.step()…

相对熵与交叉熵_熵、KL散度、交叉熵

公众号关注 “ML_NLP”设为 “星标”,重磅干货,第一时间送达!机器学习算法与自然语言处理出品公众号原创专栏作者 思婕的便携席梦思单位 | 哈工大SCIR实验室KL散度 交叉熵 - 熵1. 熵(Entropy)抽象解释:熵用于计算一个随机变量的信…

动手实现一个带自动微分的深度学习框架

动手实现一个带自动微分的深度学习框架 转自:Automatic Differentiation Tutorial 参考代码:https://github.com/borgwang/tinynn-autograd (主要看 core/tensor.py 和 core/ops.py) 目录 简介自动求导设计自动求导实现一个例子总结参考资料 简介 梯度…

http 错误 404.0 - not found_电脑Regsvr32 用法和错误消息的说明

​ 对于那些可以自行注册的对象链接和嵌入 (OLE) 控件,例如动态链接库 (DLL) 文件或 ActiveX 控件 (OCX) 文件,您可以使用 Regsvr32 工具 (Regsvr32.exe) 来将它们注册和取消注册。Regsvr32.exe 的用法RegSvr32.exe 具有以下命令行选项: Regs…

MobileNet 系列:从V1到V3

MobileNet 系列:从V1到V3 转自:轻量级神经网络“巡礼”(二)—— MobileNet,从V1到V3 自从2017年由谷歌公司提出,MobileNet可谓是轻量级网络中的Inception,经历了一代又一代的更新。成为了学习轻…

mysql 高级知识点_这是我见过最全的《MySQL笔记》,涵盖MySQL所有高级知识点!...

作为运维和编程人员,对MySQL一定不会陌生,尤其是互联网行业,对MySQL的使用是比较多的。MySQL 作为主流的数据库,是各大厂面试官百问不厌的知识点,但是需要了解到什么程度呢?仅仅停留在 建库、创表、增删查改…

teechart mysql_TeeChart 的应用

TeeChart 是一个很棒的绘图控件,不过由于里面没有注释,网上相关的资料也很少,所以在应用的时候只能是一点点的试。为了防止以后用到的时候忘记,我就把自己用到的东西都记录下来,以便以后使用的时候查询。1、进制缩放图…

NLP新宠——浅谈Prompt的前世今生

NLP新宠——浅谈Prompt的前世今生 转自:NLP新宠——浅谈Prompt的前世今生 作者:闵映乾,中国人民大学信息学院硕士,目前研究方向为自然语言处理。 《Pre-train, Prompt, and Predict: A Systematic Survey of Prompting Methods in…

requestfacade 这个是什么类?_Java 的大 Class 到底是什么?

作者在之前工作中,面试过很多求职者,发现有很多面试者对Java的 Class 搞不明白,理解的不到位,一知半解,一到用的时候,就不太会用。想写一篇关于Java Class 的文章,没有那么多专业名词&#xff0…

初学机器学习:直观解读KL散度的数学概念

初学机器学习:直观解读KL散度的数学概念 转自:初学机器学习:直观解读KL散度的数学概念 译自:https://towardsdatascience.com/light-on-math-machine-learning-intuitive-guide-to-understanding-kl-divergence-2b382ca2b2a8 解读…

MySQL应用安装_mysql安装和应用

1.下载mysql安装包2.安装mysql,自定义->修改路径3.配置mysql,选择自定义->server模式->500访问量->勾选控制台->设置gbk->设置密码和允许root用户远程登录等等。以管理员权限,在控制台输入:net start MySQL, 启…