对抗过拟合

使用 PyTorch 的深度学习入门

Jasmin Ludolf

Senior Data Science Content Developer, DataCamp

过拟合的原因

  • 过拟合: 模型无法泛化到未见数据
    • 模型记住了训练数据
    • 训练集表现好,但在验证集表现差
  • 可能原因:
问题 解决方案
数据集不够大 获取更多数据 / 使用数据增强
模型容量过大 减小模型 / 添加 dropout
权重过大 使用权重衰减
使用 PyTorch 的深度学习入门

对抗过拟合

策略:

  • 减小模型或添加 dropout 层
  • 使用权重衰减,促使参数更小
  • 获取新数据或做数据增强
使用 PyTorch 的深度学习入门

用 dropout 层进行"正则化"

  • 训练期间随机将输入张量的部分元素置零
model = nn.Sequential(nn.Linear(8, 4),
                      nn.ReLU(),
                      nn.Dropout(p=0.5))
features = torch.randn((1, 8))
print(model(features))
tensor([[1.4655, 0.0000, 0.0000, 0.8456]], grad_fn=<MulBackward0>)
  • Dropout 放在激活函数之后
  • 训练与评估时行为不同——训练用 model.train(),评估用 model.eval() 以关闭 dropout
使用 PyTorch 的深度学习入门

使用权重衰减进行正则化

optimizer = optim.SGD(model.parameters(), lr=0.001, weight_decay=0.0001)

  • 由优化器的 weight_decay 参数控制,通常为较小值(如 0.0001
  • 权重衰减在优化中加入惩罚,鼓励更小的权重
  • 有助于减轻过拟合,保持小权重并提升泛化
使用 PyTorch 的深度学习入门

数据增强

数据增强示例

使用 PyTorch 的深度学习入门

Passons à la pratique !

使用 PyTorch 的深度学习入门

Preparing Video For Download...