机器学习期末速成

Views: --

这篇不是把三十讲重新压缩抄一遍,而是帮助你在考前建立一张能工作的知识地图:拿到一个概念,知道它解决什么问题;拿到一道计算题,知道从哪个公式开始;拿到一道比较题,知道差异落在哪个假设上。

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

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

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

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

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

2. 学习范式与泛化

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

经验风险最小化写成

R^(θ)=1ni=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 不等式。

例如 X0X\ge0 时,

P(Xa)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(1ni=1nXiμε)2e2nε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)=12Xwy22.J(w)=\frac{1}{2}\lVert Xw-y\rVert_2^2.

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

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

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

J(w)=12Xwy22+λ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=argmaxθilogp(xiθ).\hat\theta_{\mathrm{ML}} =\arg\max_\theta\sum_i\log p(x_i\mid\theta).

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

p(xy=c)=jp(xjy=c),p(x\mid y=c)=\prod_jp(x_j\mid y=c),

所以分类时比较

p(y=c)jp(xjy=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αt1(i)aij.\alpha_t(j)=b_j(o_t)\sum_i\alpha_{t-1}(i)a_{ij}.

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

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

熵衡量类别不确定性:

H(D)=cpclog2pc.H(D)=-\sum_cp_c\log_2p_c.

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

Gain(D,A)=H(D)vDvDH(Dv).\operatorname{Gain}(D,A) =H(D)-\sum_v\frac{|D_v|}{|D|}H(D_v).

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

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

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

AdaBoost 弱分类器权重常写为

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

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

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

线性判别函数为

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

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

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

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

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

minw,b12w2s.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.

软间隔加入松弛变量和惩罚系数 CCCC 大时更重视训练误差,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 不使用类别标签,也不等于“选择原有的几个特征”。

稀疏表示希望

xDαx\approx D\alpha

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

minα12xDα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+γmaxaQ(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(l1)+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)},则

LW(l)=δ(l)(a(l1))T,\frac{\partial L}{\partial W^{(l)}} =\delta^{(l)}\bigl(a^{(l-1)}\bigr)^T, δ(l1)=(W(l))Tδ(l)ϕ(z(l1)).\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=ezkjezj,p_k=\frac{e^{z_k}}{\sum_je^{z_j}},

多分类交叉熵为

L=logpy.L=-\log p_y.

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

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

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

Hout=H+2PD(K1)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+Whhht1+bh).h_t=\phi(W_{xh}x_t+W_{hh}h_{t-1}+b_h).

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

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

如果这十九部分能顺着讲下来,你掌握的就不再是一串模型名字,而是从建模、学习、优化到泛化的一条完整链路。

评论