【PyTorch 新手基础】Regularization -- 减轻过拟合 overfitting
Overfit
过拟合,效果如最右图所示 常见应对方案如下:
增大数据集 入手:More data
or data argumentation
简化模型参数 入手:Constraint model complexity (shallow
model, regularization
) or dropout
dropout: torch.nn.Dropout(0.1)
加一层 dropout 层, 设 dropout_prob = 0.1 注意 1) 区别和 tensorflow 中 tf.nn.dropout(keep_prob)
设置的相反; 2) 只在 train 的时候 dropout,测试的时候要 model.eval() 切换评估模式无 dropout 减少训练时间 入手:early stopping
(用 validation set 做提前的训练终止),是一个 trick
Regularization / weight decay : 使得在保持很好的 performance 的情况下用尽可能小的 weights
L1-regularization:
Loss
+
=
λ
∑
∣
θ
i
∣
\text{Loss} += \lambda\sum|\theta_i|
Loss + = λ ∑ ∣ θ i ∣ L2-regularization:
Loss
+
=
1
2
λ
∑
θ
i
2
\text{Loss} +=\frac{1}{2}\lambda\sum\theta_i^2
Loss + = 2 1 λ ∑ θ i 2 ,最常用,代码具体实现:给优化器 optimizer
设置 weight decay
=
λ
\lambda
λ : 如 optim.SGD(net.parameters(), lr=learning_rate, weight_decay=0.01)
注:如果没有 overfitting 但是设置了 weight decay
可能会导致性能下降,要先判断清楚是否要使用
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1819988.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!