正则化
时间: 2025-04-30 16:28:48 浏览: 30
### 正则化概述
正则化是一种用于防止机器学习模型过拟合的技术,旨在通过控制模型复杂度和限制模型的自由度来提升模型的泛化能力[^3]。不同类型的正则化方法适用于不同的场景,选择何种方式取决于问题特性、数据量以及所使用的模型架构。
#### L1 和 L2 正则化
两种最常见的正则化形式是L1(也称为Lasso)和L2(又名Ridge)。这两种方法都通过对权重施加惩罚以减少其数值大小,进而简化模型并抑制过度拟合倾向:
- **L1 正则化**:该方法会使得部分特征对应的系数变为零,因此具有自动执行特征选择的功能。这有助于创建稀疏解,在高维空间中有助于解释性和性能改进。
```python
l1_lambda = 0.01 # 调整此超参数可改变正则化的强度
def add_l1_regularization(model, loss_fn):
l1_norm = sum(p.abs().sum() for p in model.parameters())
total_loss = loss_fn + l1_lambda * l1_norm
return total_loss
```
- **L2 正则化**:相比之下,L2不会使任何参数完全消失;而是倾向于均匀缩小所有参数值。这种方式能够有效地平滑决策边界,对于连续型变量特别有用。
实验表明,加入L2正则化之后,不仅提高了验证集上的准确性,而且让训练期间的损失函数变化更为稳定,减少了波动幅度[^4]。
```python
from torch import nn
class Net(nn.Module):
def __init__(self):
super().__init__()
self.fc = nn.Linear(in_features=784, out_features=10)
def forward(self, x):
return self.fc(x)
net = Net()
criterion = nn.CrossEntropyLoss()
weight_decay = 0.0005 # 这里设置的是L2正则化的lambda值
optimizer = optim.SGD(net.parameters(), lr=learning_rate, weight_decay=weight_decay)
```
#### 权重衰减与其他策略
除了上述提到的方法外,“权值衰减”也是另一种有效的手段,它实际上就是指L2正则化的一种表述形式。除此之外还有诸如Dropout这样的随机失活机制,以及提前停止训练(Early Stopping),这些都可以作为辅助措施用来对抗过拟合现象[^2]。
随着研究进展和技术革新,未来几年内预计会有更多创新性的正则化方案涌现出来,特别是在处理大规模数据集的情况下,范数正则化的应用将会变得更加普遍且多样化[^1]。
阅读全文
相关推荐

















