监督学习(Supervised Learning)是机器学习的核心范式之一,其目标是从已标注的数据中学习一个映射函数,用于预测未知数据的输出。其核心流程包括:
- 选择归纳偏置(Inductive Bias):模型类、损失函数、正则项;
- 训练:通过ERM或正则化ERM求解参数;
- 验证:使用验证集选择超参数;
- 测试:在独立测试集上评估泛化性能。
本文将系统介绍监督学习的基本概念、方法框架和实际应用,涵盖回归(Regression)与分类(Classification)问题、经验风险最小化(Empirical Risk Minimization, ERM)、模型选择(Model Selection)、偏差-方差权衡(Bias-Variance Tradeoff)、正则化技术(Regularization)以及概率模型中的最大似然估计(Maximum Likelihood Estimation, MLE)等内容。
监督学习
什么是监督学习?
监督学习旨在从训练数据 $D = {(x_n, t_n)}_{n=1}^N$ 中学习一个函数,使得对于新的输入 $x$,能够预测其输出 $t$。根据输出变量的类型,可分为:
- 回归问题(Regression):$t$ 是连续值(如温度预测);
- 分类问题(Classification):$t$ 是离散标签(如天气预测)。
示例一:回归 vs 分类
- 回归:根据位置 $x$ 预测温度 $t$,$t \in \mathbb{R}$。
- 分类:根据今天天气 $x$(晴/雨)预测明天天气 $t$(晴/雨),$t \in {0, 1}$。
经验风险最小化(ERM)
由于真实分布 $p(x, t)$ 未知,我们使用训练集上的经验损失作为替代: $$ L_D(\theta) = \frac{1}{N} \sum_{n=1}^N \ell(t_n, f(x_n|\theta)) $$ ERM 的目标是: $$ \theta^{ERM} = \arg\min_{\theta} L_D(\theta) $$
考题:在线性回归中,若使用平方损失 $\ell(t, \hat{t}) = (t - \hat{t})^2$,且模型为 $f(x|\theta) = \theta^T u(x)$,求 ERM 解。
解题思路:
- 定义数据矩阵 $X$ 和目标向量 $t$;
- 最小化 $|X\theta - t|^2$;
- 解为 $\theta^{ERM} = (X^T X)^{-1} X^T t$(若 $X^T X$ 可逆)。
答案:闭式解为最小二乘解(Least Squares Solution)。
模型选择与验证
模型复杂度(如多项式次数 $M$)影响泛化能力:
- 欠拟合(Underfitting):模型太简单,训练误差和测试误差都大;
- 过拟合(Overfitting):模型太复杂,训练误差小,测试误差大。
使用 验证集(Validation Set) 或 K折交叉验证(K-fold Cross Validation) 来估计泛化误差,选择最优模型复杂度。
示例二:多项式回归中的模型选择
- $M=1$:欠拟合,无法捕捉周期性;
- $M=9$:过拟合,对噪声敏感;
- $M=3$:较好地平衡偏差与方差。
偏差与估计误差
泛化误差可分解为: $$ L_p(\theta_D) = \underbrace{L_p(f^)}_{\text{最小误差}} + \underbrace{[L_p(f^\mathcal{H}) - L_p(f^*)]}{\text{偏差(Bias)}} + \underbrace{[L_p(\theta_D) - L_p(f^*\mathcal{H})]}{\text{估计误差(Estimation Error)}} $$
- 偏差:模型类 $\mathcal{H}$ 的表达能力不足;
- 估计误差:训练数据有限导致的参数估计不准确。
正则化
为防止过拟合,在损失函数中加入正则项(Regularization Term): $$ \min_\theta L_D(\theta) + \frac{\lambda}{N} R(\theta) $$ 常见正则项:
- $L_2$ 正则($L_2$ Regularization):$R(\theta) = |\theta|_2^2$(岭回归/Ridge Regression);
- $L_1$ 正则($L_1$ Regularization):$R(\theta) = |\theta|_1$(LASSO)。
考题:岭回归的解是什么?
解题思路:
- 目标函数:$|X\theta - t|^2 + \lambda |\theta|_2^2$;
- 求导并令其为零;
- 解得 $\theta = (X^T X + \lambda I)^{-1} X^T t$。
答案:岭回归解为上述闭式解。
概率模型与最大似然估计
若输出具有随机性,可建模为条件分布 $p(t|x, \theta)$。使用 负对数似然(Negative Log-Likelihood) 作为损失函数: $$ L_D(\theta) = -\frac{1}{N} \sum_{n=1}^N \log p(t_n | x_n, \theta) $$ 最大化似然等价于最小化该损失。
示例三:高斯噪声下的回归
假设 $p(t|x, \theta) = \mathcal{N}(t | f(x|\theta), \beta^{-1})$,则: $$ -\log p(t|x, \theta) \propto \beta (t - f(x|\theta))^2 $$ 此时最大似然估计等价于最小二乘(Least Squares)。
举例与应用
考题一:分类问题的ERM
给定训练集:
x | t | 数量 |
---|---|---|
0 | 0 | 507 |
0 | 1 | 39 |
1 | 0 | 76 |
1 | 1 | 378 |
使用0-1损失(0-1 Loss),求ERM分类器 $f(x|\theta) = \theta_x$(即直接参数化每个输入对应的输出)。
解题思路:
- 计算每个 $x$ 对应的经验风险;
- 对于 $x=0$:选 $t=0$ 的损失为 $39/1000$,选 $t=1$ 的损失为 $507/1000$ → 应选 $t=0$;
- 对于 $x=1$:选 $t=0$ 的损失为 $378/1000$,选 $t=1$ 的损失为 $76/1000$ → 应选 $t=1$;
- 因此 $\theta^{ERM} = [0, 1]^T$。
答案:$f(0)=0$, $f(1)=1$。
考题二:偏差-方差分解(Bias-Variance Decomposition)
假设真实函数为 $f^*(x) = \sin(2\pi x)$,使用一次多项式 $f(x|\theta) = \theta_0 + \theta_1 x$ 进行拟合,试分析偏差和估计误差。
解题思路:
- 即使有无穷数据,最优线性近似 $f^*_{\mathcal{H}}(x)$ 也无法完美拟合正弦波 → 偏差大;
- 有限数据下,$\theta^{ERM}$ 与 $\theta^*$ 有差距 → 估计误差;
- 若增加数据,估计误差减小,但偏差不变。
结论:模型表达能力不足导致欠拟合。
优化
优化(Optimization)是机器学习(Machine Learning)的核心环节,直接决定了模型能否从数据中有效地学习。无论是简单的线性回归还是复杂的深度神经网络,训练过程本质上都是一个优化问题——最小化损失函数(Loss Function)。本节将深入探讨机器学习中的优化方法,涵盖最优性条件、梯度下降(Gradient Descent)、随机梯度下降(Stochastic Gradient Descent, SGD)以及梯度计算技术(如自动微分/Automatic Differentiation).
优化是机器学习模型训练的基础。梯度下降及其变体(如SGD)是实际应用中最常用的方法。理解最优性条件、学习率选择、梯度计算方式(尤其是自动微分)对于设计和调试机器学习模型至关重要。SGD 不仅降低了计算成本,还可能通过其随机性带来更好的泛化性能。未来,自适应优化算法(如Adam、RMSProp)和更先进的学习率调度策略将继续推动机器学习优化的发展。
优化在机器学习中的角色
在监督学习中,训练过程可形式化为以下优化问题:
$$ \min_{\theta} \frac{1}{N} \sum_{n=1}^{N} f(x_n, t_n; \theta) + R(\theta) $$
其中:
- $f(x_n, t_n; \theta)$ 是损失函数,
- $R(\theta)$ 是正则化项(Regularization),
- $\theta$ 是模型参数。
由于精确求解(Exact Optimization)通常不可行,我们依赖局部优化方法(Local Optimization Methods)进行近似求解。
最优性条件(Optimality Conditions)
单变量函数(Single-Variable Functions)
-
梯度(Gradient):负梯度 $-\frac{dg(\theta)}{d\theta}$ 指向函数局部下降最快的方向。
-
驻点(Stationary Point):若 $\theta^*$ 是局部极小值点,则必须满足一阶条件:
$$ \frac{dg(\theta^*)}{d\theta} = 0 $$
-
二阶条件(Second-Order Condition):通过二阶导数判断曲率(Curvature):
- $\frac{d^2g(\theta)}{d\theta^2} > 0$:正曲率,局部呈“U形”,可能是极小值点;
- $\frac{d^2g(\theta)}{d\theta^2} < 0$:负曲率,局部呈“倒U形”,可能是极大值点;
- $\frac{d^2g(\theta)}{d\theta^2} = 0$:零曲率,无法判断。
示例:判断驻点性质
考虑函数 $g(\theta) = \theta^4 - 4\theta^2 + 2\theta - 4$。
- 求一阶导数:$g’(\theta) = 4\theta^3 - 8\theta + 2$
- 求二阶导数:$g’’(\theta) = 12\theta^2 - 8$
- 在 $\theta = -1.52$ 处:$g’(-1.52) = 0$,$g’’(-1.52) > 0$ ⇒ 局部极小值点
- 在 $\theta = 1.27$ 处:$g’(1.27) = 0$,$g’’(1.27) < 0$ ⇒ 局部极大值点
多变量函数(Multi-Variable Functions)
-
梯度向量(Gradient Vector):
$$ \nabla g(\theta) = \left[ \frac{\partial g}{\partial \theta_1}, \frac{\partial g}{\partial \theta_2}, \dots, \frac{\partial g}{\partial \theta_D} \right]^T $$
-
Hessian 矩阵(Hessian Matrix):
$$ \nabla^2 g(\theta) = \begin{bmatrix} \frac{\partial^2 g}{\partial \theta_1^2} & \cdots & \frac{\partial^2 g}{\partial \theta_1 \partial \theta_D} \ \vdots & \ddots & \vdots \ \frac{\partial^2 g}{\partial \theta_D \partial \theta_1} & \cdots & \frac{\partial^2 g}{\partial \theta_D^2} \end{bmatrix} $$
-
凸函数(Convex Function):若 Hessian 矩阵半正定(Positive Semidefinite),则所有驻点都是全局最小值点。
示例:凸函数判断
考虑岭回归(Ridge Regression)问题:
$$ g(\theta) = \frac{1}{2} | \mathbf{X} \theta - \mathbf{t} |^2 + \frac{\lambda}{2} | \theta |^2 $$
- Hessian 矩阵为 $\nabla^2 g(\theta) = \mathbf{X}^T \mathbf{X} + \lambda \mathbf{I}$,是半正定的 ⇒ $g(\theta)$ 是凸函数。
- 全局最优解为 $\theta^* = (\lambda \mathbf{I} + \mathbf{X}^T \mathbf{X})^{-1} \mathbf{X}^T \mathbf{t}$。
梯度下降法(Gradient Descent, GD)
梯度下降是一种一阶优化方法,迭代更新公式为:
$$ \theta^{(i+1)} = \theta^{(i)} - \gamma \nabla g(\theta^{(i)}) $$
其中 $\gamma$ 是学习率(Learning Rate)。
性质与收敛性
- L-平滑函数(L-Smooth Function):若满足 $\left| \frac{d^2g(\theta)}{d\theta^2} \right| \leq L$,则函数曲率有界。
- 收敛条件:若 $\gamma < \frac{1}{L}$,则 GD 能保证:
- 损失函数非递增:$g(\theta^{(i+1)}) \leq g(\theta^{(i)}) - \frac{\gamma}{2} | \nabla g(\theta^{(i)}) |^2$
- 最终收敛到驻点:$\lim_{i \to \infty} \nabla g(\theta^{(i)}) = 0$
示例:梯度下降轨迹
考虑函数 $g(\theta) = \theta_1^2 + \theta_2^2$(对称碗状)和 $g(\theta) = \theta_1^2 + 3\theta_2^2$(非对称碗状)。
- 在对称情况下,梯度方向指向最小值;
- 在非对称情况下,梯度方向偏向曲率大的方向,不一定指向最小值。
随机梯度下降(Stochastic Gradient Descent, SGD)
当训练集很大($N$ 很大)时,计算完整梯度 $\nabla g(\theta) = \frac{1}{N} \sum_{n=1}^N \nabla g_n(\theta)$ 成本高昂。SGD 每次迭代只使用一个 mini-batch $S^{(i)}$ 的样本估计梯度:
$$ \theta^{(i+1)} = \theta^{(i)} - \gamma^{(i)} \cdot \frac{1}{|S^{(i)}|} \sum_{n \in S^{(i)}} \nabla g_n(\theta^{(i)}) $$
性质与调参
- 梯度噪声(Gradient Noise):由于 mini-batch 的随机性,SGD 的梯度估计有方差。
- 学习率调度(Learning Rate Scheduling):常使用递减学习率,如 $\gamma^{(i)} = \frac{\gamma^{(0)}}{(1 + \beta i)^\alpha}$(其中 $0.5 < \alpha \leq 1$),以满足 Robbins-Monro 条件,保证收敛。
- 隐式正则化(Implicit Regularization):SGD 的噪声有助于避免尖锐的局部极小值,可能提升泛化能力。
示例:SGD 与 GD 对比
使用逻辑回归(Logistic Regression)任务,$N=80$,mini-batch size $S=4$。
- GD 每迭代一次需计算 80 个样本的梯度;
- SGD 每迭代一次只需计算 4 个样本的梯度,收敛更慢(按迭代次数)但更快(按计算量)。
如何计算梯度(How to Compute Gradients)
三种方法对比
方法 | 精确性 | 是否利用结构 | 输出类型 |
---|---|---|---|
符号微分(Symbolic) | 精确 | 是 | 函数表达式 |
数值微分(Numerical) | 近似 | 否 | 单点数值 |
自动微分(Automatic) | 精确 | 是 | 单点数值 |
自动微分(Automatic Differentiation / Backpropagation)
自动微分通过计算图(Computational Graph)和链式法则(Chain Rule)高效计算梯度。分为前向传播(Forward Pass)和反向传播(Backward Pass)。
示例:自动微分计算
设 $g(\theta) = \theta_1^2 + 2\theta_2^2 - \theta_3^2$,在 $\theta = [1, -1, 1]^T$ 处计算梯度。
前向传播:
- $f_1 = \theta_1^2 = 1$
- $f_2 = \theta_2^2 = 1$
- $f_3 = \theta_3^2 = 1$
- $g = f_1 + 2f_2 - f_3 = 1 + 2 - 1 = 2$
反向传播(局部导数):
- $\frac{\partial g}{\partial f_1} = 1$
- $\frac{\partial g}{\partial f_2} = 2$
- $\frac{\partial g}{\partial f_3} = -1$
- $\frac{\partial f_1}{\partial \theta_1} = 2\theta_1 = 2$
- $\frac{\partial f_2}{\partial \theta_2} = 2\theta_2 = -2$
- $\frac{\partial f_3}{\partial \theta_3} = 2\theta_3 = 2$
最终梯度:
$$ \nabla g(\theta) = \left[2 \cdot 1,\ -2 \cdot 2,\ 2 \cdot (-1)\right] = [2,\ -4,\ -2] $$
答案: $\nabla g([1, -1, 1]^T) = [2, -4, -2]^T$
二元分类问题
本章节围绕监督学习中的 二元分类(Binary Classification) 问题,系统介绍了从 线性模型(Linear Models) 到 神经网络(Neural Networks),再到前沿的 Transformer架构 的核心方法。内容涵盖模型定义、训练算法、梯度计算与反向传播(Backpropagation),并辅以实例说明。
二元分类问题定义
在二元分类中,我们有一个带标签的数据集 $\mathcal{D} = {(\mathbf{x}n, t_n)}{n=1}^N$,其中 $\mathbf{x}_n \in \mathbb{R}^D$ 是输入特征向量,$t_n \in {0, 1}$ 是对应的类别标签。目标是学习一个模型,对新的输入 $\mathbf{x}$ 预测其类别 $\hat{t}$。
有时也使用符号标签(Signed Label) $t^\pm$: $$ t^\pm = \begin{cases} +1 & \text{if } t = 1 \ -1 & \text{if } t = 0 \end{cases} $$
线性模型(Linear Models)
硬预测(Hard Prediction)
使用阶跃函数(Step Function): $$ f(\mathbf{x} | \boldsymbol{\theta}) = \text{step}(\boldsymbol{\theta}^T \mathbf{u}(\mathbf{x})) = \begin{cases} 1 & \text{if } \boldsymbol{\theta}^T \mathbf{u}(\mathbf{x}) > 0 \ 0 & \text{otherwise} \end{cases} $$ 其中 $\mathbf{u}(\mathbf{x})$ 是特征映射(Feature Mapping),$\boldsymbol{\theta}$ 是参数向量。
软预测(Soft Prediction)与逻辑回归(Logistic Regression)
使用Sigmoid函数 $\sigma(a) = (1 + e^{-a})^{-1}$ 输出概率: $$ p(t=1 | \mathbf{x}, \boldsymbol{\theta}) = \sigma(\boldsymbol{\theta}^T \mathbf{u}(\mathbf{x})) $$
即使使用软预测,最终的硬决策规则仍为: $$ \hat{t} = \begin{cases} 1 & \text{if } \sigma(\boldsymbol{\theta}^T \mathbf{u}(\mathbf{x})) > 0.5 \ 0 & \text{otherwise} \end{cases} $$ 这与硬预测模型一致,但软预测提供了置信度信息。
特征工程(Feature Engineering)
若原始特征 $\mathbf{x}$ 无法线性分割,可通过构造特征向量 $\mathbf{u}(\mathbf{x})$ 实现线性可分。例如:
- 多项式特征:$\mathbf{u}(\mathbf{x}) = [x_1, x_2, x_1x_2]^T$
- 词袋模型(Bag-of-Words):$\mathbf{u}(\mathbf{x}) = [\text{count}(w_1), \dots, \text{count}(w_D)]^T$
神经网络(Neural Networks)
模型结构
神经网络通过多层非线性变换自动学习特征表示。一个 $L$ 层网络结构如下:
-
特征提取层($L-1$ 层):
- 每层 $l$ 有 $D^l$ 个神经元,使用激活函数 $h(\cdot)$(如 ReLU, Sigmoid, Tanh)
- 输出:$\mathbf{h}^l = h(\mathbf{a}^l) = h(\mathbf{W}^l \mathbf{h}^{l-1})$
- 最后一层特征:$\mathbf{u}(\mathbf{x} | \boldsymbol{\theta}) = \mathbf{h}^{L-1}$
-
分类层(第 $L$ 层):
- 使用 Sigmoid 激活:$p(t=1 | \mathbf{x}, \boldsymbol{\theta}) = \sigma(\mathbf{w}^L \cdot \mathbf{h}^{L-1})$
激活函数对比
函数 | 表达式 | 梯度特性 |
---|---|---|
Sigmoid | $\sigma(a) = \frac{1}{1+e^{-a}}$ | 饱和区梯度消失 |
ReLU | $\max(0, a)$ | 正区间梯度为1,负区间为0 |
Leaky ReLU | $\max(\alpha a, a)$ | 负区间梯度为 $\alpha$,缓解梯度消失问题 |
训练与优化
损失函数(Loss Functions)
- 0-1损失(0-1 Loss):$\ell(t, \hat{t}) = \mathbb{I}(t \neq \hat{t})$,不连续,难以优化
- 替代损失(Surrogate Losses):
- Hinge Loss:$\max(0, -y)$,$y = t^\pm \cdot \boldsymbol{\theta}^T \mathbf{u}(\mathbf{x})$
- Logistic Loss:$\log(1 + e^{-y})$(等价于负对数似然)
- Exponential Loss:$e^{-y}$
随机梯度下降(SGD)与反向传播
使用 SGD 最小化正则化经验风险: $$ \min_{\boldsymbol{\theta}} \frac{1}{N} \sum_{n=1}^N \ell(t_n, f(\mathbf{x}_n | \boldsymbol{\theta})) + \lambda R(\boldsymbol{\theta}) $$
反向传播通过链式法则计算梯度: $$ \frac{\partial \ell}{\partial w_{j,d}^l} = \delta_j^l \cdot h_d^{l-1} $$ 其中 $\delta_j^l$ 是第 $l$ 层第 $j$ 个神经元的误差信号。
举例与应用
示例一:感知器算法(Perceptron Algorithm)
给定数据集: $$ \mathcal{D} = {(2.1, 1), (-1.5, 0), (-0.3, 0), (5.2, 1)} $$ 使用特征 $\mathbf{u}(x) = x$,初始化 $\theta^{(1)} = -1$,学习率 $\eta = 0.1$。
迭代过程:
- 样本 $(2.1, 1)$:$\theta^{(1)} \cdot 2.1 = -2.1 < 0$,预测错误
- 更新:$\theta^{(2)} = -1 + 0.1 \cdot 1 \cdot 2.1 = -0.79$
- 样本 $(-1.5, 0)$:$\theta^{(2)} \cdot (-1.5) = 1.185 > 0$,预测错误
- 更新:$\theta^{(3)} = -0.79 - 0.1 \cdot (-1) \cdot (-1.5) = -0.64$
结论: 感知器通过更新错误样本的权重逐步改进分类边界。
示例二:逻辑回归的梯度计算
对同一数据集,使用逻辑回归(Sigmoid输出)和 SGD。
梯度公式: $$ \nabla_\theta \ell(\theta) = (\sigma(\theta^T \mathbf{u}(x)) - t) \cdot \mathbf{u}(x) $$
以样本 $(2.1, 1)$ 和 $\theta^{(1)} = -1$ 为例:
- $\sigma(-1 \cdot 2.1) \approx 0.11$
- 误差 $\delta = 0.11 - 1 = -0.89$
- 梯度:$\nabla_\theta \ell = -0.89 \cdot 2.1$
- 更新:$\theta^{(2)} = -1 - 0.1 \cdot (-0.89 \cdot 2.1) \approx -0.81$
结论: 逻辑回归的梯度包含概率误差,更新更平滑。
示例三:神经网络前向传播与反向传播
考虑一个2层网络($L=2$),输入 $\mathbf{x} = [1, -1]^T$,权重: $$ \mathbf{W}^1 = \begin{bmatrix} 1 & -1 \ -2 & 1 \end{bmatrix}, \quad \mathbf{w}^2 = [1, -1]^T $$ 使用 ReLU 激活函数,标签 $t=0$。
前向传播:
- $\mathbf{a}^1 = \mathbf{W}^1 \mathbf{x} = [2, -3]^T$
- $\mathbf{h}^1 = \text{ReLU}(\mathbf{a}^1) = [2, 0]^T$
- $a^2 = \mathbf{w}^2 \cdot \mathbf{h}^1 = 2$
- $p(t=1|\mathbf{x}) = \sigma(2) \approx 0.88$
反向传播(计算梯度):
- 输出层误差:$\delta^2 = \sigma(2) - 0 \approx 0.88$
- 隐藏层误差:$\delta^1 = \text{ReLU}’(\mathbf{a}^1) \circ (\mathbf{w}^2 \cdot \delta^2) = [1, 0]^T \circ [0.88, -0.88]^T = [0.88, 0]^T$
- 梯度:
- $\frac{\partial \ell}{\partial \mathbf{w}^2} = \delta^2 \cdot \mathbf{h}^1 = 0.88 \cdot [2, 0]^T = [1.76, 0]^T$
- $\frac{\partial \ell}{\partial \mathbf{W}^1} = \delta^1 \cdot \mathbf{x}^T = [0.88, 0]^T \cdot [1, -1] = \begin{bmatrix} 0.88 & -0.88 \ 0 & 0 \end{bmatrix}$
结论: 通过反向传播可高效计算神经网络中所有参数的梯度。
Last modified on 2025-08-22