正则化(Regularization)是机器学习和深度学习中一种防止模型过拟合的重要技术。它通过在训练时添加限制,避免模型过于复杂,从而提升模型对未见数据的泛化能力。
L1 和 L2 正则化是常用的正则化技术,通过对模型参数施加约束,防止过拟合,提高模型的泛化能力。它们通过在损失函数中添加惩罚项,限制模型参数的大小。
L1 正则化在损失函数中添加所有参数的绝对值之和,公式如下:
L1 正则化在梯度下降中会产生一种稀疏效应,导致某些参数被直接更新为 0,从而进行特征选择。
更新公式:
L2 正则化在损失函数中添加所有参数的平方和的一半,公式如下:
L2 正则化会使权重逐渐减小,但通常不会变为 0。
更新公式:
限制权重大小:
简化模型:
惩罚复杂解:
在深度学习框架中,L1 正则化通常需要自定义:
import torch
# 自定义 L1 正则化
def l1_regularization(model, lambda_l1):
l1_loss = 0
for param in model.parameters():
l1_loss += torch.sum(torch.abs(param))
return lambda_l1 * l1_loss
L2 正则化(Weight Decay)通常由优化器直接支持:
from transformers import AdamW
optimizer = AdamW(model.parameters(), lr=5e-5, weight_decay=0.01) # 直接加入 L2 正则化
网络权重:
模型结构:
数据层面:
在 Hugging Face 的 Trainer
和 TrainingArguments
中,常见的正则化方法包括:
Weight Decay(L2 正则化):
weight_decay
参数控制。training_args = TrainingArguments(
weight_decay=0.01, # L2 正则化强度
)
Dropout:
config
中设置:from transformers import AutoConfig
config = AutoConfig.from_pretrained("bert-base-uncased")
config.hidden_dropout_prob = 0.1
config.attention_probs_dropout_prob = 0.1
Early Stopping:
Trainer
的 EarlyStoppingCallback
:from transformers import TrainerCallback
early_stopping = TrainerCallback(
early_stopping_patience=3, # 如果验证集指标连续3次不提升,停止训练
)
Learning Rate Scheduler(间接作用):
不要过度正则化:
正则化参数需要调优:
weight_decay
和 dropout
的强度需要通过验证集性能调整。结合模型和任务选择正则化方法: