小舟、陈萍、杜伟编译

微积分、线性代数、概率论,这里有份超详细的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 平面的切线。

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

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

切平面。

梯度

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

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

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

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

  3. 返回步骤 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

入门数学原理机器学习
5
相关数据
范数技术

范数(norm),是具有“长度”概念的函数。在线性代数、泛函分析及相关的数学领域,是一个函数,其为向量空间内的所有向量赋予非零的正长度或大小。半范数反而可以为非零的向量赋予零长度。

激活函数技术

在 计算网络中, 一个节点的激活函数定义了该节点在给定的输入或输入的集合下的输出。标准的计算机芯片电路可以看作是根据输入得到"开"(1)或"关"(0)输出的数字网络激活函数。这与神经网络中的线性感知机的行为类似。 一种函数(例如 ReLU 或 S 型函数),用于对上一层的所有输入求加权和,然后生成一个输出值(通常为非线性值),并将其传递给下一层。

交叉熵技术

交叉熵(Cross Entropy)是Loss函数的一种(也称为损失函数或代价函数),用于描述模型预测值与真实值的差距大小

机器学习技术

机器学习是人工智能的一个分支,是一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、计算复杂性理论等多门学科。机器学习理论主要是设计和分析一些让计算机可以自动“学习”的算法。因为学习算法中涉及了大量的统计学理论,机器学习与推断统计学联系尤为密切,也被称为统计学习理论。算法设计方面,机器学习理论关注可以实现的,行之有效的学习算法。

基准技术

一种简单的模型或启发法,用作比较模型效果时的参考点。基准有助于模型开发者针对特定问题量化最低预期效果。

参数技术

在数学和统计学裡,参数(英语:parameter)是使用通用变量来建立函数和变量之间关系(当这种关系很难用方程来阐述时)的一个数量。

概率分布技术

概率分布(probability distribution)或简称分布,是概率论的一个概念。广义地,它指称随机变量的概率性质--当我们说概率空间中的两个随机变量具有同样的分布(或同分布)时,我们是无法用概率来区别它们的。

收敛技术

在数学,计算机科学和逻辑学中,收敛指的是不同的变换序列在有限的时间内达到一个结论(变换终止),并且得出的结论是独立于达到它的路径(他们是融合的)。 通俗来说,收敛通常是指在训练期间达到的一种状态,即经过一定次数的迭代之后,训练损失和验证损失在每次迭代中的变化都非常小或根本没有变化。也就是说,如果采用当前数据进行额外的训练将无法改进模型,模型即达到收敛状态。在深度学习中,损失值有时会在最终下降之前的多次迭代中保持不变或几乎保持不变,暂时形成收敛的假象。

学习率技术

在使用不同优化器(例如随机梯度下降,Adam)神经网络相关训练中,学习速率作为一个超参数控制了权重更新的幅度,以及训练的速度和精度。学习速率太大容易导致目标(代价)函数波动较大从而难以找到最优,而弱学习速率设置太小,则会导致收敛过慢耗时太长

损失函数技术

在数学优化,统计学,计量经济学,决策理论,机器学习和计算神经科学等领域,损失函数或成本函数是将一或多个变量的一个事件或值映射为可以直观地表示某种与之相关“成本”的实数的函数。

奇异值分解技术

类似于特征分解将矩阵分解成特征向量和特征值,奇异值分解(singular value decomposition, SVD)将矩阵分解为奇异向量(singular vector)和奇异值(singular value)。通过分解矩阵,我们可以发现矩阵表示成数组元素时不明显的函数性质。而相比较特征分解,奇异值分解有着更为广泛的应用,这是因为每个实数矩阵都有一个奇异值分解,但未必都有特征分解。例如,非方阵型矩阵没有特征分解,这时只能使用奇异值分解。

导数技术

导数(Derivative)是微积分中的重要基础概念。当函数y=f(x)的自变量x在一点x_0上产生一个增量Δx时,函数输出值的增量Δy与自变量增量Δx的比值在Δx趋于0时的极限a如果存在,a即为在x0处的导数,记作f'(x_0) 或 df(x_0)/dx。

大数定律技术

在数学与统计学中,大数定律又称大数法则、大数律,是描述相当多次数重复实验的结果的定律。根据这个定律知道,样本数量越多,则其算术平均值就越趋近期望值。大数定律很重要,因为它“保证”了一些随机事件的均值的长期稳定性。

神经网络技术

(人工)神经网络是一种起源于 20 世纪 50 年代的监督式机器学习模型,那时候研究者构想了「感知器(perceptron)」的想法。这一领域的研究者通常被称为「联结主义者(Connectionist)」,因为这种模型模拟了人脑的功能。神经网络模型通常是通过反向传播算法应用梯度下降训练的。目前神经网络有两大主要类型,它们都是前馈神经网络:卷积神经网络(CNN)和循环神经网络(RNN),其中 RNN 又包含长短期记忆(LSTM)、门控循环单元(GRU)等等。深度学习是一种主要应用于神经网络帮助其取得更好结果的技术。尽管神经网络主要用于监督学习,但也有一些为无监督学习设计的变体,比如自动编码器和生成对抗网络(GAN)。

梯度下降技术

梯度下降是用于查找函数最小值的一阶迭代优化算法。 要使用梯度下降找到函数的局部最小值,可以采用与当前点的函数梯度(或近似梯度)的负值成比例的步骤。 如果采取的步骤与梯度的正值成比例,则接近该函数的局部最大值,被称为梯度上升。

映射技术

映射指的是具有某种特殊结构的函数,或泛指类函数思想的范畴论中的态射。 逻辑和图论中也有一些不太常规的用法。其数学定义为:两个非空集合A与B间存在着对应关系f,而且对于A中的每一个元素x,B中总有有唯一的一个元素y与它对应,就这种对应为从A到B的映射,记作f:A→B。其中,y称为元素x在映射f下的象,记作:y=f(x)。x称为y关于映射f的原象*。*集合A中所有元素的象的集合称为映射f的值域,记作f(A)。同样的,在机器学习中,映射就是输入与输出之间的对应关系。

随机梯度下降技术

梯度下降(Gradient Descent)是遵循成本函数的梯度来最小化一个函数的过程。这个过程涉及到对成本形式以及其衍生形式的认知,使得我们可以从已知的给定点朝既定方向移动。比如向下朝最小值移动。 在机器学习中,我们可以利用随机梯度下降的方法来最小化训练模型中的误差,即每次迭代时完成一次评估和更新。 这种优化算法的工作原理是模型每看到一个训练实例,就对其作出预测,并重复迭代该过程到一定的次数。这个流程可以用于找出能导致训练数据最小误差的模型的系数。

降维技术

降维算法是将 p+1 个系数的问题简化为 M+1 个系数的问题,其中 M<p。算法执行包括计算变量的 M 个不同线性组合或投射(projection)。然后这 M 个投射作为预测器通过最小二乘法拟合一个线性回归模型。两个主要的方法是主成分回归(principal component regression)和偏最小二乘法(partial least squares)。

主成分分析技术

在多元统计分析中,主成分分析(Principal components analysis,PCA)是一种分析、简化数据集的技术。主成分分析经常用于减少数据集的维数,同时保持数据集中的对方差贡献最大的特征。这是通过保留低阶主成分,忽略高阶主成分做到的。这样低阶成分往往能够保留住数据的最重要方面。但是,这也不是一定的,要视具体应用而定。由于主成分分析依赖所给数据,所以数据的准确性对分析结果影响很大。

微积分技术

微积分(Calculus)是高等数学中研究函数的微分(Differentiation)、积分(Integration)以及有关概念和应用的数学分支。它是数学的一个基础学科。内容主要包括极限、微分学、积分学及其应用。微分学包括求导数的运算,是一套关于变化率的理论。它使得函数、速度、加速度和曲线的斜率等均可用一套通用的符号进行讨论。积分学,包括求积分的运算,为定义和计算面积、体积等提供一套通用的方法 。

线性代数技术

线性代数是数学的一个分支,它的研究对象是向量,向量空间(或称线性空间),线性变换和有限维的线性方程组。向量空间是现代数学的一个重要课题;因而,线性代数被广泛地应用于抽象代数和泛函分析中;通过解析几何,线性代数得以被具体表示。线性代数的理论已被泛化为算子理论。由于科学研究中的非线性模型通常可以被近似为线性模型,使得线性代数被广泛地应用于自然科学和社会科学中。

动量技术

优化器的一种,是模拟物理里动量的概念,其在相关方向可以加速SGD,抑制振荡,从而加快收敛

信息论技术

信息论是在信息可以量度的基础上,研究有效地和可靠地传递信息的科学,它涉及信息量度、信息特性、信息传输速率、信道容量、干扰对信息传输的影响等方面的知识。通常把上述范围的信息论称为狭义的信息论,又因为它的创始人是香农,故又称为香农信息论。

优化器技术

优化器基类提供了计算梯度loss的方法,并可以将梯度应用于变量。优化器里包含了实现了经典的优化算法,如梯度下降和Adagrad。 优化器是提供了一个可以使用各种优化算法的接口,可以让用户直接调用一些经典的优化算法,如梯度下降法等等。优化器(optimizers)类的基类。这个类定义了在训练模型的时候添加一个操作的API。用户基本上不会直接使用这个类,但是你会用到他的子类比如GradientDescentOptimizer, AdagradOptimizer, MomentumOptimizer(tensorflow下的优化器包)等等这些算法。

矩阵分解技术

矩阵分解是一种将矩阵简化为其组成部分的方法。这种方法可以简化更复杂的矩阵运算,这些运算可以在分解的矩阵上执行,而不是在原始矩阵本身上执行。它的衍生Non-negative matrix factorization也被用于降维等操作上。

量化技术

深度学习中的量化是指,用低位宽数字的神经网络近似使用了浮点数的神经网络的过程。

暂无评论
暂无评论~