0 引言

在机器学习的理论学习理论中往往会遇到“极大似然估计”的概念,极大似然估计的求解过程非常简单致使我们往往会忽律其背后的原理。当我彻底弄懂了极大似然估计的背后的思想后对机器学习算法的理解有了本质上的提高。下面让我们通过通俗并且轻松的方式去学习“极大似然估计”背后的思想以及在机器学习中的应用。当然随着对理论的认识的不断加深还会不断更新此文章。

1 通俗理解极大似然估计(Maximum Likelihood Estimate,MLE)

如果对全国人身高做一下评估,有一个前提假设是人的身高属于正态分布(如图1所示),在正太分布中我们关心参数为:均值

和方差
,那如何得到全国人身高的均值和方差呢?如果去挨个测量13亿人的身高其实是不太可能的。我们能做的就是随机的找一些不同年龄段、不同性别的人测量他们的身高,让他们的身高水平代表全国人民的身高水平,然后通过他们对全国人民身高的均值和方差做一下估计,我想这是每个人都能想到的!但是,为什么能让这些人的身高代表全国人的身高呢?这里就蕴含着及其精妙的思想,需要细细斟酌 ️。
图1 正态分布概率密度曲线

好了请允许我再换一个话题,假如说一个老猎人带着一个小徒弟出去打猎。目前我们知道他们其中一个人打死了一只兔子,假如让你猜这只兔子是谁打死的,大部分人会直接猜测是老猎人打死的,这其实就运用了最大似然的思想。

最大似然原理

假设我们的抽样是理想正确的;
概率大的事件在一次观测中更容易发生(打猎问题);
在一次观测中发生了的事件其概率应该大(身高问题)。

现在我们回到身高问题用稍微理论的方法理解一下最大似然估计:

假设我们从全国人中随机抽取了

个人,分别用
代表他们的身高,既然我们

观测到了他们的身高。对应上文的最大似然原理我们可以得出我们看到的这些样本出现的概率应该是最大的或者说既然我们抽取到观测到了他们的身高他们发生的可能性就最大。其中这里有一个假设前提是我们对抽取的样本是一个乐观的态度,也就是说假设抽取去的样本是理想的、合理的。然后我们走一遍最大似然估计的流程(不用紧张高中知识):

假设我们全国人的身高服从正太分布

,但是我们不知到分布具体的参数:均值
和方差
。由于我们无法对全国13亿人挨个测量身高,所以我们随机抽取了
个人的身高:
。希望通过最大似然的思想来估计分布的参数

已知正态分布的概率密度函数为:

step1 计算似然函数:

step2 似然函数取对数:

step3 求最值对应的参数:

令:

step4得到估计参数:

更一般的似然函数

对应上文身高问题
,既然我们观察到了
个样本,那么他们出现的概率应该是最大的。假设每个人的身高只和自己有关系,人与人之间相互独立,对每个人的概率进行相乘得到的联合概率
也应该是最大的,根据最大似然的思想满足
最大的参数
是最好的估计值。也就可以说若
,那么
更接近真实值。

1.如何体现出我们的估计或者模型在力求最好地拟合抽取的样本?

答:求似然函数的最大值。

2.哪一套参数才是我们要找的最好的参数?

答:似然函数最大的时候,对应的参数

在英语日常生活中,似然(likelihood)概率(probability)的使用一般不作区分。在统计学上,基于某些模型的参数(粗略地说,我们可以认为参数决定了模型),观测到某数据的概率称为概率;而已经观测到某数据,模型的参数取特定值的概率称为似然。

好了当我们理解了最大似然估计时,再去重新认识我们的机器学习算法就会有一种豁然开朗的感觉。

2机器学习中的极大似然

让我们看看最简单的二分类机器学习模型logistic回归吧,其可以表示为如下方式:

其中

为模型参数,
为样本,即
,

通过什么样的方法学习参数

呢?答案就是最大似然估计和梯度下降。

对于给定的训练数据

,其中
,
,用极大似然估计方法估计模型参数:

设:

似然函数为:

对数似然为:

求极大值,得到
的参数估计。

这样就变成了对数似然为目标函数的最优化问题,可以用常见的梯度下降法求最优值。

3 深入理解机器学习与极大似然之间的联系

在机器学习和深度学学习中由于给定的样本总是有限,所以用样本数据的经验分布

代替表示所有真实数据的分布
。模型的概率分布为
。考虑一组含有
个样本的数据集
独立从未知的真实数据分布
生成。

是由
确定的在相同空间上的概率分布。在理想情况下,
将任意输入
映射到真实的概率
,通俗地讲就是我们希望我们的机器学习模型能够对所有数据都预测正确,不仅仅是训练集中的数据,还包括训练集中没有包含的数据,当然这几乎是不可能的。

的极大似然估计为:

取对数:

取关于经验分布的期望:

现在有一种衡量两种概率分布之间差距的方法就做KL散度,假设我们衡量样本数据的概率分布

与训练出来的模型的概率分布
之间的差距:

理想情况下二者的KL散度越小越好及模型更好地学习了训练集的数据。其中

为训练集数据分布,可以认为其固定,所以最小化KL散度就等价于最小化:

上面的式子是不是有一些熟悉,这就是我们在机器学习中最常用到的损失函数---交叉熵。

本节参考《DeepLearning》(花书)5.5节,为了更容易理解更改了部分符号系统,若有错误欢迎各位大佬指正。

下面让我对比下信息论中交叉熵公式与机器学习中常见的交叉熵形式对上文更好地理解:

信息论中交叉熵形式:

深度学习中交叉熵的形式:

其中

对应训练集真实标签可对应
,
为模型的预测值可以对应

References

1.李航 (2012) 统计学习方法. 清华大学出版社, 北京.

2.Deep Learning,Ian Goodfellow and Yoshua Bengio and Aaron Courville,MIT Press,2016

3.https://www.zhihu.com/question/281311791/answer/498859126

阅读推荐:

轻松理解pointwise 、 pairwise 、listwise

极大似然估计_一文理解机器学习中的极大似然估计(MLE)相关推荐

  1. 透彻理解机器学习中极大似然估计MLE的原理(附3D可视化代码)

    文章目录 相关资料 一.什么是概率,什么是似然 二.极大似然估计 Maximum Likelihood Estimation (MLE) 的含义 2.1 机器学习中的极大化似然函数 2.2 极大似然估 ...

  2. 三个变量中怎么找出中间值_一文理解神经网络中的偏差和方差

    在深度学习中,数据过拟合,欠拟合的问题很常见,先总结一下:过拟合称为高方差,欠拟合称为高偏差. 可能只看偏差,方差不是很理解,下面先来个百度百科看一下. 偏差(统计学概念) 偏差又称为表观误差,是指个 ...

  3. 一文解决机器学习中的过拟合与欠拟合问题(正则化,数据增强,Dropout)

    一文解决机器学习中的过拟合与欠拟合问题(正则化,数据增强,Dropout,提前终止) 生活中的过拟合与欠拟合现象 过拟合与欠拟合的概念 解决过拟合与欠拟合问题的四大金刚 正则化 数据增强 Dropou ...

  4. 极大似然估计_一文读懂矩估计,极大似然估计和贝叶斯估计

    概率论和数理统计是机器学习重要的数学基础. 概率论的核心是已知分布求概率,数理统计则是已知样本估整体. 概率论和数理统计是互逆的过程.概率论可以看成是由因推果,数理统计则是由果溯因. 数理统计最常见的 ...

  5. 伽马分布极大似然估计_一文通俗解释极大似然估计

    我们都知道机器学习的大致流程是通过建立一个合理的模型学习现有数据集,然后通过该模型去完成特定的任务.其中每个模型都包含自身的一组特定参数,而这组参数决定着模型的本身.但这里存在一个很关键的一个问题,就 ...

  6. python 回归去掉共线性_一文讲解机器学习算法中的共线性问题

    多重共线性是使用线性回归算法时经常要面对的一个问题.在其他算法中,例如决策树和贝叶斯,前者的建模过程是逐步递进,每次拆分只有一个变量参与,这种建模机制含有抗多重共线性干扰的功能:后者干脆假定变量之间是 ...

  7. 高斯过程是什么?从视觉上理解机器学习中的高斯过程——Gaussian Process

    --如何将一组小型构建块转变为解决回归问题的灵活的工具. 目录 Introduction 简介 Multivariate Gaussian distributions 多元高斯分布 Marginali ...

  8. 一文介绍机器学习中的三种特征选择方法

    作者 | luanhz 来源 | 小数志 导读 机器学习中的一个经典理论是:数据和特征决定了机器学习的上限,而模型和算法只是逼近这个上限.也正因如此,特征工程在机器学习流程中占有着重要地位.广义的特征 ...

  9. 一文总览机器学习中各种【熵】的含义及本质

    https://www.toutiao.com/a6681435530564993544/ 2019-04-19 11:02:15 机器学习领域有一个十分有魅力的词:熵.然而究竟什么是熵,相信多数人都 ...

  10. 干货丨一文介绍机器学习中基本的数学符号

    在机器学习中,你永远都绕不过数学符号. 通常,只要有一个代数项或一个方程符号看不懂,你就完全看不懂整个过程是怎么回事了.这种境况非常令人沮丧,尤其是对于那些正在成长中的机器学习初学者来说更是如此. 如 ...

最新文章

  1. mysql 多配置文件实例安装_mysql安装之多实例多配置文件安装
  2. ansible(4)——配置文件及以对面某个用户来登录
  3. golang 使用sqlite3编码慢问题
  4. Exceptionless 本地部署
  5. 编程猜单词游戏python_Python实现简单的猜单词小游戏
  6. C和C++混合编程(__cplusplus使用)
  7. java原生方法,Java Servlet原生调用方法过程简化
  8. 刚刚!阿里云宣布2021要“做厚中台”!有哪些书值得读?
  9. RabbitMQ-1 Helloword
  10. 数据库的事务和隔离级别
  11. linux tar 备份命令
  12. 台大陈蕴侬、李宏毅“应用深度学习”课程(国语)
  13. linux c 库依赖
  14. Java 小记 — RabbitMQ 的实践与思考
  15. 【边喝caffee边Caffe 】(一)Caffe的安装
  16. freeswitch 自定义application
  17. 施努卡:密封环ccd检测(密封圈视觉检测的原理 )
  18. DSO windowed optimization 代码 (4)
  19. 【蓝桥杯历年真题合集】蓝桥杯2020初赛
  20. 力扣第236题“二叉树的最近公共先祖”的解题思路

热门文章

  1. 02 ARM存储控制器   SDRAM操作 实验
  2. ios - 带动画圆形旋转的进度条
  3. C语言深度解剖读书笔记(6.函数的核心)
  4. 婚礼一条龙服务成为新亮点
  5. android核心基础(5)_Android)java虚拟机和Dalvik虚拟机的区别
  6. IntelliJ IDEA 12.0中文字符显示不正常解决方案
  7. php论坛学习的一个遍历的问题(学习)
  8. 给老板汇报技术规划的一些要点(转)
  9. jquery-galleryview-2.0 漂亮多样化的图片特效(多项自定义)
  10. 从零开始学习前端JAVASCRIPT — 14、闭包与继承