本文已参与「新人创作礼」活动,一起开启掘金创作之路。
简介
本文将解释什么是最大似然参数估计,并通过一个简单的例子辅助理解。一些内容需要读者了解一些基本概率概念,例如联合概率的定义和事件的独立性。为减轻读者的负担并能使尽可能多的读者从中收益,本文试图尽可能少地使用数学知识,并在第一节对关键的数学知识进行回顾和介绍。
背景知识
概率: 概率通常与至少一个具有随机性的事件相关联。事件涵盖范围极广,比如扔骰子或者彩票抽奖。在以上实例中,事件的结果是随机的(无法在掷骰子前确定骰子掷出的结果),一个事件通常会有不同的结果,因此可以使用一个变量,来代表事件的某一个结果。而表示这些事件结果的变量称为随机变量。
我们经常对随机变量取某个值的概率感兴趣。例如,当我掷出一个均匀的六面体骰子时,它扔出3的概率是多少? “均匀”这个词在这里很重要,因为它表明骰子落在六个面中的任何一个上的概率是相等的。直觉上的答案是 1/6。那么该如何以数学形式来表示这个过程呢?首先,这里的随机变量代表掷骰子事件的结果。随机变量通常用大写字母表示,这里使用 X 。而某一事件(或者说随机变量)的概率通常使用字母 P 表示。因此,“当我掷出一个均匀的六面体骰子时,它扔出3的概率是多少?”在数学上的表示方式为“P(X=3)”。
边际概率: 如果 A 是一个事件,那么边际概率就是该事件发生的概率 P(A)。 示例:假设我们有一副传统扑克牌,边际概率的一个例子是从一副扑克牌中抽出的牌是红色的概率P(A=red) = 0.5
联合概率: 两个或多个事件相交的概率。它可以表示为维恩图上两个事件的圆圈的交点(如下图所示)。如果 A 和 B 是两个事件,则两个事件的联合概率写为 P(A ∩ B)。 示例:从一副牌中抽出的牌是红色且值为 4 的概率为 P(red and 4) = 2/52 = 1/26。
条件概率: 条件概率是在我们知道其他事件已经发生的情况下某些事件发生的概率。 如果 A 和 B 是两个事件,那么在 B 已经发生的情况下 A 发生的条件概率写为 P(A|B)。 例子:如果我们抽到一张红牌,一张牌是 4 的概率是 P(4|red) = 2/26 = 1/13。
乘法法则:
这个公式连接了上文所讲的三种概率。
注:对于两个事件A和B,联合概率和条件概率的区别在于:
- 联合概率表述事件A和事件B同时发生的概率,假设事件A和事件B分别代表掷两个不同的骰子,则联合概率表达的是:如果同时投掷两个骰子,骰子A掷出点数为x,并且骰子B掷出点数为y的概率
- 条件概率表述已知事件A的结果时,事件B的取值概率,假设事件A和事件B分别代表掷两个不同的骰子,则条件概率表达的是:如果先后投掷两个骰子,并且已知骰子A掷出点数为x,则骰子B掷出点数为y的概率
事件的独立性: 如果已知A事件的结果,对于B事件的任意结果发生的概率没有任何影响,则事件A、B是相互独立的。事件的相互独立性常常取决于对于事件本身的定义方式。例如:假设我们连续投掷两次骰子,事件A定义为第一次扔骰子的结果,B定义为第二次扔骰子的结果,则事件A和事件B是相互独立的。但如果我们把事件B定义为扔两次骰子的结果之和,则事件A的结果对事件B会产生影响,此时A和B不是相互独立的。
事件相互独立时的联合概率与条件概率:
当事件相互独立时,事件B的结果对事件A没有任何影响,因此当已知事件B时,事件A的条件概率为:
由概率的乘法法则可得,当事件独立时,联合概率只是事件边际概率的乘积:
A或者B发生的概率: 计算A和B发生的概率时,必须将个体概率相乘。但当计算A或B发生的概率时,需要加和单个概率并减去事件交集的概率。在数学上写为 。如之前的韦恩图所示:如果我们把A和B的范围加和,则A和B的交集范围就被加了两次。因此需要减去交集。
互斥事件: 当维恩图中的两个圆圈不重叠时,计算 A或者B 发生的概率就不需要减去事件的交集。此时这些事件是互斥的。即事件间的交集为零,数学上写为 。举个例子:假设我们掷一次骰子,事件A定义为骰子结果为5,B定义为骰子结果为6,我们想知道掷出 5 或 6 的概率。这两个事件是互斥的,因为投一次骰子不能同时掷出 5 和 6。因此,它们在维恩图中的圆圈不重叠。
似然: 似然表示的是基于观察的数据,取不同的参数θ时,概率模型以多大的可能性接近真实观察数据。或者说对于不同的参数值θ,被观察到的数据(即我们收集的数据集)在模型中出现的概率大小,就是似然。(观测样本的联合概率)
同样举个例子,我们扔10次硬币,但是我们并不知道硬币是否均匀,但是我们知道每次扔硬币得到的结果,而现在要根据结果反推出硬币的构造,即正反面的概率。假如我们观察到结果是10正0反,那么硬币可能两面都是正面,假如结果是7正3反,那么硬币可能不是均匀的,正面概率是0.7。似然的用途就是依据结果,反推原因。
(这里暂时没理解似然也没关系,在第三节还会说明似然是什么)
参数估计的最大似然方法
因为本文标题为概率机器学习,因此在讲述最大似然之前,需要给出概率视角下的机器学习的一些隐含假设:
- 对于一个机器学习模型,其有一个输入,也有一个输出,概率机器学习认为:和都是随机变量
- 为了建模和,需要计算出和的联合分布
- 本文以线性回归为例,在线性回归中,X是已知量,因此只需要计算出条件概率,这个条件概率的概率密度函数
什么是参数?
在概率视角下的机器学习中,我们认为数据都是来源于某一个概率分布,此时就会用模型来表达这个概率分布的具体形式。或者说,模型表示的是被我们所观察到的数据的生成过程。我们可以使用随机森林模型来分类客户是否可以取消服务订阅,或者我们可以使用线性模型来,根据依据公司每年在广告上的投入,预测公司将产生的收入。每个模型都包含自己的一组参数,这些参数唯一的确定模型的形式(或者说概率分布的形式)。
举个线性模型的例子
对于线性模型,我们可以将其写为 。 在这个例子中, 可以代表广告支出, 可以是产生的收入。 和 是该模型的参数。 这些参数的不同值将确定出不同的线性模型(见下图)。
因此,参数唯一的确定了模型。只有为参数选择特定值时,我们才能实例化的描述给定现象的模型。
注意!:实际上概率视角下的线性模型,是一个符合高斯分布的条件概率密度函数,这里的y=kx+b并不算是概率视角下的线性模型,但是为了方便读者理解参数,临时把它说成是这种形式!
直观理解最大似然估计
最大似然估计是一种确定模型参数值的方法。当参数等于该值时,我们所观察到的数据,被模型所产生的概率最大。
举个例子,我们手中有由10条数据构成的数据集,单个数据点可以表示某个学生回答特定考试问题所需的时间长度(以秒为单位)。这10个数据点如下图所示
对于这些数据,我们假设数据生成过程可以用高斯(正态)分布充分描述。对于上图而言,高斯分布较为合理,因为 10 个点中的大部分都聚集在中间,少数点分散在左右两侧。(通常,数据的概率特征需要观察极为大量的数据,仅使用 10 个数据点一般无法做出此种决定,但这里假设数据集总数为10条数据)。
高斯分布有 2 个参数。 均值 和标准差 。这些参数的不同值会导致不同的曲线。我们想知道哪条曲线最有可能产生我们观察到的数据点?。最大似然估计是一种方法,它会找到 和 的值,该值对应的曲线产生以上数据点的概率最大。
如上图所示,不同的参数产生不同的概率密度函数,而最能和我们的数据点对应上的是f1
最大似然估计的数学计算
在直观的理解完最大似然估计之后,本节讲解如何通过最大似然估计计算出最优参数值。
似然的计算
举个例子
假设有三个数据点,9,9.5,11,这三个点是从一个高斯本步骤抽样得到的,那么我们该如何利用最大似然估计计算高斯分布均值 和标准差 的值?
计算似然需要计算观察到的所有数据的总概率,即所有观察到的数据点的联合概率分布 。
根据背景知识中的乘法公式可知,这个联合概率分布需要计算大量的条件概率,导致极大的计算代价。因此,我们将在这里给出机器学习中最常用的一个假设。假设是每个数据点都是独立于其他数据点生成的。即每个数据点之间相互独立同分布。 这个假设可以大幅度减小计算代价。如果事件(即生成数据的过程)是独立的,则观察所有数据的总概率是单独观察每个数据点的乘积(即边际概率的乘积)。
(注:每一个数据点都对应着一个事件。)
从高斯分布生成的数据点 x 的概率密度由下式给出:
注意: 符号 中使用的分号是为了强调出现在它之后的符号是概率分布的参数。 所以它不应该与条件概率(通常用垂直线表示,例如 )混淆。
在例子中,三个数据点的联合概率密度为:
这个联合概率密度的值就叫做似然,如果和的值被确定,那么似然的值也就被确定了。这里再重复一遍似然的定义:似然函数是关于模型参数的函数,是描述观察到的真实数据在不同参数下发生的概率。
为什么要用最大似然?
常识告诉我们,概率越大的事情越容易发生,概率越小的事情越不容易发生。观测样本集(数据集)的发生概率为 , 越大, 我们就越容易见到我们现在看到的样本。既然现在这个样本集(数据集) 已经真实的发生了(被我们观测并收集到了),就可以认为这个样本集的发生概率是最大的。这样的话,使得 最大的 就是最优的参数。
计算的简化:对数似然替代原始似然
上面的概率表达式采用的是连乘的形式,所以常常通过取对数来简化计算。因为自然对数是单调递增函数。即如果 x 轴上的值增加,y 轴上的值也会增加(见下图)。单调递增的性质可以使得概率对数的最大值出现在与原始概率函数相同的点上。因此,我们可以使用更简单的对数似然而不是原始似然来计算最大似然函数所对应的参数值。
取对数后,上文中的公式转化为:
通过对化简后的表达式进行求导,可以计算出最大似然,当对数似然取最大值时,参数定然位于极值处,即似然函数对参数的导数值等于0。以为例:
当等式左边为0时,可以计算出。的值的计算过程相同。