【強化学習】Experience Replay の研究の傾向とその考察
この記事は強化学習 Advent Calendar 2021の12/11の記事です。
0. はじめに
強化学習は(一般的には)学習に必要なデータをプログラム自身が能動的に探索する必要があります。そのため、深層学習のネットワークの大きさや形状だけでなく、探索・学習の方法などロジック全体が重要です。気をつけるべき点や工夫できる点が多岐に渡るため、非常に難しいと同時にとてもおもしろいろ感じています。
この記事では、私が興味を持ってライブラリを開発したり、定期的に(?)記事を書いたりしているExperience Replay (経験再生) について、個人的に感じている近年の研究のポイントについて書こうと思います。
1. Experience Replay研究の着目点
強化学習(のoff-policyな手法)では、遷移 (一般には
2016年のT. Schaul等のPrioritized Exprerience Replay (PER)[2]を始めとして、様々なExperience Replay拡張が提案されてきていますが、着目している課題及び改良点は大きく分けて2点存在していると私は考えています。
- 最適方策への収束性 (= 最終精度・バイアス)
- 収束速度 (= 学習ステップ数・バリアンス)
2. 最適方策への収束性
2.1 概要
深層強化学習では、最適方策への収束が保証されていないので、いくら学習しても最適方策に到達しない、更にひどい時には学習を続けると精度が降下して学習に失敗することが起こりえます。
特に、「関数近似」・「Bootstrap」・「Off Policy (=現在の方策と行動方策の乖離)」の3要素が揃うことをDeadly Triad[3]と呼び、(深層)強化学習が失敗しやすくなる要因として挙げられています。
Deadly Triadの一言で片付けるのも味気ないので、もう少し深堀りしようと思います。
テーブル形式のQ学習においては、次の式のようにTD誤差を利用してQ値を更新できますが、すべての
一方で、関数近似(特に2015年のDQN以降の深層Q学習)では次の式のとおりTD誤差を最小化するようにネットワークを学習させます。これは上のテーブル形式のアナロジーではありますが、根本的に異なるアルゴリズムであり最適方策への収束は理論的には保証されていません。
式を見てもらえばわかるように、これは学習に利用する遷移の(重み付き)データ分布によって収束先が変わってきます。何らかの策を講じないのであれば、Replay Bufferの中にある遷移の分布に対して最適な方策を目指すことになります。
2.2 関連研究
関連する研究をいくつかさらっと要点に絞って紹介します。
ここには書ききれないので、詳細は原論文を確認ください。
また「★」マークのついたアルゴリズムは別途もう少し詳しい紹介記事を書いています。
(1) Combined Experience Replay (CER)
S. Zhang and R. S. Sutton, "A Deeper Look at Experience Replay", NIPS 2017 Deep Reinforcement Learning Symposium (arXiv)
CERでは、Replay BufferからサンプルしたOff Policyな遷移に、今のOn Policyな遷移を1つ加えて、ミニバッチ全体を少しOn Policyに寄せます。
- Replay Bufferから
batch_size -1
個の遷移をサンプル - 行動方策が最後に観測した遷移を1個加えてミニバッチを構成する
(2) Remember and Forget for Experience Replay (ReF-ER) ★
G. Novati and P. Koumoutsakos, “Remember and Forget for Experience Replay”, ICML (2019)(arXiv, code)
ReF-ERでは、現在の方策とあまりに離れている行動方策から取得された遷移の利用を制限することで、サンプル効率を向上させます。
- 重要度(importance)を次のように定義:
ただし、\rho _t = \frac{\pi (a_t\mid s_t)}{\mu_t(a_t\mid s_t)} : 現在の方策、\pi : 行動方策\mu _t -
なら "near-policy"、それ以外なら "far-policy"\frac{1}{c_{\text{max}}} < \rho _t < c_{\text{max}} -
ルール1: far-policy の時、損失のgradientを0にする。
\hat{g}(w) \to 0 -
ルール2: KLダイバージェンスによる正規化項を加える。
\hat{g}^D (w) = \mathbb{E}[\nabla D_{\text{KL}}(\mu _k (\cdot \mid s_k) \| \pi ^w(\cdot \mid s_k))] -
\hat{g}^{\text{ReF-ER}}(w) = \beta \hat{g}(w) + (1-\beta)\hat{g}^D(w) -
は焼きなまし項\beta \beta \gets \begin{cases}(1-\eta)\beta & \text{if}~\frac{n_{\text{far}}}{N} > D \cr (1-\eta)\beta + \eta & \text{otherwise}\end{cases} -
: 学習率、\eta : far-policyの遷移の数、n_{\text{far}} : 全遷移の数、N : ハイパーパラメータD
-
(3) Attentive Experience Replay (AER) ★
P. Sun et al., “Attentive Experience Replay”, AAAI (2020) 34, 5900-5907
AERでは、Replay Bufferから学習に利用するミニバッチの
- ミニバッチのサイズ
のk 倍の\lambda 個の遷移を一様にサンプルするk\times\lambda - (タスク依存の)類似度関数
を用いて、今の状態\mathcal{F} とサンプルしたs_i の類似度を計算し、s_k
類似度の高い 個をミニバッチに採用するk - MuJoCoには、コサイン類似度:
\mathcal{F}(s_i,s_k) = \frac{s_i \cdot s_k}{|s_i||s_k|} - Atari 2600には、512次元の埋め込み特徴量の差:
\mathcal{F}(s_i,s_k) = - |\phi (s_i) - \phi (s_k)|_2
- MuJoCoには、コサイン類似度:
-
は焼きなましパラメータで、\lambda と\lambda _0 \to 1 ステップを利用して徐々に変化\alpha \cdot T -
: ハイパーパラメータ、\alpha < 1 : トータルステップ数T
-
(4) Experience Replay with Likelihood-free Importance Weights (LFIW)
S. Sinha et al., "Experience Replay with Likelihood-free Importance Weights", (2021)[5] (arXiv)
LFIWでは、追加のネットワークを利用してReplay Bufferの中の遷移と現在方策との分布の変化を推定することでOff Policyの補正を行う手法です。
- On Policyの遷移分布を近似するために、補助的な2個目の小さなReplay Bufferを用意する。(Fast Replay Bufferと呼ぶ)
- 定理
を利用する。D(P\|Q) \geq \mathbb{E}_{P}[f^{\prime}(w(x))]-\mathbb{E}_Q[f^{\ast}(f^{\prime}(w(x)))] -
はD(\cdot\|\cdot) -ダイバージェンス、f はconvex lower-semicontinuous function (日本語訳なんだっけ?)、f は導関数、f^{\prime} は複素共役f^{\ast} - 等号は
のときに成立。w = dP/dQ
-
- ネットワーク
を損失関数w_{\psi}(s,a) を最小化させるように学習させる。L_{w}(\psi)=\mathbb{E}_{\mathcal{D}}[f^{\ast}(f^{\prime}(w_{\psi}(s, a)))]-\mathbb{E}_{\mathcal{D}_f}[f^{\prime}(w_{\psi}(s,a))] -
はReplay Bufferの遷移分布。\mathcal{D} はFast Replay Bufferの遷移分布\mathcal{D}_f -
となるので、Off Policyの補正として用いるw(s,a) \to d^{\mathcal{D}_f}/d^{\mathcal{D}} \sim d^{\pi}/d^{\mathcal{D}}
-
(5) Batch Prioritizing Experience Replay via KL Divergence (KLPER)
D. C. Cicek et al., "Off-Policy Correction for Deep Deterministic Policy Gradient Algorithms via Batch Prioritized Experience Replay", ICTAI (2021) (arXiv)
KLPERは、DDPG や TD3 などの Continuous Action において行動にガウス・ノイズを付加して探索を行う際に利用できる手法です。Replay Bufferからサンプルした遷移の状態(= Observation) に対して現在の方策で行動(= Action) を再計算すると、もしその遷移を生成した方策と今の方策が変化していなければ、サンプルした行動と再計算した行動の差がノイズとして採用したガウス分布に従うことを利用しています。逆に言えば、行動の差が従う分布が元のガウス分布から離れれば離れるほど、方策が変化しているとみなせます。分布を計算するので、遷移単位ではなくミニバッチ単位で取り扱います。
- N個のミニバッチをReplay Bufferから一様分布に従って取り出す
- ミニバッチごとにKLダイバージェンスを計算する
- ミニバッチの行動と最新の方策から計算し直した行動の差分を
とする。\dot{a}_t = \pi_{\text{latest}}(s_t) - a_t - ミニバッチ内で、
の平均・共分散から、仮想的なガウス分布\dot{a}_t を定義する\mathcal{N}(\mu_{\omega}, \Sigma_{\omega}) - KLダイバージェンス
により、ミニバッチと現在の方策との差を定義する。\kappa = D_{\text{KL}}\left( \mathcal{N}(\mu_{\omega}, \Sigma _{\omega})~\middle |~ \mathcal{N}(0, \sigma I)\right)
- ミニバッチの行動と最新の方策から計算し直した行動の差分を
- KL ダイバージェンスが最も小さいミニバッチを選び方策を学習する。
(6) Prioritized Experience Replay with Deep Successor Representation (PER-SR)
Y. Yuan and M. Mattar , "Improving Experience Replay with Successor Representation" (2021), (arXiv)
- 将来その状態にどのくらい訪れるかを表す
を定義し、Successor Representationで学習する。Need(s_i, t) = \mathbb{E}\left[ \sum ^{\infty}_{t=0}\gamma ^t 1[s_t=s_j]~| ~s_0=s_i\right] - PERでサンプルした遷移に対して、Successor RepresentationでNeedを計算し、重みに掛け合わせて学習する
PER-SRのデータの流れ概要図 (原論文より引用)
3. 収束速度
3.1 概要
計算コストと時間に直結するので、少ないステップ数で高い精度に到達できることは重要です。
また、近年のAtariの研究では
3.2 関連研究
(1) Compact Experience Replay (COMPER)
D. E. Neves et al. "Improving Experience Replay through Modeling of Similar Transitions' Sets" (2021)[6] (arXiv, code)
- Transition Memory (TM) と Reduced Transition Memory (RTM)と2つの遷移保存領域を用意する
- TD学習におけるターゲットQ値は、そもそも構造の異なるLSTMネットワークを採用する(COMPERではQLSTMと呼ぶ)
- 類似遷移毎にインデックスを割り当て、TMにインデックス・代表遷移・Q値を保存し、対応する遷移がはいって来るたびにQ値を更新
- TMから取り出した遷移でQLSTMを学習させRTMに保存する
- RTMから遷移を取り出して、メインのネットワークを学習させる。
COMPERのデータの流れ概要図 (原論文より引用)
学習ステップを重ねるごとに性能がどう移り変わっていったのかのグラフがなく最終性能のテーブルだけが示されていますが、ALEを
(2) Large Batch Experience Replay (LaBER)
T. Lahire et al., "Large Batch Experience Replay", CoRR (2021)(arXiv, code)
- ミニバッチの
倍の遷移を一様にReplay Bufferから取り出す。m - 取り出した遷移に対して、Surrogate Priorityを計算する
- Surrogate Priorityに比例した確率でミニバッチをその中からサンプルする
4. その他
4.1 関連研究
上記の2つのポイントに分類しづらかったのですが、Experience Replayの研究として触れておきたかった研究をその他枠として挙げます。
内容としては以下の記事に書いた内容の転載です。(転載元には原論文から引用した図も少しあります。)
(1) Experience Replay Optimzation (ERO) ★
D. Zha et al., “Experience Replay Optimization”, IJCAI (2019) (arXiv)
- Replay Bufferをマスクする確率を別のネットワークのReplay Policy (
)で学習させる手法\phi
(エージェントのPolicyとReplay Policyの両方をそれぞれ学習させる) - 遷移に対してスコア(
)を定義:\boldsymbol{\lambda} \boldsymbol{\lambda} = \lbrace \phi(f_{B_i}\mid \theta ^{\phi}) \mid \mathcal{B}_i \in \mathcal{B} \rbrace \in \mathbb{R}^N
ただし、 :f_{B_i} 番目の遷移の特徴量i - マスク(
)はベルヌーイ分布で作成\boldsymbol{I} \boldsymbol{I}\sim \text{Bernoulli}(\boldsymbol{\lambda}) - マスクが、1となる遷移の中から一様にエージェントの学習用ミニバッチをサンプルする
- サンプルした遷移に対して、新しいスコアを再計算して保存する
- Replay Policyは、replay reward (
: エピソードの累計報酬の増加量)を最大化するように学習させるr^r = r^c _{\pi} - r^c_{\pi ^{\prime}} \nabla _{\theta ^{\phi}}\mathcal{J} \sim \sum _{j:\mathcal{B}_j\in\mathcal{B}}~r^r \nabla _{\theta ^{\phi}} [I_j\log \phi + (1-I_j)\log (1-\phi)]
(2) Neural Experience Replay Sampler (NERS) ★
Y. Oh et. al., “Learning to Sample with Local and Global Contexts in Experience Replay Buffer”, ICLR (2021) (arXiv)
- Replay Bufferからサンプルする確率を別のネットワークNERSで学習する手法
- EROと異なり、PERのpriority (=TD誤差の大きさ)にあたるスコア(
)を予測する\sigma_i
- EROと異なり、PERのpriority (=TD誤差の大きさ)にあたるスコア(
- Actor/Criticの学習に利用したミニバッチの遷移に対して
- スコア(
)をNERSで更新する\sigma _i - インデックス(
)を保存しておく (I )\mathcal{I} = \mathcal{I} \cup I
- スコア(
- エピソード終端で、
から一様にサンプルし(\mathcal{I} )、replay rewardI_{\text{train}} \sim \mathcal{I} を最大化するようにNERSを学習させる (その後r^{\text{re}} に戻す)\mathcal{I} = \empty - 入力は、
D(I_{\text{train}}) = \lbrace s_{\kappa(i)}, a_{\kappa(i)}, r_{\kappa(i)}, s_{\kappa(i)+1},\kappa(i), \delta _{\kappa(i)}, r_{\kappa(i)} +\gamma \max _a Q_{\hat{\theta}}(s_{\kappa(i)},a) \rbrace _{i\in I_{\text{train}}} -
:\kappa(i) 番目の時刻、i : TD誤差、\delta _{\kappa(i)} : 割引率、\gamma : ターゲットネットワークのパラメータ\hat{\theta} \nabla _{\phi}\mathbb{E}_{\text{train}}[r^{\text{re}}] = \mathbb{E}_{I_{\text{train}}}\left [ r^{\text{re}}\sum _{i\in I_{\text{train}}} \nabla _{\phi}\log \sigma _i (D(I_{\text{train}})) \right ]
- 入力は、
- NERSは3種類のネットワーク(
)の組合せf_l, f_g, f_s -
: ローカルネットワーク。遷移ごとに計算f_l -
: グローバルネットワーク。遷移ごとに計算し、ミニバッチで平均するf_g -
: スコアネットワーク。f_s の出力とf_l の出力を結合したものを入力に各遷移のスコア (f_g ) を計算\sigma _i
-
(3) Loss-Adjusted Prioritized Experience Replay (LAP) ★
S. Fujimoto et al., “An Equivalence between Loss Functions and Non-Uniform Sampling in Experience Replay” NeurIPS (2020) (arXiv)
そもそも論として、PERでL2ノルムを損失関数に利用すること自体が、ERにおけるL2ノルムと比較してバイアスが乗るとして、LAPではバイアスを排除するように重要度と損失を調整しています。(もう少し詳細な説明が気になる方は転載元の記事を見てください。)
5. 今回触れなかった研究たち
(他にもあるとは思いますが、ぱっと思いついたものや手元のメモを参考に)
5.1 適格度トレース
Off Policy補正や最適方策への収束性の観点では触れておきたい気もするのですが、私の理解があまり及んでいない事もあって見送りました。
(ある程度の事前知識が必要ですが、) ざっとのイメージや手法の特性比較としてはRetraceの筆頭著者のスライドが分かりやすいのではないでしょうか。
-
R. Munos et al., "Safe and Efficient Off-Policy Reinforcement Learning", NeuraIPS (2016) (arXiv)
- Retrace
- L. Espeholt et al., "IMPALA: Scalable Distributed Deep-RL with Importance Weighted Actor-Learner Architectures", ICML (2018) (arXiv, blog, code)
5.2 Offline RL
同じく、分布補正の観点としては本当は抑えておきたい完全にOfflineの場合の強化学習。
私自身は論文調査すらもなかなかできていないので、有志の方がまとめていらっしゃるレポジトリを紹介しておきます。
5.3 その他
ちょっとおもしろいかもと思いつつも、理解が及ばなかったり納得がいっていなかったりする研究たち
- F. Sovrano et al., "Explanation-Aware Experience Replay in Rule-Dense Environments" (arXiv)
- XAER
- 明確なルールがあるのであれば、複数Replay Bufferを持ってうまく使い分けようの精神 (はず)
-
B. Daley et al., "Stratified Experience Replay: Correcting Multiplicity Bias in Off-Policy Reinforcement Learning", AAMAS (2021) Page 1486 (arXiv)
-
ハッシュ値毎に可変長個の遷移を保存し、(s_t,a_t) で一様サンプル(s_t,a_t) - 分布形状が全く変わるので、あんまり良くないのでは?
-
-
S. Kong et al., "Enhanced Off-Policy Reinforcement Learning With Focused Experience Replay", IEEE Access, vol. 9, pp. 93152--93164 (2021) doi: 10.1109/ACCESS.2021.3085142
- 学習全体で見れば、古い遷移の方が何度もサンプル対象になるため、取り出される確率が高くなるので、新しい遷移を優先度高くサンプルする手法
- 実験結果が誤差にしか見えない
6. おわりに
強化学習におけるExperience Replayのポイントについて、近年の研究を簡単に紹介しながら、個人的に感じていることをまとめました。「ここは違う」とか「ここはもっとこう解釈すべきだ」とかあれば、コメント欄やアンサー記事(?)でレスポンスもらえると嬉しいです。また、趣味でやってるせいか自分で手を動かして実験・検証というところまでなかなか到達せず知識偏重になってしまっているので、実際にやってみた感想なども知りたいなぁと思っています。
強化学習とExperience Replayに興味を持つ人が少しでも増えてくれるといいなと思います。
-
L. Lin, “Self-improving reactive agents based on reinforcement learning, planning and teaching”, Mach. Learn. 8, 293-321 (1992) https://doi.org/10.1007/BF00992699 ↩︎
-
T. Schaul et al., “Prioritized Experience Replay”, ICLR (2016) (arXiv) ↩︎
-
H. Hasselt et al., "Deep Reinforcement Learning and the Deadly Triad", arXiv:1812.02648 (2018) ↩︎
-
H. Hasselt et al., "Deep Reinforcement Learning with Double Q-learning", AAAI (2016) 30(1) (arXiv) ↩︎
-
ブラジルの教皇庁立ミナスジェライス州・カトリック大学(?) (= PUC Minas) の大学院課程での成果とのことですが、査読付き論文やカンファレンスへの投稿は今の所見つけられませんでした。arXivのprepirntが41ページもあるので、学位論文にでもなるのでしょうか。 ↩︎
Discussion