ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

AI数学基础全解析:从线性代数到梯度下降的深度学习必备知识

AI数学基础全解析:从线性代数到梯度下降的深度学习必备知识

简介:这是一份关于人工智能数学基础的英文原版电子书,源自 Hala Nelson 撰写的《Essential Math for AI》,由 O’Reilly 于 2023 年出版。全书面向数据、商业领域以及数学背景较薄弱的读者,将线性代数、微积分、概率统计等核心数学知识与 AI 系统设计紧密结合,帮助读者建立从数学概念到实际人工智能模型之间的清晰桥梁。资源包内仅有 1 个 PDF 文件,整体大小约 14.87MB,适合在线或离线阅读,也便于在平板和电脑间自由切换学习;目前已有 629 人学习下载。从内容预览中的专家评语来看,本书不同于传统数学教科书,也不是泛泛而谈的科普读物,而是强调数学对于构建高效可靠 AI 系统的实际作用;同时作者还穿插了对人工智能社会影响的严肃讨论,使读者在掌握技术之余,也能培养批判性思维。对于正准备进入人工智能领域、希望系统补齐数学基础的学习者而言,这是一份兼顾严谨性与可读性的参考书。

1. 人工智能的基础数学:为什么所有 AI 教程都默认你已经会了它

打开任意一篇讲神经网络的教程,前十分钟看得津津有味,等出现矩阵乘法和偏导数的时候,很多人就卡住了。这不是你笨,而是大部分教程默认你懂数学,但事实是绝大多数从业者早就把线性代数、概率论忘得差不多了。这份《人工智能的基础数学》PDF 的价值,恰恰在于它把 AI 真正用得上的数学圈了出来,而不是从集合论、柯西数列从头讲起。它不说废话,直接告诉你:深度学习里的矩阵怎么算、梯度怎么推、概率模型怎么读。适合三种人——转行做算法的工程师、准备面试的应届生、以及看论文时被公式卡住的开发者。

2. 这份资料到底讲了哪四块数学:线性代数、微积分、概率论与最优化

2.1 线性代数:向量、矩阵变换与特征分解,深度学习最硬的底层

AI 的模型本质上就是一堆矩阵乘法。图像是像素矩阵,文本经过 embedding 也是矩阵,Transformer 里的注意力机制计算的还是矩阵之间的相似度。所以谁先把线性代数吃透,谁就拿到了读论文的第一把钥匙。这份 PDF 里线性代数部分的核心脉络我拆成四条线:

第一条是向量与矩阵的基本运算。这里要注意的是向量点积和矩阵乘法的几何意义,而不是死记公式。点积衡量的是两个向量的方向接近程度,矩阵乘法做的是空间变换,理解了这两个视角再看 attention 公式就顺了。

第二条是矩阵的逆、秩与线性方程组。逆矩阵在解决线性回归的闭式解时出现,秩则决定了参数的可辨识性。PDF 里这些概念都有,但要提醒一句:具体某个线性方程组的求解细节不需要大量刷题,工作中真正用到的场景是理解欠定方程组为什么会有无数个解。

第三条是特征值与特征分解。这是 PCA 降维、谱聚类等算法的数学底座,也是理解矩阵本质的一条捷径。很多同学学到特征值就停了,结果后面遇到协方差矩阵时又蒙了。

第四条是向量范数与矩阵范数。范数直接对应到正则化项,L1 和 L2 的区别在 PDF 里有明确推导。建议看到范数时直接跳去对比 L1、L2 的稀疏性差异,比干看定义有用得多。

我一贯的学习方法是从后往前推。先打开 PyTorch 源码里torch.nn.Linear的文档,知道权重矩阵的 shape 是(out_features, in_features),然后回到 PDF 里找矩阵乘法那一节,心里默念“输入 (batch, in_features) 乘以权重转置”,再对照公式,抽象概念就变成具体数据流动了。

2.2 微积分:偏导数、链式法则与反向传播的数学原型

如果你问一个面试官深度学习最核心的数学直觉是什么,大概率听到的答案是“链式法则”。反向传播的全部秘密,就是对一个复合函数重复使用链式法则求偏导。PDF 的微积分部分并没有把重点放在求导技巧上,而是直接指向损失函数求梯度这个终极目标。

这一部分真正需要掌握的其实只有三个点:

第一,导数与偏导数的区别。全导数处理一元函数,偏导数处理多元函数。神经网络的损失函数对每个权重求偏导时,把其他权重看作常数,这就是偏导的直观理解。PDF 里有个例子直接对最简单的 MSE 损失做了手推,建议照着推一遍。

第二是链式法则的矩阵形式。单个变量的复合函数求导谁都会,但参数是矩阵的时候呢?PDF 里很聪明地绕开了复杂的张量求导符号,而是用向量化的视角讲清楚“维度是怎么对齐的”。这是全资料里我唯一建议反复读三遍的章节,因为它决定了你能不能自己推导出 GRU、LSTM 的梯度公式。

第三是泰勒展开与 Hession 矩阵。这里的价值不在数学本身,而在帮助你理解优化算法。L-BFGS 其实就是用一阶梯度去近似二阶信息,PDF 里简单提到了二阶近似的概念,对理解 Adam 的更新方向很有帮助。

建议到这里的读者配合torch.autograd做验证。随便构造一个多层感知机,设一组随机输入,打印出每个参数的grad值,然后手推一个参数的偏导,对一下数值差异。对上了,微积分这一关就算真的过了。

2.3 概率论与统计:似然、贝叶斯与损失函数背后的“不确定性”

为什么 ChatGPT 这类模型回答同一个问题每次结果都不一样?因为它在采样。为什么交叉熵损失能反映分类效果?因为它在衡量两个分布的差异。这些背后的思想都来自概率论,而 PDF 在概率论部分做得非常克制,它没有堆砌概率公理,而是聚焦在机器学习用得上的一小块。

需要重点掌握的分布有三个:伯努利分布对应二分类,Categorical 分布对应多分类,高斯分布贯穿回归与噪声假设。有心的话可以对照 PyTorch 的torch.distributions包,看看每种分布的参数化方式,你就知道为什么模型最后要接一个 softmax 了。

接下来是条件概率、贝叶斯公式和独立性。贝叶斯公式是朴素贝叶斯分类器和贝叶斯优化算法的共同起点。而独立同分布假设几乎出现在每一个监督学习模型的推导中,不理解 i.i.d.,就理解不了为什么损失函数是对所有样本求和再取平均。

极大似然估计这个概念值得花一个晚上慢慢品。知道“概率是多少”和“什么参数最可能产生已观测数据”是完全两码事。PDF 从高斯分布出发推了一遍极大似然,结论是高斯假设下的极大似然估计等价于最小化 MSE。把这条链路走通,你会真心觉得“原来数学真的是通的”。

最后是期望、方差与各类矩。偏差-方差分解是模型复杂度和正则化理论的源头。PDF 这本书里用一张表总结了均值、方差、协方差在不同算法里的角色,复制下来贴在显示器旁边,再配合留出法做模型验证时感受会很深。

2.4 最优化:梯度下降、凸性与模型训练收敛的关系

最优化是连接数学与工程的那座桥。模型训练的本质就是求解一个最优化问题:在参数空间中寻找让损失函数最小的那组参数。PDF 在最优化部分把内容裁剪得正好——没有线性规划、对偶理论,只有梯度下降的收敛性分析与凸性概念。

首先要搞懂梯度下降到底在做什么。很多新手翻车的地方是混淆了“损失函数”和“参数空间”的关系。损失函数是定义在所有参数组合上的一个高维曲面,梯度告诉你当前位置最陡的上升方向,我们要反其道而行之,沿最陡的下降方向走一小步。PDF 里用二元函数画过等高线图,那个图配合实际模型训练时的 loss 曲线看,理解会深很多。

其次是学习率为什么这么敏感。学习率太大,梯度下降会反复横跳甚至发散;学习率太小,训练慢得让人怀疑人生。在线阅读资料通常告诉你经验值 0.01 或 0.001,但 PDF 里从更新公式的角度解释了为什么会产生两类失败:大于两倍 Lipschitz 常数时,算法会震荡。这个分析虽然简单,但能帮你在调参时有一种“我知道自己有多危险”的意识。

凸函数与非凸函数的区别决定了优化是否能找到全局最优解。真正的深度网络都是高度非凸的,所以随机初始化、学习率调度、动量等技巧才变得如此重要。PDF 用了一个很直接的例子——将损失函数画成高低起伏的山地,凸优化是一口锅,非凸优化是连绵山脉,每次训练都是随机挑一个坑跳进去。把心态调整到这个视角,你看到 loss 曲线波动时就不会那么慌了。

建议每一位读者在这个章节结束时做一个小实验:写一个十行以内的 numpy 程序,对一个二次函数做梯度下降,尝试三种学习率(0.01、0.1、1.0),观察收敛行为。这个实验做一次,比死记十遍公式都来得值。

3. 怎么把数学读到能用:一份可执行的三段式学习路线

3.1 第一遍:通读批注圈重点,目标只是建立“提到哪个符号知道在哪”

拿到 PDF 以后不要一上来就从头啃到尾。那会让你在行列式展开那里就失去耐心。我一般推荐第一遍用 7 天时间,每天 60~90 分钟,像看小说一样快速翻阅。这一遍的任务是圈出每一章的核心公式,标记哪些地方你觉得看不懂,然后把不懂的地方直接跳过去。

这一遍不追求掌握,而是建立一张“地图”。比如你以后遇到 attention 公式里的softmax(QK^T / sqrt(d_k)),你要能立刻联想到:哦,这是线性代数里矩阵乘法的应用、概率论里 softmax 的归一化、还有微积分里对 softmax 求导的链式规则。知道去哪找答案,比记住答案重要得多。

以下是第一遍建议的阅读顺序和对应时长参考:

章节模块建议时长第一遍关注点
线性代数基础2 天矩阵乘法 shape 规则,特征值分解
微积分核心2 天偏导数记号、链式法则的向量形式
概率论与统计2 天常见分布、贝叶斯公式、期望与方差
最优化基础1 天梯度下降公式、学习率敏感性

这份 PDF 其实已经帮读者做了筛选,不需要像读本科教材那样每个定理都过一遍。第一遍读到“有印象,知道在哪”,就算合格。

3.2 第二遍:边看边复现,用 numpy 把你读到的公式变成能运行的代码

第二遍是真正内化的过程。还是那四章,但每一节读完,必须动手写一段不超过 20 行的代码去验证。不要用现成的机器学习框架,用 numpy 就好。

以线性代数为例,读完向量和矩阵乘法的几何意义后,做一个简单实验:

import numpy as np # 构造一个旋转矩阵,绕原点逆时针旋转 90 度 theta = np.pi / 2 R = np.array([[np.cos(theta), -np.sin(theta)], [np.sin(theta), np.cos(theta)]]) # 原始向量 (1, 0) v = np.array([1.0, 0.0]) # 旋转后的结果 v_rot = R @ v print("旋转后向量:", v_rot) # 期望看到接近 (0, 1) # 验证特征分解:R 矩阵的复数特征值模长必然是 1 eigvals, eigvecs = np.linalg.eig(R) print("特征值:", eigvals) print("特征值模长:", np.abs(eigvals))

这段代码的逻辑说明:矩阵作用于向量的核心几何意义是“拉伸或旋转”。旋转矩阵的特征值是复数,且模长为 1,反映变换过程没有缩放、只有角度变化。参数说明里,R @ v就是矩阵乘法,numpy 用@运算符;np.linalg.eig返回的特征值按复数形式排布,实部和虚部同时存在。

类似的,概率论章节读完极大似然估计之后,可以验证一下“正态分布样本的极大似然估计就是样本均值和样本方差”这个结论:

import numpy as np # 生成一组服从 N(2.0, 3.0) 的样本 np.random.seed(0) samples = np.random.normal(loc=2.0, scale=np.sqrt(3.0), size=10000) # 手动计算极大似然估计 mu_hat = samples.mean() sigma_sq_hat = ((samples - mu_hat) ** 2).mean() print("均值估计:", mu_hat) # 期望接近 2.0 print("方差估计:", sigma_sq_hat) # 期望接近 3.0 # 与 numpy 内置估计对比 print("内置方差:", samples.var())

这段代码的逻辑说明:极大似然估计对于正态分布给出的均值估计就是样本均值,方差估计就是所有样本与均值差的平方的平均。注意这里用的方差是总体方差,不是贝塞尔修正后的样本方差,所以与samples.var()一致。

第二遍最花时间,但收获也最大。每天两小时,持续三周,四章内容可以全部过完。代码不需要保存成项目,写在一两个临时脚本里反复改就行。

3.3 第三遍:反向倒查,从论文公式出发定位到 PDF 的知识点

第三遍和前面相反,是带着问题去 PDF 里找答案,而不是顺着章节往前读。做法是找一篇你正在研究的论文,把里面连续出现的数学符号全部标注出来,逐个倒查。比如你现在读一篇讲对比学习的论文,里面出现sim(z_i, z_j) = z_i^T z_j / (||z_i|| * ||z_j||),那你就回到 PDF 的向量范数那一页,把余弦相似度的定义吃透。

倒查有一个很大的好处:你是在有上下文的情况下看公式,所以记忆强度远高于单纯阅读。很多从业者最后能“读公式像读中文”,靠的就是反复倒查形成的条件反射。这个阶段可以按周安排,每周只倒查 3 到 5 个公式,不需要贪多。

4. 避坑:五个最容易让新手“学废”的真实场景

4.1 坑一:线性代数没学完就去看 Transformer,注意力权重全靠背诵

现象:很多读者从 PDF 的矩阵乘法直接跳到自注意力机制,发现Q K^T / sqrt(d_k)这一步还能看懂,但后面的softmax为什么要除以根号 d_k 完全没头绪。

原因:注意力权重的缩放因子来自对点积方差的分析。当向量维度变大时,点积结果方差会同步变大,导致 softmax 的梯度消失。不理解随机变量的方差传递就推导不出这个缩放因子,靠背诵当然记不住。

解决:回到 PDF 概率论部分的期望与方差计算公式,自己推导一次:假设q_i和k_i都是均值为 0、方差为 1 的独立随机变量,那么它们的点积方差恰好为d_k,将点积除以sqrt(d_k)可以让方差恢复到 1。推完这个小证明,缩放因子就成了理所当然的设计而非玄学。

4.2 坑二:把“矩阵求导”当普通导数处理,shape 对不上

现象:自己手写反向传播时,某个参数的梯度算出来 shape 是(64, 128),却得到(128, 64)的结果,代码报维度错误,怎么看怎么不对劲。

原因:矩阵对矩阵的求导遵循索引约定,不是逐元素求完导再随便摆放。最常见的错误是忽略了转置的位置。对一个线性层y = W x,损失对 W 的梯度是grad_y @ x^T,可很多人写成了x @ grad_y。

解决:每次写出梯度公式前,先做维度分析。确定目标是让梯度 shape 与参数 shape 一致。如果参数W的 shape 是(out, in),输入x是(batch, in),grad_y是(batch, out),那么梯度必然是grad_y.T @ x。把这个检查变成肌肉记忆,矩阵求导基本不会翻车。

4.3 坑三:只记公式不推推导,考试式学习在论文里寸步难行

现象:PDF 里关于交叉熵损失的推导看了三遍,觉得自己会了,结果过两天看到一个新损失函数 Focal Loss 的论文时,又卡在梯度推导上。

原因:阅读公式的行为和推导公式的行为在大脑里走的是完全不同的通路。前者是模式匹配,后者才是数学思维。只会前者的话,遇到任何变体都会像第一次见面。

解决:每读一个 PDF 里的重要公式,都要做一次“合上资料默写推导”的练习。比如交叉熵损失函数如何对 logits 求导,自己完整写一遍,然后和资料里的推导比对。凡是能默写出来的公式,才真正属于你。

4.4 坑四:概率论跳过“条件概率与独立性”,贝叶斯那几章完全读不懂

现象:读 PDF 里贝叶斯分类器的部分,看到后验概率P(c|x)就晕,不理解为什么先验和似然相乘之后还要除以一个证据因子。

原因:直接跳过了条件概率定义,没有把“乘法公式”和“全概率公式”这两块地基打牢。贝叶斯公式本质上就是条件概率定义做一次反向展开而已。

解决:回头把 PDF 里条件概率的定义读一遍,重点做乘法公式P(A∩B) = P(A)P(B|A)的推导,然后从乘法公式推出贝叶斯公式。前后不过一页纸,但做完这个推导后,贝叶斯那一整章都会变得透明。

4.5 坑五:贪多,想把所有数学分支都学完再开始写代码

现象:有的读者花三个月刷完整本本科教材才敢碰深度学习框架,结果早把前面的内容忘光了,代码依然不怎么会。

原因:AI 工程实践需要的数学不过十几条核心链路,把本科数学系的教学大纲搬过来属于典型的过度准备。知识的留存率在“使用中”远高于“学习时”。等你把代码跑起来,再回头补数学,效率高得多。

解决:先跑通一个最小的神经网络,比如用 numpy 手写两层感知机完成二分类,然后顺着代码里用到的每一个数学操作(矩阵乘法、损失计算、梯度更新)回到 PDF 查对应章节。用需求驱动学习,而不是学术驱动。

5. 从“能看懂”到“能推导”:三个每天可做的验证习惯

5.1 用“费曼验证法”把每一节公式讲给自己听

当 PDF 的某一节读完后感觉自己懂了,立刻关掉文档,用大白话把这一节的公式默述一遍。描述里不允许出现数学符号,只能靠日常语言解释:矩阵乘法的行是“输入”,列是“输出”;softmax 做的事情是“把一组实数变成加起来等于 1 的正数”。你如果能用最简单的比喻让一个外行听懂,才说明你真的吃透了这个概念。方法听起来很笨,但实际是效率最高的学习方式。

5.2 隔天重述法:合上书,把核心推导链默写出来

记忆的最大敌人是“熟悉感错觉”。你今天看 PDF 觉得全懂了,明天合上书再回忆,会发现自己连第一步怎么走都忘了。我是这样处理这类资料的:每学完一节,次日早晨花十五分钟,在纸上默写整条推导链。比如从交叉熵出发,一步步推到对 softmax 输入的梯度公式。默写不出就翻回去记笔记,然后隔一天再默写一次。需要三次都顺利默写,这个知识点才算真正过关。

5.3 每学完一节,回到工程代码里找它的“用武之地”

数学知识最大的陷阱是它看起来高级却落不了地。所以我在读这份 PDF 的过程中给自己定了一个规矩:每个知识点都要找到至少一处真实工程里的对应位置。线性代数里的矩阵乘法对应nn.Linear的权重操作,概率论里的交叉熵对应nn.CrossEntropyLoss,最优化里的梯度下降对应优化器的更新步骤。当时啃这份 PDF 花了六周,真正让我发生质变的其实是最后两周的反复倒查——不再管章节顺序,只对着自己手头模型里的每个模块,问一个“为什么它的数学原型是这个”。那段时间之后,我看任何模型的源码,第一反应不再是代码逻辑,而是先画数学结构,再回代码对照。从那以后我每次要上手一个新模型,都强制走一遍这个流程:先想足数学,再碰代码,最后再回到 PDF 做校验。希望帮到你沿着这条路走得更远。

本文还有配套的精品资源,点击获取

RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进