首页 文章详情

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

飞马会 | 767 2020-12-01 16:30 0 0 0
UniSMS (合一短信)



大学时期学的数学现在可能派上用场了,机器学习背后的原理涉及许多数学知识。深入挖掘一下,你会发现,线性代数、微积分和概率论等都和机器学习背后的算法息息相关。


v2-5b853c72938c768fe78c681ce52c701d_720w.png

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

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

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

v2-b5822bc571662ba7c4495ddd1ad99a22_720w.png

微积分

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

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

v2-7d05f03c11be4757b5b7fddf6375cef2_720w.png

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

v2-640e7fe28afc8f865b387a48399bb99e_720w.png


将函数的导数可视化。

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

v2-ea00de26017bbdf4c7c74fe15d0d017a_720w.png

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

v2-f2251da3e21a83ad9a2d048ddb04f015_720w.png

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

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

v2-7fe2bdce5597d91d8a52e6e2d2e737c6_720w.png

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

v2-124100d6a54eeee6b0dd4a5dde97f7ff_720w.png

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

v2-af8988aa260e94aee2f2b5fa9a2d3026_720w.png


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

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

  • MIT 课程链接:https://www.youtube.com/playlist?list=PL590CCC2BC5AF3BC1
  • 教科书链接:https://ocw.mit.edu/resources/res-18-001-calculus-online-textbook-spring-2005/textbook/

v2-9e68fed2b9278a626bcd0afb4446bef7_720w.png


线性代数

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

向量空间

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

v2-c8a38a65ad65b57bce90f1c2d0e6fb58_720w.png

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

v2-6989a10d289230618fd4824d8ca6ed55_720w.png

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

v2-e5d828becc52b761280684e309831618_720w.png

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

范数空间

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

v2-1d1bb7a7e5999f558f45160109baa5bb_720w.png


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

v2-6d1c01cff3a5d9a8d8040eed3a634ba9_720w.png


范数为:

v2-b9aa69b30359d4fcf8e8112cab19a429_720w.png

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

v2-67df86202ba910d82b6c3227cfce2c45_720w.png

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

v2-4c8370b4b76008adb66b7aac9352bf3d_720w.png

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

v2-ac2c4ea096e12896fdc444562de8d878_720w.png

因此:

v2-9615f98ed0c303617c757d100e8016e5_720w.png


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

v2-617999ed73b19824f6dd607b60a2d0dd_720w.png

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

v2-a2291e29c19ca03b7afe97f4d35597c0_720w.png

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

基正交 / 正交基

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

v2-399ee5b8f24084a39872ef701e151910_720w.png

其中 e1,e2 函数如下

v2-f5f402947cc1113cb7320491a6812ae1_720w.png

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

v2-11f81fe521b86088a5c8d73a3236e1d0_720w.png

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

v2-3da2f53fbb454dbc85a6013163bf54f8_720w.png

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

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

线性变换

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

v2-6d956c773fcb70a4b635e181246eefd1_720w.png


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

v2-dbd71d4226993de33d020be06f25bee3_720w.png

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

v2-b40c4da703e793344a514256c4841c47_720w.png

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

矩阵及其运算

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

v2-699f3b72ae945db8b4bb5fb2b7e6634f_720w.png

v2-31d2430e16e44db18161befd82507a0f_720w.png

下图演示了计算过程:

v2-4c65c99a8c2575487a11e45bba263206_720w.png


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

v2-28b5e808c3b49bbc80baa9e017f483dc_720w.png

决定因素

行列式是线性代数中最具挑战性的概念之一。要了解这一概念,请观看下面的视频。



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

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

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

v2-996df8d8af27e8edd54eaf014d90384f_720w.png

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

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

v2-ce40b77698ebd91cdc57fc3048377192_720w.png


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

v2-996df8d8af27e8edd54eaf014d90384f_720w.png

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

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

  • Sheldon Axler 的教材地址:http://linear.axler.net/
  • MIT 的网络公开课地址:https://www.youtube.com/playlist?list=PL49CF3715CB9EF31D

v2-eb2764116c81a4be6f6345947bda7e8b_720w.png

多变量运算

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

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

v2-72b6925e443b77da7ab6c54711810d0c_720w.png

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

v2-5b5d1f714ab0439c3fe163ea485f17c4_720w.png


两变量的函数图像。

多变量微分

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

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

v2-7eb2e17a0008526b7a7195dee5341ae5_720w.png

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

v2-7aac8d079b94f4b076af1f23e8b654ad_720w.png


切平面。

梯度

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

v2-15bdad9d1a7b7d03d44829b695a15129_720w.png



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

  1. 计算当前位置 x_0 处的梯度。
  2. 在梯度方向上走一小步即可到达点 x_1(步长称为学习率)。
  3. 返回步骤 1,重复该过程,直至收敛为止。


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

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

v2-6d956c773fcb70a4b635e181246eefd1_720w.png

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

v2-3defeef4eab94a2c78cbfac3a9ec460c_720w.png

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

v2-e93765565bb1d2aaba077f4b66a39aa1_720w.png

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

v2-87721c984c66c64a9b94c5f696db9695_720w.png

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

v2-6d956c773fcb70a4b635e181246eefd1_720w.png

包含两个函数

v2-76654b8de8d605cbce1520e31994fc8b_720w.png

v2-3d749e065d9cee371e5ed4ac12d6f4fe_720w.png

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

v2-868d4818dc4dc71d629303e3387ababb_720w.png


其中:

v2-2e9b332d4a0024f00632df84af76396e_720w.png

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

v2-ecf5a29934ab0717f4c6d7de3e7c4483_720w.png


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

高阶导数

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

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

v2-9c8d4583ff2b145bf664076c53c65b37_720w.png


其中:

v2-32ffc1cfca39fdedbd3b03b95a7dd355_720w.png


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

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

v2-1b9c9a4934d1ab829b39f7d2a0ee7571_720w.png

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

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

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


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

v2-618a0451da8011b8116ff16b84974baf_720w.png

概率论

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

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

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

v2-eebdbdcaf9526f5136ab5041dd34c12b_720w.png

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

期望值

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

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

v2-8eab5a658c3883cd3a493e6191d9d2f9_720w.png

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

v2-2a3599c50f58793cf84672e3e74ef40f_720w.png

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

v2-c9ee3c03db61a609e86bd6a09b6fbd1e_720w.png


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

大数定律

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

v2-59d193cb04f9831a76700712074125bb_720w.png


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

本质上,大数定律指出:

v2-eaa70604c7252fc9b0f14752c1856379_720w.png



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

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

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

信息论

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

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

v2-433fe3ca53d8dab90f957a89667812d9_720w.png



问题中找出答案。

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

v2-3dc9295d475ba85f4d4ff42116daa568_720w.png


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

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

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

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

v2-1c6e011cdd9bbb8bb68aa0a9c3f0c90f_720w.png


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

v2-70d1a715f7822af69783664479ccfb3b_720w.png


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


v2-22f0321828658f8d1530ca646171e33f_720w.png


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

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

v2-fe59e0b41a3b869ad09d6afb82bc6f76_720w.png

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

在这里推荐两本书:

  • Pattern Recognition and Machine Learning by Christopher Bishop
  • The Elements of Statistical Learning by Trevor Hastie, Robert Tibshirani, and Jerome Friedman


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

飞马会


往期福利

关注飞马会公众号,回复对应关键词打包下载学习资料;回复“入群”,加入飞马网AI、大数据、项目经理学习群,和优秀的人一起成长!


回复 数字“16”100G Python从入门到精通!自学必备全套视频教程+python经典书籍!

回复 数字“17”【干货】31篇关于深度学习必读论文汇总(附论文下载地址)

回复 数字“18”526份行业报告+白皮书:AI人工智能、机器人、智能出行、智能家居、物联网、VR/AR、 区块链等(附下载)

回复 数字“19”800G人工智能学习资料:AI电子书+Python语言入门+教程+机器学习等限时免费领取!

回复 数字“35”40G 吴恩达机器学习+林轩田机器学习(基石+技法)高等数学和线性代数等视频+书籍领取!

回复 数字“36”286页PDF教你如何搞明白深度学习的算法、理论与计算系统!(可下载)

回复 数字“37”限时下载 | 265G python全套视频教程,从入门进阶到面试技巧!

回复 数字“47”好书推荐| 106 页的《Python进阶》中文版(附下载) 

good-icon 0
favorite-icon 0
收藏
回复数量: 0
    暂无评论~~
    Ctrl+Enter