過学習への対処

PyTorchで学ぶIntroduction to Deep Learning

Jasmin Ludolf

Senior Data Science Content Developer, DataCamp

過学習の原因

  • 過学習: 未知データへ汎化できない
    • 学習データを記憶してしまう
    • 学習では良いが検証では悪い
  • 可能な原因:
問題 解決策
データセットが小さい データを増やす / データ拡張を使う
モデル容量が大きすぎる モデルを小さくする / Dropout を追加
重みが大きすぎる Weight decay
PyTorchで学ぶIntroduction to Deep Learning

過学習への対処

対策:

  • モデルを小さくする、または Dropout 層を追加
  • Weight decay でパラメータを小さく保つ
  • 新しいデータ取得またはデータ拡張
PyTorchで学ぶIntroduction to Deep Learning

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で学ぶIntroduction to Deep Learning

Weight decay による正則化

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

  • オプティマイザの weight_decay で制御。通常は小さく設定(例: 0.0001
  • Weight decay は最適化時に罰則を加え、重みを小さく保つ
  • 過学習を抑え、より良い汎化に寄与
PyTorchで学ぶIntroduction to Deep Learning

データ拡張

データ拡張の例

PyTorchで学ぶIntroduction to Deep Learning

演習に進みましょう!

PyTorchで学ぶIntroduction to Deep Learning

Preparing Video For Download...