绑定完请刷新页面
取消
刷新

分享好友

×
取消 复制
机器学习 | 大似然估计:从概率角度理解机器学习
2019-12-25 14:28:47

大似然估计是机器学习中常用的参数估计方法之一。整个建模过程需要一个似然函数来描述在不同模型参数下真实数据发生的概率,似然函数是关于模型参数的函数。大似然估计就是寻找优参数,使得观测数据发生的概率大、统计模型与真实数据相似。

本专栏之前的文章介绍了线性回归以及小二乘法的数学推导过程。对于一组训练数据,使用线性回归建模,可以有不同的模型参数来描述数据,这时候可以用小二乘法来选择优参数来拟合训练数据,即使用误差的平方作为损失函数。机器学习求解参数的过程被称为参数估计,机器学习问题也变成求使损失函数小的优化问题。小二乘法比较直观,很容易解释,但不具有普遍意义,对于更多其他机器学习问题,比如二分类和多分类问题,小二乘法就难以派上用场了。本文将给大家介绍一个具有普遍意义的参数估计方法:大似然估计。

我们以一个简单的例子来模拟机器学习的概率推理过程。假如你参与了一场游戏,你会被告知一个硬币抛掷10次的正反情况,接下来由你下注,而你只有一次机会,猜对硬币下一次正反情况则赢得100元,猜错则损失100元。这时,你会如何决策?


概率和似然

一般地,硬币有正反两面,如果硬币正反两面是均匀的,即每次抛掷后硬币为正的概率是0.5。使用这个硬币,很可能抛10次,有5次是正面。但是假如有人对硬币做了手脚,比如提前对硬币做了修改,硬币每次都会正面朝上,现在抛10次,10次都是正面,那么下次你不会猜它是反面,因为前面的10次结果摆在那里,直觉上你不会相信这是一个普通的硬币。现在有一人抛了10次硬币,得到6正4反的结果,如何估算下次硬币为正的概率呢?

因为硬币并不是我们制作的,我们不了解硬币是否是完全均匀的,只能根据现在的观察结果来反推硬币的情况。假设硬币上有个参数Θ 它决定了硬币的正反均匀程度,θ = 0.5表示正反均匀,每次抛硬币为正的概率为0.5,θ = 1表示硬币只有正面,每次抛硬币为正的概率为1。那么,从观察到的正反结果,反推硬币的构造参数θ的过程,就是一个参数估计的过程。


概率

抛掷10次硬币可能出现不同的情况,可以是“5正5反”、“4正6反”,“10正0反”等。假如我们知道硬币是如何构造的,即已知硬币的参数θ,那么出现“6正4反”的概率为:

公式1是概率函数,表示已知参数θ,事实“6正4反”发生的概率。参数θ取不同的值时,事情发生的概率不同。概率(Probability)函数一般用P或Pr表示。

上述过程中,抛10次硬币,要选出6次正面,使用了排列组合。因为“6正4反”可能会出现正正正正正正反反反反、正正正正正反正反反反、正正正正反正正反反反等共210种组合,要在10次中选出6次为正面。假如每次正面的概率是0.6,那么反面的概率就是(1-0.6)。每次抛掷硬币的动作是相互独立,互不影响的,“6正4反”发生的概率就是各次抛掷硬币的概率乘积,再乘以210种组合。

概率反映的是:已知背后原因,推测某个结果发生的概率。

似然

与概率不同,似然反映的是:已知结果,反推原因。具体而言,似然(Likelihood)函数表示的是基于观察的数据,取不同的参数θ时,统计模型以多大的可能性接近真实观察数据。这就很像开篇提到的赌局,已经给你了一系列硬币正反情况,但你并不知道硬币的构造,下次下注时你要根据已有事实,反推硬币的构造。例如,当观察到硬币“10正0反”的事实,猜测硬币极有可能每次都是正面;当观察到硬币“6正4反”的事实,猜测硬币有可能不是正反均匀的,每次出现正面的可能性是0.6。

似然函数与前面的概率函数的计算方式极其相似,与概率函数不同的是,似然函数是θ的函数,即θ是未知的。似然函数衡量的是在不同参数θ下,真实观察数据发生的可能性。似然函数通常是多个观测数据发生的概率的联合概率,即多个观测数据都发生的概率。单个观测数据发生的可能性为P(θ),如果各个观测之间是相互独立的,那么多个观测数据都发生的概率可表示为各个样本发生的概率的乘积。这里稍微解释一下事件独立性与联合概率之间的关系。如果事件A和事件B相互独立,那么事件A和B同时发生的概率是A发生的概率 * B发生的概率。例如,事件“下雨”与事件“地面湿”就不是相互独立的,“下雨”与"地面湿"是同时发生、高度相关的,这两个事件都发生的概率就不能用单个事件的乘积来表示。两次抛掷硬币相互之间不影响,因此硬币正面朝上的概率可以用各次概率的乘积来表示。

似然函数通常用L表示。观察到抛硬币“6正4反”的事实,硬币参数θ取不同值时,似然函数表示为:

公式2的图形如下图所示。从图中可以看出:参数θ为0.6时,似然函数大,参数为其他值时,“6正4反”发生的概率都相对更小。在这个赌局中,我会猜测下次硬币为正,因为根据已有观察,硬币很可能以0.6的概率为正。

似然函数的一般形式可以用公式2第2行来表示,也就是之前提到的,各个样本发生的概率的乘积。


大似然估计

理解了似然函数的含义,就很容易理解大似然估计的机制。似然函数是关于统计模型参数的函数,是描述观察到的真实数据在不同参数下发生的概率。大似然估计要寻找优参数,让似然函数大化。或者说,使用优参数时观测数据发生的概率大。


线性回归的大似然估计

之前的文章提到,线性回归的误差项ε是预测值与真实值之间的差异(公式3第1行),它可能是一些随机噪音,也可能是线性回归模型没考虑到的一些其他影响因素。线性回归的一大假设(之前的文章也有提到)是:误差服从均值为0的正态分布,且多个观测数据之间互不影响,相互独立。正态分布的概率密度公式如公式3第2行所示。第2行中的Pr(x; μ, σ)的;分号强调μ和σ是这个概率密度函数的参数,它和条件概率函数中使用的|竖线符号表示的意义不同。

将ε代入,并取均值μ为0,可得到公式3第3行。再把第1行中x和y之间的关系代入第3行,可得到第4行,第4行即第i个单样本发生的概率。

前文提到,似然函数是所观察到的各个样本发生的概率的乘积。一组样本有N个观测数据,其中单个观测数据发生的概率为公式3第4行所示,N个观测数据的乘积如公式4第1行所示。终,似然函数可以表示成公式4第2行的结构。其中,x和y都是观测到的真实数据,是已知的,ω是需要去求解的模型参数。

给定观测数据X和y,如何选择参数ω来使模型达到优的效果?大似然估计法告诉我们应该选择一个ω使得似然函数L大。L中的乘积符号和exp运算看起来就非常复杂,直接用L来计算十分不太方便,于是统计学家在原来的似然函数基础上,取了log对数。log的一些性质能大大化简计算复杂程度,且对原来的似然函数增加log对数并不影响参数ω在何处取得优值。通常使用花体的l来表示log似然函数。

由于log对数可以把乘法转换为加法(公式5第2行所示),似然函数中的乘积项变成了求和项,如公式5第3行所示。又因为log对数可以消去幂,终可以得到公式5第4行中的函数。

由于我们只关心参数ω取何值时,似然函数大,标准差σ并不会影响ω取何值时似然函数大,所以可以忽略掉带有标准差σ的项。再加个负号,负负得正,原来大化问题就变成了小化问题,终结果为下面的公式6。

公式6与之前文章中,小二乘法所优化的损失函数几乎一样,都是真实值 - 预测值的平方和,可以说是殊途同归。

接下来对公式6参数求解,可以采用之前文章中的求导方法,让导数为0,得到一个矩阵方程,矩阵方程的解即为模型的优解;也可以使用梯度下降法,求模型的优解。梯度下降法将在本专栏之后的文章中介绍。


小二乘与大似然

前面的推导中发现,小二乘与大似然的公式几乎一样。直观上来说,小二乘法是在寻找观测数据与回归超平面之间的误差距离小的参数。大似然估计是大化观测数据发生的概率。当我们假设误差是正态分布的,所有误差项越接近均值0,概率越大。正态分布是在均值两侧对称的,误差项接近均值的过程等同于距离小化的过程。

总结

大似然估计是机器学习中常用的参数估计方法之一,逻辑回归、深度神经网络等模型都会使用大似然估计。我们需要一个似然函数来描述真实数据在不同模型参数下发生的概率,似然函数是关于模型参数的函数。大似然估计就是寻找优参数,使得观测数据发生的概率大、统计模型与真实数据相似。



作者:皮皮鲁的AI星球

链接:https://juejin.im/post/5df347bf6fb9a016526eb7d3

来源:掘金

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


分享好友

分享这个小栈给你的朋友们,一起进步吧。

通俗易懂--机器学习
创建时间:2019-08-02 11:00:07
这里汇集了机器学习、NLP面试中常考到的知识点和代码实现,也是作为一个算法工程师必会的理论基础知识。 以各个模块为切入点,让大家有一个清晰的知识体系。 亦可拿来常读、常记以及面试时复习之用。 每一章里的问题都是面试时有可能问到的知识点,如有遗漏可联系我进行补充,结尾处都有算法的实战代码案例。
展开
订阅须知

• 所有用户可根据关注领域订阅专区或所有专区

• 付费订阅:虚拟交易,一经交易不退款;若特殊情况,可3日内客服咨询

• 专区发布评论属默认订阅所评论专区(除付费小栈外)

栈主、嘉宾

查看更多
  • mantch
    栈主

小栈成员

查看更多
  • 栈栈
  • Jack2k
  • hwayw
  • 天上飘下来的人
戳我,来吐槽~