本文最初发表在 Medium 博客,经原作者 Ritwik Ghosh 授权,InfoQ 中文站翻译并分享。

导读:机器学习集合了统计学、概率论、计算机科学、数学算法等多方面交叉研究,即便你对机器学习的应用炉火纯青,但对这些技术若没有全面的数学理解的话,极有可能会出现应用失误。数学在机器学习中非常重要,不论是在算法上理解模型代码,还是在工程上构建系统,数学都必不可少。可以说,数学决定了开发人员的上限。本文作者为我们阐述了数学在机器学习中的角色,以飨有志于机器学习的开发人员。

Josh Wills 曾说过:“数据科学家是这样的人:比任何软件工程师更擅长统计学,比任何统计学家更擅长软件工程。”

在当今世界,只要你随便向一个技术人员打听,他们都会告诉你,这个行业最热门的工作都与数据和机器学习有关。也难怪,这难免引起了很多开发人员和同属该行业的公司的兴趣。在机器学习和数据科学方面,已经有了大量的资源和支持,统计学工具如 R 等编程语言和各种编程语言的库也在这些努力中诞生了。

现在,有志于机器学习的人不计其数。然而,市场上对机器学习工程师的需求仍然很大,因为最终谋求这一职位的人并不多。很多人放弃的部分原因是机器学习工程师职位背后的数学知识令人望而生畏。

尽管机器学习的普及已经促使 Python 和 R 产生了许多易于使用并得到广泛支持的库,如 Scikit-learn、TensorFlow 和 OpenCV 这样的库,这些库确实让每个人的工作变得更容易,因为它们提供了某种机器学习的捷径,似乎绕过了这类操作所需算法背后的数学。然而,机器学习背后的数学原理仍然基本不变。

让我们来讨论机器学习中使用的数学主要部分

机器学习的概念主要得益于这四个数学分支: 线性代数微积分统计学概率论 。在本文中,我们将大致了解这些数学分支在机器学习模型的生命周期中应用的原因和时机。

线性代数

机器学习主要依赖于线性代数,线性代数用于求解线性方程组。它是利用矩阵和矩阵运算来完成的。任何机器学习模型的数据通常以向量和矩阵的形式存储,其中的值被认为是线性方程组的系数。

线性代数

矩阵运算是首选方法,因为机器学习一般会处理大量数据,因此,通过各种矩阵运算来进行标量运算,如标量乘法和除法,以及向量之间的运算,都比较容易应用,而且速度快,方便快捷。

线性代数的知识对于决定数据应如何存储在矩阵中是很重要的。例如,一张图片可以存储在三个矩阵中,每个元素分别包含了矩阵中每个像素的红、绿、蓝三色值的强度。现在,由于使用了矩阵来应用线性代数,对这些像素进行操作变得非常容易。

微积分

微积分用来帮助机器学习算法提高预测的准确性。这是通过算法的优化过程来实现的。这是在微分的帮助下完成的。利用微分,我们可以通过考虑函数的梯度来求函数的极值。当一个函数有多个参数决定机器学习模型的预测结果时,就会用到多元微积分。它也有助于神经网络模型,在神经网络模型中,微分用来计算反向传播误差。

梯度下降法

此外,在深度学习模型中,积分可以用来计算损失函数,还可以在连续值的概率分布中得出特定变量的期望值。

例如,经典的梯度下降法问题就是优化并找出球在碗中滚动的最低位置。这个问题可以通过简单的微分来解决。

概率论

当一个算法没有结论性的结果而只有一个概率分布时,我们就用概率来进行决策。算法可以输出值的范围以及这些值应为预期值或为真值的概率。这就是概率论的作用,决策是基于对变量的期望值的概率做出的。任何算法都不可能给出一个完全盲目且可靠的输出。因此,概率是用来决定灰色区域的结果。

例如,如果我们在一个样本上找出受帕金森氏病影响的人数和年龄,我们就会得到帕金森氏病患者年龄分布概率。现在,如果要求我们选择受影响最大的年龄,我们可以取一个年龄区间,在这个年龄区间中,受疾病影响的可能性最大。这种连续分布的决策过程就需要概率论。

统计学

统计学是用来从数据中得出结论的。各种统计学方法可以应用到一个数据上,得出不同的结论,从而更好地理解数据。这种理解可以是为了找出数据的均值、极值、范围,也可以是比较复杂的结论,如数据中的离群值作弊,数据给出的函数的阶数(degree),数据的各种参数之间的相关系数,某个参数与算法的预期输出的相关性等等。还有一些假设检验,如卡方检验(Chi-squared test)、z 检验、p 检验、方差分析等,这些检验是为了检验我们可能假设的有效性,并对给定的数据进行检验。

现在让我们考虑一个简单易懂的例子,它大致包括了所有这些数学分支,这样,我们就能够对它们的实现有一个大致的了解。

一个典型的例子是依赖于机器学习的人脸识别算法。

  • 示例数据集中的图像像素以向量的形式存储在矩阵中。这利用到了 线性代数 。如果拍摄彩色图像的话,那么根据使用的颜色方案使用若干个矩阵,并将每个像素的强度存储在这些向量中。这使得处理数据变得容易,并且便于对它们进行向量操作,这里的向量操作是将现有的人脸与给定图片中的人脸进行比较。
  • 这里要用到 微积分 来解决当前误差的梯度。绘制出人脸的定义(存储为向量)与给定图片之间的误差梯度。如果梯度超过容许限度,则通过更新其存储的向量的悉数来更新人脸的定义。
  • 概率论 是通过计算给定图片中存在人脸的概率判定给定图片是否存在人脸。任何算法都不能给出绝对正确、百分之百可靠的输出。因此,应使用概率来决定结果。概率将输入与算法的容限因子进行比较。
  • 统计学贯穿于算法所经历的各个过程,如计算图像的各种参数与期望的结果之间的相关性。统计学也被用来检验假设,该假设是给定图像存在人脸,并且检验结果显示虚假设(null hypotheses)或备择假设(alternative hypotheses)是否被接受。

因此,我们可以看到,机器学习的每一点都严重依赖于数学。这就是为什么机器学习工程师需要对上问提到的数学部分有很强的掌握。

作者介绍:

Ritwik Ghosh,博客写手,专注科技行业最热门话题。

原文链接:

https://medium.com/analytics-vidhya/role-of-mathematics-in-machine-learning-f070e7cf6128

相关文章