趋近智
当模型过度学习训练数据,捕捉到无法泛化到新数据的噪声和特定模式时,就会发生过拟合。对抗此问题的一个常用方法是正则化,它通过根据模型本身的复杂程度,在模型的损失函数中加入惩罚项。L1 和 L2 正则化是两种广泛运用的技术,它们根据网络权重的量级来惩罚模型复杂度。
核心思想是,权重过大的模型可能对输入特征的微小变化过于敏感,这实质上是在记忆训练数据。通过在损失函数中添加一个随权重大小增加的惩罚项,我们促使优化过程(如梯度下降)找到不仅能最小化原始预测误差,还能使权重保持相对较小的解决办法。
L2 正则化增加一个与权重大小的平方成比例的惩罚项。修改后的损失函数如下所示:
新损失=原始损失+λi∑wi2其中:
工作原理: L2 惩罚项 λ∑wi2 抑制单个权重过大。在反向传播过程中,每个权重 wi 的梯度计算将包含一个与 wi 本身成比例的额外项(2λwi)。这意味着在梯度下降的权重更新步骤中(wi←wi−学习率×梯度),会有一个额外的作用将权重拉向零。这种作用就是 L2 正则化常被称为权重衰减的原因。
作用:
λ 的作用: 超参数 λ 控制着最小化原始损失(使数据拟合良好)与最小化权重大小(保持模型简洁)之间的平衡。
选择 λ 的合适值通常需要通过实验和交叉验证等方法来确定。
L2 正则化倾向于使权重比未正则化的模型更接近零。
L1 正则化增加一个与权重绝对值成比例的惩罚项:
新损失=原始损失+λi∑∣wi∣其中:
工作原理: L1 惩罚项 λ∑∣wi∣ 同样抑制权重过大。然而,L1 项的梯度贡献与权重的符号成比例(λ×sign(wi)),假设 wi=0。这意味着在优化过程中,每个权重都会被一个恒定量(由 λ 和学习率决定)推向零,而不管其当前的大小(这与 L2 不同,L2 中推动力会随着权重接近零而减小)。
作用:
L1(菱形)和 L2(圆形)约束区域的形状。优化会在损失函数等高线与约束条件相切的点。L1 的尖角使得沿坐标轴(其中一个权重为零)的交点更有可能出现。
λ 的作用: 与 L2 类似,L1 中的 λ 控制着正则化的强度。更大的 λ 会导致更多权重趋于零,从而得到一个更稀疏的模型。
在某些情况下,会使用 Elastic Net 正则化,它结合了 L1 和 L2 惩罚项,以获取两种方法的优点。
大多数深度学习框架使得添加 L1 或 L2 正则化非常直接。对于 L2(权重衰减),它通常是优化器中的一个简单参数:
# 在 PyTorch 中使用 AdamW 优化器进行 L2 正则化(权重衰减)的示例
import torch
import torch.optim as optim
# 假设 'model' 是你定义的神经网络
# learning_rate = 1e-3
# regularization_strength = 1e-4 # 这是 L2 的 lambda 值
# AdamW 优化器直接包含权重衰减
optimizer = optim.AdamW(model.parameters(), lr=1e-3, weight_decay=1e-4)
# --- 训练循环将在这里 ---
# loss.backward()
# optimizer.step()
# ...
对于 L1,或者有时为了更精细地控制 L2,你可以在调用 loss.backward() 之前将惩罚项直接添加到你计算的损失中。
L1 和 L2 等正则化技术是避免过拟合的重要工具。通过在损失函数中增加一个基于权重大小的惩罚项,它们促使模型更简洁,这类模型通常能更好地泛化到未见数据。请记住,正则化强度 λ 是一个超参数,通常需要调整才能获得最佳性能。
这部分内容有帮助吗?
© 2026 ApX Machine Learning用心打造