这是本文档旧的修订版!
第五章 正则化技术
1. 概念定义与原理讲解
1.1 正则化的基本概念
正则化(Regularization)是机器学习中用于防止模型过拟合(Overfitting)的一系列技术。过拟合是指模型在训练数据上表现良好,但在未见过的测试数据上表现较差的现象。正则化通过在损失函数中添加惩罚项,限制模型复杂度,从而提高模型的泛化能力。
从数学角度看,正则化可以表示为:
$$\tilde{J}(\theta; X, y) = J(\theta; X, y) + \lambda \Omega(\theta)$$
其中:
- $J(\theta; X, y)$ 是原始损失函数
- $\Omega(\theta)$ 是正则化项(惩罚项)
- $\lambda$ 是正则化系数,控制正则化强度
- $\theta$ 表示模型参数
正则化的核心思想源于奥卡姆剃刀原理:在所有能够解释数据的模型中,最简单的模型往往是最好的。简单模型通常具有较小的参数值或较少的非零参数,对噪声不那么敏感。
1.2 L1正则化(Lasso回归)
L1正则化,也称为Lasso(Least Absolute Shrinkage and Selection Operator)正则化,通过在损失函数中添加参数绝对值之和作为惩罚项:
$$\Omega(\theta) = ||\theta||_1 = \sum_{i} |\theta_i|$$
完整的损失函数为:
$$\tilde{J}(\theta) = J(\theta) + \lambda \sum_{i} |\theta_i|$$
L1正则化的特点:
1. 稀疏性(Sparsity):L1正则化最显著的特性是产生稀疏解,即许多参数会被压缩至精确的零值。这使得L1正则化具有特征选择的功能,自动筛选出最重要的特征。
2. 几何解释:在二维参数空间中,L1正则化的约束区域是一个菱形(菱形区域)。最优解往往出现在菱形的顶点处,这些顶点对应某些参数为零的情况。
3. 不可导性:由于绝对值函数在原点处不可导,需要使用次梯度(Subgradient)方法进行优化。
4. 次梯度计算:
$$\frac{\partial |\theta_i|}{\partial \theta_i} = \text{sign}(\theta_i) = \begin{cases} 1 & \text{if } \theta_i > 0 \\ -1 & \text{if } \theta_i < 0 \\ [-1, 1] & \text{if } \theta_i = 0 \end{cases}$$
L1正则化的优势:
- 自动特征选择,简化模型
- 提高模型可解释性
- 减少存储和计算需求
L1正则化的劣势:
- 在特征高度相关时可能随机选择其中一个
- 优化相对困难
1.3 L2正则化(Ridge回归)
L2正则化,也称为权重衰减(Weight Decay)或Ridge回归,通过在损失函数中添加参数平方和作为惩罚项:
$$\Omega(\theta) = ||\theta||_2^2 = \sum_{i} \theta_i^2$$
完整的损失函数为:
$$\tilde{J}(\theta) = J(\theta) + \lambda \sum_{i} \theta_i^2$$
L2正则化的特点:
1. 权重衰减:L2正则化倾向于使所有参数均匀变小,但不会将任何参数压缩到精确的零。这种“收缩”效应使权重向零点移动,因此称为权重衰减。
2. 几何解释:在二维参数空间中,L2正则化的约束区域是一个圆形。最优解通常出现在圆的边界上,但很少恰好在坐标轴上。
3. 可导性:平方函数处处可导,优化相对简单。梯度为:
$$\frac{\partial \tilde{J}}{\partial \theta_i} = \frac{\partial J}{\partial \theta_i} + 2\lambda \theta_i$$
4. 闭式解:对于线性回归,L2正则化存在解析解:
$$\theta = (X^T X + \lambda I)^{-1} X^T y$$
L2正则化的优势:
- 计算简单,处处可导
- 处理多重共线性效果好
- 数值稳定性强
L2正则化的劣势:
- 不产生稀疏解
- 无法进行特征选择
1.4 L1与L2的比较
| 特性 | L1正则化 | L2正则化 |
| 惩罚项 | $\sum |\theta_i|$ | $\sum \theta_i^2$ |
| 解的稀疏性 | 稀疏(产生零值) | 非稀疏(均匀收缩) |
| 特征选择 | 自动选择 | 不能选择 |
| 计算难度 | 较难(不可导点) | 简单(处处可导) |
| 多重解 | 可能 | 唯一(严格凸) |
| 几何形状 | 菱形 | 圆形 |
弹性网络(Elastic Net):结合L1和L2的优点: $$\tilde{J}(\theta) = J(\theta) + \lambda_1 \sum_i |\theta_i| + \lambda_2 \sum_i \theta_i^2$$
1.5 Dropout正则化
Dropout是由Hinton等人于2012年提出的一种随机正则化技术,通过在训练过程中随机“丢弃”(置零)一部分神经元及其连接来防止过拟合。
工作原理:
1. 训练阶段:在每个训练批次中,以概率$p$(保留概率)随机保留每个神经元,以概率$1-p$将其输出置零。
2. 缩放因子:保留的神经元的输出需要乘以$1/p$进行缩放,以确保期望输出保持不变。
3. 测试阶段:使用所有神经元,不再进行Dropout操作。
数学表述:
设$r$是掩码向量,每个元素服从伯努利分布: $$r_j \sim \text{Bernoulli}(p)$$
Dropout后的输出: $$\tilde{x} = r \odot x$$
其中$\odot$表示逐元素乘法。
Dropout的变体:
1. Inverted Dropout:在训练时进行缩放,测试时无需调整。
2. Spatial Dropout:在卷积神经网络中,对整个特征图进行Dropout。
3. DropConnect:随机丢弃权重连接而非神经元。
4. Monte Carlo Dropout:在测试时也使用Dropout,用于不确定性估计。
为什么Dropout有效:
1. 集成学习解释:每次Dropout相当于训练一个不同的子网络,最终模型是这些子网络的平均。
2. 破坏共适应:防止神经元之间形成复杂的共适应关系,迫使每个神经元学习更鲁棒的特征。
3. 添加噪声:相当于给输入和隐藏层添加噪声,增强泛化能力。
Dropout的最佳实践: - 输入层:保留概率0.8 - 隐藏层:保留概率0.5 - 通常与其他正则化技术结合使用
1.6 早停法(Early Stopping)
早停法是一种简单有效的正则化策略,通过监控验证集性能来决定何时停止训练。
基本流程:
1. 将数据分为训练集、验证集和测试集 2. 在每个训练周期(epoch)结束时,在验证集上评估模型性能 3. 记录验证集上的最佳性能 4. 当验证集性能在连续多个周期内不再提升时,停止训练 5. 恢复验证集性能最佳时的模型参数
早停法的数学解释:
早停法实际上限制了优化过程的迭代次数,等价于在参数空间中对参数的$L_2$范数进行约束。研究表明,早停法与L2正则化在特定条件下是等价的。
patience参数: - 定义在验证集性能不再提升后等待的周期数 - 较大的patience可能导致过拟合 - 较小的patience可能导致欠拟合
早停法的优势: - 实现简单,计算开销小 - 自动确定训练迭代次数 - 有效防止过拟合
1.7 数据增强(Data Augmentation)
数据增强通过对训练数据进行变换来扩充数据集,是最直接的正则化方法之一。
图像数据增强:
1. 几何变换:
- 翻转(水平/垂直)
- 旋转
- 平移
- 缩放
- 裁剪
- 剪切
2. 颜色变换:
- 亮度调整
- 对比度调整
- 饱和度调整
- 色调调整
3. 噪声添加:
- 高斯噪声
- 椒盐噪声
4. 高级技术:
- Mixup:将两张图片按比例混合
- Cutout:随机遮挡图像区域
- AutoAugment:自动学习最优增强策略
文本数据增强: - 同义词替换 - 随机插入/删除/交换 - 回译(Back-translation)
音频数据增强: - 时间拉伸/压缩 - 音调变换 - 添加背景噪声
数据增强的理论基础:
数据增强引入了一种隐式的先验知识,即数据在某些变换下应该具有不变性。这相当于在损失函数中添加了一个正则化项,惩罚模型对这些变换的敏感性。
1.8 批归一化(Batch Normalization)
虽然批归一化主要用于解决内部协变量偏移问题,但它也具有一定的正则化效果。
工作原理:
对于小批量数据$B = \{x_1, ..., x_m\}$:
1. 计算均值和方差:
$$\mu_B = \frac{1}{m} \sum_{i=1}^m x_i$$
$$\sigma_B^2 = \frac{1}{m} \sum_{i=1}^m (x_i - \mu_B)^2$$
2. 标准化:
$$\hat{x}_i = \frac{x_i - \mu_B}{\sqrt{\sigma_B^2 + \epsilon}}$$
3. 缩放和平移:
$$y_i = \gamma \hat{x}_i + \beta$$
正则化效果:
1. 添加噪声:小批量统计量(均值、方差)的随机性引入了噪声,类似于Dropout的效果。
2. 平滑损失曲面:使优化 landscape 更平滑,允许使用更大的学习率。
3. 减少对初始化的敏感性:允许网络更快收敛。
1.9 其他正则化技术
1.9.1 权重约束(Weight Constraints)
直接限制权重的范数,而非通过惩罚项: - 最大范数约束(Max-norm):$||\theta||_2 \leq c$ - L1范数约束:$||\theta||_1 \leq c$
1.9.2 标签平滑(Label Smoothing)
将硬标签(one-hot)替换为软标签: $$y_{smooth} = (1 - \epsilon) y_{hard} + \epsilon / K$$
其中$K$是类别数,$\epsilon$是平滑参数(通常0.1)。
1.9.3 随机深度(Stochastic Depth)
在残差网络中,随机丢弃整个残差块。
1.9.4 DropBlock
在卷积网络中,连续丢弃特征图的区域块而非单个单元。
1.9.5 谱归一化(Spectral Normalization)
限制权重矩阵的谱范数,常用于生成对抗网络(GAN)。
1.10 正则化的选择与组合
选择原则:
1. 模型大小:小模型可能不需要强正则化,大模型需要更强的正则化。
2. 数据量:数据充足时可减少正则化,数据稀缺时增加正则化。
3. 任务特性:不同任务对正则化的敏感度不同。
常见组合策略:
1. 基础组合:L2 + Dropout + Early Stopping 2. 图像任务:Data Augmentation + Dropout + Batch Norm 3. 小数据集:Strong Data Augmentation + Dropout + L2 4. 大模型:Dropout + Label Smoothing + Various Augmentations
2. 例题分析
例题1:L1与L2正则化的几何解释
题目:考虑一个简单的线性回归问题,参数$\theta = [\theta_1, \theta_2]^T$。原始损失函数的等高线为椭圆形。请从几何角度解释为什么L1正则化产生稀疏解而L2正则化不产生。
分析过程:
首先,我们需要理解正则化的几何意义。正则化项定义了参数空间中的一个约束区域,优化问题等价于在原始损失函数的等高线与约束区域的交界处寻找最优解。
对于L1正则化,约束区域为: $$|\theta_1| + |\theta_2| \leq C$$
这在二维平面上形成一个菱形(菱形区域),顶点位于$(C, 0)$、$(-C, 0)$、$(0, C)$、$(0, -C)$。
对于L2正则化,约束区域为: $$\theta_1^2 + \theta_2^2 \leq C^2$$
这在二维平面上形成一个圆形。
现在考虑原始损失函数的等高线。由于数据通常包含噪声,损失函数的等高线往往不会与坐标轴对齐。
对于L1正则化,最优解往往出现在菱形的顶点处。这些顶点恰好位于坐标轴上,意味着其中一个参数为零。这是因为: 1. 菱形的“尖角”更容易与椭圆形的等高线相切 2. 在相同周长下,菱形包含的区域比圆形“更分散”到坐标轴方向
对于L2正则化,圆形边界是光滑的。除非原始最优解恰好位于坐标轴上(概率为零),否则最优解不会出现在坐标轴上。因此,L2正则化不会产生精确的零参数。
结论:L1正则化的菱形约束区域具有“尖角”特性,使得最优解更可能出现在坐标轴上,从而产生稀疏解。L2正则化的圆形约束区域光滑对称,不会产生稀疏解。
例题2:Dropout的概率选择
题目:在一个三层神经网络中,输入层有100个神经元,两个隐藏层各有50个神经元,输出层有10个神经元。请分析: (1) 为什么通常对隐藏层使用$p=0.5$的Dropout? (2) 如果输入层使用$p=0.5$,会有什么影响? (3) 如何确定最优的Dropout概率?
分析过程:
(1) 隐藏层Dropout概率选择:
$p=0.5$是经验上的折中选择: - 如果$p$太大(如0.9):保留太多神经元,正则化效果弱 - 如果$p$太小(如0.1):保留太少神经元,模型可能欠拟合,且训练信息损失过大 - $p=0.5$提供了良好的平衡:每次训练约一半子网络,同时保证足够的信息传递
数学上,对于$n$个神经元的层,可能的子网络数量为$2^n$。当$p=0.5$时,期望子网络大小为$n/2$,这是指数级多样性的良好折中。
(2) 输入层Dropout的影响:
输入层Dropout直接丢弃原始特征: - 如果$p=0.5$,意味着50%的特征信息被丢弃 - 这可能导致严重的信息损失,使模型难以学习 - 通常输入层使用更高的保留概率($p=0.8$),丢弃20%特征 - 对于图像等高冗余数据,可以使用较强的输入层Dropout
(3) 确定最优Dropout概率:
方法包括: - 网格搜索:在验证集上尝试不同概率组合 - 贝叶斯优化:高效搜索超参数空间 - 自适应Dropout:根据层的重要性动态调整 - 交叉验证:使用k-fold交叉验证选择
一般原则: - 更深的层可以使用更低的保留概率 - 更宽的层可以使用更低的保留概率 - 数据量小→降低Dropout强度 - 数据量大→可以增加Dropout强度
例题3:早停法的实现细节
题目:实现早停法时需要考虑哪些关键因素?请详细说明patience参数的选择策略、模型恢复机制以及早停法与其他正则化技术的配合。
分析过程:
关键因素1:验证集划分 - 验证集应足够大以可靠估计泛化性能 - 通常使用10-20%的数据作为验证集 - 对于小数据集,使用交叉验证
关键因素2:监控指标选择 - 分类任务:验证准确率或验证损失 - 回归任务:验证MSE或MAE - 注意:训练损失持续下降时,验证损失可能已经开始上升
关键因素3:Patience参数
Patience定义了性能不提升时等待的周期数: - 小patience(5-10):
- 优点:快速停止,节省计算资源
- 缺点:可能因验证波动过早停止
- 大patience(20-50):
- 优点:容忍验证波动,捕获长期趋势
- 缺点:可能过拟合,浪费计算资源
- 自适应patience:
- 初期使用小patience快速收敛
- 后期使用大patience精细调整
关键因素4:模型恢复机制
实现方式: ``` 1. 保存验证性能最佳时的模型状态 2. 包括权重、优化器状态、轮次等 3. 停止训练后恢复最佳状态 4. 避免使用最终(可能过拟合)的模型 ```
关键因素5:与其他正则化的配合
早停法与其他技术的交互: - 与L2正则化:两者都限制模型复杂度,可能产生叠加效果 - 与Dropout:早停法可补偿Dropout的训练-测试差异 - 与学习率调度:应协调patience与学习率衰减周期 - 与数据增强:数据增强延长训练时间,需要更大的patience
3. 训练题
一、选择题
1. 下列哪种正则化方法会产生稀疏参数解?
A. L2正则化 B. Dropout C. L1正则化 D. 早停法
2. 在Dropout中,如果保留概率$p=0.7$,则期望保留的神经元的比例为:
A. 30% B. 70% C. 50% D. 100%
3. L2正则化又称为:
A. Lasso回归 B. Ridge回归 C. Elastic Net D. 稀疏回归
4. 下列哪项不是数据增强的方法?
A. 图像旋转 B. 随机裁剪 C. 增加网络层数 D. 颜色抖动
5. 标签平滑的主要作用是:
A. 加速训练 B. 防止模型过于自信 C. 减少参数量 D. 增加模型容量
二、填空题
6. L1正则化的惩罚项形式为$\lambda \sum_{i} |\theta_i|$,L2正则化的惩罚项形式为$\lambda \sum_{i}$。
7. Dropout在训练阶段需要乘以缩放因子,在测试阶段Dropout操作。
8. 早停法通过监控集的性能来决定停止时机。
9. 弹性网络(Elastic Net)结合了正则化和正则化的优点。
10. 批归一化的三个步骤是:计算均值和方差、、缩放和平移。
三、计算题
11. 给定线性回归模型$y = w_1x_1 + w_2x_2$,损失函数为$J = \frac{1}{2}\sum_{i=1}^n (y_i - \hat{y}_i)^2$。加入L2正则化后,求$w_1$的梯度更新公式。
12. 假设某神经网络层有100个神经元,使用$p=0.5$的Dropout。训练时该层期望有多少个神经元被激活?测试时呢?
13. 设原始损失为$J(\theta)$,加入L1正则化后的损失为$\tilde{J}(\theta) = J(\theta) + 0.01(|\theta_1| + |\theta_2|)$。已知$\theta_1 = 3$,$\theta_2 = -4$,计算正则化项的值。
4. 答案与解析
一、选择题答案:
1. 答案:C
解析:L1正则化由于其绝对值函数的几何特性,会产生稀疏解,许多参数会被压缩到精确的零值。
2. 答案:B
解析:保留概率$p$直接表示期望保留的比例,因此$p=0.7$表示70%的神经元被保留。
3. 答案:B
解析:L2正则化在统计学中称为Ridge回归,L1正则化称为Lasso回归。
4. 答案:C
解析:增加网络层数会增加模型复杂度,不属于正则化或数据增强方法。其他选项都是图像数据增强技术。
5. 答案:B
解析:标签平滑将硬标签替换为软标签,防止模型对预测过于自信,从而提高泛化能力。
二、填空题答案:
6. 答案:$\theta_i^2$
解析:L2正则化使用参数的平方和作为惩罚项。
7. 答案:$1/p$(或$1/0.5=2$);不使用(或停止)
解析:Dropout在训练时需要缩放以保持一致期望值,测试时使用完整网络。
8. 答案:验证(或validation)
解析:早停法通过监控验证集性能来防止过拟合。
9. 答案:L1;L2(或Lasso;Ridge)
解析:弹性网络同时包含L1和L2惩罚项。
10. 答案:标准化(或减去均值除以标准差)
解析:批归一化的核心步骤包括:计算统计量、标准化、学习缩放和平移。
三、计算题答案:
11. 解答:
L2正则化后的损失函数:
$$\tilde{J} = \frac{1}{2}\sum_{i=1}^n (y_i - \hat{y}_i)^2 + \lambda(w_1^2 + w_2^2)$$
对$w_1$求偏导:
$$\frac{\partial \tilde{J}}{\partial w_1} = -\sum_{i=1}^n (y_i - \hat{y}_i)x_{i1} + 2\lambda w_1$$
梯度下降更新:
$$w_1^{new} = w_1^{old} - \eta\left[-\sum_{i=1}^n (y_i - \hat{y}_i)x_{i1} + 2\lambda w_1^{old}\right]$$
$$= w_1^{old}(1 - 2\eta\lambda) + \eta\sum_{i=1}^n (y_i - \hat{y}_i)x_{i1}$$
其中$(1 - 2\eta\lambda)$体现了"权重衰减"的效果。
12. 解答:
训练时:期望激活神经元数 = $100 \times p = 100 \times 0.5 = 50$个 测试时:使用所有神经元,不应用Dropout,因此100个神经元全部激活。 注意:如果使用Inverted Dropout,训练时保留的神经元输出会乘以$1/p=2$,测试时不做处理。
13. 解答:
正则化项 = $0.01(|\theta_1| + |\theta_2|)$ $= 0.01(|3| + |-4|)$ $= 0.01(3 + 4)$ $= 0.01 \times 7$ $= 0.07$ 因此,正则化项的值为0.07。