Week 5: Machine Learning Basis 复习笔记
// @order: 999
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. 期末复习重点排序
必须掌握
- K N N 的训练/测试流程,以及为什么 K N N 不适合图像分类。
- Train / validation / test 的区别,为什么不能用 test set 调超参数。
-
线性分类器公式:
-
Multiclass S V M loss:
-
Softmax probability:
-
Cross-entropy loss:
-
正则化目标:
-
梯度下降:
- Computation graph 的 forward/backward 和 chain rule。
很可能考计算
- 给 score 表,计算 S V M loss。
-
给类别数 ,问初始化 softmax loss:
- 推导 M S E 对 的梯度。
-
推导简单计算图:
对 的梯度。
概念题高频
- 为什么 pixel distance 不好?
- 为什么 regularization 可以减少 overfitting?
- SVM 和 Softmax 的区别。
- SGD 为什么比 full gradient descent 更实用?
- Numeric gradient 为什么不用来训练大模型?
- Cross-validation 为什么在小数据集有用但 deep learning 中不常用?