机器学习算法背后的统计学原理丨 翻译征文丨雷锋字幕组

开发机器学习算法越来越容易。有几个高级库可供使用,比如 TensorFlow, PyTorch 以及 scikit-learn 。多亏了那些天才的开发人员的惊人努力,这些库非常易于使用,只需要对底层算法有一个肤浅的了解。然而,这是以深刻理解为代价的。如果没有适当的理论基础,人们很快就会被复杂的技术细节所淹没。

我的目标是展示出当我们有适当的视角时,如何用真正简单自然的想法来解释机器学习中看似晦涩难懂的方法。我们在机器学习中的数学工具就是概率论和统计学,它是预测模型的基础。使用概率论不仅仅是学术的培养,实际上,它可以使我们深入了解机器学习是如何工作的,进而可以改进算法超过先进水平。

在我们开始学习机器学习的理论基础之前,让我们先来看一个简单的问题!

模型拟合

假设我们有两个相互关联的数值,称为x和y。例如,x是房子面积,单位平方英尺,y是房子在该城市的市场价格。我们的目标是从x预测y。用数学术语来说,我们可以说是在寻找一个函数f(x),使得

与真实值尽可能接近。最简单的假设是模型是线性的,即 *f(x) = ax + b,其中a,b为常数。*令人惊讶的是,该模型非常适合于许多现实问题,而且它是更复杂模型(如神经网络)的基本组成部分。

我们的示例数据集如下所示。

假设我们的数据集由数据点和观测值组成

因为数据是有噪声的,所以不可能像这样用线性模型来拟合我们的数据,

我们是这么做的,确立一个某模型与数据拟合程度的衡量标准,并试图根据这一标准找到可能的最佳拟合形式。

通常,我们通过计算每个数据点的预测误差,然后对所有点的误差平均来作为衡量标准。误差越小,我们的模型就越好。最简单的方法是取预测值与真实值之差的平方。这被称作均方误差,定义如下:

最佳拟合结果是均方误差最小时的结果,或者用数学术语来说,

对于我们的具体数据集,拟合结果如下所示。

回归模型拟合

对于我们的目的来说,如何最小化这一点并不特别重要。对我们来说,重要的是如何解释这个模型,以及它传递了什么样的信息。只要看一眼,就可以看出有许多东西不见了。当然,数据显然遵循线性趋势,但是用我们的模型真的可以来描述这些数据吗?一个函数是确定的:你插入x,得到预测f(x)。然而,数据似乎含有一些噪声,显然我们的线性模型没有正确捕捉。

我们还能怎么尝试呢?一个显而易见的答案是尝试一个更复杂的函数,比如一个高阶多项式。用数学属于来说,我们要尝试的函数定义如下:

通过高阶多项式,希望能更准确地描述数据。不幸的是,事实并非如此。

图 用30次多项式拟合我们的数据集的结果

当我们试图暴力拟合数据,过分地增加模型的表现力时,我们看到,在某种意义上,情况更糟:我们的关注点没有得到解决,其他问题也被引入,比如模型在我们数据范围之外的疯狂表现。我们得从其他方面寻找解决办法。我们应该寻找一个模型来解释结果的概率,而不是寻找一个单一的预测值!这样,我们可以做出更明智的决定,比如计算风险。

概率论的语言

假设我有一枚硬币,在掷硬币时有1/2的概率出现正面,1/2的概率出现反面。如果我把硬币掷100次,我能得到多少次正面?你可能不假思索快速回答50,但现实并非如此简单。看,你可以得到从0到100任何次数的正面,但这些次数的可能性都不是相等的。一次实验你可能得到34,在下一次是52等等。正面的概率是1/2,这意味着如果你继续无限地抛硬币,正面出现的次数与所抛硬币次数的比例将越来越接近1/2。

仍然以抛硬币n次为例!假设X表示正面的次数。X是一个随机变量,我们不知道它的确切值,只知道它假设给定值的概率。X是k的概率用P(X=k)表示,P总是介于0和1之间的数字。而且,因为我们知道我们可以得到0,1,2,等等,直到n次正面,这些概率加起来就是1,也就是说,

每次实验都可以用一个n长的H(正面)和T(反面)序列来描述,为了计算给定k的确切概率,我们需要计算n次投掷中k次正面的方法有多少。这在数学上等同于从一组n个元素中选择k个元素的子集,可以按下面的公式计算有多少种方法:

因此,每种情况都有(1/2)^n的概率。(例如,考虑n=3。HTH这一种情况的概率为1/8,因为每次投掷本身有1/2的概率,而且每次投掷都是独立的。)所以我们得到下面的结论:

这一公式被称为实验的概率分布。(即掷n枚硬币,观察其中的正面向上的数量。)

总而言之,概率分布包含了关于实验结果的所有信息。上一节中的模型只给出了一个数字,但是,我们应该寻找概率分布才能做出明智的决策。

一般的伯努利分布和二项分布

这两个分布可以概括我们上面的两个例子。首先,假设我们扔了一个不均匀的硬币,也就是说,一个正面和反面概率不相等的硬币。正面向上的概率是p,和前面一样仍然用X表示正面的数量。(可以是0或1。)

被称为参数为p的伯努利分布,简称*Bernoulli(p)。继续思考,如果我们投掷这种不均匀的硬币N次,可以得到

这被称为参数为n和p的二项分布,或者简写为b(n,p)。实际上伯努利分布就是n=1时的二项分布。


图 投掷20枚硬币正面向上数量的概率分布

连续概率分布

在前面的抛硬币例子中,概率分布完全由所有可行k值的P(X=k)来描述,这个特定的随机变量只能假设整数作为其值,其数量也是有限可数的。这种随机变量称为离散变量。但我们之前估计房地产价格的案例呢?一般来说,随机变量也可以假设所有实数作为其值。在这种情况下,它们被称为连续的。假设X可以是介于0和1之间的任意随机数,而且概率相等。它的概率分布是什么?直觉上,我们认为对于0和1之间任意的固定值x有:

那么,我们如何描述这个分布呢?我们使用所谓的概率密度函数(简称PDF),它描述了X落入某一范围的概率,比如a≤X≤b。概率本身可以通过测量PDF曲线下a和b之间的面积来计算。比如,选择一个介于0和1之间的随机数,密度函数如下

注意,密度函数图下的总面积总是1,因为它表示所有结果的概率。


图 选择0-1之间一个随机数的概率密度函数

正态分布

一个非常重要的连续分布就是所谓的正态分布(或者称为高斯分布)。你肯定遇到过它,尽管你可能不知道它是正态分布。如果它的密度函数如下,我们则称X是均值为μ和方差为σ²的正态分布,或者简称为N(μ, σ²)

这在现实生活中经常出现,例如人们的身高往往会显示出这种分布。我们将在下文中多次遇到它。均值描述的是钟形曲线的中心。

从符号上看,N(μ, σ²)的概率密度函数PDF通常表示为N(x | μ, σ²)。接下来我们都会用这个。


图 均值为0的正态分布的PDF

条件概率

现在让我们考虑一个不同的例子。我们不掷硬币,而是用一个六面骰子掷。如果我们用X来表示投掷的结果,我们可以合理地假设

假设你想打个赌。由你的朋友掷骰子,如果结果小于或等于3,你就赢了。否则,你会损失相同数量的金额。很容易看出,默认情况下,你获胜的概率是1/2。然而,你的朋友在掷骰子后告诉你结果是偶数。你现在赢的机会有多大?直觉上,你现在的机会变小了,因为只有2分你才能赢,如果是4分或6分你就会输。因此,实验的附加信息改变了潜在的概率分布。

这个概念在数学上称为条件概率。假设有两个事件,AB。在我们的具体例子中,A 表示投掷的结果小于或等于3,而B 表示投掷的结果是偶数。事件A在事件B已经发生的条件下发生的概率称为在B的条件下A的概率 ,用P(A | B)表示,可用下式计算

在我们的例子中,P(A and B) = 1/6,而P(B) = 1/2,所以我们获胜的机会是P(A | B) = 1/3

机器学习的统计学基础

为了了解条件概率如何影响我们的机器学习问题,我们需要跳到另一个概念上。让我们再次回顾一下抛硬币的例子!这次硬币还是不均匀,所以正面的概率不是1/2。我们假设

其中p属于[0,1]。问题是,我们不知道它的确切值,我们只能从数据中猜测。换句话说,我们要估计它的概率分布。p是我们掷硬币实验中的一个参数。(为了清楚起见,我们这里有两个分布:一个描述抛硬币的结果,而第二个描述我们对给定硬币正面向上概率的看法。)

假设我们手里拿着那枚硬币,然后把它抛向空中十次,结果是这样

也就是说,三反七正。用概率的语言,让E来描述事件“十次有七次正面”。所以,我们想知道的是:

这被称为后验概率,因为它描述了我们在观察一些数据后对硬币的看法。注意,这是一个连续的概率分布,因为可以假设p是0到1之间的任何值。我们怎么计算这个?条件概率的一个基本性质在这里起到了重要作用。如果A和B是普通的事件,那么

换言之,以事件B为条件的事件A的概率可以用以事件A为条件的事件B的概率来表示,这就是贝叶斯(Bayes)定理,它同样适用于概率密度函数。这对我们有什么帮助呢?现在我们知道

这好极了。下面介绍这个公式中的三个部分。

1)P(E | p)被称为似然,它很容易计算出来。我们在上一节中这样做了。在刚才的七次正面的例子中,

也就是说,它们是成比例的,等于乘上一个常数。这个常数对我们来说并不重要,原因将在后面解释。

2)P(p)被称为先验概率,因为这是在我们观察到任何数据之前对硬币的认知。我们很合理地假设各种情况都是等可能的,所以

我们已经熟悉这个了。*
*

3)*P(E)不需要计算,*因为P(P | E)下的面积总是1。(在大多数情况下计算P(E),甚至是很困难的。)正因为这个原因,我们并不真正关心似然函数中的乘法常数。

由此,我们可以很容易地对p的概率分布给出一个很好的估计,它描述了一次抛硬币正面向上的概率。


图 抛硬币十次得到7个正面和3个反面后,p的后验分布曲线

最大似然估计

即使我们有一个概率分布,提供一个具体的数字作为我们的估计结果通常是有用的。在这种情况下,我们想要一个参数估计,我们的硬币出现正面的概率。虽然贝叶斯理论很容易解决投币问题,但无法进行分析计算。有人可能会问这样一个问题:鉴于我们观察到的结果,哪个参数最有可能?如果你仔细想想,这是用似然函数来描述的

其中E描述的是HHTHTHHHHT这一投掷的结果事件。我们通过将所有观察到的事件的概率相乘来计算它。

一般来说,我们有一系列观察事件

每次的观察结果以向量的形式表示如下

那么似然函数定义为:

这是关于参数θ的一个函数。θ表示概率分布的所有参数,因此它可以是一个标量甚至一个向量。在我们反复抛硬币的例子中,Y-s表示第i次抛硬币实验,y表示结果。这里,y定义为1代表正面,0代表反面。还要记住,一般来说,Y可以是离散的,但也可以是连续的。

直观地说,在似然函数取得其最大值的情况下的特定的θ值是我们参数估计的最佳选择。这种方法简称为极大似然估计(maximum likelihood estimation 简写 MLE)。用数学公式来表达,

在上面的七正三反的具体例子中,这个值是0.7。虽然最大似然估计不像完全的贝叶斯方法那样令人满意,但它通常是合理的。注意,当先验分布均匀时,MLE等价于通过最大化后验分布来估计参数

后者简称最大后验估计(maximum a posteriori estimation 简写为MAP)。

有了所有这些数学工具,我们准备重温最开始的回归问题的例子!

再看回归问题

简单来说,我们有观察结果

并且我们希望通过x去预测y。很显然,我们是要寻找一个函数 f(x) = ax + b使得

使预测结果尽可能接近真实值。

这次,让我们从概率的角度来看吧!我们有一系列数据

他们的概率分布是

对于每个数据,都有一个真实的观测值,

他们的概率分布是

可以合理地假设所有Y都可以建模为正态分布N(μ(x),σ(x)²)。为了简单起见,我们可以假设方差是常数,并且μ(x)=ax+b是一个线性函数。也就是说,我们尝试拟合这样一个模型:

根据我们所有的观察结果,似然函数可以写成

我们要最大化这个函数。这看起来很难,但有一个标准的数学技巧:函数最大化等价于最大化它的对数。(只要对数像这里一样定义正确。)所以我们这样计算

我们在隧道尽头看到了光明。第一项可以省略(因为它是一个常数),而最小化一个函数等同于最大化它的相反数。因此

它看起来很熟悉,这并不是偶然:右边的部分是均方误差!这说明正态分布的模型拟合的最大似然估计的结果就是我们之前做的线性回归的例子。但是有一个主要的区别:概率模型解释的远不止一个简单的线性函数。这只是冰山一角,有很多方法可以将这个简单的概率模型推广,以获得更我们的数据的拟合结果。一个明显的方法是将σ作为一个参数,并放弃常数假设。

分类问题

在结束之前,我们将详细了解分类问题,这是机器学习中的另一个主要问题。这里,我们看一个稍微不同的问题。我们的训练数据仍然表示为

此时,y是标签而不是实数,Y是一个离散的概率分布。我们以前的线性回归模型不能很好地捕捉到这个问题。此外,虽然当标签用整数编码时可以使用均方误差作为评估指标,但这是没有任何意义的。

为了便于说明,让我们考虑一个简单的一维二分类问题,它有两个类别,分别用0和1编码。

如果你熟悉这一类问题,你可能知道我们通常是去拟合这样的一个模型:

其中是著名的sigmoid函数。这个模型被称为逻辑斯蒂回归。其中的线性函数,试图使其认为属于第一类的x转换为正值,而将另一类别的x转换为负值。然后,sigmoid函数将这些实数转换成概率。ax+b越高,其sigmoid值越接近于1;同样,ax+b越低,其sigmoid值越接近于0。因此,f(x)有效地对x属于1类的概率进行了建模。

拟合这一模型的过程是最小化交叉熵损失,定义如下

这个损失函数是什么意思呢?在一开始的回归示例中,均方误差直观清晰。而交叉熵不太直观。你有没有想过为什么交叉熵损失是这样定义的?只看这个公式,几乎不可能搞清楚。

如果我们从前面几节中获得的观点来看待分类问题,这个二元分类问题可以通过为每个x拟合一个Bernoulli分布来解决,也就是我们对数据这样建模:

那么似然函数就写成:

两边取对数,可以得到:

这是交叉熵损失的相反数!突然,这个神秘的含有对数的公式有了明确的解释。最小化交叉熵损失就是用伯努利分布对我们的数据进行建模并进行最大似然估计。

总结

当使用机器学习算法来处理分类和回归等问题时,我们通常会用我们的口语来表述问题,比如“明天这只股票的价格是多少?”,“这是负面评论还是正面评论?”等等。在这里,我的目的是展示这些算法实际上可以做很多事情:它们提供了对潜在问题的深入统计理解。算法不仅仅简单地估计明天的股价,而是能够提供比简单预测多得多的信息。我们已经看到,机器学习的基本对象,如线性回归、logistic回归的二分类、均方误差和交叉熵损失,都是在统计的领域内产生的非常自然的思想。

管中窥豹,可见一斑。虽然我们只介绍了最基本的模型,但即使是最先进的深层神经网络也建立在这些基础上。如果你已经理解了这些基础知识,你就向机器学习迈了一大步。


原文链接://www.yanxishe.com/TextTranslation/2583,来自雷锋字幕组提供的选题