Week 5: Machine Learning Basis 复习笔记

0. 本章核心目标:从“记忆样本”走向“学习参数”

本章要解决的问题是:给定一张图像,如何让计算机输出类别标签,例如 Cat。计算机看到的不是“猫”这个语义对象,而是一个整数张量,例如 的 RGB 像素数组,每个像素值通常在 。难点是:同一类别在像素空间中变化极大,包括视角变化、背景杂乱、光照变化、遮挡、形变、类内差异等。

本章的“进化树”可以概括为:

图像分类问题

├── 线性代数基础:标量、向量、矩阵、范数、点积、矩阵乘法

├── 最近邻方法 KNN
│ ├── 直接记忆训练集
│ ├── 用距离度量比较图像
│ ├── 从 1-NN 到 K-NN:多数投票降低噪声敏感性
│ └── 问题:像素距离不可靠,测试慢,不能真正学习特征

├── 参数化模型:线性分类器
│ ├── 定义 score function: f(x; W,b)
│ ├── 用 loss function 衡量错误
│ └── 通过优化学习 W,b

├── 损失函数
│ ├── Multiclass SVM loss:强调 margin
│ ├── Softmax + Cross Entropy:输出概率解释
│ └── Regularization:控制模型复杂度,减少过拟合

└── 优化与自动微分
├── Random search 太慢
├── Gradient descent 沿负梯度下降
├── SGD 用 mini-batch 近似全数据梯度
└── Computation graph / Autograd 用链式法则自动求梯度

重要程度上,期末最核心的是:KNN 的局限、训练/验证/测试集划分、线性分类器形式、SVM loss、Softmax cross-entropy、regularization、gradient descent、computation graph/backprop。

1. 线性代数基础

1.1 标量 Scalars 【重要】

标量是单个数,例如 。基本操作包括:

标量长度,也就是绝对值:

性质:

其中 是三角不等式,直觉是“先走 再走 的总距离不会小于合并后的净位移”。

1.2 向量 Vectors 【重要】

向量是多个标量组成的有序数组:

其中 是维度, 是第 个分量。

向量逐元素加法:

向量逐元素乘法:

逐元素非线性函数:

向量的欧氏范数:

这里 表示向量长度。机器学习中它常用于衡量特征大小、权重大小、距离大小。

向量范数满足:

点积:

如果两个向量正交,则:

点积的几何意义是衡量两个方向的对齐程度。如果点积大于 0,方向大致一致;小于 0,方向相反;等于 0,方向正交。

1.3 矩阵 Matrices 【重要】

矩阵是二维数组:

其中 表示第 行、第 列元素。

矩阵加法:

标量乘矩阵:

逐元素非线性函数:

矩阵-向量乘法:

其中 ,所以

矩阵-矩阵乘法:

其中 ,所以

Frobenius norm:

性质:

Frobenius norm 可以理解为“把矩阵拉平成向量后的欧氏长度”。

2. 图像分类问题

2.1 为什么图像分类不是手写规则问题?【重要】

课件强调:不像排序数字那样可以直接写一个确定规则,识别猫没有显然的 hard-coded algorithm。原因是图像分类面对的是高维、连续、变化复杂的像素空间。

典型挑战:

| 挑战 | 含义 | 为什么困难 | | ——————– | —— | ————– | | Viewpoint variation | 相机角度改变 | 所有像素都会变化 | | Background clutter | 背景杂乱 | 背景像素可能比物体本身更显著 | | Illumination | 光照变化 | 同一物体颜色/亮度显著改变 | | Occlusion | 遮挡 | 目标只露出一部分 | | Deformation | 形变 | 猫的姿态变化大 | | Intraclass variation | 类内差异 | 同为 cat,但外观差异巨大 |

标准机器学习流程是:

收集图像和标签
→ 提取有判别力的特征
→ 使用机器学习算法训练分类器
→ 在新图像上评估分类器

3. K Nearest Neighbor

3.1 最近邻分类器 1-NN 【重要】

Nearest Neighbor 的思想是:训练阶段不真正学习参数,而是记住全部训练数据和标签;测试时,找到与 query image 最相似的训练图像,并复制它的标签。

给定训练集:

其中 是第 张训练图像的特征向量, 是标签。对于测试样本 ,1-NN 预测为:

其中 是距离函数。

常见 L1 距离:

。其中 是测试图像第 个像素/特征, 是第 个训练样本的第 个像素/特征。

直觉:L1 距离把所有维度上的绝对差相加,衡量两张图在像素空间中相差多少。

3.2 从 1-N N 到 K-N N 【重要】

1-N N 的问题是对噪声非常敏感。如果最近的那个点恰好是异常样本,预测会错。因此 K N N 改成看最近的 个样本,并用多数投票决定类别。

定义最近邻集合:

预测:

其中 是类别, 是指示函数。如果条件为真则为 1,否则为 0。

KNN 的变化逻辑:

| 方法 | How it works | Why it fails | How next method fixes | | ——————– | ———————— | ————- | ——————— | | 1-NN | 复制最近训练样本标签 | 对噪声和异常点敏感 | KNN 用多个邻居投票 | | KNN | 最近 个样本多数投票 | 像素距离不表达语义,测试慢 | 引入特征提取和参数化模型 | | Feature + classifier | 先抽取 HoG/LBP/SIFT 等特征,再分类 | 手工特征有限 | 后续深度学习自动学习特征 |

3.3 超参数选择:Train / Validation / Test 【非常重要】

KNN 有两个关键超参数:

和距离度量:

课件强调:超参数不能直接在训练集或测试集上选。

错误做法 1:在训练集上选最优超参数。 问题: 在训练集上通常完美,因为每个训练点最近的就是自己,所以会过拟合。

错误做法 2:在测试集上选最优超参数。 问题:测试集被用于调参后,就不再是“未见数据”,最终 test accuracy 会被污染,无法估计真实泛化性能。

正确做法:

Train set: 用于训练模型
Validation set: 用于选择超参数
Test set: 只在最后评估一次

Cross-validation:

把训练数据分成多个 fold,每次用其中一个 fold 做 validation,其余 fold 做 training,最后平均验证结果。课件指出 cross-validation 对小数据集有用,但在 deep learning 中不常用,因为训练成本太高。

3.4 KNN 为什么在图像分类中基本不用?【非常重要】

课件结论很明确:KNN with pixel distance never used。原因有两个。

第一,pixel distance 不具有语义信息。图像被遮挡、平移、打乱、换色后,像素距离可能巨大或很小,但语义不一定对应变化。

第二,测试时太慢。KNN 几乎没有训练成本,但测试时每个测试样本都要和大量训练样本比较。如果训练集有 个样本,每个样本维度是 ,一次预测复杂度约为:

所以 KNN 的根本局限是:它没有学到一个抽象决策规则,只是在高维像素空间做记忆检索。

4. 从 KNN 到线性分类器

4.1 机器学习的典型框架 【非常重要】

KNN 框架:

Memorize all data and labels
→ Predict label of the most similar training image

线性分类器框架:

Define a model f_W(x)
→ Define a loss L(f_W(x), y)
→ Solve W* minimi in g L
→ Predict using f_{W*}(x)

这就是本章最关键的方法论转变:从“存储数据”变成“学习参数”。

4.2 线性分类器模型 【非常重要】

给定图像 ,例如 CIFAR-10 中常见的 图像,可以将其 vectorize 成:

其中:

线性分类器输出每个类别的 score:

其中:

。是类别数,例如 CIFAR-10 中 是第 类的分数。预测类别为:

也可以通过特征增广去掉 bias。令:

则:

这样 bias 被吸收到权重矩阵中,公式更简洁。

5. Multiclass SVM Loss

5.1 SVM loss 的核心思想 【非常重要】

SVM loss 不要求正确类别分数只比错误类别高一点,而是要求至少高出一个 margin。课件中 margin 设为 1。

对第 个样本:

其中 是类别 的 score, 是正确类别。Multiclass SVM loss:

总损失:

符号解释:

:训练样本数。 :类别数。 :第 个输入样本。 :第 个样本的正确标签。 :模型对类别 的打分。 :模型对正确类别的打分。 :margin,表示希望正确类别至少比错误类别高 1。 :hinge function,只惩罚违反 margin 的类别。

5.2 S V M loss 的逻辑直觉

对每个错误类别 ,希望满足:

等价于:

如果满足,说明正确类别已经比错误类别高出足够 margin,该类别贡献的 loss 为 0:

如果不满足,说明错误类别分数太高,loss 为:

这意味着 S V M 关心的是“相对分数差距”,不是绝对分数。

5.3 课件例子推导 【非常重要】

课件给出三个类别 cat/car/frog,三个样本的 score 表:

| 样本 | cat | car | frog | true label | | – | –: | –: | —: | ———- | | 1 | 3.2 | 5.1 | −1.7 | cat | | 2 | 1.3 | 4.9 | 2.0 | car | | 3 | 2.2 | 2.5 | −3.1 | frog |

样本 1 正确类别为 cat,

样本 2 正确类别为 car,

样本 3 正确类别为 frog,

平均 loss:

这个例子非常适合考试,因为它完整体现了 S V M loss 的计算方式。

6. Regularization

6.1 为什么最优 不唯一?【非常重要】

线性分类器:

S V M loss:

如果存在一个 使得 ,那么放大权重 也可能仍然让 loss 为 0。原因是:

代入 margin 项:

随着 增大,等效 margin 变小,模型可能过分放大权重,导致过拟合。

6.2 正则化目标函数 【非常重要】

为了解决参数不唯一和过拟合问题,引入 regularization:

其中:

是 data loss,要求模型预测匹配训练数据。 是 regularization term,表达对模型复杂度的偏好。 是正则化强度,控制 data fitting 和 model simplicity 的 trade-off。

常见 L2 regularization:

常见 L1 regularization:

课件强调正则化的两个直觉。第一是 maximum margin principle:在 S V M 中,较小的 对应较大的分类间隔,通常泛化更好。第二是 controlling weights:如果某个 很大,输入特征 的微小变化会导致输出剧烈变化;限制权重可以让模型更平滑、更不依赖单一噪声特征。

Occam’s Razor:如果两个模型都能解释数据,选择更简单的模型。

7. Softmax Classifier 与 Cross Entropy

7.1 为什么需要 Softmax?【非常重要】

S V M score 不是概率,无法解释为“模型认为该类的概率是多少”。Softmax 把任意实数 score 转成非负、和为 1 的概率分布。

给定 score:

Softmax probability:

其中:

:模型预测样本属于类别 的概率。 :类别 的 score。 :指数函数保证非负。 :归一化项,保证概率和为 1。

性质:

7.2 Cross Entropy Loss 【非常重要】

真实标签可以表示成 one-hot distribution:

交叉熵:

因为 是 one-hot,所以只剩正确类别:

代入 Softmax:

整个数据集:

也可以写成:

这个形式常用于推导梯度。

7.3 Cross Entropy 的取值范围与初始化检查 【重要】

当模型完全正确,并且正确类概率趋近 1:

则:

。所以最小值是 0。

当正确类概率趋近 0:

则:

所以最大值无上界。

如果初始化时所有 score 近似相等,假设有 个类别:

则:

如果

这是 debug 模型时非常重要的 sanity check。课件也特别提醒要记住这个值。

7.4 S V M vs Softmax 对比 【非常重要】

| 维度 | S V M Loss | Softmax Cross Entropy | | —- | ————————————— | —————————————– | | 输出解释 | score,无概率解释 | probability distribution | | 核心目标 | 正确类分数比错误类至少高 margin | 最大化正确类概率 | | 损失形式 | hinge loss | negative log-likelihood | | 关注重点 | margin violation | probability calibration | | 典型公式 | | | | 直觉 | 分开即可,超过 margin 后不再惩罚 | 正确类概率越接近 1 越好 |

S V M 是“只要分数差够大就满意”;Softmax 是“希望正确类别概率尽可能大”。

8. Optimization: 从 Random Search 到 Gradient Descent

8.1 Random Search 为什么失败?【重要】

随机搜索 的方法是:随机生成很多权重,选择 loss 最小的那个。课件中 random search 在某任务上只有 15.5% accuracy,而 S O T A 约为 99.7%,说明随机搜索在高维参数空间中极其低效。

原因是 的维度极高,随机猜中好参数的概率几乎为零。必须利用 loss function 的局部几何信息,也就是 gradient。

8.2 Gradient Descent 【非常重要】

梯度下降核心更新公式:

其中:

:模型参数。 :loss function。 :loss 对参数的梯度。 :learning rate / step size。

梯度方向是函数上升最快方向,所以负梯度方向是下降最快方向。

如果:

则:

所以更新为:

8.3 S V M loss 的梯度 【非常重要】

对单个样本:

其中 是权重矩阵中对应类别 的行向量。

对某个错误类别 ,定义 margin violation:

如果

,梯度为 0。 如果

:该项为

对错误类别权重:

对正确类别权重:

如果有多个错误类别违反 margin,正确类别的梯度会累加:

其中 是违反 margin 的错误类别数量。

直觉:如果错误类别分数太高,就降低错误类别权重对 的响应,同时提高正确类别权重对 的响应。

9. Mean Squared Error 与 Linear Regression

课件也用 linear regression 解释 loss function 和 gradient descent。监督学习的核心是:找到使所有可能数据 error 最小的模型参数。但由于只能观察有限训练数据,实际优化的是 empirical error。

线性回归模型:

其中:

:斜率。 :截距。 :输入。 :预测值。 :真实值。

Mean Squared Error:

的偏导:

的偏导:

更新:

10. Gradient 的定义与数值梯度

10.1 一维导数 【重要】

一维情况下:

导数表示函数在该点的瞬时变化率。

10.2 高维偏导 【重要】

对高维函数:

个变量的偏导为:

梯度是所有偏导数组成的向量:

10.3 Numeric Gradient 的问题 【重要】

数值梯度近似:

问题:

第一,慢。每个参数都要单独 perturb 一次。 第二,只是近似。 第三,对 很敏感。 太大近似不准, 太小可能有浮点误差。 第四, 本身也变成超参数。

所以实际训练深度模型时不用 numeric gradient,而是使用 analytic gradient / autograd。

11. Computation Graph 与 Reverse Accumulation

11.1 计算图的核心思想 【非常重要】

计算图把复杂函数拆成 primitive operations,并组织成 directed acyclic graph。Forward pass 计算输出并保存中间结果;Backward pass 按反向顺序用 chain rule 计算梯度。

课件例子:

定义中间变量:

其中:

:输入向量。 :权重向量。 :真实标签或目标值。 :线性预测。 :预测误差。 :平方误差 loss。

11.2 反向传播推导 【非常重要】

先计算:

因为:

然后:

所以:

又因为:

所以:

因此:

也就是:

这就是平方误差对线性模型权重的梯度。

课件的核心总结是:

Build computation graph
→ Forward: evaluate graph and store intermediate results
→ Backward: evaluate graph in reverse order
→ Use chain rule
→ Eliminate unnecessary paths

12. Stochastic Gradient Descent

12.1 为什么需要 S G D?【非常重要】

Full-batch gradient descent:

其中:

所以:

很大时,每次更新都遍历全部训练集,计算非常昂贵。

S G D 用 mini-batch 近似:

其中 是 batch size。

的选择受显存、训练速度、梯度噪声影响。较小 batch 更新更频繁但噪声更大;较大 batch 梯度更稳定但计算和显存成本更高。

13. 本章算法演进总表

| 阶段 | 方法 | 核心公式/机制 | 解决什么 | 局限 | | – | ——————– | —————————————————– | ————————– | —————— | | 1 | Pixel representation | | 把图像转成计算机可处理形式 | 像素不等于语义 | | 2 | 1-N N | | 简单分类,无需训练 | 对噪声敏感,测试慢 | | 3 | K N N | 多数投票 | 降低单点噪声影响 | pixel distance 不可靠 | | 4 | Feature extraction | HoG/L B P/S I F T | 提升表示质量 | 手工特征有限 | | 5 | Linear classifier | | 学习参数化决策边界 | 需要定义 loss | | 6 | S V M loss | | 学习 margin-based classifier | score 无概率解释 | | 7 | Softmax C E | | 概率化分类 | 仍可能过拟合 | | 8 | Regularization | | 控制复杂度 | 需调参 | | 9 | Gradient descent | | 高效优化参数 | 全量梯度成本高 | | 10 | S G D | mini-batch gradient | 加速大规模训练 | 梯度有噪声 | | 11 | Computation graph | chain rule | 自动求导 | 需要保存中间值,占内存 |

14. 期末复习重点排序

必须掌握

  1. K N N 的训练/测试流程,以及为什么 K N N 不适合图像分类。
  2. Train / validation / test 的区别,为什么不能用 test set 调超参数。
  3. 线性分类器公式:

  4. Multiclass S V M loss:

  5. Softmax probability:

  6. Cross-entropy loss:

  7. 正则化目标:

  8. 梯度下降:

  9. Computation graph 的 forward/backward 和 chain rule。

很可能考计算

  1. 给 score 表,计算 S V M loss。
  2. 给类别数 ,问初始化 softmax loss:

  3. 推导 M S E 对 的梯度。
  4. 推导简单计算图:

的梯度。

概念题高频

  1. 为什么 pixel distance 不好?
  2. 为什么 regularization 可以减少 overfitting?
  3. SVM 和 Softmax 的区别。
  4. SGD 为什么比 full gradient descent 更实用?
  5. Numeric gradient 为什么不用来训练大模型?
  6. Cross-validation 为什么在小数据集有用但 deep learning 中不常用?