経験再生とは
経験再生(Experience Replay)とは、エージェントが環境と相互作用して得た経験(状態、行動、報酬、次状態のタプル)をバッファに蓄積し、学習時にランダムにサンプリングして再利用する手法です。DQNの成功の鍵となった技術の一つであり、オフポリシー型の深層強化学習で広く使われています。
| ひとことで言うと | 過去の経験を貯めておき、ランダムに取り出して学習に使い回す仕組み。 |
|---|---|
| なぜ必要か | 連続した経験は似すぎていて、そのまま学習すると偏ってしまうため。 |
| 注意点 | バッファが小さいと古い経験が消えすぎ、大きいと古い方策の経験が混ざる。 |
なぜ経験再生が必要か
強化学習で得られるデータには2つの問題があります。第一に、連続するデータは時間的に相関が強く、これをそのまま学習に使うとニューラルネットワークの学習が不安定になります。第二に、得られたデータを一度使って捨てるのはサンプル効率が悪いです。経験再生はランダムサンプリングにより相関を解消し、データの再利用によりサンプル効率を向上させます。
1行動して経験を得る状態・行動・報酬・次状態
▶
2バッファに保存数万〜百万件を蓄積
▶
3ランダムに取り出す時間の相関を断つ
▶
4まとめて学習ミニバッチで更新
▶
5データを再利用同じ経験を何度も活用
リプレイバッファ
経験はリプレイバッファ(Replay Buffer)と呼ばれるFIFO型のメモリに保存されます。通常100万ステップ分程度のデータを保持し、新しい経験が追加されると古い経験が削除されます。学習時にはバッファからミニバッチ分のデータをランダムにサンプリングして勾配更新を行います。
経験再生の制限
経験再生はオフポリシー手法でのみ使用可能です。オンポリシー手法(A2C、PPOなど)では過去の方策で収集したデータをそのまま使えないため、経験再生は適用できません。