
前言:这本书怎么用
──────────────────────────────────────
先讲一件真事
我认识不少这样的人:代码写得漂亮,Pandas 玩得飞起,跟着教程能把模型跑通------然后在某个深夜,被一个公式拦住了。
不是什么高深的公式。就是类似这样的一行:
∑i=1m(y^(i)−y(i))2\sum_{i=1}^{m}\left(\hat{y}^{(i)} - y^{(i)}\right)^2i=1∑m(y^(i)−y(i))2
他们盯着这行东西看十分钟,感觉每个字母都认识,连在一起就是天书。然后做一件我见过很多次的事:把整段公式跳过去,直接抄后面的代码。模型居然也能跑。于是安慰自己"数学不重要,会用就行"。
这个幻觉通常能维持到第一次模型不收敛、第一次 loss 变成 NaN、第一次面试被问"为什么分类用交叉熵不用 MSE"。到那时候再回头补数学,成本是最高的------因为你已经背了一堆"知其然",要一个个拆掉重来。
这本书就是写给那个深夜被公式拦住的人的。你不需要任何高中以上的数学基础------连"函数"想不起来都没关系,我们从数轴和分数讲起,一路走到能亲手推导神经网络的梯度。
一个流行的误会
机器学习需要"数学很好"------这话吓退了太多人。我自学这些年得出的实际版本是:机器学习需要的数学范围很窄,但每一块都要真的懂。它不需要你会解圆锥曲线、不需要三角恒等变换、更不需要奥数技巧。它反复用到的只有五样东西:
| 数学板块 | 在机器学习里干什么 | 本书章节 |
|---|---|---|
| 数与函数 | 一切模型的"原材料" | 第 1、2 章 |
| 线性代数 | 把一千个样本的计算压缩成一次矩阵乘法 | 第 3、4 章 |
| 微积分 | 让模型"知道往哪个方向调整自己" | 第 5、6 章 |
| 概率统计 | 处理"不确定",评价模型好坏 | 第 7、8、9 章 |
| 信息论 | 分类问题为什么要用"交叉熵"这种损失 | 第 10 章 |
第 11 章是"总装"------把前面所有数学拧成一台完整的机器:从零推导线性回归、逻辑回归和一个微型神经网络的反向传播,每一步都有具体数字,你可以拿计算器跟着按。
关于这本书的"详略不均"
你可能已经发现(或者马上会发现):这本书各章的密度并不均匀。第 5、6 章我写得极细,细到近乎啰嗦;第 12 章却只是速查卡和清单。这是故意的。
导数和梯度是整个机器学习的发动机------我见过太多人因为这两章的某一步"假装看懂了",在后面付出成倍的代价。所以凡是发动机零件,我一个螺丝都不跳。而有些内容(比如附录里那些清单)你用的时候自然会回来查,写成长篇大论反而是浪费你的时间。这不是严谨性的差异,是重要性的差异。 如果你觉得某章太啰嗦,那说明你已经会了,快速过掉它,不必陪我较真。
这本书的教法
每一节都走同一条路线,这是被验证过对初学者最有效的顺序:
- 这一节要解决什么问题 ------ 先告诉你为什么需要它,没有动机的数学是最难学的;
- 生活比喻建立直觉 ------ 导数是速度表,梯度是"浓雾里下山的走法",熵是"平均惊讶程度";
- 符号登场 ------ 直觉稳了才引入记号,而且每个符号都单独解释;
- 手算例子 ------ 数字都很小,你拿纸笔 30 秒能验算完。这一步不能跳:看懂和会算是两回事,机器学习里的"卡壳"几乎都发生在"这步为什么这么变形";
- 代码验证 ------ 用 NumPy 跑一遍,让理论数字和程序输出对上;
- 坑 ------ 初学者最容易犯的错,提前标出来;
- 练习 + 答案 ------ 答案放在每章末尾,先做再看。
三条学习纪律
第一条:允许慢,不允许跳。 每一章都直接被后面的章节使用。第 3 章的"内积"如果没亲手算过,第 11 章推导反向传播时你会在第一步就迷路。慢不是缺点,跳才是。
第二条:每个公式至少手算一个例子。 数学不是读会的,是算会的。这本书里凡是出现公式的地方,旁边一定跟着一个可以心算或笔算的小例子。
第三条:符号看不懂就回到直觉。 忘了 ∑\sum∑ 是什么意思?回到"把一列数全加起来"这个直觉再看符号。符号只是直觉的速记,不是另一门学问。
全书地图
第 1 章 数与运算 ── 分数、幂、对数、Σ 求和符号
第 2 章 函数 ── 机器学习的"积木":一次函数就是线性模型
──────────── 以上是"识字课" ────────────
第 3 章 向量 ── 把一个样本变成一列数字;内积=相似度
第 4 章 矩阵 ── 把一千次计算压成一次;数据的仓库
──────────── 线性代数完毕 ────────────
第 5 章 导数 ── 变化速度;链式法则是反向传播的心脏
第 6 章 偏导与梯度 ── 梯度下降:机器学习的发动机
──────────── 微积分完毕 ────────────
第 7 章 概率 ── 条件概率、贝叶斯:在不确定中推理
第 8 章 随机变量与分布 ── 期望、方差、正态分布
第 9 章 统计与最大似然 ── 损失函数不是拍脑袋定的,是推出来的
──────────── 概率统计完毕 ────────────
第 10 章 信息论 ── 熵、交叉熵:分类损失的出生证明
第 11 章 总装 ── 线性回归/逻辑回归/神经网络完整推导
第 12 章 附录 ── 术语表、公式速查卡、常见错误
建议顺序:第 1、2 章如果大部分熟悉,可以快速过(但 Σ 那节务必做练习)。从第 3 章开始减速,第 5、6 章是全书最核心的两章,值得花一半的学习时间。
一个贯穿全书的约定
机器学习书里有个记号习惯会贯穿本书:
- 上标带括号 (i)(i)(i) 表示"第 i 个样本" :x(1),x(2),...,x(m)x^{(1)}, x^{(2)}, \dots, x^{(m)}x(1),x(2),...,x(m) 是 m 个数据点(注意不是乘方!);
- 下标 j 表示"第 j 个特征" :xjx_jxj 是向量 x 的第 j 个数;
- 两者组合 xj(i)x^{(i)}_jxj(i) = 第 i 个样本的第 j 个特征。
为什么上标要用括号?就是为了和乘方 x2x^2x2 区分开。你会在第 1 章 Σ 一节第一次遇到它,第 4 章彻底熟练。
准备好了就翻到第 1 章。我们从最简单的东西开始:数。