對抗過度擬合

使用 PyTorch 的深度學習入門

Jasmin Ludolf

Senior Data Science Content Developer, DataCamp

過度擬合的原因

  • 過度擬合:模型無法泛化到未見資料
    • 模型記住訓練資料
    • 訓練表現好,但在驗證表現差
  • 可能原因:
問題 解法
資料集不夠大 取得更多資料/做資料增強
模型容量過大 縮小模型/加入 dropout
權重過大 使用 weight decay
使用 PyTorch 的深度學習入門

對抗過度擬合

策略:

  • 縮小模型或加入 dropout 層
  • 使用 weight decay 讓參數維持較小
  • 取得新資料或做資料增強
使用 PyTorch 的深度學習入門

使用 dropout 層的「正規化」

  • 訓練過程隨機將輸入張量的部分元素設為 0
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 的深度學習入門

使用 weight decay 正規化

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

  • 由最佳化器的 weight_decay 參數控制,通常設為小值(如 0.0001
  • Weight decay 透過在最佳化時加入懲罰,鼓勵較小的權重
  • 有助減少過度擬合,讓權重更小並提升泛化能力
使用 PyTorch 的深度學習入門

資料增強

資料增強範例

使用 PyTorch 的深度學習入門

一起來練習吧!

使用 PyTorch 的深度學習入門

Preparing Video For Download...