用語集 · 機械学習

学習の発散

別名:Training divergence、NaN、collapse、policy collapse、instability、発散、崩壊、方策の崩壊、不安定

学習が改善せずに壊れてしまうこと。損失が爆発する、数値が NaN になる、良かった方策が突然崩壊する、といった形で現れます。

学習が解に近づくのではなく、解から離れていくとき、学習が発散したといいます。強化学習では次のような形で現れます。

  • NaN(「非数」):値がオーバーフローしたか、ゼロ除算が起きた状態です。重みが1つでも NaN になると、次の計算ですべての出力に広がり、ネットワークは死んでしまいます。
  • 崩壊:うまくいっていた方策(ポリシー)が、多くの場合数回の更新のうちに突然ひどい状態になり、回復しません。
  • 飽和:出力が限界に張り付いてしまい、勾配が何の情報も運ばなくなります(行動クリッピングを参照)。

よくある原因

  • 学習の現段階に対して大きすぎる学習率。
  • 極端な値を持つ報酬や観測。
  • 強化学習のフィードバックループ:悪くなった方策は悪いデータを集め、それがさらに方策を悪くします。
  • 奇妙な振る舞いが得をする報酬設計(報酬ハッキングを参照)。

防ぎ方

  • 更新のたびにチェックする。 損失や重みのどれかが有限でなければ、その更新を捨て、直前の重みに戻します。
  • 勾配をクリップする。 1つの変わったバッチで大きく踏み出してしまわないようにします。
  • 定期的にチェックポイントを残す。 そうすれば、崩壊しても失うのはラン全体ではなく数分で済みます。

このプロジェクトでは

報酬ハッキングを起こしたラン balance3 は NaN へ発散しました。今ではトレーナーが各更新の前にスナップショットを残し、有限でない数値を含む更新はすべて巻き戻します。ラン survive2 は、行動の平均値が ±1 のクリップをはるかに超える平均17の大きさまでずれて崩壊しました。survive3 から survive6 は、成熟した方策を高すぎる学習率で再開したために崩壊しました。

関連用語

この用語が出てくる記事

← すべての用語