Cpt2: Perceptron & Adaline — Cheatsheet

  • Perceptron:$\text{step}(z) = \begin{cases} +1 & z \geq 0 \ -1 & z < 0 \end{cases}$,输出离散,无梯度
  • Adaline:$z = \mathbf{w}^\top \mathbf{x}$,输出连续值,可用MSE求导

误差项本质区别

  • Perceptron更新用$(y - \hat{y})$,$\hat{y} \in {\pm1}$ → 误差只取${0, \pm2}$
  • Adaline更新用$(y - z)$,$z \in \mathbb{R}$ → 误差连续,梯度平滑

学习率$\eta$影响

  • $\eta$太小:收敛慢,训练时间长
  • $\eta$太大:超调/发散,Loss震荡
  • ⚡ 本章算法无自适应$\eta$,需手动调或设衰减

Batch vs SGD vs Mini-batch

  • Batch:用全部$n$样本算梯度 → 准、稳,但慢、吃内存
  • SGD:每次用1样本 → 快、可跳出局部最优,但震荡大、需$\eta$衰减
  • Mini-batch:用$b$样本(32/64)→ 平衡速度+稳定性,深度学习默认
  • ⚡ 增大batch size ≠ 总是更好:batch太大→梯度估计准但更新少→收敛慢;batch太小→噪声大→可能发散

Perceptron 训练流程

  1. 初始化权重$\mathbf{w} \leftarrow \mathbf{0}$(或小随机值)
  2. 对每一轮epoch:
    • 遍历每个样本$(\mathbf{x}^{(i)}, y^{(i)})$:
      • 计算得分$z = \mathbf{w}^\top \mathbf{x}^{(i)}$
      • 预测$\hat{y} = \text{step}(z)$
      • 若$\hat{y} \neq y^{(i)}$(分类错误):
        • 更新$\mathbf{w} \leftarrow \mathbf{w} + \eta \cdot (y^{(i)} - \hat{y}) \cdot \mathbf{x}^{(i)}$
    • 若本轮无错误,提前终止
  3. 输出最终$\mathbf{w}$

💡 应用题技巧:手动模拟时,注意$(y-\hat{y})$只取${0, \pm2}$;更新方向始终"推"错误样本跨过决策边界

Adaline + Batch GD 流程

  1. 初始化$\mathbf{w} \leftarrow \mathbf{0}$
  2. 对每一轮epoch:
    • 计算所有样本的预测$z^{(i)} = \mathbf{w}^\top \mathbf{x}^{(i)}$
    • 计算梯度$\nabla J(\mathbf{w}) = -\sum_{i=1}^n (y^{(i)} - z^{(i)}) \mathbf{x}^{(i)}$
    • 统一更新$\mathbf{w} \leftarrow \mathbf{w} - \eta \cdot \nabla J(\mathbf{w})$
    • (可选)计算$J(\mathbf{w}) = \frac{1}{2}\sum_i (y^{(i)} - z^{(i)})^2$监控收敛
  3. 输出$\mathbf{w}$

💡 应用题技巧:梯度推导见下方模板;注意向量形式$\nabla J = -X^\top(\mathbf{y} - X\mathbf{w})$可快速写答案

模板1:Adaline 梯度推导(⭐⭐⭐ 必背)

已知损失$J(\mathbf{w}) = \frac{1}{2} \sum_{i=1}^n (y^{(i)} - z^{(i)})^2$,其中$z^{(i)} = \mathbf{w}^\top \mathbf{x}^{(i)}$

对单个权重$w_j$求偏导:
$$
\frac{\partial J}{\partial w_j} = \frac{\partial}{\partial w_j} \left[ \frac{1}{2} \sum_i (y^{(i)} - \mathbf{w}^\top \mathbf{x}^{(i)})^2 \right]
= \sum_i (y^{(i)} - z^{(i)}) \cdot \frac{\partial}{\partial w_j} (y^{(i)} - z^{(i)})
$$
$$
= \sum_i (y^{(i)} - z^{(i)}) \cdot (-\frac{\partial z^{(i)}}{\partial w_j})
= \sum_i (y^{(i)} - z^{(i)}) \cdot (-x_j^{(i)})
= -\sum_i (y^{(i)} - \mathbf{w}^\top \mathbf{x}^{(i)}) x_j^{(i)}
$$

向量形式(更简洁,推荐考场写):
$$
\nabla J(\mathbf{w}) = -X^\top (\mathbf{y} - X\mathbf{w})
\quad \Rightarrow \quad
\mathbf{w} \leftarrow \mathbf{w} + \eta X^\top (\mathbf{y} - X\mathbf{w})
$$

💡 链式法则通用:$\frac{\partial J}{\partial \mathbf{w}} = \frac{\partial J}{\partial z} \cdot \frac{\partial z}{\partial \mathbf{w}}$,后续逻辑回归/神经网络同理

Cpt3: Logistic Regression / SVM / KNN — Cheatsheet

Logistic Regression 本质

  • 判别式模型,直接建模 $P(y=1|\mathbf{x};\mathbf{w}) = \sigma(\mathbf{w}^\top \mathbf{x})$,$\sigma(z) = \frac{1}{1+e^{-z}}$
  • 输出是概率,非硬分类;预测时通常阈值0.5二值化
  • ✅ 等价于单层神经网络 + sigmoid激活 + cross-entropy损失 → pp2-P1 Q7

Cross-Entropy vs MSE for 分类

  • CE损失:$J = -[y \log \sigma + (1-y)\log(1-\sigma)]$
  • 梯度:$\frac{\partial J}{\partial \mathbf{w}} = (\sigma - y)\mathbf{x}$(简洁!)
  • MSE梯度:$(\sigma - y) \cdot \sigma(1-\sigma) \cdot \mathbf{x}$ → 多一项$\sigma(1-\sigma)$,当$\sigma$接近0/1时梯度消失
  • ✅ CE对分类任务更友好,梯度信号强

SVM 最大间隔直觉

  • 目标:找超平面$\mathbf{w}^\top \mathbf{x} + b = 0$,使最近样本到平面距离最大
  • 几何间隔 = $\frac{y(\mathbf{w}^\top \mathbf{x} + b)}{|\mathbf{w}|}$,最大化最小几何间隔 ⇔ 最小化$\frac{1}{2}|\mathbf{w}|^2$
  • 约束:$y^{(i)}(\mathbf{w}^\top \mathbf{x}^{(i)} + b) \geq 1$(函数间隔≥1)

Hinge Loss 与 0-1 Loss

  • 0-1 loss:$\mathbb{I}(y \neq \hat{y})$,非凸、不可导,难优化
  • Hinge loss:$\max(0, 1 - y(\mathbf{w}^\top \mathbf{x} + b))$,凸代理,可导(次梯度)
  • 当$y z \geq 1$时loss=0(正确分类且间隔足够),否则线性惩罚

支持向量

  • 满足$0 < \alpha_i < C$的样本(对偶变量),位于间隔边界上
  • 决定决策边界:$\mathbf{w} = \sum_i \alpha_i y^{(i)} \mathbf{x}^{(i)}$,仅支持向量贡献
  • ⚡ 测试时只需计算与支持向量的内积,高效

软间隔与Slack变量

  • 允许部分样本违反间隔:$y^{(i)}(\mathbf{w}^\top \mathbf{x}^{(i)} + b) \geq 1 - \xi_i, \xi_i \geq 0$
  • 目标:$\min \frac{1}{2}|\mathbf{w}|^2 + C \sum_i \xi_i$,$C$大→硬间隔(不容错),$C$小→软间隔(容错强)
  • ⚠️ $C$是正则化强度的倒数:$C \uparrow$ → 正则化$\downarrow$ → 易过拟合

KNN 核心特性

  • 惰性学习(lazy):无显式训练,预测时才计算
  • 距离度量:Euclidean $|\mathbf{x}-\mathbf{x}'|_2$(默认), Manhattan $|\cdot|_1$, Minkowski $|\cdot|_p$
  • k值影响(⭐⭐⭐ 高频):
    • $k=1$:决策边界锯齿状,variance高,bias低 → 易过拟合
    • $k=n$:全局多数投票,boundary平滑,bias高,variance低 → 易欠拟合
    • ✅ 选k:交叉验证,通常奇数防平票

Logistic Regression 训练流程

  1. 初始化权重$\mathbf{w} \leftarrow \mathbf{0}$(或小随机值),设学习率$\eta$
  2. 对每轮epoch:
    • 对每个样本$(\mathbf{x}^{(i)}, y^{(i)})$:
      • 计算线性得分$z^{(i)} = \mathbf{w}^\top \mathbf{x}^{(i)}$
      • 计算概率$\sigma^{(i)} = \frac{1}{1+e^{-z^{(i)}}}$
      • 计算梯度$\nabla J^{(i)} = (\sigma^{(i)} - y^{(i)}) \mathbf{x}^{(i)}$
    • (Batch GD)汇总梯度:$\nabla J = \frac{1}{n} \sum_i \nabla J^{(i)}$
    • 更新权重:$\mathbf{w} \leftarrow \mathbf{w} - \eta \nabla J$
  3. 预测新样本:计算$\sigma(\mathbf{w}^\top \mathbf{x})$,若$\geq 0.5$则预测+1

💡 应用题技巧:梯度形式$(\sigma-y)\mathbf{x}$与Adaline$(z-y)\mathbf{x}$结构一致,仅激活函数不同

SVM 训练流程(对偶问题直觉)

  1. 构造QP问题:
    • 目标:$\min_{\boldsymbol{\alpha}} \frac{1}{2} \sum_{i,j} \alpha_i \alpha_j y_i y_j K(\mathbf{x}_i, \mathbf{x}_j) - \sum_i \alpha_i$
    • 约束:$0 \leq \alpha_i \leq C$, $\sum_i \alpha_i y_i = 0$
  2. 用SMO等算法解出$\alpha_i$
  3. 计算$\mathbf{w} = \sum_i \alpha_i y_i \mathbf{x}_i$(仅支持向量$\alpha_i>0$贡献)
  4. 计算$b$:任选支持向量$(\mathbf{x}_s, y_s)$,$b = y_s - \mathbf{w}^\top \mathbf{x}_s$
  5. 预测:$f(\mathbf{x}) = \text{sign}(\sum_i \alpha_i y_i K(\mathbf{x}_i, \mathbf{x}) + b)$

💡 应用题技巧:线性核时$K(\mathbf{x}_i,\mathbf{x}) = \mathbf{x}_i^\top \mathbf{x}$;RBF核需记$\exp(-\gamma |\mathbf{x}_i-\mathbf{x}|^2)$

模板1:Logistic Regression 梯度推导(⭐⭐⭐ 必背)

损失函数(单样本):
$
J(\mathbf{w}) = - \left[ y \log \sigma(z) + (1-y) \log(1-\sigma(z)) \right], \quad z = \mathbf{w}^\top \mathbf{x}
$

链式法则:
$
\frac{\partial J}{\partial \mathbf{w}} = \frac{\partial J}{\partial \sigma} \cdot \frac{\partial \sigma}{\partial z} \cdot \frac{\partial z}{\partial \mathbf{w}}
$

逐层计算:
$
\frac{\partial J}{\partial \sigma} = -\left[ \frac{y}{\sigma} - \frac{1-y}{1-\sigma} \right] = \frac{\sigma - y}{\sigma(1-\sigma)}
$

$
\frac{\partial \sigma}{\partial z} = \sigma(1-\sigma) \quad \text{(sigmoid导数)}
$

$
\frac{\partial z}{\partial \mathbf{w}} = \mathbf{x}
$

相乘消去$\sigma(1-\sigma)$:
$
\frac{\partial J}{\partial \mathbf{w}} = \frac{\sigma - y}{\sigma(1-\sigma)} \cdot \sigma(1-\sigma) \cdot \mathbf{x} = (\sigma - y) \mathbf{x} \quad \checkmark
$

💡 关键:$\sigma(1-\sigma)$项恰好消去,梯度简洁!多样本时取平均

模板2:SVM 最大间隔 ⇔ 最小化‖w‖²

目标:最大化最小几何间隔$\gamma = \min_i \frac{y^{(i)}(\mathbf{w}^\top \mathbf{x}^{(i)} + b)}{|\mathbf{w}|}$

等价变换:

  1. 固定函数间隔为1(缩放$\mathbf{w},b$不影响超平面):$y^{(i)}(\mathbf{w}^\top \mathbf{x}^{(i)} + b) \geq 1$
  2. 几何间隔 = $1/|\mathbf{w}|$,最大化$1/|\mathbf{w}|$ ⇔ 最小化$|\mathbf{w}|$
  3. 为方便求导,最小化$\frac{1}{2}|\mathbf{w}|^2$(凸函数,最优解相同)

最终QP形式:
$$
\min_{\mathbf{w},b} \frac{1}{2} |\mathbf{w}|^2 \quad \text{s.t.} \quad y^{(i)}(\mathbf{w}^\top \mathbf{x}^{(i)} + b) \geq 1, \forall i
$$

💡 证明题开头先写"目标:max margin ⇔ min ‖w‖",逻辑清晰

模板3:Hinge Loss 次梯度推导

Hinge loss:$\ell(z) = \max(0, 1 - y z)$, $z = \mathbf{w}^\top \mathbf{x} + b$

次梯度(因max函数在$1-yz=0$处不可导):
$$
\frac{\partial \ell}{\partial \mathbf{w}} =
\begin{cases}
-y \mathbf{x} & \text{if } y z < 1 \quad \text{(违反间隔)} \
0 & \text{if } y z > 1 \quad \text{(满足间隔)} \
\text{任意} \in [-y\mathbf{x}, 0] & \text{if } y z = 1
\end{cases}
$$

💡 应用:SGD更新时,仅对$yz<1$的样本更新$\mathbf{w} \leftarrow \mathbf{w} + \eta y \mathbf{x}$

模板5:SVM 软间隔 约束与目标

Primal problem with slack variables:
$$
\min_{\mathbf{w},b,\boldsymbol{\xi}} \frac{1}{2} |\mathbf{w}|^2 + C \sum_{i=1}^n \xi_i
$$
$$
\text{s.t.} \quad y^{(i)}(\mathbf{w}^\top \mathbf{x}^{(i)} + b) \geq 1 - \xi_i, \quad \xi_i \geq 0, \quad \forall i
$$

  • $\xi_i = 0$:样本在间隔外或边界上(正确分类)
  • $0 < \xi_i \leq 1$:样本在间隔内但分类正确
  • $\xi_i > 1$:样本被误分类
  • $C$控制tradeoff:$C \to \infty$ → 硬间隔;$C \to 0$ → 忽略间隔,只最小化误分类

💡 证明题:若问"为什么用$\frac{1}{2}|\mathbf{w}|^2$" → 答:凸、可导、最优解相同

Cpt4: Data Preprocessing — Cheatsheet

缺失值处理策略对比
| 方法 | 适用场景 | 优点 | 缺点 |
| 删除样本 | 缺失比例<5%,随机缺失 | 简单直接 | 数据量减少,可能引入偏差 |
| 删除特征 | 某特征缺失>50% | 避免插值噪声 | 丢失潜在信息 |
| 均值/中位数填充 | 数值型,近似正态分布 | 保留样本量 | 低估方差,扭曲分布 |
| 众数/常数填充 | 类别型 | 保持类别完整性 | 可能引入虚假模式 |
| 模型预测填充 | 高价值特征,缺失机制可建模 | 利用特征相关性 | 计算复杂,可能过拟合 |

⚠️ 易错:填充时必须用训练集统计量(均值/标准差),测试集用相同参数变换,否则数据泄露!

定序 (Ordinal) vs 定类 (Nominal) 编码

  • 定序:有自然顺序(小学<初中<高中),映射为整数{1,2,3},模型可学习大小关系
  • 定类:无顺序(红/绿/蓝),必须用独热编码 (One-Hot),避免引入虚假顺序
  • ⚡ 独热编码后特征数 = 类别数;若用线性模型,建议drop='first'避免多重共线性(n类→n-1维)

Dummy Variable Trap

  • 若n个类别用n个二元特征 + 截距项 → 特征线性相关($x_1+x_2+...+x_n=1$)→ 矩阵奇异,优化不稳定
  • ✅ 解决:drop首列,或去掉截距项(但通常drop列更稳妥)

Train/Test Split 关键原则

  • 随机划分:假设数据i.i.d.,用random_state保证可复现
  • 分层抽样 (stratify=y):保持各类别比例一致,小样本/不平衡数据必用
  • 时间序列数据:不能随机打乱,按时间先后划分,否则未来信息泄露
  • 典型比例:小数据(1000-)用30%测试;中大数据用10-20%;极大数据可用1-5%

特征缩放:归一化 vs 标准化(⭐⭐⭐ 高频):
| 方法 | 公式 | 输出范围 | 对异常值敏感 | 适用算法 |
| 归一化 (Min-Max) | $x' = \frac{x-x_{\min}}{x_{\max}-x_{\min}}$ | [0,1] | ⚠️ 极敏感(极值拉偏) | 神经网络(输入[0,1])、图像处理 |
| 标准化 (Z-score) | $x' = \frac{x-\mu}{\sigma}$ | ℝ,均值为0方差为1 | ✅ 鲁棒(用均值/标准差) | SVM、KNN、LR、PCA、K-means |

💡 核心结论:基于距离/梯度的算法必须缩放;树模型(决策树、RF、XGBoost)不需要(基于分裂,尺度不变)

L1 vs L2 正则化几何解释(⭐⭐⭐ 证明题高频):

  • L2:惩罚项$\lambda|\mathbf{w}|_2^2$,等高线为圆 → 权重向原点收缩,但很少精确为0
  • L1:惩罚项$\lambda|\mathbf{w}|_1$,等高线为菱形(有尖角)→ 优化路径易碰尖角 → 产生稀疏解(部分$w_j=0$)
  • ✅ L1用于特征选择;L2用于防止过拟合、处理多重共线性

序列后向选择 (SBS) 直觉

  • 贪心算法:从d维开始,每轮剔除使性能下降最小的特征,直到剩k维
  • 优点:考虑特征交互;缺点:计算量大$O(d^2)$,可能陷入局部最优
  • ⚡ 替代:L1正则(更高效)、基于树的重要性排序

独热编码实操步骤

  1. 识别定类特征(无顺序的类别变量)
  2. 对每个定类特征:
    • 若用线性模型/逻辑回归 → OneHotEncoder(drop='first')避免共线性
    • 若用树模型 → 可保留全部类别(树能处理冗余)
  3. 合并编码后的特征与原始数值特征
  4. ✅ 关键:encoder.fit( train_categories )encoder.transform( test_categories ),测试集遇到新类别需处理(设handle_unknown='ignore'

特征缩放标准流程

  1. 划分训练集/测试集(先划分,再缩放! 防止数据泄露)
  2. 对训练集:
    • 计算每特征均值$\mu_j$、标准差$\sigma_j$(标准化)或最小/最大值(归一化)
    • 应用变换:$x'_j = \frac{x_j - \mu_j}{\sigma_j}$
  3. 对测试集:
    • 必须用训练集的$\mu_j, \sigma_j$ 做相同变换
  4. 用缩放后的数据训练模型

💡 应用题技巧:题目给两特征量纲差异大(如年龄[0,100],收入[0,10^6])→ 必答"需标准化,否则距离/梯度被大尺度特征主导"

模板2:L1正则产生稀疏解的几何证明

考虑二维情况,优化问题:
$$
\min_{\mathbf{w}} J(\mathbf{w}) \quad \text{s.t.} \quad |\mathbf{w}|_1 \leq C \quad \text{(L1)} \quad \text{or} \quad |\mathbf{w}|_2^2 \leq C \quad \text{(L2)}
$$

  • L2约束域:$w_1^2 + w_2^2 \leq C$ → 圆,边界光滑
  • L1约束域:$|w_1| + |w_2| \leq C$ → 菱形,顶点在坐标轴$(\pm C, 0), (0, \pm C)$

损失函数等高线与约束域首次相切:

  • 圆:切点通常在象限内 → $w_1, w_2 \neq 0$
  • 菱形:切点易在顶点 → 某$w_j = 0$ ✓

💡 证明题开头先画约束域形状,再说明"切点位置决定稀疏性"

模板3:独热编码避免虚假顺序的代数解释

设三类别A/B/C,若简单映射为{1,2,3}:

  • 线性模型预测:$\hat{y} = w \cdot x + b$
  • 则$\hat{y}_B - \hat{y}_A = w(2-1) = w$,$\hat{y}_C - \hat{y}_B = w(3-2) = w$
  • → 隐含假设"B-A"与"C-B"效应相同,但类别无顺序,此假设错误 ❌

独热编码后:
$
\mathbf{x}_A = [1,0,0]^\top, \mathbf{x}_B = [0,1,0]^\top, \mathbf{x}_C = [0,0,1]^\top
$
$
\hat{y} = w_1 x_1 + w_2 x_2 + w_3 x_3 + b
$

  • 三类预测独立:$\hat{y}_A = w_1 + b$, $\hat{y}_B = w_2 + b$, $\hat{y}_C = w_3 + b$
  • 无顺序约束,模型自由学习各类别效应 ✓

💡 证明题技巧:用具体数值举例对比,直观清晰

Cpt5: Dimensionality Reduction — Cheatsheet

维度灾难 (Curse of Dimensionality)

  • 随特征数$d$增加,数据在高维空间变得稀疏 → 距离度量失效(所有点对距离趋近相等)
  • 需要指数级更多样本才能维持相同密度:$n \propto r^d$
  • ✅ 影响:KNN/K-means等基于距离的算法性能骤降;模型易过拟合(参数过多)

降维两大策略对比
| 方法 | 代表算法 | 优点 | 缺点 | 适用场景 |
| 特征选择 (Feature Selection) | Filter(方差/相关性), Wrapper(SBS/SFS), Embedded(L1) | 保留原始特征可解释性;计算高效 | 可能丢失特征交互信息 | 高维稀疏数据;需要特征解释 |
| 特征提取 (Feature Extraction) | PCA, LDA, Autoencoder | 捕捉特征交互;可降至极低维 | 新特征无物理意义;计算复杂 | 图像/文本等高维稠密数据 |

冗余特征检测

  • 高相关特征:计算皮尔逊相关系数$|r| > 0.9$ → 保留其一
  • 低方差特征:$\text{Var}(x_j) \approx 0$ → 几乎常数,无区分力 → 删除
  • ⚡ 注意:低方差≠无用!若与label强相关仍需保留(罕见但可能)

主成分分析 (PCA) 核心直觉(⭐⭐⭐ 高频):

  • 目标:找正交基${\mathbf{u}_1, \mathbf{u}_2, ...}$,使数据投影后方差最大(保留最多信息)
  • 第一主成分$\mathbf{u}1$:$\arg\max{|\mathbf{u}|=1} \text{Var}(\mathbf{u}^\top \mathbf{X})$
  • 等价视角:最小化重构误差$\sum_i |\mathbf{x}^{(i)} - \tilde{\mathbf{x}}^{(i)}|^2$
  • ✅ 两个视角数学等价(证明见模板)

PCA 前提假设

  • 线性关系:主成分是原始特征的线性组合
  • 方差=信息:假设高方差方向包含更多信号(噪声通常方差小)
  • 正交性:主成分间线性无关(协方差=0)
  • ⚠️ 若数据有非线性流形结构 → 用Kernel PCA / t-SNE / UMAP

特征缩放对PCA的影响(⭐⭐⭐ 易错):

  • PCA对特征尺度敏感:大尺度特征主导方差 → 主成分偏向该方向
  • ✅ 必须先标准化:$x'_j = \frac{x_j - \mu_j}{\sigma_j}$,使各特征"话语权平等"
  • ⚠️ 若特征本就有物理尺度意义(如像素值[0,255])→ 可考虑归一化而非标准化

PCA 标准流程(考场必会)

  1. 数据预处理:
    • 处理缺失值(删除/填充)
    • 标准化:对每特征计算$\mu_j, \sigma_j$,变换$x'_j = \frac{x_j - \mu_j}{\sigma_j}$
  2. 计算协方差矩阵:
    • $\Sigma = \frac{1}{n} X^\top X$($X$已中心化,即每列均值=0)
  3. 特征值分解:
    • 解$\Sigma \mathbf{u} = \lambda \mathbf{u}$,得特征值$\lambda_1 \geq \lambda_2 \geq ... \geq \lambda_d$和对应特征向量$\mathbf{u}_1, \mathbf{u}_2, ...$
  4. 选择主成分数$k$:
    • 方法1:设定方差保留比例,如$\frac{\sum_{j=1}^k \lambda_j}{\sum_{j=1}^d \lambda_j} \geq 0.95$
    • 方法2:肘部法则(scree plot),选$\lambda$下降变缓处
  5. 投影降维:
    • 构造投影矩阵$U_k = [\mathbf{u}_1, \mathbf{u}_2, ..., \mathbf{u}_k] \in \mathbb{R}^{d \times k}$
    • 降维后数据$Z = X U_k \in \mathbb{R}^{n \times k}$

💡 应用题技巧:手动计算2D→1D PCA时,先中心化→算协方差→求特征向量→投影;注意特征向量需单位化

降维后模型训练流程

  1. 在训练集上fit降维器(如PCA),记录变换参数($\mu, \sigma, U_k$)
  2. 用降维后的训练数据$Z_{\text{train}}$训练模型
  3. 对测试集:
    • 用训练集的$\mu, \sigma$标准化
    • 用训练集的$U_k$投影得$Z_{\text{test}}$
    • 用训练好的模型预测
  4. ✅ 防止数据泄露:降维参数必须从训练集学习!

模板1:PCA 最大方差 ⇔ 最小重构误差(⭐⭐⭐ 必背)

视角1:最大化投影方差
设数据已中心化($\sum_i \mathbf{x}^{(i)} = \mathbf{0}$),投影方向$\mathbf{u}$($|\mathbf{u}|=1$)

投影后方差:
$$
\text{Var} = \frac{1}{n} \sum_{i=1}^n (\mathbf{u}^\top \mathbf{x}^{(i)})^2 = \mathbf{u}^\top \left( \frac{1}{n} \sum_i \mathbf{x}^{(i)} \mathbf{x}^{(i)\top} \right) \mathbf{u} = \mathbf{u}^\top \Sigma \mathbf{u}
$$

优化问题:$\max_{|\mathbf{u}|=1} \mathbf{u}^\top \Sigma \mathbf{u}$

拉格朗日:$\mathcal{L} = \mathbf{u}^\top \Sigma \mathbf{u} - \lambda(\mathbf{u}^\top \mathbf{u} - 1)$

求导令0:$\frac{\partial \mathcal{L}}{\partial \mathbf{u}} = 2\Sigma \mathbf{u} - 2\lambda \mathbf{u} = 0 \Rightarrow \Sigma \mathbf{u} = \lambda \mathbf{u}$

→ 最优$\mathbf{u}$是$\Sigma$的最大特征值对应特征向量 ✓

视角2:最小化重构误差
重构数据$\tilde{\mathbf{x}}^{(i)} = (\mathbf{u}^\top \mathbf{x}^{(i)}) \mathbf{u}$(投影再还原)

重构误差:
$$
J = \frac{1}{n} \sum_i |\mathbf{x}^{(i)} - \tilde{\mathbf{x}}^{(i)}|^2 = \frac{1}{n} \sum_i |\mathbf{x}^{(i)}|^2 - \mathbf{u}^\top \Sigma \mathbf{u}
$$

$\because \frac{1}{n}\sum_i |\mathbf{x}^{(i)}|^2$是常数 → $\min J \Leftrightarrow \max \mathbf{u}^\top \Sigma \mathbf{u}$ ✓

💡 证明题关键:写出两视角目标函数,说明常数项等价

模板2:PCA 协方差矩阵特征分解推导

已知中心化数据$X \in \mathbb{R}^{n \times d}$,协方差$\Sigma = \frac{1}{n} X^\top X$

对$\Sigma$做特征分解:$\Sigma = U \Lambda U^\top$,其中$U = [\mathbf{u}_1, ..., \mathbf{u}_d]$正交,$\Lambda = \text{diag}(\lambda_1, ..., \lambda_d)$

投影到前$k$主成分:$Z = X U_k$,$U_k = [\mathbf{u}_1, ..., \mathbf{u}_k]$

重构数据:$\tilde{X} = Z U_k^\top = X U_k U_k^\top$

重构误差(Frobenius范数):
$$
|X - \tilde{X}|F^2 = |X(I - U_k U_k^\top)|F^2 = \text{tr}((X - \tilde{X})^\top (X - \tilde{X}))
$$
$$
= \text{tr}(X^\top X) - \text{tr}(U_k^\top X^\top X U_k) = n \sum
{j=1}^d \lambda_j - n \sum
{j=1}^k \lambda_j = n \sum_{j=k+1}^d \lambda_j
$$

→ 最小化误差 ⇔ 选最大$k$个$\lambda$ ✓

💡 考场简化:写"重构误差 = 总方差 - 保留方差 = $\sum_{j>k} \lambda_j$"即可

Cpt6: Model Evaluation & Tuning — Cheatsheet

混淆矩阵核心指标(⭐⭐⭐ 必背):

  • $TP$:预测正/实际正;$TN$:预测负/实际负;$FP$:预测正/实际负(误报);$FN$:预测负/实际正(漏报)
  • $Accuracy = \frac{TP+TN}{TP+TN+FP+FN}$ → 类别平衡时有效,不平衡时误导性强
  • $Precision = \frac{TP}{TP+FP}$ → "预测为正的样本中有多少真正为正",关注查准率
  • $Recall = \frac{TP}{TP+FN}$ → "实际为正的样本中有多少被找出",关注查全率
  • $F1 = 2 \cdot \frac{Precision \cdot Recall}{Precision + Recall}$ → 调和平均,平衡查准查全
  • ⚠️ 调和平均特性:$F1$对低值敏感,$P$或$R$任一接近0 → $F1$接近0

ROC曲线与AUC(⭐⭐⭐ 高频):

  • $TPR = Recall = \frac{TP}{TP+FN}$(纵轴);$FPR = \frac{FP}{FP+TN}$(横轴)
  • 阈值$\theta \downarrow$ → 更多样本判为正 → $TPR \uparrow, FPR \uparrow$ → 曲线向右上移动
  • $AUC = \int_0^1 TPR(FPR) d(FPR)$:随机选一个正样本和一个负样本,模型给正样本打分更高的概率
  • ✅ $AUC=0.5$:随机猜测;$AUC=1$:完美分类;$AUC<0.5$:模型反向,取反即可
  • ⚡ ROC对类别不平衡鲁棒(因TPR/FPR分别归一化),Precision-Recall曲线更敏感

Bias-Variance分解(⭐⭐⭐ 证明题高频):

  • 期望泛化误差:$\mathbb{E}[(y - f(\mathbf{x}))^2] = \underbrace{(\mathbb{E}[f(\mathbf{x})] - y)^2}{\text{Bias}^2} + \underbrace{\mathbb{E}[(f(\mathbf{x}) - \mathbb{E}[f(\mathbf{x})])^2]}{\text{Variance}} + \underbrace{\sigma^2}_{\text{Irreducible noise}}$
  • High bias(欠拟合):模型太简单,训练/验证误差都高,曲线接近
  • High variance(过拟合):模型太复杂,训练误差低,验证误差高,曲线间隙大
  • ✅ 模型复杂度$\uparrow$ → bias$\downarrow$, variance$\uparrow$ → 找平衡点

交叉验证(Cross-Validation)策略对比
| 方法 | 流程 | 优点 | 缺点 | 适用场景 |
| Hold-out | 随机分train/test(如7:3) | 简单快速 | 评估方差大,依赖划分 | 大数据集 |
| k-fold CV | 分k份,轮流做验证集,平均结果 | 评估稳定,数据利用率高 | 训练k次,计算量大 | 中小数据集(k=5/10) |
| LOOCV | $k=n$,每次留1个做验证 | 几乎无偏,数据利用率100% | 计算量$O(n)$,方差可能大 | 极小数据集 |
| Stratified CV | 每fold保持类别比例 | 评估稳定,适合不平衡数据 | 实现略复杂 | 类别不平衡必用 |

⚠️ 易错:CV用于模型选择/调参,最终性能仍需在独立测试集评估,防止过拟合验证集

过拟合诊断与应对

  • 现象:训练误差↓,验证误差↑;或训练/验证间隙大
  • 原因:模型太复杂 / 数据太少 / 噪声太多 / 特征冗余
  • ✅ 应对:① 增加数据 ② 正则化(L1/L2)③ 降维/特征选择 ④ 早停(early stopping)⑤ 集成(bagging降variance)

超参数调优策略

  • 网格搜索(Grid Search):穷举预定义参数组合 → 全面但计算量大
  • 随机搜索(Random Search):随机采样参数空间 → 高效,高维空间更优
  • 贝叶斯优化:用代理模型指导搜索 → 样本效率高,但实现复杂
  • ✅ 实践:先随机搜索粗调,再网格搜索细调;用CV评估每组参数

类别不平衡处理(⭐⭐⭐ 应用题高频):

  • 问题:多数类主导,少数类recall极低;accuracy虚高
  • 评估指标:用F1/ROC-AUC/Precision-Recall曲线,而非accuracy
  • 数据层面:① 过采样少数类(SMOTE)② 欠采样多数类 ③ 组合采样
  • 算法层面:① 类别权重(class_weight)② 阈值移动(降低正类判定阈值)③ 集成方法(EasyEnsemble)
  • ⚡ 阈值移动:原阈值0.5 → 调整为$\frac{cost_{FN}}{cost_{FP}+cost_{FN}}$,根据误分类代价优化

学习曲线绘制与解读流程

  1. 选择一系列训练集大小:$n_1 < n_2 < ... < n_m$(如10%, 30%, ..., 100%)
  2. 对每个$n_j$:
    • 随机采样$n_j$个训练样本
    • 训练模型,计算训练误差$J_{train}(n_j)$
    • 在独立验证集上计算验证误差$J_{val}(n_j)$
  3. 绘制曲线:横轴=$n$,纵轴=$J$,两条曲线分别标训练/验证
  4. 解读:
    • 两曲线都高且接近 → high bias → 换更复杂模型/加特征
    • 训练低、验证高、间隙大 → high variance → 加数据/正则化/降维
    • 验证曲线随$n$下降 → 增加数据有效

阈值移动优化F1流程

  1. 用模型输出概率$\sigma(\mathbf{x}) \in [0,1]$,而非硬分类
  2. 遍历阈值$\theta \in [0,1]$(如步长0.01):
    • 对每个$\theta$:$\hat{y} = \mathbb{I}(\sigma(\mathbf{x}) \geq \theta)$
    • 计算对应$Precision(\theta), Recall(\theta), F1(\theta)$
  3. 选使$F1$最大的$\theta^*$作为最终阈值
  4. ✅ 应用题技巧:题目问"如何优化recall" → 答"降低阈值,让更多样本判为正"

模板2:Bias-Variance分解推导(⭐⭐⭐ 高频)

设真实函数$y = f^*(\mathbf{x}) + \epsilon$,$\mathbb{E}[\epsilon]=0, \text{Var}(\epsilon)=\sigma^2$

模型$f$在训练集$\mathcal{D}$上学习,期望泛化误差:
$
\mathbb{E}_{\mathcal{D},\epsilon}[(y - f(\mathbf{x}))^2] = \mathbb{E}[(f^* + \epsilon - f)^2]
$

展开:
$
= \mathbb{E}[(f^* - f)^2] + \mathbb{E}[\epsilon^2] + 2\mathbb{E}[(f^* - f)\epsilon]
$

第三项:$\mathbb{E}[(f^* - f)\epsilon] = \mathbb{E}[f^* - f] \cdot \mathbb{E}[\epsilon] = 0$($\epsilon$与$f$独立)

第二项:$\mathbb{E}[\epsilon^2] = \text{Var}(\epsilon) = \sigma^2$(不可约误差)

第一项分解:
$
\mathbb{E}[(f^* - f)^2] = \mathbb{E}[(f - \mathbb{E}[f] + \mathbb{E}[f] - f^)^2]
$
$
= \underbrace{\mathbb{E}[(f - \mathbb{E}[f])^2]}_{\text{Variance}} + \underbrace{(\mathbb{E}[f] - f^
)^2}{\text{Bias}^2} + 2\underbrace{\mathbb{E}[(f - \mathbb{E}[f])(\mathbb{E}[f] - f^*)]}{=0}
$

→ 总误差 = Bias² + Variance + $\sigma^2$ ✓

💡 证明题开头先写"目标:分解期望误差",再逐步展开,关键步骤标注"交叉项=0"

模板5:阈值移动优化Recall的数学原理

设模型输出概率$\sigma$,原阈值$\theta_0=0.5$

Recall定义:$R(\theta) = P(\sigma \geq \theta | y=1)$

  • $\theta \downarrow$ → 判定条件放宽 → 更多正样本被检出 → $R \uparrow$
  • 但同时$FP \uparrow$ → $Precision \downarrow$

最优阈值选择:

  • 若目标最大化$F1$:遍历$\theta$选$\arg\max_\theta F1(\theta)$
  • 若代价敏感:设$cost_{FP}, cost_{FN}$,最小化期望代价
    $
    \mathbb{E}[cost] = cost_{FP} \cdot FP(\theta) + cost_{FN} \cdot FN(\theta)
    $
    → 求导或遍历找最优$\theta^*$ ✓

💡 证明题关键:写出Recall/Precision关于$\theta$的单调性,再结合目标函数优化

Cpt7: Ensemble Learning — Cheatsheet

Bagging (Bootstrap Aggregating) 直觉(⭐⭐⭐ 高频):

  • 流程:有放回采样→训练多个基模型→投票/平均聚合
  • Bootstrap采样:$n$样本中有放回抽$n$次 → 约63.2%样本被选中,36.8%为OOB(Out-Of-Bag)
  • ✅ OOB样本可作为验证集,无需额外划分测试集
  • 主要降低variance:平均多个模型→抵消个体波动,特别适合高variance基模型(如深决策树)
  • ⚡ 并行训练:各基模型独立,可分布式加速

Boosting 核心直觉(⭐⭐⭐ 高频):

  • 串行训练:每轮关注前一轮错分的样本
  • 目标:降低bias,将弱学习器提升为强学习器
  • 两类主流:
    • AdaBoost:调整样本权重,错分样本权重↑
    • Gradient Boosting:拟合残差(负梯度),逐步修正

AdaBoost 关键机制

  • 样本权重更新:$D_{t+1}(i) = \frac{D_t(i) \exp(-\alpha_t y_i h_t(\mathbf{x}_i))}{Z_t}$
    • $y_i h_t(\mathbf{x}_i) > 0$(分类正确)→ 权重↓
    • $y_i h_t(\mathbf{x}_i) < 0$(分类错误)→ 权重↑
  • 基模型权重:$\alpha_t = \frac{1}{2} \ln \frac{1-\epsilon_t}{\epsilon_t}$
    • 误差$\epsilon_t$越小 → $\alpha_t$越大 → 该模型投票权重越高
  • ✅ 训练误差上界:$\prod_t 2\sqrt{\epsilon_t(1-\epsilon_t)}$,随轮数指数下降

Gradient Boosting 直觉

  • 每轮拟合残差:$r_i = y_i - F_{t-1}(\mathbf{x}_i)$(回归)或负梯度(通用)
  • 更新:$F_t(\mathbf{x}) = F_{t-1}(\mathbf{x}) + \nu \cdot h_t(\mathbf{x})$,$\nu$为学习率(shrinkage)
  • ✅ 学习率$\nu$小→需更多轮但泛化更好;$\nu$大→易过拟合
  • ⚡ XGBoost/LightGBM:工程优化(正则化、直方图、叶子生长等),原理同GBDT

Voting 策略对比
| 策略 | 公式 | 适用场景 | 优点 |
| Hard Voting | $\hat{y} = \text{mode}{h_1(\mathbf{x}), ..., h_T(\mathbf{x})}$ | 分类,基模型输出类别 | 简单直观 |
| Soft Voting | $\hat{y} = \arg\max_c \frac{1}{T}\sum_t P_t(y=c|\mathbf{x})$ | 分类,基模型输出概率 | 利用置信度,通常更优 |
| Average | $\hat{y} = \frac{1}{T}\sum_t h_t(\mathbf{x})$ | 回归 | 平滑预测,降variance |
| Weighted | $\hat{y} = \sum_t w_t h_t(\mathbf{x}), \sum w_t=1$ | 已知模型性能差异 | 给强模型更高权重 |

集成方法偏差-方差特性(⭐⭐⭐ 证明题高频):

  • Bagging:主要降低variance,bias基本不变
    • 适用:高variance基模型(如未剪枝树、KNN)
  • Boosting:主要降低bias,可能增加variance
    • 适用:高bias基模型(如浅树、线性模型)
  • ✅ 经验:树模型→用Random Forest(bagging);线性模型→用GBDT(boosting)

Stacking 两层架构

  • 第一层:多个基模型(可异构)输出预测
  • 第二层:Meta-learner(如LR)以第一层输出为输入,学习如何组合
  • ✅ 关键:第一层预测需用交叉验证生成,防止数据泄露
  • ⚡ 计算量大,但常获竞赛SOTA

Bagging 训练流程

  1. 设基学习器数量$T$,采样比例通常为100%(有放回)
  2. 对$t=1$到$T$:
    • 从训练集有放回采样$n$样本,得$D_t$(Bootstrap样本)
    • 用$D_t$训练基模型$h_t$(通常不剪枝/不设早停)
  3. 预测时:
    • 分类:硬投票$\text{mode}{h_t(\mathbf{x})}$或软投票$\text{avg}{P_t(y|\mathbf{x})}$
    • 回归:$\text{avg}{h_t(\mathbf{x})}$
  4. ✅ OOB评估:对每个样本,仅用未采样到它的基模型预测,计算整体性能

Random Forest 训练流程(Bagging + 特征随机)

  1. 设树数量$T$,每节点候选特征数$m$(分类$\approx\sqrt{d}$,回归$\approx d/3$)
  2. 对$t=1$到$T$:
    • Bootstrap采样得$D_t$
    • 用$D_t$训练决策树,但每节点分裂时:
      • 随机选$m$个特征
      • 仅在这$m$个中选最优分裂点(信息增益/基尼指数最大)
  3. 预测:所有树投票/平均
  4. ✅ 特征重要性计算:对每棵树,累加各特征分裂带来的不纯度下降,再跨树平均

AdaBoost 训练流程(⭐⭐⭐ 必会手动模拟)

  1. 初始化样本权重$D_1(i) = 1/n, \forall i$
  2. 对$t=1$到$T$:
    • 用权重$D_t$训练弱学习器$h_t$(如决策树桩)
    • 计算加权误差$\epsilon_t = \sum_{i: h_t(\mathbf{x}_i)\neq y_i} D_t(i)$
    • 计算模型权重$\alpha_t = \frac{1}{2} \ln \frac{1-\epsilon_t}{\epsilon_t}$
    • 更新样本权重
      $
      D_{t+1}(i) = \frac{D_t(i) \exp(-\alpha_t y_i h_t(\mathbf{x}i))}{Z_t}
      $
      其中$Z_t$为归一化因子,使$\sum_i D
      {t+1}(i)=1$
  3. 最终模型:$H(\mathbf{x}) = \text{sign}\left( \sum_{t=1}^T \alpha_t h_t(\mathbf{x}) \right)$
  4. ✅ 应用题技巧:手动计算时,注意$y_i, h_t(\mathbf{x}_i) \in {\pm1}$,$\exp(-\alpha_t y_i h_t)$正确分类时$<1$(权重↓),错误时$>1$(权重↑)

模板2:AdaBoost 样本权重更新推导

目标:解释$D_{t+1}(i) \propto D_t(i) \exp(-\alpha_t y_i h_t(\mathbf{x}_i))$的合理性

  • 若分类正确:$y_i h_t(\mathbf{x}_i) = +1$ → $\exp(-\alpha_t) < 1$ → 权重↓
  • 若分类错误:$y_i h_t(\mathbf{x}_i) = -1$ → $\exp(+\alpha_t) > 1$ → 权重↑
  • 归一化$Z_t$确保$\sum_i D_{t+1}(i) = 1$

模型权重$\alpha_t = \frac{1}{2} \ln \frac{1-\epsilon_t}{\epsilon_t}$来源:

  • 最小化指数损失上界:$\sum_i D_t(i) \exp(-\alpha_t y_i h_t(\mathbf{x}_i))$
  • 对$\alpha_t$求导令0 → 解得上述$\alpha_t$ ✓

Cpt8: Regression Analysis — Cheatsheet

线性回归核心假设(⭐⭐⭐ 高频):

  • 线性关系:$y = \mathbf{w}^\top \mathbf{x} + b + \epsilon$,$\epsilon$为噪声
  • 误差独立同分布:$\epsilon \sim \mathcal{N}(0, \sigma^2)$,均值为0、方差恒定(同方差性)
  • 特征无多重共线性:$X^\top X$可逆,否则正规方程无唯一解
  • ⚠️ 若假设违反:异方差→加权最小二乘;自相关→时间序列模型;共线性→正则化/删除特征

💡 关键:MSE梯度=$( \hat{y}-y )\mathbf{x}$,MAE梯度=$\text{sign}(\hat{y}-y)\mathbf{x}$(次梯度)

正则化对比:Ridge (L2) vs Lasso (L1) vs Elastic Net
| 方法 | 惩罚项 | 解的特性 | 适用场景 |
| Ridge (L2) | $\lambda|\mathbf{w}|_2^2$ | 权重收缩但不为零;处理共线性 | 特征多且相关;防止过拟合 |
| Lasso (L1) | $\lambda|\mathbf{w}|_1$ | 产生稀疏解(部分$w_j=0$);特征选择 | 高维稀疏数据;需可解释性 |
| Elastic Net | $\lambda_1|\mathbf{w}|_1 + \lambda_2|\mathbf{w}|_2^2$ | 结合L1稀疏+L2稳定;处理相关特征组 | 特征高度相关且需选择 |

⚠️ 易错:正则化不惩罚偏置项$b$(截距),因平移数据不应影响正则强度

正则化强度$\lambda$影响

  • $\lambda=0$:无正则,等价普通最小二乘,易过拟合
  • $\lambda \uparrow$:权重收缩↑,模型复杂度↓,bias↑, variance↓
  • $\lambda \to \infty$:$\mathbf{w} \to \mathbf{0}$,模型退化为常数预测$\hat{y}=\bar{y}$
  • ✅ 选$\lambda$:交叉验证,画学习曲线找验证误差最小点

多项式回归直觉

  • 本质:线性回归 + 非线性特征映射$\phi(\mathbf{x}) = [1, x, x^2, ..., x^d]^\top$
  • 仍为线性模型:对参数$\mathbf{w}$线性,可用正规方程求解
  • 高阶风险:$d \uparrow$ → 模型复杂度↑ → 易过拟合(Runge现象:边界震荡)
  • ✅ 应对:正则化 + 特征缩放(高阶项量纲差异极大!)

回归评估指标对比
| 指标 | 公式 | 单位 | 优点 | 缺点 |
| MSE | $\frac{1}{n}\sum(y-\hat{y})^2$ | $y^2$ | 可导,优化友好 | 量纲平方,异常值敏感 |
| $R^2$ | $1 - \frac{\sum(y-\hat{y})^2}{\sum(y-\bar{y})^2}$ | 无单位[0,1] | 相对基准提升,跨任务可比 | 可能为负(模型比均值还差) |

💡 $R^2$解释:模型解释的方差比例;$R^2=0.8$ → 模型捕捉了80%目标变量波动

概率视角:MLE vs MAP(⭐⭐⭐ 证明题高频):

  • MLE(最大似然):$\arg\max_{\mathbf{w}} P(\mathbf{y}|X,\mathbf{w})$,等价最小化MSE(当$\epsilon \sim \mathcal{N}$)
  • MAP(最大后验):$\arg\max_{\mathbf{w}} P(\mathbf{w}|\mathbf{y},X) \propto P(\mathbf{y}|X,\mathbf{w})P(\mathbf{w})$
    • 若$P(\mathbf{w}) \sim \mathcal{N}(0, \tau^2 I)$ → MAP等价Ridge回归(L2正则)
    • 若$P(\mathbf{w}) \sim \text{Laplace}(0, b)$ → MAP等价Lasso回归(L1正则)
  • ✅ 正则化 = 对权重施加先验信念,防止过拟合的贝叶斯解释

线性回归 + MSE 训练流程(正规方程法)

  1. 构造设计矩阵$X \in \mathbb{R}^{n \times (d+1)}$,首列全1(对应偏置项)
  2. 检查$X^\top X$是否可逆:
    • 若可逆:直接计算$\mathbf{w} = (X^\top X)^{-1} X^\top \mathbf{y}$
    • 若奇异(共线性):用伪逆$\mathbf{w} = X^\dagger \mathbf{y}$或加正则
  3. 预测新样本:$\hat{y} = \mathbf{w}^\top \mathbf{x}_{\text{new}}$($\mathbf{x}$需加首项1)
  4. ✅ 应用题技巧:手动计算小矩阵时,先算$X^\top X$和$X^\top \mathbf{y}$,再解线性方程组

线性回归 + SGD 训练流程

  1. 初始化$\mathbf{w} \leftarrow \mathbf{0}$(或小随机值),设学习率$\eta$、迭代轮数$T$
  2. 对每轮$t=1$到$T$:
    • 随机打乱数据(或随机采样mini-batch)
    • 对每个样本$(\mathbf{x}^{(i)}, y^{(i)})$:
      • 计算预测$\hat{y}^{(i)} = \mathbf{w}^\top \mathbf{x}^{(i)}$
      • 计算梯度$\nabla J^{(i)} = (\hat{y}^{(i)} - y^{(i)}) \mathbf{x}^{(i)}$(MSE损失)
      • 更新$\mathbf{w} \leftarrow \mathbf{w} - \eta \cdot \nabla J^{(i)}$
    • (可选)$\eta$衰减:$\eta_t = \eta_0 / (1 + \gamma t)$
  3. 输出最终$\mathbf{w}$
  4. ✅ 应用题技巧:手动模拟时,注意梯度符号$(\hat{y}-y)$,更新方向"推"预测靠近真实值

Ridge/Lasso 训练流程对比

Ridge (L2)

  • 正规方程:$\mathbf{w} = (X^\top X + \lambda I)^{-1} X^\top \mathbf{y}$($I$首元素0,不惩罚偏置)
  • 梯度下降:$\nabla J = (\hat{\mathbf{y}} - \mathbf{y})^\top X + \lambda \mathbf{w}$,更新$\mathbf{w} \leftarrow \mathbf{w} - \eta \nabla J$

Lasso (L1)

  • 无闭式解,需用次梯度法/坐标下降/近端梯度
  • 次梯度:$\partial |w_j| = \begin{cases} +1 & w_j>0 \ -1 & w_j<0 \ [-1,1] & w_j=0 \end{cases}$
  • 更新:$w_j \leftarrow \text{SoftThreshold}(w_j - \eta \cdot \frac{\partial J}{\partial w_j}, \eta\lambda)$
    • $\text{SoftThreshold}(z, \gamma) = \text{sign}(z) \cdot \max(|z|-\gamma, 0)$

💡 应用题技巧:题目问"为何Lasso能特征选择" → 答"软阈值操作将小权重精确置零"

多项式回归实操流程

  1. 特征映射:对原始特征$x$,构造$\phi(x) = [1, x, x^2, ..., x^d]^\top$
  2. 必须特征缩放:高阶项量纲差异极大(如$x \in [0,1]$,$x^{10} \in [0,10^{-10}]$)
  3. 用$\phi(\mathbf{x})$作为新输入,训练线性回归(可加正则防过拟合)
  4. 预测时:新样本先映射$\phi(\mathbf{x}_{\text{new}})$,再用训练好的$\mathbf{w}$预测
  5. ✅ 选阶数$d$:交叉验证,画训练/验证误差曲线,选验证误差最小且未上升的$d$

模板1:MSE损失梯度推导(⭐⭐⭐ 必背)

损失函数(单样本):$J(\mathbf{w}) = \frac{1}{2}(y - \mathbf{w}^\top \mathbf{x})^2$

对权重向量$\mathbf{w}$求梯度:
$
\nabla_{\mathbf{w}} J = \frac{\partial}{\partial \mathbf{w}} \left[ \frac{1}{2}(y - \mathbf{w}^\top \mathbf{x})^2 \right]
= (y - \mathbf{w}^\top \mathbf{x}) \cdot \frac{\partial}{\partial \mathbf{w}}(y - \mathbf{w}^\top \mathbf{x})
$
$
= (y - \hat{y}) \cdot (-\mathbf{x}) = (\hat{y} - y) \mathbf{x} \quad \checkmark
$

多样本MSE:$J = \frac{1}{2n} \sum_i (y^{(i)} - \mathbf{w}^\top \mathbf{x}^{(i)})^2$
$
\nabla J = \frac{1}{n} \sum_i (\hat{y}^{(i)} - y^{(i)}) \mathbf{x}^{(i)} = \frac{1}{n} X^\top (\hat{\mathbf{y}} - \mathbf{y})
$

💡 关键:梯度形式$(\hat{y}-y)\mathbf{x}$,与逻辑回归$(\sigma-y)\mathbf{x}$结构一致,仅预测函数不同

模板2:正规方程推导(最小二乘闭式解)

目标:$\min_{\mathbf{w}} J(\mathbf{w}) = \frac{1}{2} |\mathbf{y} - X\mathbf{w}|^2$

展开:
$
J(\mathbf{w}) = \frac{1}{2} (\mathbf{y} - X\mathbf{w})^\top (\mathbf{y} - X\mathbf{w}) = \frac{1}{2} (\mathbf{y}^\top \mathbf{y} - 2\mathbf{y}^\top X\mathbf{w} + \mathbf{w}^\top X^\top X \mathbf{w})
$

对$\mathbf{w}$求导(矩阵微积分):
$
\frac{\partial J}{\partial \mathbf{w}} = -X^\top \mathbf{y} + X^\top X \mathbf{w}
$

令梯度=0:
$
X^\top X \mathbf{w} = X^\top \mathbf{y} \quad \Rightarrow \quad \mathbf{w} = (X^\top X)^{-1} X^\top \mathbf{y} \quad \checkmark
$

💡 证明题关键:写出展开式 + 矩阵求导规则$\frac{\partial}{\partial \mathbf{w}}(\mathbf{w}^\top A \mathbf{w}) = 2A\mathbf{w}$($A$对称)

模板3:Ridge回归正规方程推导

目标:$\min_{\mathbf{w}} J(\mathbf{w}) = \frac{1}{2} |\mathbf{y} - X\mathbf{w}|^2 + \frac{\lambda}{2} |\mathbf{w}|^2$(不惩罚偏置时,$\mathbf{w}$不含$b$)

求导:
$
\frac{\partial J}{\partial \mathbf{w}} = -X^\top \mathbf{y} + X^\top X \mathbf{w} + \lambda \mathbf{w} = 0
$
$
\Rightarrow (X^\top X + \lambda I) \mathbf{w} = X^\top \mathbf{y} \quad \Rightarrow \quad \mathbf{w} = (X^\top X + \lambda I)^{-1} X^\top \mathbf{y} \quad \checkmark
$

💡 关键:$\lambda I$使矩阵正定,即使$X^\top X$奇异也可逆,解决共线性问题

Cpt9: Clustering — Cheatsheet

聚类本质

  • 无监督学习:无标签$y$,目标发现数据内在结构/相似性分组
  • 探索性工具:同一数据可因特征/算法/参数不同产生不同划分,无唯一"正确答案"
  • 评估困难:无ground truth → 用内部指标(SSE/轮廓系数)或外部指标(若已知标签)

四种簇类型对比(⭐⭐⭐ 高频):
| 类型 | 定义 | 代表算法 | 优点 | 缺点 |
| Well-Separated | 任意点到本簇点距离 < 到它簇点距离 | 基于距离阈值 | 几何直观,边界清晰 | 仅适用明显分离的簇 |
| Center-Based | 点到簇中心(质心/medoid)距离最近 | K-Means, K-Medoids | 计算高效,适合球形簇 | 假设簇为凸/球形,难处理非凸 |
| Contiguity-Based | 点通过"近邻链"连通即同簇 | Single-Linkage, DBSCAN(部分) | 可捕捉任意形状(如U形) | 易被噪声"搭桥"导致错误合并 |
| Density-Based | 高密度区域为簇,低密度为噪声/边界 | DBSCAN, OPTICS | 抗噪声强,可发现任意形状+噪声 | 参数敏感(ε, MinPts),难处理密度差异大 |

K-Means核心特性(⭐⭐⭐ 必背):

  • 中心簇定义 + Partitional算法 + 优化SSE目标
  • 收敛性:每轮迭代$J = \sum_n |\mathbf{x}n - \boldsymbol{\mu}{z_n}|^2$单调不增,且有下界0 → 必收敛(但可能局部最优)
  • 对初始化敏感:不同种子→不同局部最优;需多轮重启/智能初始化
  • 假设簇为球形+等方差+等密度 → 难处理:大小差异大/非凸/密度不均的簇

初始化优化策略

  • Multiple Runs:随机种子重复$N$次,选SSE最小结果 → 简单但计算量大
  • Farthest-First Traversal:先选1个随机点,后续每次选"距已选中心最远"的点 → 强制中心分散
  • Hierarchical Pre-clustering:小样本上跑层次聚类得$k$个初始中心 → 平衡质量+效率
  • ✅ K-Means++:概率采样,距离已选中心越远的点被选概率越高 → 理论保证近似最优

空簇处理

  • 原因:初始中心落在稀疏区,所有点被其他簇"吸走"
  • 修复:① 找SSE最大簇,将其最远点提拔为新中心 ② 随机重选中心 ③ 直接删除该簇($k$减1)

链接准则(Linkage Criteria)对比(⭐⭐⭐ 高频):
| 准则 | 簇间距离定义 | 形状偏好 | 抗噪声 | 计算复杂度 |
| MIN (Single) | $\min_{i\in C_p, j\in C_q} d(i,j)$ | 任意形状(链式) | ⚠️ 极弱(噪声易搭桥) | $O(n^2)$ |
| MAX (Complete) | $\max_{i\in C_p, j\in C_q} d(i,j)$ | 紧凑球形 | ✅ 强(边缘点拉高距离) | $O(n^2)$ |
| Group Average | $\frac{1}{|C_p||C_q|}\sum_{i,j} d(i,j)$ | 较紧凑球形 | ✅ 中等(平均稀释噪声) | $O(n^2)$ |
| Ward's Method | $\Delta SSE = SSE_{merge} - (SSE_p + SSE_q)$ | 球形+等方差 | ✅ 强(类似K-Means) | $O(n^2)$ |

💡 MIN易产生"链式效应"(chaining),MAX易过度分割,Ward与K-Means目标一致

层次聚类树状图(Dendrogram)解读

  • 叶子=原始样本,内部节点=簇合并事件,纵轴=合并时距离/相似度
  • 切割高度$\leftrightarrow$簇数$k$:高切割→$k$小(粗粒度),低切割→$k$大(细粒度)
  • ✅ 优势:解耦"聚类过程"与"$k$选择",支持多尺度探索

二分K-Means(Bisecting K-Means)

  • 分治策略:初始全数据为1簇 → 选SSE最大簇用$k=2$K-Means二分 → 重复至$k$簇
  • 优点:① 减少初始化敏感(每次仅二分)② 自然生成层次树 ③ 可中途停止得任意$k$
  • ✅ 本质:层次聚类框架 + K-Means作为二分器

预处理/后处理关键点

  • 预处理:① 特征缩放(距离算法必做!)② 去除离群点(3σ/可视化)
  • 后处理:① 剔除小簇(噪声)② 分裂高SSE簇(内部不紧凑)③ 合并近中心簇(过度分割)

K-Means 标准流程(⭐⭐⭐ 必会手动模拟)

  1. 输入:数据$X$,簇数$k$,最大迭代$T$
  2. 初始化:选$k$个初始中心$\boldsymbol{\mu}_1^{(0)}, ..., \boldsymbol{\mu}_k^{(0)}$(随机/智能)
  3. 迭代$t=1$到$T$:
    • 分配步:对每个点$\mathbf{x}_n$,找最近中心$z_n = \arg\min_j |\mathbf{x}_n - \boldsymbol{\mu}_j^{(t-1)}|^2$
    • 更新步:对每个簇$j$,重算中心$\boldsymbol{\mu}j^{(t)} = \frac{1}{|C_j|} \sum{n: z_n=j} \mathbf{x}_n$
    • 收敛判断:若$\sum_j |\boldsymbol{\mu}_j^{(t)} - \boldsymbol{\mu}_j^{(t-1)}|^2 < \epsilon$,提前终止
  4. 输出:簇分配${z_n}$,中心${\boldsymbol{\mu}_j}$,SSE=$\sum_n |\mathbf{x}n - \boldsymbol{\mu}{z_n}|^2$

💡 应用题技巧:手动计算时,先画点+初始中心→算距离分配→重算中心→迭代1-2轮;注意欧氏距离公式

Agglomerative Hierarchical Clustering 流程

  1. 初始化:每个点为独立簇,计算$N \times N$距离矩阵$D$
  2. While 簇数$> 1$:
    • 按链接准则(MIN/MAX/Avg/Ward)找距离最近的两个簇$C_p, C_q$
    • 合并$C_p \cup C_q \to C_{new}$
    • 更新距离矩阵:计算$C_{new}$与其他簇的距离(依准则不同公式不同)
  3. 输出:树状图(记录每次合并的簇对+距离)
  4. 切割:在高度$h$处水平切树,得$k$个簇

💡 应用题技巧:手动模拟时用表格记录每步簇合并;MIN只需记最近点对,Ward需算SSE增量

Bisecting K-Means 流程

  1. 初始化:所有数据为1个簇,加入待分裂队列
  2. While 簇数$< k$:
    • 从队列选SSE最大的簇$C$
    • 在$C$上运行$k=2$的K-Means(可多轮重启选最优)
    • 将$C$分裂为$C_1, C_2$,加入队列
  3. 输出:$k$个簇

💡 应用题技巧:题目问"如何减少K-Means初始化敏感" → 答"用Bisecting K-Means分治策略"

模板1:K-Means 目标函数与梯度推导(⭐⭐⭐ 高频)

目标函数(distortion):
$$
J = \frac{1}{N} \sum_{n=1}^N |\mathbf{x}n - \boldsymbol{\mu}{z_n}|^2 = \frac{1}{N} \sum_{j=1}^k \sum_{n: z_n=j} |\mathbf{x}_n - \boldsymbol{\mu}_j|^2
$$

固定分配$z_n$,对$\boldsymbol{\mu}_j$求导
$$
\frac{\partial J}{\partial \boldsymbol{\mu}j} = \frac{2}{N} \sum{n: z_n=j} (\boldsymbol{\mu}_j - \mathbf{x}n)
$$
令梯度=0:
$$
\sum
{n: z_n=j} (\boldsymbol{\mu}_j - \mathbf{x}_n) = 0 \Rightarrow \boldsymbol{\mu}j = \frac{1}{|C_j|} \sum{n: z_n=j} \mathbf{x}_n \quad \checkmark
$$
→ 最优中心=簇内点均值

固定中心$\boldsymbol{\mu}_j$,优化分配$z_n$
$$
z_n = \arg\min_j |\mathbf{x}_n - \boldsymbol{\mu}_j|^2 \quad \text{(最近中心分配)} \quad \checkmark
$$

💡 证明题关键:分两步优化(坐标下降),交替固定一方求另一方最优

模板2:K-Means 收敛性证明思路

  1. 定义势函数$J^{(t)} = \sum_n |\mathbf{x}n - \boldsymbol{\mu}{z_n}^{(t)}|^2$
  2. 分配步:固定$\boldsymbol{\mu}^{(t-1)}$,选$z_n$最小化每项 → $J$不增
  3. 更新步:固定$z_n$,选$\boldsymbol{\mu}^{(t)}$为均值(模板1) → $J$不增
  4. $J \geq 0$有下界 → 单调有界序列必收敛 ✓

💡 证明题技巧:写"交替优化+势函数单调有界",无需展开细节

模板3:Ward's Method 的SSE增量推导

合并簇$C_p, C_q \to C_{new}$,SSE增量:
$$
\Delta SSE = SSE_{new} - (SSE_p + SSE_q)
$$
其中$SSE_p = \sum_{i \in C_p} |\mathbf{x}_i - \boldsymbol{\mu}_p|^2$

展开可得(简化版):
$$
\Delta SSE = \frac{|C_p||C_q|}{|C_p|+|C_q|} |\boldsymbol{\mu}_p - \boldsymbol{\mu}_q|^2
$$

→ Ward准则等价于:优先合并"质心近+簇大小适中"的簇对 ✓

💡 证明题关键:写出$\Delta SSE$定义,代入均值公式化简,得距离加权形式

模板5:特征缩放对K-Means的影响证明

设两特征$x_1 \in [0,1]$, $x_2 \in [0,1000]$,未缩放时欧氏距离:
$$
d(\mathbf{x},\mathbf{x}') = \sqrt{(x_1-x_1')^2 + (x_2-x_2')^2} \approx |x_2-x_2'| \quad (\text{因}~1000^2 \gg 1^2)
$$
→ 距离由$x_2$主导,$x_1$信息丢失 ❌

标准化后$x'_j = \frac{x_j - \mu_j}{\sigma_j}$,$\text{Var}(x'_1)=\text{Var}(x'_2)=1$:
$$
d'(\mathbf{x},\mathbf{x}') = \sqrt{(x'_1-x'_1')^2 + (x'_2-x'_2')^2}
$$
→ 两特征平等贡献距离 ✓

💡 证明题关键:写未缩放时距离近似式,说明主导特征问题;标准化后方差相等→公平

💡 证明题赖皮大法(考场保命)

  1. 看到"证明K-Means中心更新公式" → 立即写:

    • 目标:$\min_{\boldsymbol{\mu}j} \sum{n \in C_j} |\mathbf{x}_n - \boldsymbol{\mu}_j|^2$
    • 求导:$\frac{\partial}{\partial \boldsymbol{\mu}_j} = 2\sum (\boldsymbol{\mu}_j - \mathbf{x}_n) = 0$
    • 解得:$\boldsymbol{\mu}_j = \frac{1}{|C_j|}\sum \mathbf{x}_n$ ✓
  2. 看到"解释K-Means为何收敛" → 立即写:

    • 定义势函数$J = \sum |\mathbf{x}n - \boldsymbol{\mu}{z_n}|^2$
    • 分配步+更新步均使$J$不增(坐标下降)
    • $J \geq 0$有下界 → 单调有界必收敛 ✓
  3. 看到"比较MIN vs MAX linkage" → 立即写:

    • MIN:$d = \min_{i,j} d(i,j)$ → 链式效应,抗噪差,可捕非凸
    • MAX:$d = \max_{i,j} d(i,j)$ → 偏好球形,抗噪好,易过度分割
    • 画图辅助:三点共线说明MIN搭桥,紧凑簇说明MAX保守
  4. 看到"为何聚类前要特征缩放" → 立即写:

    • 未缩放时大尺度特征主导距离:$d \approx |x_{\text{large}} - x'_{\text{large}}|$
    • 标准化后各特征方差=1 → 距离公平反映各维度差异 ✓
  5. 卡住时:先写目标函数(如$J=\sum |\mathbf{x}-\boldsymbol{\mu}|^2$)+ 优化变量(如对$\boldsymbol{\mu}$求导)+ 关键结论(如"均值最优"),步骤分稳拿

Cpt10: Multi-layer Networks — Cheatsheet

神经网络核心优势

  • 万能近似定理:单隐藏层+足够神经元+非线性激活 → 可近似任意连续函数
  • 层次特征学习:浅层学边缘/纹理,深层学语义/对象组合 → 端到端特征提取
  • ✅ 关键:非线性激活函数是表达力的来源;全线性网络=单层线性变换(矩阵可合并)

激活函数对比(⭐⭐⭐ 必背):
| 函数 | 公式 | 导数 | 优点 | 缺点 | 适用场景 |
| Sigmoid | $\sigma(z)=\frac{1}{1+e^{-z}}$ | $\sigma(1-\sigma)$ | 输出(0,1),概率解释 | 梯度消失($|z|$大时),非0中心化 | 输出层(二分类) |
| Tanh | $\tanh(z)=\frac{e^z-e^{-z}}{e^z+e^{-z}}$ | $1-\tanh^2$ | 0中心化,收敛略快 | 梯度消失仍存在 | 隐藏层(历史用法) |
| ReLU | $\max(0,z)$ | $\mathbb{I}(z>0)$ | 计算快,缓解梯度消失,稀疏激活 | $z<0$时梯度=0("神经元死亡") | ✅ 隐藏层默认首选 |
| Leaky ReLU | $\max(\alpha z, z), \alpha\approx0.01$ | $\mathbb{I}(z>0)+\alpha\mathbb{I}(z<0)$ | 解决死亡神经元 | 多一超参$\alpha$ | ReLU效果不佳时备选 |

💡 关键:输出层激活依任务定——二分类Sigmoid,多分类Softmax,回归Linear/无激活

前向传播直觉

  • 层内:$\mathbf{z}^{[l]} = W^{[l]}\mathbf{a}^{[l-1]} + \mathbf{b}^{[l]}$(线性变换)
  • 激活:$\mathbf{a}^{[l]} = g^{[l]}(\mathbf{z}^{[l]})$(非线性)
  • 链式传递:输入→隐藏层→...→输出,每层提取更抽象特征
  • ✅ 计算图视角:前向=从叶到根求值;反向=从根到叶求梯度

反向传播核心思想(⭐⭐⭐ 证明题高频):

  • 链式法则递归应用:$\frac{\partial J}{\partial W^{[l]}} = \frac{\partial J}{\partial \mathbf{z}^{[l]}} \cdot \frac{\partial \mathbf{z}^{[l]}}{\partial W^{[l]}}$
  • 误差信号$\delta^{[l]} = \frac{\partial J}{\partial \mathbf{z}^{[l]}}$从输出层反向传播
  • 关键递推:$\delta^{[l]} = ((W^{[l+1]})^\top \delta^{[l+1]}) \odot g'^{[l]}(\mathbf{z}^{[l]})$
  • ✅ 记忆口诀:"后层误差×权重转置×当前激活导数"

梯度消失/爆炸问题

  • 消失:深层网络中,$\prod \sigma'(z)$或$\prod |W|$过小 → 浅层梯度≈0 → 参数不更新
    • 原因:Sigmoid/Tanh导数≤0.25;权重初始化过小
    • 解决:ReLU + Xavier/He初始化 + BatchNorm + 残差连接
  • 爆炸:$\prod |W|$过大 → 梯度数值溢出
    • 解决:梯度裁剪($|\mathbf{g}| > \theta$时缩放)+ 权重正则

权重初始化策略(⭐⭐⭐ 易错):

  • 全零初始化:对称性→所有神经元学相同特征 → ❌ 禁用
  • 随机小值:$\mathcal{N}(0, 0.01)$,简单但深层仍可能消失/爆炸
  • Xavier (Glorot):$W \sim \mathcal{N}(0, \sqrt{2/(n_{in}+n_{out})})$,适合Tanh/Sigmoid
  • He初始化:$W \sim \mathcal{N}(0, \sqrt{2/n_{in}})$,✅ ReLU专属,补偿$z<0$时梯度=0
  • ✅ 原则:保持每层激活/梯度方差≈1,信号稳定传播

正则化在NN中的应用

  • L2正则:损失加$\frac{\lambda}{2}|W|^2$ → 梯度更新$W \leftarrow (1-\eta\lambda)W - \eta\nabla J$(权重衰减)
  • Dropout:训练时以概率$p$随机屏蔽神经元 → 测试时权重×$p$(或训练时激活÷$p$)
    • 直觉:防止神经元共适应,等价集成学习
    • ⚠️ 仅训练时用,测试时关闭
  • Early Stopping:监控验证误差,不再下降时提前终止 → 防止过拟合
  • Batch Normalization:每层输入标准化$\hat{x}=\frac{x-\mu}{\sqrt{\sigma^2+\epsilon}}$,再仿射变换$\gamma\hat{x}+\beta$
    • 优点:加速收敛,允许更大$\eta$,轻微正则效果
    • ⚠️ 训练/测试时$\mu,\sigma$计算方式不同(测试用移动平均)

损失函数选择

  • 二分类:Cross-Entropy $J = -[y\log\hat{y} + (1-y)\log(1-\hat{y})]$,输出层Sigmoid
  • 多分类:Categorical CE $J = -\sum_c y_c \log \hat{y}_c$,输出层Softmax
  • 回归:MSE $J = \frac{1}{2}|\mathbf{y}-\hat{\mathbf{y}}|^2$,输出层Linear/无激活
  • ✅ 关键:输出层激活+损失函数需匹配,确保梯度简洁(如Softmax+CE梯度=$( \hat{y}-y )$)

前向传播标准流程($L$层网络)

  1. 输入:$\mathbf{a}^{[0]} = \mathbf{x}$(单样本或batch $X$)
  2. 对层$l=1$到$L$:
    • 线性:$\mathbf{z}^{[l]} = W^{[l]}\mathbf{a}^{[l-1]} + \mathbf{b}^{[l]}$
    • 激活:$\mathbf{a}^{[l]} = g^{[l]}(\mathbf{z}^{[l]})$
    • ✅ 缓存:存$\mathbf{z}^{[l]}, \mathbf{a}^{[l-1]}$供反向用
  3. 输出:$\hat{\mathbf{y}} = \mathbf{a}^{[L]}$
  4. 计算损失$J(\hat{\mathbf{y}}, \mathbf{y})$

💡 应用题技巧:手动计算时,按层逐步写$\mathbf{z}, \mathbf{a}$;注意矩阵维度:$W^{[l]} \in \mathbb{R}^{n_l \times n_{l-1}}$

反向传播标准流程(⭐⭐⭐ 必会手动推导)

  1. 计算输出层误差:
    • 若输出层Sigmoid+CE:$\delta^{[L]} = \mathbf{a}^{[L]} - \mathbf{y}$(简洁!)
    • 若MSE:$\delta^{[L]} = (\mathbf{a}^{[L]} - \mathbf{y}) \odot g'^{[L]}(\mathbf{z}^{[L]})$
  2. 对层$l=L-1$ downto $1$:
    • 误差传播:$\delta^{[l]} = ((W^{[l+1]})^\top \delta^{[l+1]}) \odot g'^{[l]}(\mathbf{z}^{[l]})$
    • 梯度计算:
      • $\frac{\partial J}{\partial W^{[l]}} = \delta^{[l]} (\mathbf{a}^{[l-1]})^\top$
      • $\frac{\partial J}{\partial \mathbf{b}^{[l]}} = \delta^{[l]}$(若batch则求和/平均)
  3. 参数更新(梯度下降):
    • $W^{[l]} \leftarrow W^{[l]} - \eta \cdot \frac{\partial J}{\partial W^{[l]}}$
    • $\mathbf{b}^{[l]} \leftarrow \mathbf{b}^{[l]} - \eta \cdot \frac{\partial J}{\partial \mathbf{b}^{[l]}}$

💡 应用题技巧:手动推导时,先写标量链式法则,再推广到向量;注意$\odot$是逐元素乘,$\cdot$是矩阵乘

Dropout 训练/测试流程

训练时

  1. 对每层$l$(应用Dropout的层):
    • 生成掩码$\mathbf{m}^{[l]} \sim \text{Bernoulli}(p)$($p$=保留概率)
    • 屏蔽:$\tilde{\mathbf{a}}^{[l]} = \mathbf{a}^{[l]} \odot \mathbf{m}^{[l]}$
    • 缩放:$\tilde{\mathbf{a}}^{[l]} \leftarrow \tilde{\mathbf{a}}^{[l]} / p$(Inverse Dropout,保持期望不变)
  2. 用$\tilde{\mathbf{a}}^{[l]}$作为下一层输入

测试时

  • 不使用Dropout,直接用原始$\mathbf{a}^{[l]}$
  • ✅ 若训练时未做Inverse Dropout,则测试时激活×$p$

💡 应用题技巧:题目问"Dropout测试时为何不用" → 答"训练时随机屏蔽模拟集成,测试时用全网络得稳定预测"

模板1:反向传播链式法则推导(⭐⭐⭐ 必背,pp2-P5原题)

设3层网络:输入$\mathbf{x}$,隐藏层$\mathbf{h}=\sigma(V\mathbf{x})$,输出$\mathbf{z}=W\mathbf{h}$,损失$J=\frac{1}{2}|\mathbf{y}-\mathbf{z}|^2$

Step 1: 输出层梯度
$
\frac{\partial J}{\partial \mathbf{z}} = \mathbf{z} - \mathbf{y} \quad \text{(MSE导数)}
$
$
\frac{\partial J}{\partial W} = \frac{\partial J}{\partial \mathbf{z}} \cdot \frac{\partial \mathbf{z}}{\partial W} = (\mathbf{z}-\mathbf{y}) \mathbf{h}^\top \quad \checkmark
$

Step 2: 隐藏层误差传播
$
\frac{\partial J}{\partial \mathbf{h}} = \frac{\partial J}{\partial \mathbf{z}} \cdot \frac{\partial \mathbf{z}}{\partial \mathbf{h}} = W^\top (\mathbf{z}-\mathbf{y})
$
$
\frac{\partial J}{\partial V} = \frac{\partial J}{\partial \mathbf{h}} \odot \sigma'(\mathbf{g}) \cdot \frac{\partial \mathbf{g}}{\partial V}, \quad \mathbf{g}=V\mathbf{x}
$
$
= [W^\top (\mathbf{z}-\mathbf{y}) \odot \sigma'(\mathbf{g})] \mathbf{x}^\top \quad \checkmark
$

💡 关键:$\frac{\partial \mathbf{z}}{\partial W} = \mathbf{h}^\top$(外积),$\odot$用于激活导数逐元素乘

模板5:Batch Normalization 前向/反向公式

前向(训练时)
$
\mu = \frac{1}{m}\sum_i x_i, \quad \sigma^2 = \frac{1}{m}\sum_i (x_i - \mu)^2
$
$
\hat{x}_i = \frac{x_i - \mu}{\sqrt{\sigma^2 + \epsilon}}, \quad y_i = \gamma \hat{x}_i + \beta
$

反向(关键梯度)
$
\frac{\partial J}{\partial \gamma} = \sum_i \frac{\partial J}{\partial y_i} \hat{x}_i, \quad \frac{\partial J}{\partial \beta} = \sum_i \frac{\partial J}{\partial y_i}
$
$
\frac{\partial J}{\partial \hat{x}_i} = \frac{\partial J}{\partial y_i} \gamma
$
$
\frac{\partial J}{\partial \sigma^2} = \sum_i \frac{\partial J}{\partial \hat{x}_i} \cdot (x_i - \mu) \cdot \left(-\frac{1}{2}(\sigma^2+\epsilon)^{-3/2}\right)
$
$
\frac{\partial J}{\partial \mu} = \sum_i \frac{\partial J}{\partial \hat{x}_i} \cdot \left(-\frac{1}{\sqrt{\sigma^2+\epsilon}}\right) + \frac{\partial J}{\partial \sigma^2} \cdot \frac{-2}{m}\sum_i (x_i - \mu)
$
$
\frac{\partial J}{\partial x_i} = \frac{\partial J}{\partial \hat{x}_i} \cdot \frac{1}{\sqrt{\sigma^2+\epsilon}} + \frac{\partial J}{\partial \sigma^2} \cdot \frac{2(x_i-\mu)}{m} + \frac{\partial J}{\partial \mu} \cdot \frac{1}{m}
$

💡 考场简化:记$\frac{\partial J}{\partial \gamma}, \frac{\partial J}{\partial \beta}$简洁形式,其余写"链式法则递归计算"

💡 证明题赖皮大法(考场保命)

  1. 看到"推导反向传播梯度" → 立即写:

    • 输出层:$\delta^{[L]} = \frac{\partial J}{\partial \mathbf{z}^{[L]}}$(依损失+激活写简洁形式)
    • 递推:$\delta^{[l]} = ((W^{[l+1]})^\top \delta^{[l+1]}) \odot g'^{[l]}(\mathbf{z}^{[l]})$
    • 梯度:$\frac{\partial J}{\partial W^{[l]}} = \delta^{[l]} (\mathbf{a}^{[l-1]})^\top$, $\frac{\partial J}{\partial \mathbf{b}^{[l]}} = \delta^{[l]}$
  2. 看到"证明Softmax+CE梯度简洁" → 立即写:

    • $\frac{\partial J}{\partial z_i} = \sum_k \frac{\partial J}{\partial \hat{y}_k} \frac{\partial \hat{y}_k}{\partial z_i}$
    • 代入$\frac{\partial J}{\partial \hat{y}_k} = -y_k/\hat{y}_k$, $\frac{\partial \hat{y}_k}{\partial z_i} = \hat{y}k(\delta{ki}-\hat{y}_i)$
    • 化简得$\hat{y}_i - y_i$ ✓
  3. 看到"解释梯度消失原因" → 立即写:

    • 深层中$\frac{\partial J}{\partial W^{[1]}} \propto \prod_{l} \frac{\partial \mathbf{a}^{[l]}}{\partial \mathbf{z}^{[l]}} \frac{\partial \mathbf{z}^{[l]}}{\partial \mathbf{a}^{[l-1]}}$
    • Sigmoid导数≤0.25,$|W|<1$ → 乘积指数衰减 → 浅层梯度≈0
    • 解决:ReLU(导数0/1) + He初始化 + BatchNorm
  4. 看到"为何用He初始化" → 立即写:

    • ReLU: $a=\max(0,z)$,$\mathbb{E}[a^2] = \frac{1}{2}\mathbb{E}[z^2]$(因$z<0$时$a=0$)
    • 令$\text{Var}(z) = 2/n_{in}$ → $\text{Var}(a) \approx \text{Var}(x)$,信号稳定 ✓
  5. 卡住时:先写目标(如"求$\partial J/\partial W$") + 链式法则框架 + 关键中间量定义(如$\delta = \partial J/\partial \mathbf{z}$),最后补结论,步骤分稳拿