Press "Enter" to skip to content

微积分、线性代数、概率论,这里有份超详细的ML数学路线图

本站内容均来自兴趣收集,如不慎侵害的您的相关权益,请留言告知,我们将尽快删除.谢谢.

 

机器学习算法背后的数学知识你了解吗?在构建模型的过程中,如果想超越其基准性能,那幺熟悉基本细节可能会大有帮助,尤其是在想要打破 SOTA 性能时,尤其如此。

 

机器学习背后的原理往往涉及高等数学。例如, 随机梯度下降 算法建立在多变量微积分和概率论的基础上。因此掌握基础的数学理论对于理解机器学习模型很重要。但如果你是没有数学基础的初学者,这里有一份学习路线图,带你从零开始深入理解神经网络的数学原理。

 

大多数机器学习都建立在三种数学理论的基础上:线性代数、微积分和概率论,其中概率论的理论又基于线性代数和微积分。

 

 

微积分

 

微积分包括函数的微分和积分。神经网络本质上是一个可微函数,因此微积分是训练神经网络的基本工具。

 

首先,函数的导数定义如下

 

 

在极限定理中,这也是点 x 处切线的斜率。下图说明了这个概念:

 

 

将函数的导数可视化。

 

微分可以用来优化函数:导数在局部极大值和极小值处为零。(也有例外,例如:f(x) = x³,x=0),导数为零的点称为临界点。临界点是最小值还是最大值可以通过查看二阶导数来确定:

 

 

求导存在一些基本法则,其中最重要的可能是链式求导法则:

 

 

上式告诉我们如何计算复合函数的导数。

 

微分和积分互为逆运算,这是因为:

 

 

它适用于任何可积函数 f(x)。函数的积分也可以看作是曲线下的有符号面积。例如:

 

 

因为当函数是负的时候,这里的面积也有一个负号:

 

 

在 -π到π的区间内,正弦函数曲线下的有符号面积。

 

推荐一些比较好的学习资源,麻省理工学院的单变量微积分课程和 Gilbert Strang 的教科书。

 

MIT 课程链接:https://www.youtube.com/playlist?list=PL590CCC2BC5AF3BC1

 

教科书链接:https://ocw.mit.edu/resources/res-18-001-calculus-online-textbook-spring-2005/textbook/

 

 

线性代数

 

神经网络本质上是函数,它是用微积分工具训练的。然而,又涉及线性代数,如矩阵乘法。线性代数是一门涉及机器学习许多方面的庞大学科,因此这将是一个重要的部分。

 

向量空间

 

为了更好地理解线性代数,建议从向量空间开始。首先介绍一个特例,把平面上的每个点看作一个元组:

 

 

这些本质上是从零指向(x₁,x2)的向量。向量之间可以相加,向量也可与标量相乘:

 

 

这是向量空间的原型模型。一般来说,如果可以将向量相加并将向量与实数相乘,那幺这组向量 V 就是实数上的向量空间,那幺以下属性成立:

 

 

这些保证了向量可以相加和缩放。当考虑向量空间时,如果你在心里把它们建模为 R^2 会很有帮助。

 

范数空间

 

如果你很了解向量空间,下一步就是理解怎样测量向量的大小。在默认情况下,向量空间本身并没有提供这样的工具。但我们有:

 

 

这是一种特殊的范数,通常,如果存在函数,则向量空间 V 是范数的:

 

 

范数为:

 

 

但这是一个简单而基本的概念,有很多范数存在,但最重要的是 p范数家族:

 

 

当 p=2 时,我们得到上述特例以及最高范数。

 

 

有时,例如对于 p = 2,范数来自所谓的内积,即双线性函数。

 

 

因此:

 

 

具有内积的向量空间称为内积空间。经典的是欧几里得积。

 

 

每一个内积都可以变成一个范数。

 

 

当两个向量的内积为零时,这两个向量彼此正交。

 

基正交 / 正交基

 

虽然向量空间是无穷的(在本文的例子中),你可以找到一个有限的向量集,用来表示空间中的所有向量。例如,在平面上,我们有:

 

 

其中 e1,e2 函数如下

 

 

这是基和正交基的一个特例。一般来说,基(basis)是向量的最小集合:

 

 

它们的线性组合跨越了向量空间:

 

 

任何向量空间都存在一个基(它可能不是一个有限集,但这里不必关心)。毫无疑问,在讨论线性空间时,基大大简化了问题。

 

当基中的向量相互正交时,我们称之为正交基(orthogonal basis)。如果每个正交向量的范数在正交基础上均为 1,则我们说它是正交的。

 

线性变换

 

与向量空间非常相关的是线性变换(linear transformation)。如果你之前了解神经网络,就应该知道其基本的构建基块是以下形式的层:

 

 

其中,A 为矩阵,b 和 x 为向量,σ为 sigmoid (或是其他激活函数)。Ax 是线性变换的一部分,则函数:

 

 

是向量空间 V 和 W 之间的线性变换

 

 

对于 V 中的所有 x、y 值都成立,而且都是实数。

 

矩阵及其运算

 

矩阵最重要的运算是矩阵乘积。通常, A、B 以及乘积 AB 表示为:

 

 

 

下图演示了计算过程:

 

 

矩阵乘法是线性变换的组合。如果你想了解更多,这里有一篇很棒的文章:https://towardsdatascience.com/why-is-linear-algebra-taught-so-badly-5c215710ca2c

 

 

决定因素

 

行列式是线性代数中最具挑战性的概念之一。

 

总而言之,矩阵的行列式描述了在相应的线性变换下,对象的体积是如何缩放的。如果变换改变方向,行列式的符号为负。

 

特征值、特征向量和矩阵分解

 

标准的线性代数课程通常以特征值 / 特征向量和一些特殊的矩阵分解(如奇异值分解)结束。假设我们有一个矩阵 A,并且如果有一个向量 x(称为特征向量),那幺λ就是矩阵 A 的特征值:

 

 

换句话说,由 A 表示的线性变换对向量 x 进行一个λ缩放,这个概念在线性代数中起着重要作用(实际上在广泛使用线性代数的每个领域都是如此)。

 

你需要熟悉矩阵分解,从计算的角度来看,对角矩阵是最好的选择,如果一个线性变换有一个对角矩阵,那幺计算它在任意向量上的值是很简单的。

 

 

大多数特殊形式的目的是将矩阵 A 分解为矩阵乘积,矩阵分解后最好有一个是对角矩阵。奇异值分解(SVD),是指有一个特殊的矩阵 U 和一个对角矩阵Σ,使得:

 

 

U 和 V 是酉矩阵,是一个特殊的矩阵族。奇异值分解(SVD)也被用来进行主成分分析,这是最简单和最着名的降维方法之一。

 

线性代数有许多教授方法,本文列出的学习路径是受 Sheldon Axler 教材《Linear Algebra Done Right》的启发。对于在线讲座,MIT 的网络公开课值得推荐。

 

Sheldon Axler 的教材地址:http://linear.axler.net/

 

MIT 的网络公开课地址:https://www.youtube.com/playlist?list=PL49CF3715CB9EF31D

 

 

多变量运算

 

多变量运算中将线性代数和微积分结合在一起,为训练神经网络的主要工具奠定了基础。从数学上讲,神经网络只是多个变量的函数(尽管变量数量可达数百万)。

 

与单变量运算相似,两个重点是微分和积分。假设存在映射:

 

 

将向量映射到实数。在二维(即 n=2)的情况下,可以将其图象想象为一个曲面(由于人类生活在三维世界,因此很难将具有两个以上变量的函数可视化)。

 

 

两变量的函数图像。

 

多变量微分

 

在单变量中,导数是切线的斜率。那幺在此应该如何定义切线呢?表面上的一个点处不只有一条切线,而是多条。这些切线中有两条特殊的切线:分别为平行于 x-z 平面的切线和平行于 y-z 平面的切线。

 

这两条切线的斜率由偏导数决定,如下:

 

 

这些特殊方向的切线横跨切平面。

 

 

切平面。

 

 

另一个特殊的方向是梯度方向:

 

 

梯度始终指向增加最快的方向,因此沿这个方向前进一小步,高度上的增加相对于其他方向是最大的。这就是梯度下降的基本思想,它是让函数最大化的算法。其步骤如下:

 

 

计算当前位置 x_0 处的梯度。

 

在梯度方向上走一小步即可到达点 x_1(步长称为学习率)。

 

返回步骤 1,重复该过程,直至收敛为止。

 

 

当然,这种算法也存在一些缺陷,多年来这些缺陷也得到了一些改善。基于现代梯度下降的优化器采用了许多技巧,例如自适应步长、动量等。

 

在实践中计算梯度是一件很困难的事,函数经常由其他函数的组成部分构成。例如,线性层:

 

 

其中 A 是矩阵,b 和 x 是矢量,σ是 sigmoid 函数(当然还有其他激活函数)。如何计算梯度?

 

 

写成如下的矢量 – 标量函数:

 

 

g 的梯度由矩阵定义,该矩阵的第 k 行是第 k 个分量的梯度

 

 

该矩阵被称为 g 的总导数。在该例中

 

 

包含两个函数

 

 

 

 

定义中用到了单变量 sigmoid 分量。将函数进一步分解为从 n 维向量空间映射到实数空间的 m 个函数:

 

 

其中:

 

 

如果计算总导数,则会看到:

 

 

这是多元函数的链式规则,具有通用性。没有它就没有简单的方法来计算神经网络的梯度。而神经网络是许多函数的组合。

 

高阶导数

 

与单变量的情况类似,梯度和导数在确定空间中的给定点是局部极小值还是极大值方面(或者两者都不是)也起作用。

 

举一个具体的例子,训练神经网络等效于最小化参数训练数据上的损失函数。这就是找到最佳参数配置 w 的目的:

 

 

其中:

 

 

分别是神经网络和损失函数。

 

对于 n 个变量的通用可微分矢量 – 标量函数,存在 n^2 个二阶导数。形成 Hessian 矩阵。

 

 

在多变量的情况下,Hessian 的行列式充当二阶导数的角色。类似地,它还可以用来判断临界点(即所有导数均为零的情况)是最小值、最大值、鞍点中的哪一种。

 

关于多元微积分有很多很棒的在线课程。课程地址:

 

https://www.youtube.com/playlist?list=PLSQl0a2vh4HC5feHa6Rc5c0wbRTx56nF7,

 

https://www.youtube.com/playlist?list=PL4C4C8A7D06566F38。

 

现在我们准备开始最后一个主题:概率论!

 

 

概率论

 

概率论是将机率数学化的学科,它是所有科学领域的理论基础。

 

假设掷硬币,有 50%的概率(或 0.5 的概率)为正面。重复实验 10 次后,得到多少个正面?如果你回答了 5,你就错了。正面概率为 0.5 并不能保证每两次投掷都有一面是正面。相反,这意味着如果你重复实验 n 次,其中 n 是一个非常大的数字,那幺正面的数量将非常接近 n/2。

 

为了更好的掌握概率论,推荐一篇文章:https://towardsdatascience.com/the-mathematical-foundations-of-probability-beb8d8426651

 

 

除了基础知识之外,你还需要了解一些高阶知识,首先是期望值和熵。

 

期望值

 

假设你和朋友玩游戏。你掷一个经典的六边形骰子,如果结果是 1 或 2,你将赢得 300 美元。否则,你就输 200 美元。如果你玩这个游戏的时间够长,你每轮的平均收入是多少?你应该玩这个游戏吗?

 

那幺,你有 1/3 的概率赢 300 美元,2/3 的概率输 200 美元。也就是说,如果 X 是编码掷骰子结果的随机变量,那幺:

 

 

通常来说,当用于离散型随机变量时,期望值定义如下:

 

 

当用于实值连续型随机变量时,定义如下

 

 

在机器学习中,训练神经网络所用的损失函数在某种程度上是期望值。

 

大数定律

 

人们常常错误地把某些现象归因于大数定律。例如,那些连输的赌徒相信,根据大数定律,他们很快就会赢。这是完全错误的。让我们看看这到底是什幺。假如:

 

 

是代表同一实验中独立重复的随机变量 (例如,掷骰子或扔硬币)。

 

本质上,大数定律指出:

 

 

从长远来看,结果平均值等于期望值。

 

给出的一种解释是,如果一个随机事件重复了很多次,则单个结果可能无关紧要。因此,如果你在赌场玩一个期望值为负的游戏,那幺偶尔也会赢。但大数定律意味着你会赔钱。

 

此外, 随机梯度下降 中 LLN 很重要。

 

信息论

 

让我们玩个游戏。玩家心理想着 1-1024 的任意数字,然后你来猜。你可以问问题,但你的目标是使用尽可能少的问题。你需要多少问题?

 

如果你玩得很聪明,则可以使用二分搜索方法处理问题。首先你可能会问:这个数字在 1 和 512 之间吗?这样一来,搜索空间就减少了一半。使用此策略,你可以在

 

 

问题中找出答案。

 

但是如果在选数字时没有使用均匀分布呢?例如,可以用泊松分布。

 

 

泊松分布的概率质量函数。图源:https://en.wikipedia.org/wiki/Poisson_distribution

 

使用泊松分布可能需要较少的问题,因为分布往往集中在特定的点上(这取决于参数)。

 

在极端情况下,当分布集中在一个数字上时,你不需要任何问题来猜它。一般来说,问题的数量取决于分布所携带的信息。均匀分布包含的信息量最少,而奇异分布是纯信息。

 

熵是一种量化的方法。当用于离散随机变量时,定义如下:

 

 

当用于连续实值变量,定义如下:

 

 

如果你以前使用过分类模型,可能会遇到交叉熵损失,定义如下:

 

 

其中 P 是真实值(集中到单个类的分布),而 P^ 表示类预测。这衡量了预测与实际情况相比有多少信息。当预测相匹配时,交叉熵损失为零。

 

另一个常用量是 Kullback-Leibler 散度(KL 散度),定义为:

 

 

其中 P 和 Q 是两个概率分布。这本质上是交叉熵减去熵,熵可以被认为是对两个分布的不同程度的量化。例如,在训练生成式对抗网络时,这是很有用的。最小化 KL 散度可以保证两个分布是相似的。

 

在这里推荐两本书:

 

Pattern Recognition and Machine Learning by Christopher Bishop

 

The Elements of Statistical Learning by Trevor Hastie, Robert Tibshirani, and Jerome Friedman

 

基于此,我们回顾了理解神经网络所必需的数学知识。但是要真正理解神经网络是如何工作的,你还必须学习一些优化和数理统计。这些科目建立在数学的基础之上,在这就不进行介绍了。

 

原文链接:https://towardsdatascience.com/the-roadmap-of-mathematics-for-deep-learning-357b3db8569b

Be First to Comment

发表评论

电子邮件地址不会被公开。 必填项已用*标注