专栏名称: 数盟
数盟(数据科学家联盟)隶属于北京数盟科技有限公司,数盟致力于成为培养与发现“数据科学家”的黄埔军校。 数盟服务包括:线下活动、大数据培训。 官网:http://dataunion.org,合作:[email protected]
目录
相关文章推荐
软件定义世界(SDX)  ·  工业大模型的演进及落地方向 ·  2 天前  
数据派THU  ·  成功率可达100%,药物开发公司Cellar ... ·  2 天前  
数据派THU  ·  AAAI2025|只根据题目和摘要就能预测论 ... ·  2 天前  
赛立信媒介研究  ·  【融媒数据】2024年12月国家级广播频率微 ... ·  2 天前  
赛立信媒介研究  ·  【融媒数据】2024年12月国家级广播频率微 ... ·  2 天前  
大数据分析和人工智能  ·  用DeepSeek帮我接财神 ·  6 天前  
51好读  ›  专栏  ›  数盟

从最大似然估计开始,你需要打下的机器学习基石

数盟  · 公众号  · 大数据  · 2018-01-17 22:00

正文

概率论是机器学习与深度学习的基础知识,很多形式化的分析都是以概率的形式进行讨论。而这些讨论或多或少都离不开最大似然估计,因为它是参数估计的基础之一,也是构建模型的基石。在本文中,我们从最大似然估计到贝叶斯推理详细地讨论了机器学习的概率论基石,并希望能为读者的预习与复习提供优秀的参考资源。

什么是参数?

在机器学习中,我们经常使用一个模型来描述生成观察数据的过程。例如,我们可以使用一个随机森林模型来分类客户是否会取消订阅服务(称为流失建模),或者我们可以用线性模型根据公司的广告支出来预测公司的收入(这是一个线性回归的例子)。每个模型都包含自己的一组参数,这些参数最终定义了模型本身。

我们可以把线性模型写成 y = mx + c 的形式。在广告预测收入的例子中,x 可以表示广告支出,y 是产生的收入。m 和 c 则是这个模型的参数。这些参数的不同值将在坐标平面上给出不同的直线(见下图)。

参数值不同的三个线性模型。

因此,参数为模型定义了一个蓝图。只有将参数选定为特定值时,才会给出一个描述给定现象的模型实例。

最大似然估计的直观解释

最大似然估计是一种确定模型参数值的方法。确定参数值的过程,是找到能最大化模型产生真实观察数据可能性的那一组参数。

上述的定义可能听起来还是有点模糊,那么让我们通过一个例子来帮助理解。

假设我们从某个过程中观察了 10 个数据点。例如,每个数据点可以代表一个学生回答特定考试问题的时间长度(以秒为单位)。这 10 个数据点如下图所示:

我们观察到的 10 个(假设的)数据点。

我们首先要决定哪个模型最适合描述生成数据的过程,这一步至关重要。至少,我们应该对使用哪种模型有一个不错的想法。这个判断通常来自于一些领域内专家,但我们不在这里讨论这个问题。

对于这些数据,我们假设数据生成过程可以用高斯分布(正态分布)进行充分描述。对以上数值目测一番就可以得知,高斯分布是合理的,因为这 10 个点的大部分都集中在中间,而左边和右边的点都很少。(因为我们只使用了 10 个数据点,做出这样的草率决定是不明智的,但考虑到我是用某个确定的分布函数生成这些数据点,我们就凑合着用吧)。

回想一下高斯分布有两个参数:均值μ和标准差σ。这些参数的不同值会对应不同的曲线(就像上面的直线一样)。我们想知道「哪条曲线最可能产生我们观察到的数据点」?(见下图)。用最大似然估计法,我们会找到与数据拟合得最好的 μ、σ 的值。

10 个数据点和可能得出这些数据的高斯分布。f_1 是均值为 10、方差为 2.25(方差等于标准偏差的平方)的正态分布,也可以表示为 f_1∼N(10, 2.25)。其它曲线为 f_2∼N(10, 9)、f_3∼N(10, 0.25)、f_4∼N(8,2.25)。最大似然的目标是找到最有可能生成已知观察数据分布的参数值。

我生成这 10 个数据的真实分布是 f_1~N(10, 2.25),也就是上图中的蓝色曲线。

计算最大似然估计

现在我们对最大似然估计有了直观的理解,我们可以继续学习如何计算参数值了。我们找到的参数值被称为最大似然估计(maximum likelihood estimates,MLE)。

我们同样将用一个例子来演示这个过程。假设这次有三个数据点,我们假设它们是从一个被高斯分布充分描述的过程生成的。这些点是 9、9.5 和 11。那么如何用最大似然估计逼近这个高斯分布的参数 μ 和 σ 呢?

我们要计算的是同时观察到所有这些数据的概率,也就是所有观测数据点的联合概率分布。因此,我们需要计算一些可能很难算出来的条件概率。我们将在这里做出第一个假设,假设每个数据点都是独立于其他数据点生成的。这个假设能让计算更容易些。如果事件(即生成数据的过程)是独立的,那么观察所有数据的总概率就是单独观察到每个数据点的概率的乘积(即边缘概率的乘积)。

从高斯分布中生成的单个数据点 x 的(边缘)概率是:

在表达式 P(x; μ, σ) 中的分号是为了强调在分号后的符号都是概率分布的参数。所以千万不要把这个与条件概率相混淆。条件概率一般会用竖线来表达,比如说 P(A| B)。

在我们的例子中,同时观察到这三个数据点的总(联合)概率是:

我们只要找出能够让上述表达式最大化的μ、σ值就可以了。

如果你在数学课上学过微积分,那么你可能会意识到有一种技巧可以帮助我们找到函数的最大值(和最小值)。我们所要做的就是求出函数的导数,把导函数设为零然后重新变换方程,使其参数成为方程的未知数。然后就这样,我们将得到参数的 MLE 值。我将串讲一下这些步骤,但我假设读者知道如何对常用函数进行微分。

对数似然函数

上述的总概率表达式实际上是很难微分,所以它几乎总是通过对表达式取自然对数进行简化。这完全没问题,因为自然对数是一个单调递增的函数。这意味着,如果 x 轴上的值增加,y 轴上的值也会增加(见下图)。这一点很重要,因为它确保了概率的最大对数值出现在与原始概率函数相同的点上。因此,我们可以用更简单的对数概率来代替原来的概率。

原函数的单调性,左边是 y = x,右边是(自然)对数函数 y = ln(x)。

这是一个非单调函数的例子,因为从左至右 f(x) 会上升,然后下降,然后又上升。

取初始表达式的对数能得到:

我们可以用对数的运算法则再一次简化这个表达式,得到:

这个表达式可以通过求导得到最大值。在这个例子中,我们要找到平均值 μ。为此我们对函数求 μ 的偏导数,得到:

最后,设置等式的左边为零,然后以μ为未知数整理式子,可以得到:

这样我们就得到了 μ 的最大似然估计。我们可以用同样的方法得到 σ 的最大似然估计,这留给有兴趣的读者自己练习。

最大似然估计小结

最大似然估计总是能精确地得到解吗?

简单来说,不能。更有可能的是,在真实的场景中,对数似然函数的导数仍然是难以解析的(也就是说,很难甚至不可能人工对函数求微分)。因此,一般采用期望最大化(EM)算法等迭代方法为参数估计找到数值解,但总体思路还是一样的。

为什么叫「最大似然(最大可能性)」,而不是「最大概率」呢?

好吧,这只是统计学家们卖弄学问(但也是有充分的理由)。大多数人倾向于混用「概率」和「似然度」这两个名词,但统计学家和概率理论家都会区分这两个概念。通过观察这个等式,我们可以更好地明确这种混淆的原因。

这两个表达式是相等的!所以这是什么意思?我们先来定义 P(data; μ, σ) 它的意思是「在模型参数μ、σ条件下,观察到数据 data 的概率」。值得注意的是,我们可以将其推广到任意数量的参数和任何分布。

另一方面,L(μ, σ; data) 的意思是「我们在观察到一组数据 data 之后,参数 μ、σ 取特定的值的似然度。」

上面的公式表示,给定参数后数据的概率等于给定数据后参数的似然度。但是,尽管这两个值是相等的,但是似然度和概率从根本上是提出了两个不同的问题——一个是关于数据的,另一个是关于参数值的。这就是为什么这种方法被称为最大似然法(极大可能性),而不是最大概率。

什么时候最小二乘参数估计和最大似然估计结果相同?

最小二乘法是另一种常用的机器学习模型参数估计方法。结果表明,当模型向上述例子中一样被假设为高斯分布时,MLE 的估计等价于最小二乘法。

直觉上,我们可以通过理解两种方法的目的来解释这两种方法之间的联系。对于最小二乘参数估计,我们想要找到最小化数据点和回归线之间距离平方之和的直线(见下图)。在最大似然估计中,我们想要最大化数据同时出现的总概率。当待求分布被假设为高斯分布时,最大概率会在数据点接近平均值时找到。由于高斯分布是对称的,这等价于最小化数据点与平均值之间的距离。

有随机高斯噪声的回归线

上一部分讨论了机器学习和统计模型中参数估计的最大似然法。在下文我们将讨论贝叶斯推理的参数估计,并解释该方法如何可作为最大似然法的推广,以及两者等价的条件。

阅读本文需要理解一些基本的概率论知识,例如边缘概率和条件概率。此外,了解高斯分布有助于理解,但并不是必要的。

贝叶斯定理

在介绍贝叶斯推理之前,理解贝叶斯定理是很有必要的。贝叶斯定理的意义在于使我们能利用已有的知识或信念(通常称为先验的)帮助计算相关事件的概率。例如,如果想知道在炎热和晴朗的天气中卖出冰淇淋的概率,贝叶斯定理可以使用「在其它类型天气中可能卖出冰淇淋数量」的先验知识。

数学定义

贝叶斯定理的数学定义如下:

其中,A 和 B 是事件,P(A|B) 是给定事件 B 发生时,事件 A 发生的条件概率,P(B|A) 同理。P(A) 和 P(B) 分别是事件 A 和事件 B 的边缘概率。

示例

假定一副扑克牌里有 52 张牌,其中 26 张是红色的,26 张是黑色的。那么当牌是红色的时候,牌上数字为 4 的概率是多少?

我们将牌为数字 4 设为事件 A,将牌为红色设为事件 B。因此我们需要计算的概率是 P(A|B)=P(4|red),接下来,我们使用贝叶斯定理计算这个概率值:

1. P(B|A) = P(red|4) = 1/2

2. P(A) = P(4) = 4/52 = 1/13

3. P(B) = P(red) = 1/2

然后根据贝叶斯定理可得到:P(4|red)=P(red|4)·P(4)/P(red)=1/13。

为什么贝叶斯定理能结合先验信念?

仅仅看数学公式很难理解这一点。我们将再次借用冰淇淋和天气的例子。

令 A 为卖出冰淇淋的事件,B 为天气的事件。我们的问题是「给定天气的类型,卖出冰淇淋的概率是多少?」用数学符号表示为 P(A=ice cream sale | B=type of weather)。

贝叶斯定理右边的 P(A) 被称为先验概率。在我们的例子中即 P(A = ice cream sale) 是卖出冰淇淋的边缘概率(其中天气是任何类型)。一般而言,这个概率都是已知的,因此其被称为先验概率。例如我通过查看数据了解到 100 个人中有 30 个买了冰淇淋,因此 P(A = ice cream sale)=30/100=0.3,而这都是在了解任何天气的信息之前知道的。

注意:先验知识本身并不是完全客观的,可能带有主观成分,甚至是完全的猜测。而这也会对最终的条件概率计算产生影响,我将在后面解释。

贝叶斯推理

定义

首先,(统计)推理是从数据中推导群体分布或概率分布的性质的过程。最大似然法也是同样的,如可以通过一系列的观察数据点确定平均值的最大似然估计。

因此,贝叶斯推理不过是利用贝叶斯定理从数据中推导群体分布或概率分布的性质的过程。

使用贝叶斯定理处理数据分布

以上例子使用的都是离散概率,有时可能需要使用连续的概率分布。即卖出冰淇淋的概率可能不只是 0.3,还可能是 0.25 或 0.4 以及其它任何可能值,每个概率对应一个先验信念,因而是一个函数 f(x),如下图所示。该分布被称为先验分布(prior distribution)。

上图中的两个分布曲线都可以作为上述例子的先验分布,其中两者的峰值都在 x=0.3 处。在 x≠0.3 处,f≠0,意味着我们并不完全确定 0.3 就是卖出冰淇淋的真实概率。蓝线表示先验概率的值更可能在 0-0.5 之间,而黄线表示先验概率可能在 0-1 之间的任何值。相对而言,黄线表示的先验分布比蓝线的「更加不确定」。

在处理模型的时候,大部分都需要用到概率分布的形式。

贝叶斯定理的模型形式

模型形式的贝叶斯定理将使用不同的数学符号。

我们将用Θ取代事件 A。Θ是我们感兴趣的事件,它代表了参数的集合。因此如果要估计高斯分布的参数值,那么Θ代表了平均值μ和标准差σ,用数学形式表示为Θ = {μ, σ}。

我们用 data 或 y={y1, y2, …, yn} 取代事件 B,它代表了观察数据的集合。

其中 P(Θ) 是先验分布,它代表了我们相信的参数值分布,和上述例子中代表卖出冰淇淋的概率分布类似。等式左边的 P(Θ|data) 称为后验分布,它代表利用观察数据计算了等式右边之后的参数值分布。而 P(data| Θ) 和似然度分布类似。

因此我们可以使用 P(data|Θ) 更新先验信度以计算参数的后验分布。

等等,为什么忽略了 P(data)?

因为我们只对参数的分布感兴趣,而 P(data) 对此并没有任何参考价值。而 P(data) 的真正重要性在于它是一个归一化常数,它确保了计算得到的后验分布的总和等于 1。

在某些情况下,我们并不关心归一化,因此可以将贝叶斯定理写成这样的形式:

其中 ∝ 表示符号左边正比于符号右边的表达式。

贝叶斯推断示例

现在我们来展示一个贝叶斯推断的示例。该示例要算出氢键键长。你无需知道什么是氢键(hydrogen bond),我只是用它举例。

我用上图因为它有助于拆分密集文本,且与我们要展示的示例有某种关联。不要担心,无需理解上图也可以理解贝叶斯推断。

假设氢键是 3.2Å—4.0Å。该信息将构成我的先验知识。就概率分布而言,我将将其形式化为均值 μ = 3.6Å、标准差 σ = 0.2Å 的高斯分布(见下图)。







请到「今天看啥」查看全文