用語集 · 機械学習
学習の発散
別名:Training divergence、NaN、collapse、policy collapse、instability、発散、崩壊、方策の崩壊、不安定
学習が改善せずに壊れてしまうこと。損失が爆発する、数値が NaN になる、良かった方策が突然崩壊する、といった形で現れます。
学習が解に近づくのではなく、解から離れていくとき、学習が発散したといいます。強化学習では次のような形で現れます。
- NaN(「非数」):値がオーバーフローしたか、ゼロ除算が起きた状態です。重みが1つでも NaN になると、次の計算ですべての出力に広がり、ネットワークは死んでしまいます。
- 崩壊:うまくいっていた方策(ポリシー)が、多くの場合数回の更新のうちに突然ひどい状態になり、回復しません。
- 飽和:出力が限界に張り付いてしまい、勾配が何の情報も運ばなくなります(行動クリッピングを参照)。
よくある原因
- 学習の現段階に対して大きすぎる学習率。
- 極端な値を持つ報酬や観測。
- 強化学習のフィードバックループ:悪くなった方策は悪いデータを集め、それがさらに方策を悪くします。
- 奇妙な振る舞いが得をする報酬設計(報酬ハッキングを参照)。
防ぎ方
- 更新のたびにチェックする。 損失や重みのどれかが有限でなければ、その更新を捨て、直前の重みに戻します。
- 勾配をクリップする。 1つの変わったバッチで大きく踏み出してしまわないようにします。
- 定期的にチェックポイントを残す。 そうすれば、崩壊しても失うのはラン全体ではなく数分で済みます。
このプロジェクトでは
報酬ハッキングを起こしたラン balance3 は NaN へ発散しました。今ではトレーナーが各更新の前にスナップショットを残し、有限でない数値を含む更新はすべて巻き戻します。ラン survive2 は、行動の平均値が ±1 のクリップをはるかに超える平均17の大きさまでずれて崩壊しました。survive3 から survive6 は、成熟した方策を高すぎる学習率で再開したために崩壊しました。