跳到主要内容

深度学习只要这几样数学 — 张量、梯度与概率

这一章讲三件事: 数据和模型怎么摆成数学对象(线性代数), 「参数该往哪动」怎么算出来(微积分与自动微分), 以及「有多不确定」怎么说清楚(概率)。 原书在这部分是「数学速成班 + NumPy 教程」; 我们的拆解只取概念层——读完这一章,后面所有章节的公式你都读得下去。

1. 顶层全景:三样数学,各管一件事

数据与模型长什么样 → 线性代数:张量、矩阵乘法、范数
参数该往哪个方向动 → 微积分:导数、梯度、链式法则
「有多确定」怎么说 → 概率:分布、贝叶斯、期望与方差

图说:三样数学对应训练循环(第 01 章)的三个环节:
模型(线性代数)、优化(微积分)、评估(概率)。

原书这部分还覆盖了 pandas 数据预处理、API(应用程序接口:「库里每个函数怎么调」的说明书)文档查询等工具内容, 这些属于「打开原书动手跑」的部分,拆解从略;我们守住一条线: 只讲后面二十章反复要用的概念。

2. 张量:一切先变成数组

第 01 章说过,一张照片展开成 12 万个数。 这一节把「摆成数」这件事讲全。

深度学习框架里的张量就是多维数组:一个数叫标量(0 阶), 一串数叫向量(1 阶),一张表叫矩阵(2 阶), 再高阶就统称 n 阶张量1。 一张彩色图像是 3 阶张量(高×宽×红绿蓝三通道), 一批图像是 4 阶(再加一个「第几张」的轴)。

作者特意区分了两个容易混的词:阶(order)是轴的个数, 维度(dimensionality)是某根轴有多长2。 说「这个向量是 784 维的」指的是长度,不是阶。

框架张量和普通数组(比如 NumPy)相比多两个「杀手特性」: 支持自动微分、能在 GPU 上算3。这两个特性分别是第 5 节和第 07 章的主题。

3. 三种乘法,别买错票

线性代数里这一章只钉三件事,因为神经网络每一层就是它们中的一个。

点积:两个向量,同位置相乘再求和,得到一个数4

它的第一个身份后面反复用:权重(每个分量占多大的份量)和为 1 时,点积就是加权平均。

第二个身份要先补一个动作:把向量缩放到单位长度,这叫归一化。

两个向量都归一化时,点积就是它们夹角的余弦(角越小余弦越靠近 1,方向越像)—— 「两个词的意思有多像」在词向量那一章(第 17 章)就是用这个量的。

矩阵-向量积:矩阵的每一行和向量做点积,结果还是向量5。 它是「一次变换」:把一个 d 维向量变成另一个向量。 作者点破了它的江湖地位:这是神经网络每一层的核心计算6—— 「一层」就是「输入向量 × 权重矩阵 + 偏置(bias,让输出整体平移、直线不必过原点的一个常数)」。

矩阵乘法:多个矩阵-向量积拼起来。 顺带记住一个价格标签:两个同尺寸矩阵逐元素相乘(叫 Hadamard 积)是平方级成本, 而矩阵乘法是立方级——贵得多,别在代码里写错成逐元素那种7

补一把尺:范数

最后一个要钉的词是范数:一个向量(或矩阵)「有多大」的度量。 ℓ2 范数是平方和开根号(中学几何的直线距离); ℓ1 范数是绝对值之和(又叫曼哈顿距离,对离群值更不敏感)8; 把矩阵摊平当向量算 ℓ2,叫 Frobenius 范数。 为什么重要?因为深度学习的目标几乎全是「某种距离」: 预测离真值多远、两张脸的特征离多近——距离都是用范数写的9

4. 导数与梯度:参数该往哪动

导数就是变化率:输入动一丁点,输出动多少10。 它对优化的意义直接:想知道「把这个参数拧大一点,损失会涨还是跌」, 算一下损失对它的导数就行。

阿基米德用边数越来越多的内接多边形逼近圆面积—— 这个「无限逼近」的想法就是微积分的根11,导数的正式定义正是这种极限。

模型里有几千亿个参数,所以实际用的是梯度: 把损失对每个参数的偏导数(其余参数当常数)算出来,拼成一个向量12。 梯度指向损失上升最快的方向,所以参数更新走它的反方向——这就是梯度下降。

还有一个老实话:我们真想优化的东西(比如分类准确率)常常不可导—— 曲线是台阶状的,没有斜率可言。行业的办法是换一个形状相近、 但处处可导的代理目标来优化13。交叉熵(第 05 章)就是错误率的可导代理。

5. 链式法则与自动微分:全书所有训练的总发动机

链式法则回答一个问题:函数套函数,整体的变化率怎么算? 答案朴素:变化率沿链条逐个相乘。y=f(g(x)),则 dy/dx = dy/du · du/dx14。 多变量(函数有多个输入变量)版本只是把乘积换成向量-矩阵乘积—— 这就是为什么线性代数是深度学习的地基15

现在看整条流水线。一个 100 层的网络,损失对第 1 层参数的导数, 是 99 个局部变化率沿链相乘的结果。 「前向」过一遍网络算出损失,「反向」沿同一张依赖图走回去, 把每层的局部变化率逐个乘起来—— 这个反向走图、系统应用链式法则的过程,就叫反向传播16

手推几百层的导数不现实,所以框架替你做了: 当你让数据流过每个函数时,框架同步记下「每个值是由谁算出来的」, 这张记录叫计算图;要梯度时,自动沿图反向走一遍。 这套机制叫自动微分(autograd)17。 它的历史比多数人想的早:1964 年就有文献, 现代反向传播的核心来自 1980 年的一篇博士论文18

三个值得知道的细节:

  • 控制流(程序里 if、while 这类决定执行路径的结构)也能微分。 哪怕你的计算里有 if、while、循环次数取决于输入, 只要实际跑过一遍,图就是确定的,就能反传19;
  • 梯度默认累加。 PyTorch 不会自动清零上次的梯度—— 想重新算,要自己清(这是个高频踩坑点);
  • 可以把某段计算「摘出图外」(detach): 摘出来的值只当常数用,梯度不再穿过它20

6. 概率:给「不确定」一套语言

机器学习从头到尾都在跟不确定性打交道: 标签不确定、参数估计不确定、部署时的数据和训练时是不是一个分布也不确定。 概率论就是在不确定下做推理的数学21

先分清两个学派,因为他们对「概率是什么」答案不同: 频率派只给可重复事件(抛硬币)谈概率; 贝叶斯(18 世纪英国牧师,留下「拿证据更新置信度」那条定理的人)把概率当「置信度」,可以给一次性事件(这座水坝会不会塌)赋值, 允许不同的人从不同的先验信念出发,用证据更新到后验22

再分清一对词:概率是理论量(硬币本身的性质), 统计量是从数据算出来的经验量(抛 100 次、52 次正面)23。 把统计量设计来估计概率,叫估计量; 大数定律保证:重复次数够多,频率收敛到概率; 中心极限定理进一步给出速度:误差大约按 1/√n 缩小—— 观测从 10 个涨到 1000 个,不确定性缩到 1/10; 再涨 1000 个,只缩到 1/1.4124先易后难、越往后越贵,是机器学习的常态。

走查:HIV 两次检测(本章主走查)

这一节把贝叶斯定理完整走一遍,数字都是书里给的25

某 HIV 检测:真有病时检出率 100%,健康人误报率 1%。 假设人群患病率 0.0015(万分之十五)。某人检测阳性,他真患病的概率是多少?

直觉会说「检测这么准,多半是真有病」。 贝叶斯定理算的是另一笔账:

P(有病|阳性) = P(阳性|有病)·P(有病) / P(阳性)

P(阳性) = 真阳性 + 假阳性
= 1×0.0015 + 0.01×0.9985
= 0.0015 + 0.009985
= 0.011485

P(有病|阳性) = 0.0015 / 0.011485 ≈ 13.06%

阳性了也只有 13% 的可能真有病——因为人群里健康人太多了, 1% 的误报率乘上巨大的基数,假阳性反而比真阳性多。 先验(患病率)在这里是决定性的。

医生接着做第二个检测(差一些:检出率 98%、误报率 3%),又是阳性。 假设两次检测在「给定是否患病」的条件下相互独立,重算:

P(两次都阳性|有病) = 1 × 0.98 = 0.98
P(两次都阳性|健康) = 0.01 × 0.03 = 0.0003
P(两次都阳性) = 0.98×0.0015 + 0.0003×0.9985 ≈ 0.00177
P(有病|两次阳性) = 0.98×0.0015 / 0.00177 ≈ 83.07%

13% 一下子跳到 83%26。 注意两个教训:第二检测虽然更差,仍然大幅提高了置信度; 而「条件独立」假设是这一切的前提——同一个检测做两遍,什么新信息也没有。 作者还点了一句:这个诊断过程,其实就是一个藏在明处的分类器—— 每多一份检测结果,就像多一个特征。

先量「平均」,再量「晃多大」;再分清两种不确定性

期望就是按概率加权的平均:一项投资 50% 血本无归、40% 翻 2 倍、10% 翻 10 倍, 期望回报是 0.5×0 + 0.4×2 + 0.1×10 = 1.8 倍27

方差就是「围绕期望晃多大」的量

X
= E[(X−EX)²]。 (上面这笔投资的方差是 8.36——期望不错,但非常险。)

最后是一对后面会反复用的词: aleatoric 不确定性是问题固有的随机(公平硬币下一次正反,看多久都只能是 50%); epistemic 不确定性是知识不足(不知道硬币真实的正面率), 它能靠更多数据消掉28。 高斯过程(第 19 章)画出来的「离数据越远越不确定」,就是后者。

7. 作者的判断与证据

书里给了证据的: 大数定律与中心极限定理的收敛(书里有抛硬币模拟图); HIV 走查的全部算术;自动微分的年代(1964/1980 引文)。

作者的立场: 全书刻意「直觉优先于严格」——概率、微积分都只给到够用的程度, 严格处理指向附录和参考书。作者自承 aleatoric/epistemic 的术语用法 「是轻微的滥用语言」29——照实标出,这种坦白本书很多,值得留着。

8. 边界与局限

  • 这一章是生存包,不是数学课:矩阵分解、测度论、假设检验都推给了附录;
  • 概率一节只覆盖到贝叶斯定理与期望方差;统计推断(置信区间、检验)在数学附录,拆解第 20 章交代;
  • 贝叶斯走查依赖「条件独立」这一硬假设,书里自己也用「同一检测做两遍」点破了它的脆弱。

9. 可带走的

  1. 张量 = 多维数组;阶是轴数,维度是轴长;
  2. 神经网络每一层 = 一次矩阵-向量积 + 偏置;点积同时是加权平均和夹角余弦;
  3. 深度学习里的「距离」几乎全是范数;
  4. 梯度 = 损失对每个参数的偏导拼成的向量,参数更新走它的反方向;
  5. 不可导的目标(准确率)换可导的代理(交叉熵)来优化;
  6. 反向传播 = 沿计算图反向系统应用链式法则;自动微分让它成为框架的免费服务;
  7. 概率是理论量、统计量是经验量;误差按 1/√n 缩,越往后越贵;
  8. 贝叶斯定理里先验是决定性的——「检测 99% 准」和「阳性后 13% 真患病」可以同真;
  9. 两种不确定性:固有的(消不掉)与知识性的(数据能消掉)。

10. 原文地图

主题原书章原文位置
张量的两个杀手特性Data Manipulationtext/05-data-manipulation.txt:27(搜「killer features」)
阶与维度之分Linear Algebratext/07-linear-algebra.txt:132(搜「order」)
点积、加权平均、余弦Linear Algebratext/07-linear-algebra.txt:650(搜「dot product」) · text/07-linear-algebra.txt:714(搜「weighted average」)
矩阵-向量积是每层的核心Linear Algebratext/07-linear-algebra.txt:770(搜「key calculation」)
矩阵乘法比 Hadamard 贵Linear Algebratext/07-linear-algebra.txt:1122(搜「cubic rather than quadratic」)
ℓ1/ℓ2/Frobenius 范数Linear Algebratext/07-linear-algebra.txt:990(搜「Manhattan distance」) · text/07-linear-algebra.txt:1033(搜「Frobenius norm」)
目标都写成范数Linear Algebratext/07-linear-algebra.txt:1078(搜「expressed as norms」)
导数=变化率;ArchimedesCalculustext/08-calculus.txt:81(搜「rate of change」) · text/08-calculus.txt:11(搜「Archimedes」)
可导代理Calculustext/08-calculus.txt:117(搜「surrogate」)
链式法则与向量-矩阵积Calculustext/08-calculus.txt:352(搜「chain rule」) · text/08-calculus.txt:379(搜「vector--matrix product」)
计算图与反向传播Automatic Differentiationtext/09-automatic-differentiation.txt:23(搜「computational graph」) · text/09-automatic-differentiation.txt:30(搜「backpropagation」)
自动微分历史Automatic Differentiationtext/09-automatic-differentiation.txt:36(搜「Wengert」) · text/09-automatic-differentiation.txt:38(搜「Speelpenning」)
detach、控制流微分Automatic Differentiationtext/09-automatic-differentiation.txt:408(搜「detach」) · text/09-automatic-differentiation.txt:510(搜「even if」)
频率派/贝叶斯派Probability and Statisticstext/10-probability-and-statistics.txt:47(搜「frequentist」) · text/10-probability-and-statistics.txt:50(搜「Bayesian」)
概率 vs 统计量、估计量Probability and Statisticstext/10-probability-and-statistics.txt:165(搜「statistics are empirical」) · text/10-probability-and-statistics.txt:169(搜「estimators」)
大数定律、1/√nProbability and Statisticstext/10-probability-and-statistics.txt:339(搜「law of large numbers」) · text/10-probability-and-statistics.txt:344(搜「1/」)
HIV 两次检测Probability and Statisticstext/10-probability-and-statistics.txt:802(搜「0.1306」) · text/10-probability-and-statistics.txt:848(搜「0.8307」)
期望与方差Probability and Statisticstext/10-probability-and-statistics.txt:543(搜「1.8」)
两种不确定性、术语自白Probability and Statisticstext/10-probability-and-statistics.txt:1013(搜「aleatoric uncertainty」) · text/10-probability-and-statistics.txt:1033(搜「philosophical sense」)

Footnotes

  1. 出处:「Linear Algebra」第 112 段(text/07-linear-algebra.txt:112,搜「fixed-length array of scalars」)。

  2. 出处:「Linear Algebra」第 132 段(text/07-linear-algebra.txt:132,搜「order」)。原文:用 order 指轴数,dimensionality 专指分量个数。

  3. 出处:「Data Manipulation」第 27 段(text/05-data-manipulation.txt:27,搜「killer features」)与第 29 段(text/05-data-manipulation.txt:29,搜「automatic differentiation」)。

  4. 出处:「Linear Algebra」第 650 段(text/07-linear-algebra.txt:650,搜「dot product」)。

  5. 出处:「Linear Algebra」第 741 段(text/07-linear-algebra.txt:741,搜「matrix--vector product」)。第 i 个元素是第 i 行与 x 的点积。

  6. 出处:「Linear Algebra」第 770 段(text/07-linear-algebra.txt:770,搜「key calculation」)。原文:矩阵-向量积是「computing the outputs of each layer in a neural network」的关键计算;还能表示旋转等变换。

  7. 出处:「Linear Algebra」第 1122 段(text/07-linear-algebra.txt:1122,搜「cubic rather than quadratic」)。

  8. 出处:「Linear Algebra」第 990 段(text/07-linear-algebra.txt:990,搜「Manhattan distance」)。原文:与 ℓ2 相比,ℓ1「less sensitive to outliers」。

  9. 出处:「Linear Algebra」第 1078 段(text/07-linear-algebra.txt:1078,搜「expressed as norms」)。

  10. 出处:「Calculus」第 81 段(text/08-calculus.txt:81,搜「rate of change」)。

  11. 出处:「Calculus」第 11 段(text/08-calculus.txt:11,搜「Archimedes」)。内接 n 边形的面积逼近 πr²。

  12. 出处:「Calculus」第 286 段(text/08-calculus.txt:286,搜「gradient」)。

  13. 出处:「Calculus」第 117 段(text/08-calculus.txt:117,搜「surrogate」)。原文点名 accuracy 与 AUC 不可导。

  14. 出处:「Calculus」第 358 段(text/08-calculus.txt:358,搜「chain rule states」)。

  15. 出处:「Calculus」第 379 段(text/08-calculus.txt:379,搜「vector--matrix product」)。原文:这是线性代数成为深度学习系统基本构件的关键原因之一。

  16. 出处:「Automatic Differentiation」第 30 段(text/09-automatic-differentiation.txt:30,搜「backpropagation」)。

  17. 出处:「Automatic Differentiation」第 23 段(text/09-automatic-differentiation.txt:23,搜「computational graph」)。

  18. 出处:「Automatic Differentiation」第 36 段(text/09-automatic-differentiation.txt:36,搜「Wengert」)与第 38 段(text/09-automatic-differentiation.txt:38,搜「Speelpenning」)。

  19. 出处:「Automatic Differentiation」第 510 段(text/09-automatic-differentiation.txt:510,搜「even if」)。原文:即使函数经过「a maze of Python control flow」,也能对结果变量求梯度——图是运行时具体实现的。

  20. 出处:「Automatic Differentiation」第 408 段(text/09-automatic-differentiation.txt:408,搜「detach」)。例:z = x·u(u 是 detach 后的 y),对 x 的梯度是 u 而非 3x²。

  21. 出处:「Probability and Statistics」第 40 段(text/10-probability-and-statistics.txt:40,搜「reasoning under uncertainty」)。

  22. 出处:「Probability and Statistics」第 47 段(text/10-probability-and-statistics.txt:47,搜「frequentist」)与第 50 段(text/10-probability-and-statistics.txt:50,搜「Bayesian」)。

  23. 出处:「Probability and Statistics」第 165 段(text/10-probability-and-statistics.txt:165,搜「statistics are empirical」)。

  24. 出处:「Probability and Statistics」第 339 段(text/10-probability-and-statistics.txt:339,搜「law of large numbers」)与第 1045 段(text/10-probability-and-statistics.txt:1045,搜「tenfold reduction」)。原文:从 10 到 1000 个观测,不确定性缩 10 倍;再来 1000 个只缩 1.41 倍——「easy gains, then expensive」。

  25. 出处:「Probability and Statistics」第 802 段(text/10-probability-and-statistics.txt:802,搜「0.1306」)。患病率 P(H=1)=0.0015,P(阳性)=0.011485,P(有病|阳性)≈0.1306。

  26. 出处:「Probability and Statistics」第 848 段(text/10-probability-and-statistics.txt:848,搜「0.8307」)与第 853 段(text/10-probability-and-statistics.txt:853,搜「conditionally independent」)。原文强调条件独立假设的关键性,以及「the diagnosis behaved like a classifier hiding in plain sight」。

  27. 出处:「Probability and Statistics」第 543 段(text/10-probability-and-statistics.txt:543,搜「1.8」)。方差 8.36 见同章期望节末。

  28. 出处:「Probability and Statistics」第 1013 段(text/10-probability-and-statistics.txt:1013,搜「aleatoric uncertainty」)与第 1017 段(text/10-probability-and-statistics.txt:1017,搜「epistemic uncertainty」)。

  29. 出处:「Probability and Statistics」第 1031 段(text/10-probability-and-statistics.txt:1031,搜「abuse of language」)。