コンテンツにスキップ

6.7.1 学習 Tips ロードマップ:全部変える前に診断する

学習 Tips は、診断に答えるときだけ役立ちます。optimizer、学習率、モデルサイズ、データを同時に変えないでください。

深層学習 Tips 章関係図

学習診断ダッシュボードマップ

症状最初に確認すること
training loss が高いモデルが小さすぎる、学習率が低い、データ問題
training は良いが validation が悪い過学習、リーク、弱い augmentation
loss が不安定学習率が高い、bad batch、勾配爆発
遅すぎるbatch size、device、モデルサイズ
デプロイには重い圧縮、量子化、枝刈り

training_tips_first_loop.py を作ります。

val_loss = [0.62, 0.51, 0.48, 0.49, 0.53]
best_epoch = min(range(len(val_loss)), key=val_loss.__getitem__) + 1
print("best_epoch:", best_epoch)
print("best_val_loss:", val_loss[best_epoch - 1])
print("action: stop or reduce learning rate if validation keeps worsening")

出力:

best_epoch: 3
best_val_loss: 0.48
action: stop or reduce learning rate if validation keeps worsening

学習 Tips 最初の loss 出力結果図

工夫を足す前に曲線を読みます。単純なログでも、次に試すことが見える場合が多いです。

この小章の終わりには、診断にもとづく意思決定記録を 1 つ残します。

可視症状
曲線や出力は何を示したか?
最初の確認
データ、形状、勾配、または validation split
1つの変更
どの単一設定が変わったか?
前後比較
指標または成果物の比較
判断
維持、調整、ロールバック、または調査する

目的は、学習の変更を戻せる形にすることです。5 つを同時に変えて良くなっても、どれが効いたのかは分かりません。

順番読む練習すること
16.7.2 ハイパーパラメータ調整学習率、batch size、optimizer
26.7.3 学習診断loss 曲線、過学習、不安定さ
36.7.4 モデル圧縮小さく、速く、デプロイしやすいモデル

training/validation 曲線を見て、理由付きで次のアクションを1つ選べれば合格です。

確認の考え方と解説
  1. 合格レベルの答えでは、tensor、model layer、loss、backward()、optimizer update を1つの学習ループとしてつなげます。
  2. 証拠には、動く小さな実験、tensor shape の確認、説明できる loss または validation curve を含めます。
  3. shape mismatch、loss が下がらない、過学習、data leakage、Attention/Transformer の data flow を説明できない、といった失敗例を1つ言えればよいです。