正则化的参数范数惩罚(Parameter Norm Penalties for Regularization)
Regularization with Parameter Norm Penalties
—— 限制模型参数的大小,缓解过拟合问题的经典方法。
1. 背景与来源
正则化(Regularization)最早源于统计学和机器学习的研究,用于解决模型的过拟合(Overfitting)问题。过拟合是指模型在训练集上表现很好,但在测试集上效果很差,泛化能力弱。
最经典的参考文献:
-
Tikhonov Regularization(1943年) —— 最早的思想雏形
-
Ridge Regression(Hoerl & Kennard, 1970) —— L2 正则化
-
Lasso Regression(Tibshirani, 1996) —— L1 正则化
-
Deep Learning Book (Ian Goodfellow, 2016) —— 深度学习中的系统总结
2. 正则化的思想核心
核心思想:
在原始损失函数 Loss 的基础上,添加一项额外的惩罚(penalty),防止参数(weights)过大,从而控制模型复杂度,提升泛化能力。
数学表达式:
其中:
符号 | 含义 |
---|---|
Loss | 原始损失(如 MSE,交叉熵) |
λ | 正则化强度(超参数,需调优) |
Ω(θ) | 参数范数惩罚项 |
θ | 模型参数(权重) |
3. 常见的参数范数(Parameter Norm)
L2 范数(Ridge Regularization / Weight Decay)
特性:
-
惩罚参数平方
-
导致权重趋向较小但不会完全为零
-
平滑模型
L1 范数(Lasso Regularization)
特性:
-
惩罚绝对值
-
导致部分权重收缩为 0
-
具有特征选择功能(稀疏)
4. 为什么能缓解过拟合?
原因 | 解释 |
---|---|
限制参数大小 | 防止模型对训练集数据的极端拟合 |
降低复杂度 | 减少自由度,降低方差 |
提升泛化能力 | 在未知数据上效果更稳健 |
5. 程序代码示例(以 L2 正则化为例)
PyTorch 示例
import torch
import torch.nn as nn
import torch.optim as optim
# 简单模型
model = nn.Linear(10, 1)
# L2 正则化的 lambda
lambda_l2 = 0.01
# 定义优化器时加 weight_decay = lambda_l2 即为 L2 正则化
optimizer = optim.SGD(model.parameters(), lr=0.1, weight_decay=lambda_l2)
criterion = nn.MSELoss()
# 训练步骤
for data, target in dataloader:
optimizer.zero_grad()
output = model(data)
loss = criterion(output, target)
loss.backward()
optimizer.step()
TensorFlow 示例
from tensorflow.keras import regularizers, layers, models
model = models.Sequential([
layers.Dense(64, input_shape=(10,),
kernel_regularizer=regularizers.l2(0.01)),
layers.Dense(1)
])
model.compile(optimizer='adam', loss='mse')
6. 举例说明效果
模型 | 是否正则化 | 训练误差 | 测试误差 |
---|---|---|---|
无正则化 | 否 | 0.01 | 0.5 |
L2 正则化 | 是 | 0.02 | 0.05 |
→ 可以看到,正则化牺牲了部分训练精度,换来了更好的测试集表现。
7. 不同范数的对比
正则化类型 | 数学表达式 | 效果 | 场景 |
---|---|---|---|
L2 范数(Ridge) | 平均压缩参数,减少复杂度 | 特征多且均重要时 | |
L1 范数(Lasso) | 稀疏性正则化 | ||
Elastic Net | L1+L2组合 | 兼顾两者 | 稀疏又平滑 |
8. 总结
优势 | 劣势 |
---|---|
缓解过拟合 | 需要调参 |
提升泛化 | lambda 取值敏感 |
可与其他技术结合 | 不适用于所有模型 |
9. 拓展阅读
-
Deep Learning Book - Ian Goodfellow, Chapter 7
-
Machine Learning Yearning - Andrew Ng
-
Hands-On Machine Learning - Aurélien Géron
-
PyTorch 官方文档(weight_decay 参数)
-
TensorFlow 官方文档(regularizers)