机器学习数学基础 120 章

入门诊断与补课策略

本章要解决的问题

“数学忘光了”通常不是所有知识都消失了,而是三个环节断开了:符号不能立刻识别、概念之间没有连接、公式不能转成具体例子。本章帮助你判断断点在哪里,并设计不重读大学教材的补课方式。

一、十五分钟诊断

请不要查资料,先尝试回答下列问题。每题只需判断自己属于哪一种状态:

  • 2 分:能解释,并能举一个数字例子;
  • 1 分:见过,但不能顺畅解释或计算;
  • 0 分:几乎没有印象。
  1. i=1nxi\sum_{i=1}^{n}x_i 表示什么?
  2. log(ab)=loga+logb\log(ab)=\log a+\log b 为什么对计算似然有用?
  3. 向量 xRd\boldsymbol{x}\in\mathbb{R}^d 中的 dd 是什么?
  4. Ax\boldsymbol{A}\boldsymbol{x} 的结果是什么形状?
  5. 内积为零意味着什么?
  6. 导数和梯度有什么区别?
  7. 链式法则在神经网络中做什么?
  8. 泰勒展开为什么能解释梯度下降?
  9. P(AB)P(A\mid B)P(BA)P(B\mid A) 有何区别?
  10. 概率密度为什么可能大于 1,而概率不能大于 1?
  11. 期望、方差分别描述什么?
  12. 协方差为零是否必然独立?
  13. 似然与概率有什么区别?
  14. 极大似然估计为什么经常取对数?
  15. 训练误差很小为什么不代表泛化误差很小?
  16. 熵为什么能衡量数据集的“混乱程度”?
  17. L1 与 L2 正则化为什么产生不同形态的解?
  18. 特征值和特征向量在 PCA 中做什么?
  19. 拉格朗日乘子在约束优化中做什么?
  20. 浮点数计算中为什么 softmax 不能直接计算所有指数?

满分 40 分:

  • 0~12 分:从第一阶段主线顺序学习,不要直接啃推导;
  • 13~25 分:先学 A 级章节,遇到卡点再回查;
  • 26~34 分:按西瓜书章节反向索引查漏补缺;
  • 35~40 分:基础基本够用,可把时间放在推导、练习和实现上。

分数不是能力评价。它只帮助你确定第一步,不值得为分数焦虑。

二、工程师最有效的四步学习法

第一步:把符号翻译成类型和形状

看到

y^=wTx+b\hat{y}=\boldsymbol{w}^{\mathsf T}\boldsymbol{x}+b

先不要急着问它从哪里推导出来,而应逐项标注:

  • xRd\boldsymbol{x}\in\mathbb{R}^d:输入特征列向量;
  • wRd\boldsymbol{w}\in\mathbb{R}^d:权重列向量;
  • wTxR\boldsymbol{w}^{\mathsf T}\boldsymbol{x}\in\mathbb{R}:两个 dd 维向量的内积,结果是标量;
  • bRb\in\mathbb{R}:偏置;
  • y^R\hat y\in\mathbb{R}:预测值。

这相当于阅读接口签名。大量“数学看不懂”其实是形状没有对齐。

第二步:用最小数字例子运行公式

x=(2,3)T\boldsymbol{x}=(2,3)^{\mathsf T}w=(0.5,1)T\boldsymbol{w}=(0.5,-1)^{\mathsf T}b=2b=2,则

y^=0.5×2+(1)×3+2=0.\hat y=0.5\times2+(-1)\times3+2=0.

只要一个公式不能用两三个数字手算,就还没有真正进入你的知识系统。

第三步:说清“输入—操作—输出—用途”

例如梯度:

  • 输入:一个关于多个参数的标量函数;
  • 操作:分别对每个参数求偏导;
  • 输出:与参数同形状的向量;
  • 用途:给出函数上升最快的局部方向,负梯度用于下降。

这种接口式叙述比先背正式定义更适合恢复期。

第四步:写十行以内的小实验

用 NumPy 或任意熟悉的语言验证:

  • 矩阵乘法的形状;
  • 数值梯度与解析梯度是否接近;
  • 样本均值如何随样本量增大而稳定;
  • 过拟合时训练误差与验证误差如何分叉。

代码实验不是数学证明,但它能快速建立直觉并暴露理解错误。

三、怎样与《机器学习》并行阅读

不要“先学完所有数学,再开始机器学习”。更高效的循环是:

  1. 先用总目录的第一阶段恢复基础;
  2. 阅读西瓜书一小节;
  3. 把所有不懂的符号和步骤写成卡点清单;
  4. 通过反向索引只补相关数学章节;
  5. 回到原推导,自己补写被作者省略的一到三步;
  6. 做一道数值例题或小实现。

数学基础与机器学习内容要交替推进。上下文会让抽象概念更容易留下来。

四、哪些内容暂时可以跳过

第一次通读时,可以暂时跳过:

  • 行列式的复杂手算技巧;
  • 大量人工求逆和高阶积分技巧;
  • 收敛定理的测度论证明;
  • 各种矩阵分解算法的底层数值证明;
  • 学习理论中严格到每个常数的概率界推导;
  • MCMC 的严格遍历性证明。

但不能跳过这些概念“在说什么”和“使用条件是什么”。例如无需熟练计算五阶行列式,却必须知道行列式为零意味着矩阵不可逆。

五、推荐节奏

对于全职工程师,推荐每周 5 天、每天 45~60 分钟:

  • 20 分钟读一个知识点;
  • 15 分钟重做例题,不看答案;
  • 15 分钟做练习或写小实验;
  • 5 分钟用自己的话写三句总结。

每周留一次 90 分钟,把本周知识应用到西瓜书某个推导中。稳定学习六周通常比周末突击更有效。

常见问答

Q1:需要重新学高中数学吗?

通常不需要系统重学。若指数、对数、方程、不等式和函数图像完全陌生,补完第一卷即可。三角函数在经典机器学习中不是主线,只需理解夹角和余弦相似度。

Q2:需要手算复杂矩阵吗?

不需要。你需要理解运算规则、形状、几何含义和数值风险。两三维手算用于建立直觉,大规模计算交给线性代数库。

Q3:证明看不懂怎么办?

先找出结论、条件和关键中间量,再用一个特例验证。若证明不影响当前算法使用,可标记为第二遍阅读。不要把“看不懂某个证明”误判为“整章都没学会”。

Q4:应该先学概率还是线性代数?

先恢复向量、矩阵和导数,再学概率统计。概率中的多元分布、协方差和高斯模型会直接用到线性代数。

Q5:是否需要用 Python?

不是必须。你可以使用 Java、Kotlin、Go 或 JavaScript。关键是快速验证公式;NumPy 只是矩阵与随机模拟最省代码的选择。

练习

  1. 给诊断题逐题打分,列出得分最低的三个主题。
  2. 把逻辑回归的 p^=σ(wTx+b)\hat p=\sigma(\boldsymbol{w}^{\mathsf T}\boldsymbol{x}+b) 按“输入—操作—输出—用途”解释一遍。
  3. 随便找西瓜书中的一个三行以上公式,标注每个变量的类型与形状。
  4. 设计一个不超过十行的实验,说明样本均值会随着样本量增加而更稳定。
  5. 写下你一周内真实可执行的五个学习时段。

参考提示

第 2 题中,线性部分输出实数,Sigmoid 把实数压到 (0,1)(0,1),常被解释为正类概率。第 3 题要特别检查矩阵乘法的内维是否相等。第 4 题可分别从同一分布抽取 10、100、10 000 个样本,重复多次比较均值的波动。