机器学习期末速成

我没有把三十讲重新压缩抄一遍,而是把它们整理成一张能工作的考前知识地图:看到一个概念,知道它解决什么问题;拿到一道计算题,知道从哪个公式开始;遇到一道比较题,知道差异落在哪个假设上。

源目录中没有往年真题,因此我只依据课程课件、课堂展示和作业整理下面的重点,不猜测题型,更不补造“真题”。

1. 先记住机器学习的完整闭环

一个学习问题至少要说清五件事:

  1. 输入与输出:输入 xx 是什么,目标 yy 是类别、数值、序列还是动作?
  2. 模型:用什么参数化函数 f(x;θ)f(x;\theta) 表示预测规律?
  3. 损失:怎样衡量预测和标签的差异?
  4. 优化:怎样根据损失更新参数 θ\theta?
  5. 泛化:模型在没见过的数据上是否仍然可靠?

训练集用于拟合参数,验证集用于选择模型与超参数,测试集只用于最后评估。把测试集反复用于调参,相当于把答案提前泄露给模型,得到的测试性能会偏乐观。

2. 学习范式与泛化

范式训练信号典型任务
监督学习输入与标签 (x,y)(x,y)分类、回归、检测
无监督学习只有输入 xx聚类、降维、密度估计
半监督学习少量有标签、大量无标签数据标签昂贵的识别任务
强化学习状态、动作与延迟奖励导航、博弈、控制

经验风险最小化写成

R^(θ)=1n∑i=1nℓ(f(xi;θ),yi).\hat R(\theta)=\frac{1}{n}\sum_{i=1}^{n} \ell\bigl(f(x_i;\theta),y_i\bigr).

训练误差低不代表真实风险低。模型过于简单会欠拟合,过于灵活又可能记住训练噪声。正则化、更多数据、合理的数据增强、早停和交叉验证,都是在控制这种泛化差距。

PAC 学习关注“需要多少样本,才能以至少 1−δ1-\delta 的概率让真实误差不超过 ε\varepsilon”。VC 维衡量假设类能打散多大规模的样本;容量越大,表达力越强,通常也需要更多数据约束。

3. 三个概率不等式怎样选

  • 只知道非负随机变量的均值:Markov 不等式;
  • 还知道方差:Chebyshev 不等式;
  • 独立、有界变量的样本均值:Hoeffding 不等式。

例如 X≥0X\ge0 时,

P(X≥a)≤E[X]a.P(X\ge a)\le\frac{E[X]}{a}.

若 X1,…,Xn∈[0,1]X_1,\ldots,X_n\in[0,1] 独立同分布,均值为 μ\mu,则

P(∣1n∑i=1nXi−μ∣≥ε)≤2e−2nε2.P\left(\left|\frac{1}{n}\sum_{i=1}^nX_i-\mu\right|\ge\varepsilon\right) \le 2e^{-2n\varepsilon^2}.

做题时先写清随机变量满足的条件,再选不等式;不能因为 Hoeffding 的界看起来更紧就无条件套用。

4. 线性回归、正则化与梯度下降

线性回归用

y^=Xw\hat y=Xw

拟合连续值。平方误差目标为

J(w)=12∥Xw−y∥22.J(w)=\frac{1}{2}\lVert Xw-y\rVert_2^2.

满列秩时,令梯度为零得到正规方程

w=(XTX)−1XTy.w=(X^TX)^{-1}X^Ty.

矩阵不可逆时使用伪逆。岭回归加入 L2L_2 惩罚;若首列表示截距且不希望惩罚截距,可令

J(w)=12∥Xw−y∥22+λ2wTRw,R=diag⁡(0,1,…,1),J(w)=\frac{1}{2}\lVert Xw-y\rVert_2^2+\frac{\lambda}{2}w^TRw, \qquad R=\operatorname{diag}(0,1,\ldots,1),

于是

w=(XTX+λR)−1XTy.w=(X^TX+\lambda R)^{-1}X^Ty.

梯度下降统一写成

θt+1=θt−ηt∇θJ(θt).\theta_{t+1}=\theta_t-\eta_t\nabla_\theta J(\theta_t).

学习率过大会震荡甚至发散,过小则收敛缓慢。Mini-batch 梯度在均匀采样时是全梯度的无偏估计,但某一个批次仍会随机偏离全梯度。

5. 贝叶斯学习、最大似然与 MAP

贝叶斯公式是

p(θ∣D)=p(D∣θ)p(θ)p(D).p(\theta\mid D)=\frac{p(D\mid\theta)p(\theta)}{p(D)}.
  • 最大似然估计只最大化 p(D∣θ)p(D\mid\theta);
  • MAP 同时考虑似然与先验 p(θ)p(\theta);
  • 后验分布则保留参数不确定性的完整描述。

由于连乘容易下溢,通常最大化对数似然:

θ^ML=arg⁡max⁡θ∑ilog⁡p(xi∣θ).\hat\theta_{\mathrm{ML}} =\arg\max_\theta\sum_i\log p(x_i\mid\theta).

朴素贝叶斯使用条件独立假设

p(x∣y=c)=∏jp(xj∣y=c),p(x\mid y=c)=\prod_jp(x_j\mid y=c),

所以分类时比较

p(y=c)∏jp(xj∣y=c).p(y=c)\prod_jp(x_j\mid y=c).

条件独立往往不完全真实,但它显著减少了需要估计的参数,在小数据上仍可能很有效。

6. HMM 的三个基本问题

隐马尔可夫模型由初始分布 π\pi、状态转移矩阵 AA 和发射概率 BB 构成。必须区分三件事:

  1. 评估:给定模型,观测序列出现的概率是多少?用前向算法;
  2. 解码:最可能的隐藏状态序列是什么?用 Viterbi;
  3. 学习:参数未知时怎样估计?有隐藏状态标签时计数,无标签时用 Baum–Welch / EM。

前向量递推为

αt(j)=bj(ot)∑iαt−1(i)aij.\alpha_t(j)=b_j(o_t)\sum_i\alpha_{t-1}(i)a_{ij}.

Viterbi 把求和换成最大值,并额外记录使最大值成立的前驱状态,最后反向回溯路径。

7. 决策树与两类集成方法

熵衡量类别不确定性:

H(D)=−∑cpclog⁡2pc.H(D)=-\sum_cp_c\log_2p_c.

按属性 AA 划分后的信息增益为

Gain⁡(D,A)=H(D)−∑v∣Dv∣∣D∣H(Dv).\operatorname{Gain}(D,A) =H(D)-\sum_v\frac{|D_v|}{|D|}H(D_v).

ID3 选择信息增益最大的属性;C4.5 用增益率缓解偏爱多取值属性的问题。树不断生长会过拟合,因此需要预剪枝或后剪枝。

AdaBoost 和随机森林都组合许多弱模型,但方向相反:

方法样本关系模型关系降低什么
AdaBoost每轮提高错分样本权重串行依赖主要降低偏差
随机森林Bootstrap 抽样可并行训练主要降低方差

AdaBoost 弱分类器权重常写为

αt=12ln⁡1−εtεt.\alpha_t=\frac{1}{2}\ln\frac{1-\varepsilon_t}{\varepsilon_t}.

若 εt≥0.5\varepsilon_t\ge0.5,这个弱分类器没有提供正向信息,应先检查训练过程。

8. 线性判别、感知机与 SVM

线性判别函数为

g(x)=wTx+b,g(x)=w^Tx+b,

决策边界是 g(x)=0g(x)=0。ww 是超平面的法向量,点到边界的有符号距离与 g(x)/∥w∥g(x)/\lVert w\rVert 成正比。

感知机只对分错样本更新。若标签 yi∈{−1,+1}y_i\in\{-1,+1\},一种写法是

w←w+ηyixi,b←b+ηyi.w\leftarrow w+\eta y_ix_i, \qquad b\leftarrow b+\eta y_i.

Fisher 线性判别寻找类间距离大、类内离散小的投影方向。SVM 则最大化几何间隔:

min⁡w,b12∥w∥2s.t.yi(wTxi+b)≥1.\min_{w,b}\frac{1}{2}\lVert w\rVert^2 \quad\text{s.t.}\quad y_i(w^Tx_i+b)\ge1.

软间隔加入松弛变量和惩罚系数 CC。CC 大时更重视训练误差,CC 小时允许更多违例以换取更宽间隔。核技巧用 K(xi,xj)K(x_i,x_j) 直接计算高维特征内积,不必显式构造映射 ϕ(x)\phi(x)。

9. PCA 与稀疏表示

PCA 先中心化数据,再对协方差矩阵求特征分解。最大特征值对应变化最大的方向;取前 kk 个特征向量组成 WkW_k,低维表示为

z=WkT(x−μ).z=W_k^T(x-\mu).

PCA 的最大方差与最小平方重构误差是同一问题的两种视角。PCA 不使用类别标签,也不等于“选择原有的几个特征”。

稀疏表示希望

x≈Dαx\approx D\alpha

且 α\alpha 只有少量非零元素。L0L_0 优化通常困难,常用 L1L_1 松弛:

min⁡α12∥x−Dα∥22+λ∥α∥1.\min_\alpha\frac{1}{2}\lVert x-D\alpha\rVert_2^2 +\lambda\lVert\alpha\rVert_1.

匹配追踪是逐步选择最相关原子的贪心方法;字典学习则交替更新稀疏编码与字典。

10. 强化学习与 Q-learning

强化学习的核心不是预测当前标签,而是最大化长期折扣回报。Q-learning 更新为

Q(s,a)←Q(s,a)+α[r+γmax⁡a′Q(s′,a′)−Q(s,a)].Q(s,a)\leftarrow Q(s,a)+\alpha \left[r+\gamma\max_{a'}Q(s',a')-Q(s,a)\right].

方括号中的量叫 TD 误差。γ\gamma 控制未来奖励的重要程度,α\alpha 是学习率。ε\varepsilon-greedy 用概率 ε\varepsilon 随机探索,否则选择当前 Q 值最大的动作。

Q-learning 是 off-policy:更新目标使用最大 Q 值对应的贪心动作,不要求该动作就是实际采样的下一动作。

11. 神经网络与反向传播

一层网络写成

z(l)=W(l)a(l−1)+b(l),a(l)=ϕ(z(l)).z^{(l)}=W^{(l)}a^{(l-1)}+b^{(l)}, \qquad a^{(l)}=\phi\bigl(z^{(l)}\bigr).

如果层与层之间没有非线性激活,多层线性变换仍可合并成一个线性变换,深度不会增加表达能力。

反向传播只是链式法则的高效组织。若已知上一层传回的 δ(l)=∂L/∂z(l)\delta^{(l)}=\partial L/\partial z^{(l)},则

∂L∂W(l)=δ(l)(a(l−1))T,\frac{\partial L}{\partial W^{(l)}} =\delta^{(l)}\bigl(a^{(l-1)}\bigr)^T, δ(l−1)=(W(l))Tδ(l)⊙ϕ′(z(l−1)).\delta^{(l-1)} =\left(W^{(l)}\right)^T\delta^{(l)} \odot\phi'\bigl(z^{(l-1)}\bigr).

自动微分不等于符号求导,也不等于数值差分。反向模式自动微分从标量损失出发,一次反向遍历就能得到对大量参数的梯度,因此特别适合深度学习。

12. 损失函数与输出层必须配套

任务常见输出常见损失
回归连续值MSE、Huber
二分类一个 logitBinary cross-entropy
多分类每类一个 logitSoftmax cross-entropy
多标签分类每类独立 logit逐类 binary cross-entropy

Softmax 为

pk=ezk∑jezj,p_k=\frac{e^{z_k}}{\sum_je^{z_j}},

多分类交叉熵为

L=−log⁡py.L=-\log p_y.

实现时通常直接使用接受 logits 的数值稳定版本,不要先手工 Softmax 再传给同样会做 Softmax 的损失函数。

13. CNN:尺寸、参数与感受野

二维卷积的单边输出尺寸为

Hout=⌊H+2P−D(K−1)−1S⌋+1,H_{\mathrm{out}} =\left\lfloor\frac{H+2P-D(K-1)-1}{S}\right\rfloor+1,

其中 KK 是核大小,SS 是步幅,PP 是填充,DD 是膨胀率。普通卷积层参数量为

KhKwCinCout+Cout.K_hK_wC_{\mathrm{in}}C_{\mathrm{out}}+C_{\mathrm{out}}.

卷积依靠局部连接与权重共享减少参数;池化或带步幅卷积负责下采样。卷积对平移近似等变,池化只能带来有限的局部不变性,不能说 CNN 对任意平移都完全不变。

架构演进的主线:

  • LeNet 建立“卷积—池化—分类”的模板;
  • AlexNet 证明深 CNN 能在大规模数据上工作;
  • VGG 用重复的小卷积核统一设计;
  • Inception 并行处理多尺度特征;
  • ResNet 用 y=F(x)+xy=F(x)+x 缓解深层网络优化困难。

14. RNN、LSTM 与 Transformer

RNN 用隐藏状态保存历史:

ht=ϕ(Wxhxt+Whhht−1+bh).h_t=\phi(W_{xh}x_t+W_{hh}h_{t-1}+b_h).

它在时间上共享参数,但长链乘积容易造成梯度消失或爆炸。LSTM 用遗忘门、输入门和输出门控制细胞状态:

ct=ft⊙ct−1+it⊙c~t,ht=ot⊙tanh⁡(ct).c_t=f_t\odot c_{t-1}+i_t\odot\tilde c_t, \qquad h_t=o_t\odot\tanh(c_t).

Transformer 的核心是缩放点积注意力:

Attention⁡(Q,K,V)=softmax⁡(QKTdk)V.\operatorname{Attention}(Q,K,V) =\operatorname{softmax}\left(\frac{QK^T}{\sqrt{d_k}}\right)V.

除以 dk\sqrt{d_k} 是为了避免维度增大后点积方差过大,使 Softmax 进入饱和区。多头注意力让不同子空间关注不同关系;位置编码补回序列顺序;解码器的因果 mask 防止当前位置看到未来 token。

BERT 主要使用编码器做双向上下文预训练,ViT 则把图像切成 patch 后当作 token 序列。

15. 优化器与学习率

SGD 只使用当前梯度;Momentum 累积方向:

vt=βvt−1+gt,θt+1=θt−ηvt.v_t=\beta v_{t-1}+g_t, \qquad \theta_{t+1}=\theta_t-\eta v_t.

AdaGrad 累积全部历史平方梯度,学习率可能衰减过快;RMSProp 用指数滑动平均只保留近期尺度;Adam 同时维护一阶矩和二阶矩,并在初期做偏差修正。

AdamW 把权重衰减从梯度更新中解耦。对自适应优化器而言,L2L_2 正则化与 decoupled weight decay 通常不等价。

常见学习率策略包括预热、阶梯衰减、指数衰减和余弦衰减。优化器表现异常时,先检查学习率、梯度尺度、数据归一化和损失口径,而不是立刻更换一个更复杂的名字。

16. 激活、初始化与归一化

  • Sigmoid 输出在 (0,1)(0,1),两端容易饱和且不是零中心;
  • Tanh 输出在 (−1,1)(-1,1),仍有饱和问题;
  • ReLU 简单高效,但负半轴梯度为零;
  • Leaky ReLU 为负半轴保留小斜率;
  • GELU 平滑地按输入大小进行门控,常见于 Transformer。

初始化的目标是让激活和梯度的方差跨层不过度放大或缩小。Xavier 适合近似对称的激活,Kaiming 针对 ReLU 类激活调整方差。

归一化方法的关键是“沿哪些维度统计”:

方法统计范围典型场景
BatchNorm同通道的 batch 与空间位置CNN、大 batch
LayerNorm单样本的特征维Transformer、RNN
InstanceNorm单样本单通道的空间位置风格迁移
GroupNorm单样本的通道组与空间位置小 batch 视觉模型

BatchNorm 训练时使用当前批次统计量,推理时使用运行均值和方差;LayerNorm 不依赖 batch 大小。

17. 视觉任务先看输出粒度

  • 图像分类:整张图输出一个类别;
  • 目标定位:类别加一个边界框;
  • 目标检测:输出多个类别与边界框;
  • 语义分割:每个像素输出语义类别;
  • 实例分割:还要区分同类的不同实例;
  • 姿态估计:输出关键点坐标或热图。

拿到任务时先写清输出结构,再确定标签、损失与评价指标。网络名字相同,不代表训练目标相同。

18. 高频比较题

容易混淆的概念核心区别
ML 与 MAPMAP 比 ML 多一个参数先验
0-1 损失与交叉熵前者直接数错分,后者提供可优化的连续概率损失
Bagging 与 Boosting前者并行降方差,后者串行关注难样本
PCA 与 LDAPCA 无监督保留方差,LDA 有监督增强类间可分性
硬间隔与软间隔 SVM后者用松弛变量容忍违例
参数模型与非参数模型前者参数维度固定,后者复杂度可随数据增长
反向传播与梯度下降前者计算梯度,后者使用梯度更新参数
卷积与相关数学卷积翻转核,深度学习库通常实现相关但仍称卷积
epoch 与 iterationepoch 是遍历一次训练集,iteration 是更新一次参数
BN 与 LNBN 跨样本统计,LN 在单样本特征内统计

19. 考场计算题固定检查

  1. 概率题先检查条件概率方向,避免把 P(A∣B)P(A\mid B) 当成 P(B∣A)P(B\mid A)。
  2. 矩阵求导先写维度,结果必须与被求导参数同形状。
  3. DP、HMM 或反向传播要写清状态的语义和计算顺序。
  4. 卷积尺寸必须同时看核、步幅、填充和膨胀率。
  5. 参数量要区分权重、偏置以及是否共享参数。
  6. Softmax、对数和指数计算优先使用数值稳定形式。
  7. 分类输出和损失函数必须匹配,二分类与多分类不要混写。
  8. 写优化器时区分“梯度怎么算”和“参数怎样更新”。
  9. 写模型优缺点时指出成立条件,不说“某算法永远更好”。
  10. 最后做极端情况检查:概率是否在 [0,1][0,1],损失是否非负,输出尺寸和参数量是否合理。

我把这十九部分串在一起,目标不是记住一串模型名字,而是建立一条从建模、学习、优化到泛化的完整链路。

评论