机器学习数学学习路线图 ylc3000 2025-11-13 0 浏览 0 点赞 长文 # 机器学习数学学习路线图 | The Roadmap of Mathematics for Machine Learning ## 线性代数、微积分和概率论完整指南 | A complete guide to linear algebra, calculus, and probability theory 作者:Tivadar Danka 日期:2025年8月6日 --- 理解机器学习算法背后的数学是一种超能力。 如果你曾经处理过实际问题,你可能会发现,熟悉细节可以大大帮助你超越基准性能。当你想要突破最先进技术的边界时,这一点尤其正要。 然而,大部分知识都隐藏在高等数学的层层面纱之后。理解随机梯度下降等方法可能看起来很困难,因为它们建立在多元微积分和概率论之上。 但是,有了适当的基础,大多数想法都可以被视为非常自然的。如果你是初学者,并且不一定接受过高等数学的正式教育,那么为自己制定课程是很困难的。在这篇文章中,我的目标是提供一个路线图,带你从零基础到深入理解神经网络的工作原理。 为了简单起见,目标不是涵盖所有内容。相反,我们将专注于明确方向。这样,如果需要,你将能够毫无困难地学习其他主题。 我建议不要一口气读完,而是在学习过程中将本文作为参考点。深入研究介绍的概念,然后查看路线图并继续前进。我坚信这是最好的学习方式:我会为你指明道路,但你必须自己走。 **机器学习建立在三大支柱之上:线性代数、微积分和概率论。** 以下是完整的路线图。  线性代数用于描述模型,微积分用于将模型拟合到数据,概率论通过提供在不确定性下进行预测的理论框架将它们联系在一起。 接下来是约4000字的深入探讨,我们将逐步介绍所有这些主题。 如果你对机器学习的数学感兴趣,这就是你想要阅读的文章。 --- ## 线性代数 | Linear Algebra 神经网络等预测模型本质上是使用微积分工具训练的函数。然而,它们是使用线性代数概念(如矩阵乘法)来**描述**的。  如果你是一名从事实际问题的机器学习工程师,线性代数是你最重要的主题,掌握它将使你脱颖而出。 让我们深入探讨! ### 向量和向量空间 | Vectors and Vector Spaces 要很好地理解线性代数,我建议从向量空间开始。 教科书的定义令人生畏且抽象,所以让我们先谈谈一个特殊情况。你可以将平面中的每个点视为一个元组 **x** = *(x₁, x₂)*,由从原点指向 *(x₁, x₂)* 的箭头表示。  你可以将这些向量相加并与标量相乘。代数上,它简单地表示为:  但可视化更容易:  平面是向量空间的原型模型。*n* 个元素的元组形成 *n* 维向量,构成欧几里得空间:  一般来说,如果你可以以直接的方式添加和缩放向量,向量集 *V* 就是实数上的向量空间。 在思考向量空间时,将它们在心理上建模为欧几里得空间中的元组会有所帮助。 ### 赋范空间 | Normed Spaces 当你对向量空间有了很好的理解后,下一步是理解如何在向量空间中测量**距离**。 默认情况下,向量空间本身不提供这方面的工具。你会如何在平面上做到这一点?你可能已经学过,在那里我们有著名的欧几里得范数,定义为:  虽然向量符号和平方根符号使这看起来令人生畏,但大小只是伪装的勾股定理。  这可以进一步推广:在三维空间中,欧几里得范数是勾股定理的重复应用。  这是**范数**的一个特殊情况。一般来说,如果存在函数 *‖ ⋅ ‖: V → [0, ∞)* 使得以下条件成立,则向量空间 *V* 是赋范的:  其中 **x** 和 **y** 是任意两个向量。 同样,这可能很可怕,但这是一个简单而本质的概念。有很多范数,最重要的是 *p*-范数族,对任何 *p ∈ [0, ∞)* 定义为:  (*p = 2* 给出欧几里得范数)和**上确界范数**:  范数可以通过取差的范数来定义**距离**:  *1-范数*称为**曼哈顿范数**(或**出租车范数**),因为两点之间的距离取决于你必须执行多少次"网格跳跃"才能从 **x** 到 **y**。  有时,像 *p = 2* 那样,范数来自所谓的**内积**,它是双线性函数 *〈 ⋅, ⋅ 〉: V × V → [0, ∞)* 使得:  具有内积的向量空间称为**内积空间**。一个例子是经典的欧几里得积:  另一方面,每个内积都可以通过以下方式转换为范数:  当两个向量的内积为零时,我们说向量彼此**正交**。(试着在平面上想出一些具体的例子来更深入地理解这个概念。) ### 基和正交/标准正交基 | Basis and Orthogonal/Orthonormal Basis 尽管向量空间是无限的(在我们的情况下),你可以找到一组有限的向量,可以用来表示空间中的**所有**向量。例如,在平面上,我们有:  其中:  这是基和标准正交基的特殊情况。 一般来说,**基**是最小的向量集 *v₁, v₂, ..., vₙ ∈ V*,使得它们的线性组合张成向量空间:  任何向量空间都存在基。(它可能不是有限集,但这现在不应该困扰我们。)毫无疑问,基在谈论线性空间时大大简化了事情。 当基中的向量彼此正交时,我们称其为**正交基**。如果对于正交基,每个基向量的范数为1,我们说它是**标准正交的**。 ### 线性变换 | Linear Transformations 与向量空间相关的关键对象是**线性变换**。如果你以前见过神经网络,你知道基本构建块是形式为 *f(**x**) = σ(A**x** + **b**)* 的层,其中 *A* 是矩阵,*b* 和 *x* 是向量,*σ* 是sigmoid函数。(或者任何激活函数,实际上。)嗯,部分 *Ax* 是线性变换。 一般来说,如果以下条件成立,函数 *L: V → W* 是向量空间 *V* 和 *W* 之间的线性变换:  对于 *V* 中的所有 *x, y* 和所有实数 *a*。 举一个具体的例子,平面中围绕原点的旋转是线性变换。 毫无疑问,关于线性变换最关键的事实是它们可以用矩阵表示,正如你接下来将在学习中看到的。 ### 矩阵及其运算 | Matrices and Their Operations 如果线性变换很清楚,你可以转向矩阵的研究。(线性代数课程通常从矩阵开始,但出于稍后要解释的原因,我建议以这种方式进行。) 矩阵最重要的运算是矩阵乘法,也称为矩阵积。一般来说,如果 *A* 和 *B* 是由以下定义的矩阵:  那么它们的乘积可以通过以下方式获得:  这可能看起来难以理解,但实际上相当简单。看看下图,演示如何计算乘积的第2行第1列的元素。  矩阵乘法定义成这样的原因是因为矩阵表示向量空间之间的线性变换。矩阵乘法是线性变换的组合。 ### 行列式 | Determinants 在我看来,行列式无疑是线性代数中最具挑战性的概念之一。根据你的学习资源,它通常通过递归定义或遍历所有排列的和来定义。如果没有丰富的数学经验,两者都不可行。 要理解这个概念,请观看下面的视频。相信我,这很神奇。 [视频链接] 总结一下,矩阵的行列式描述了对象的体积在相应线性变换下如何缩放。如果变换改变方向,行列式的符号为负。 你最终需要了解如何计算行列式,但我现在不会担心。 ### 特征值、特征向量和矩阵分解 | Eigenvalues, Eigenvectors, and Matrix Decompositions 标准的第一门线性代数课程通常以特征值/特征向量和一些特殊的矩阵分解(如奇异值分解)结束。 假设我们有一个矩阵 *A*。如果存在向量 ***x***(称为**特征向量**)使得 *A**x** = λ**x*** 成立,则数字 *λ* 是 *A* 的特征值。换句话说,由 *A* 表示的线性变换对于向量 *x* 来说是按 *λ* 缩放。这个概念在线性代数中起着至关重要的作用。(实际上在所有广泛使用线性代数的领域中。) 此时,你已准备好熟悉一些矩阵分解。如果你想一想,从计算角度来看,哪种类型的矩阵最好?对角矩阵!如果线性变换具有对角矩阵,则在任意向量上计算其值是微不足道的:  大多数特殊形式旨在将矩阵 *A* 分解为矩阵的乘积,其中希望至少有一个矩阵是对角的。奇异值分解(简称SVD)是最著名的一种,它指出存在特殊矩阵 *U*、*V* 和对角矩阵 *Σ*,使得 *A = U Σ V* 成立。(*U* 和 *V* 是所谓的**酉矩阵**,我在这里不定义;足以知道它是一个特殊的矩阵族。) SVD也用于执行主成分分析,这是最简单和最著名的降维方法之一。 ### 进一步学习 | Further Study 线性代数可以通过多种方式教授。我在这里概述的路径受到Sheldon Axler的教科书[《Linear Algebra Done Right》](http://linear.axler.net/)的启发。对于在线讲座,我建议[MIT OpenCourseWare的线性代数课程](https://www.youtube.com/playlist?list=PL49CF3715CB9EF31D),这是一个极好的资源。 以下是我关于该主题的所有文章: - [矩阵和图](https://thepalindrome.substack.com/p/matrices-and-graphs) - [如何测量两个函数之间的角度](https://thepalindrome.substack.com/p/how-to-measure-the-angle-between) - [正交系统的不合理有效性](https://thepalindrome.substack.com/p/the-unreasonable-effectiveness-of) --- ## 微积分 | Calculus 微积分是对函数的**微分**和**积分**的研究。从本质上讲,神经网络是一个可微函数,因此微积分将是训练神经网络的基本工具,正如我们将看到的。  从定义上讲,函数的导数由极限定义:  其中对于给定的 *h*,比率是点 *(x, f(x))* 和 *(x+h, f(x+h))* 之间直线的斜率。 在极限中,这本质上是点 *x* 处切线的斜率。下图说明了这个概念。  微分可以用来优化函数:导数在局部最大值或最小值处为零。(但是,反过来这不是真的;参见 *f(x) = x³* 在 *0* 处。) 导数为零的点称为**临界点**。临界点是最小值还是最大值可以通过查看**二阶导数**来决定:  微分有几个基本规则,但可能最重要的是所谓的**链式法则**:  它告诉我们如何计算复合函数的导数。 积分通常被称为微分的逆运算。这是真的,因为如果 *f* 是 *F* 的导数,即 *F′(x) = f(x)*,那么:  成立。(如果 *f* 是可积函数。) 函数的积分也可以被认为是曲线下的有符号面积:  积分本身在理解期望值的概念中起作用。例如,熵和Kullback-Leibler散度等量是根据积分定义的。 ### 进一步学习 | Further Study 我建议[MIT的单变量微积分课程](https://www.youtube.com/playlist?list=PL590CCC2BC5AF3BC1)。(一般来说,MIT的在线课程总是优秀的学习资源。)如果你更喜欢书籍,有许多教科书可用。Gilbert Strang的[《Calculus》](https://ocw.mit.edu/courses/res-18-001-calculus-fall-2023/pages/textbook/)伴随前面提到的课程,也是一个很棒的资源,完全免费。 以下是我关于该主题的一些文章: - [为什么梯度下降有效?](https://thepalindrome.substack.com/p/why-does-gradient-descent-work) - [三角函数的历史](https://thepalindrome.substack.com/p/the-history-of-trigonometric-functions) - [指数函数的迷人故事](https://thepalindrome.substack.com/p/the-story-of-the-exponential-function) --- ## 多元微积分 | Multivariable Calculus 这是线性代数和微积分结合的部分,为训练神经网络的主要工具奠定基础:梯度下降。从数学上讲,神经网络只是一个多变量函数。(尽管变量的数量可能达到数百万。)  与单变量微积分类似,这里的两个主要主题是微分和积分。假设我们有一个函数 *f: ℝⁿ → ℝ*,将向量映射到实数。 在二维(即 *n = 2*)中,你可以将其图形想象为一个曲面。(由于人类看不到三维以上,因此很难可视化具有两个以上实变量的函数。)  ### 多变量微分 | Differentiation in Multiple Variables 在单变量中,导数是切线的斜率。你如何在这里定义切线?曲面上的一个点有几条切线,不只是一条。但是,有两条特殊的切线:一条平行于 *x-z* 平面,另一条平行于 *y-z* 平面。它们的斜率由**偏导数**决定,定义为:  也就是说,你取通过固定除一个变量外的所有变量获得的函数的导数。(对于 ≥ 3 个变量,正式定义是相同的,只是符号更复杂。) 这些特殊方向上的切线张成**切平面**。  ### 梯度 | The Gradient 还有另一个特殊方向:**梯度**,它是由以下定义的向量:  梯度总是指向最大增长的方向!因此,如果你在这个方向上迈出一小步,你的海拔高度将是你可以选择的所有其他方向中最大的。这是**梯度下降**的基本思想,这是一种用于最大化函数的算法。其步骤如下。 1. 在点 **x₀** 处计算梯度,这是你当前所在的位置。 2. 在梯度相反的方向上迈出一小步以到达点 **x₁**。(步长称为**学习率**。) 3. 返回步骤1并重复该过程直到收敛。 当然,这个基本算法有几个缺陷,多年来已经改进了几次。现代基于梯度下降的优化器采用各种技术,如自适应步长、动量和其他方法,我们在这里不会详细介绍。 在实践中计算梯度很困难。函数通常由其他函数的组合来描述,例如,熟悉的线性层:  其中 *A* 是矩阵,*b* 和 *x* 是向量,*σ* 是sigmoid函数。(当然,可以有其他激活函数,但为了简单起见,我们坚持这个。)你如何计算这个梯度?此时,甚至不清楚如何为这样的向量-向量函数定义梯度,所以让我们讨论一下! 函数 *g(**x**): ℝⁿ → ℝᵐ* 总是可以用向量-标量函数表示,如:  其中:  *g* 的梯度由矩阵定义,其第 *k* 行是第 *k* 个分量的梯度。也就是说:  这个矩阵称为 *g* 的**总导数**。 在我们的例子 *f(**x**) = σ(A**x** + **b**)* 中,事情变得有点复杂,因为它是两个函数的组合: 1. *l(**x**) = A**x** + **b**, 2. 和 *σ(**x**)*, 通过对单变量sigmoid进行逐分量应用来定义。函数 *l* 可以进一步分解为 *m* 个从n维向量空间映射到实数空间的函数:  其中:  如果你计算总导数,你会看到:  这是**多元函数的链式法则**的完全一般形式。没有它,就没有简单的方法来计算神经网络的梯度,神经网络最终是许多函数的组合。 ### 高阶导数 | Higher-Order Derivatives 与单变量情况类似,梯度和导数在确定空间中给定点是局部最小值还是最大值(或两者都不是)方面发挥作用。举一个具体的例子,训练神经网络等同于最小化训练数据参数上的损失函数。这完全是关于找到达到最小值的最优参数配置 *w*:  其中 *N: ℝⁿ → ℝᵐ* 和 *l: ℝᵐ → ℝ* 分别是神经网络和损失函数。 对于 *n* 个变量的一般可微向量-标量函数,有 *n²* 个二阶导数,形成**Hessian矩阵**:  在多变量中,Hessian的行列式承担二阶导数的角色。同样,它可以用来确定临界点(即所有导数为零的点)是最小值、最大值还是鞍点。 ### 进一步学习 | Further Study 有很多关于多元微积分的精彩在线课程。我有两个具体的建议: - [MIT多元微积分](https://www.youtube.com/playlist?list=PL4C4C8A7D06566F38) - [Khan Academy关于多元微积分](https://www.youtube.com/playlist?list=PLSQl0a2vh4HC5feHa6Rc5c0wbRTx56nF7) 现在我们准备好学习最后一个主题:概率论! --- ## 概率论 | Probability Theory 概率论是对机会的数学严格研究,是所有科学领域的基础。  ### 概率的概念 | The Concept of Probability 首先,概率是一个函数,它为**事件**赋予0到1之间的数值。事件由**集合**表示,这些集合是**事件空间**中的子集,用 *Ω* 表示。  概率有两个定义属性: 1. 整个事件空间的概率为1, 2. 不相交事件的概率可以相加。 用数学公式表示:  集合运算也可以转换为事件的语言:*A ∪ B* 表示 *A* 或 *B* 发生,而 *A ∩ B* 表示两者都发生。  概率论中最重要的概念之一是**条件概率**,它在观察的背景下研究概率。根据定义,它由两个事件都发生的概率与观察到的事件的概率的比率给出。  一个简单的例子:如果给定的电子邮件包含单词*"deal"*,它是垃圾邮件的概率是多少?观察关键词(如提到的*"deal"*)会增加电子邮件是垃圾邮件的概率。 在某些实际场景中,我们只知道 *P(A | B)*,但我们想估计 *P(B | A)*。这就是**贝叶斯定理**的用途,用一个来表示另一个。  用英语说,贝叶斯定理向我们展示了如何根据**似然**更新我们的**先验**。 ### 期望值 | Expected Value 假设你和朋友玩游戏。你掷一个经典的六面骰子,如果结果是1或2,你赢300美元。否则,你输200美元。如果你玩这个游戏足够长时间,你每轮的平均收入是多少?你甚至应该玩这个游戏吗? 嗯,你以1/3的概率赢100美元,以2/3的概率输200美元。也就是说,如果 *X* 是编码骰子投掷结果的随机变量,那么:  这就是期望值,即从长远来看你每轮将收到的平均金额。由于这是负数,你会亏钱,所以你永远不应该玩这个游戏。 一般来说,期望值定义为:  对于离散随机变量和:  对于实值连续随机变量。 在机器学习中,**训练神经网络的损失函数以某种方式是期望值**。 ### 大数定律 | Law of Large Numbers 人们经常错误地将某些现象归因于大数定律。例如,处于连败状态的赌徒认为他们很快就会赢,因为**大数定律**。这完全错误。让我们看看这到底是什么! 假设 *X, X₁, X₂, ...* 是表示同一实验(比如掷骰子或抛硬币)的独立重复的随机变量。 (强)**大数定律**指出:  以概率1成立;也就是说,从长远来看,结果的平均值等于期望值。 一种解释是,如果随机事件重复足够多次,个别结果可能无关紧要。因此,如果你在赌场玩具有负期望值的游戏(所有游戏都有),你偶尔赢并不重要。大数定律意味着你**会亏钱**。 稍微超前一点,LLN对于**随机梯度下降**将是必不可少的。 ### 信息论 | Information Theory 让我们玩个游戏。我想了一个1到1024之间的数字,你必须猜出来。你可以提问,但你的目标是使用尽可能少的问题。你需要多少? 如果你聪明地玩,你会用你的问题执行二分查找。首先,你可能会问:*数字在1到512之间吗?*通过这个,你已经将搜索空间减半了。使用这种策略,你可以在 *log₂(1024) = 10* 个问题中找出答案。 但是,如果我在选择数字时没有使用均匀分布呢?例如,我可能使用了泊松分布。 在这里,你可能需要更少的问题,因为你知道分布倾向于集中在特定点周围。(这取决于参数。) 在极端情况下,当分布集中在单个数字上时,你需要**零个**问题就能正确猜出它。一般来说,问题的数量取决于分布所携带的信息。均匀分布包含最少的信息量,而奇异分布是纯粹的信息。 **熵**是量化这一点的度量。它定义为:  对于离散随机变量和:  对于连续的实值随机变量。(对数的底数通常是2、*e*或10,但这并不重要。) 如果你以前使用过分类模型,你可能遇到过**交叉熵**损失,定义为:  其中 *P* 是真实值(集中在单个类别的分布),而带帽子的版本表示类别预测。交叉熵损失衡量预测与真实值相比有多少"信息"。当预测匹配时,交叉熵损失为零。 另一个经常使用的量是**Kullback-Leibler散度**,定义为:  其中 *P* 和 *Q* 是两个概率分布。这本质上是交叉熵减去熵,可以被认为是量化两个分布之间的差异。例如,这在训练生成对抗网络时很有用。最小化Kullback-Leibler散度保证两个分布相似。 ### 进一步学习 | Further Study 在这里,我再次推荐MIT的在线课程,该课程涵盖了所有基础知识和一些高级概念。查看[John Tsitsiklis的概率论导论](https://youtube.com/playlist?list=PLUl4u3cNGP60hI9ATjSFgLZpbNJ7myAg6&si=hqqCNfvRt8wlRpFy)! 我关于概率的一些文章: - [大数定律](https://thepalindrome.substack.com/p/the-law-of-large-numbers) - [概率是频率派还是贝叶斯派?](https://thepalindrome.substack.com/p/is-probability-frequentist-or-bayesian) - [概率、密度和分布](https://thepalindrome.substack.com/p/probabilities-densities-and-distributions) - [期望值的含义是什么?](https://thepalindrome.substack.com/p/whats-the-meaning-of-the-expected) --- ## 总结 | Summary 这份路线图为你提供了理解机器学习数学所需的完整框架: 1. **线性代数** - 用于描述模型结构 - 向量空间和范数 - 线性变换和矩阵 - 特征值分解和SVD 2. **微积分** - 用于优化和训练模型 - 单变量微积分基础 - 多元微积分和梯度 - 链式法则和反向传播 3. **概率论** - 提供理论框架 - 概率基础和条件概率 - 期望值和大数定律 - 熵和信息论 记住,这不是一个需要一次性完成的清单。将这篇文章作为参考,在你的学习旅程中逐步深入每个主题。实践和应用这些概念是真正掌握它们的关键。 --- *附注:如果你想要一个包含整个路线图完整分解的单一资源,可以考虑购买我的书,**[《机器学习的数学》](https://www.amazon.com/Mathematics-Machine-Learning-calculus-probability/dp/1837027870/)**。* 网闻录 机器学习数学学习路线图