📜

【論文調査】Experience Replay関連の論文6本

2021/02/12に公開

0. はじめに

強化学習用Experience Replayライブラリcpprbの次なる開発に向けて論文調査をし、自分のブログに調査スライドを公開したので、その紹介記事です。

サイトにスライドを埋め込んで公開する方法については別途記事として 準備中です。 (追記2/13)公開しました。
https://zenn.dev/ymd_h/articles/28a1a9ff486051

off-policy の強化学習では、探索によって得られた遷移を一旦保存しておいて、シャッフルしてから学習に利用する Experience Replay が広く利用されています。

Experience Replayの有名な拡張として、保存した遷移をTD誤差の大きさに応じてサンプルする Prioritized Experience Replay (PER) があります。

https://qiita.com/keisuke-nakata/items/67fc9aa18227faf621a5
https://qiita.com/ymd_h/items/505c607c40cf3e42d080

PERの後にも、サンプリング効率の向上のために様々な手法が提案されており、それを調査して概要をまとめました。詳しい内容については原論文を参照ください。

1. Competitive Experience Replay (CER)

H. Liu et. al., “Competitive Experience Replay”, ICLR (2019) (arXiv)

  • 「ロボットアームを特定の位置にあるタスクを行う」など、ゴールが設定されていてかつ報酬が疎な状況で効率的に探索する手法
  • 2つのエージェント \pi _A\pi _B を同時に学習 (GANみたいに競わせる)
  • 学習時には、ランダムに保存されているエピソードを選択し、それぞれのエピソードからランダムに遷移を選びミニバッチを作成
  • エージェント \pi _A はエージェント \pi _B が探索していない状態を探すように、
    エージェント \pi _B はエージェント \pi _A が探索した状態に到達するように、
    ミニバッチ内の報酬を(非対称に)増減
    • r^i _A \gets r^i _A -1, if {}^{\exists}j, |s^i _A - s^j _B| < \delta
    • r^j _B \gets r^j _B +N: N|s^i _A - s^j _B| < \delta を満たす s^i _A の数
  • エージェント\pi _B の初期化方法は2パターン
    • independent-CER: タスクの初期分布どおりに初期化する (s^0 _B \sim p(s^0))
    • interect-CER: エージェント\pi _A の状態からランダムサンプルする (s^0 _B \sim p(s^i _A))
  • Hindsight Experience Replay (HER)と組み合わせることで、性能向上が見られる


原論文より引用

2. Remember and Forget for Experience Replay (ReF-ER)

G. Novati and P. Koumoutsakos, “Remember and Forget for Experience Replay”, ICML (2019) (arXiv, code)

  • 現在の方策とあまりに離れている行動方策から取得された遷移の利用を制限することで、サンプル効率を向上させる手法
  • 重要度(importance)を次のように定義: \rho _t = \frac{\pi (a_t\mid s_t)}{\mu_t(a_t\mid s_t)} ただし、\pi: 現在の方策、\mu _t: 行動方策
  • \frac{1}{c_{\text{max}}} < \rho _t < c_{\text{max}} なら "near-policy"、それ以外なら "far-policy"
  • ルール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: 学習率、 n_{\text{far}}: far-policyの遷移の数、N: 全遷移の数、D: ハイパーパラメータ


原論文からの引用。ReF-ER-1: ルール1のみ適用。ReF-ER-2: ルール2のみ適用。ReF-ER: ルール1&2の両方を適用

3. Experience Replay Optimization (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)]


原論文より引用

4. Attentive Experience Replay (AER)

P. Sun et. al., “Attentive Experience Replay”, AAAI (2020) 34, 5900-5907

  • 状態の類似度を計算し、類似度の高い状態をエージェントのpolicyの学習に利用する手法
  • ミニバッチのサイズ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
  • \lambda は焼きなましパラメータで、\lambda _0 \to 1\alpha \cdot T ステップを利用して徐々に変化
    • \alpha < 1: ハイパーパラメータ、T: トータルステップ数


原論文より引用

5. Dynamic Experience Replay (DER)

J. Luo and H. Li, “Dynamic Experience Replay”, CoRL (2020) (arXiv)

  • ロボットコントロール等のタスクにおいて、人間が作成したデモンストレーションだけではなく、タスクを成功したエピソードもデモンストレーションの一部として採用する手法
  • デモンストレーション用に特別な領域を持つ複数のReplay Bufferを用意 \lbrace B_1,\dots, B_n \rbrace
  • Workerは、探索した遷移を無作為に選んだ B_i に保存し、タスクを成功した際には別のReplay Buffer \mathbb{T}にも保存する
  • Trainerは、無作為に選んだ B_j からpriorityに応じて遷移をサンプルし学習する
    • 方策更新後にpriorityを更新する
  • 定期的に、各Replay Buffer B_iのデモンストレーション領域の遷移を \mathbb{T} の遷移で置き換える


原論文より引用

6. 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)を予測する
  • Actor/Criticの学習に利用したミニバッチの遷移に対して
    • スコア(\sigma _i)をNERSで更新する
    • インデックス(I)を保存しておく (\mathcal{I} = \mathcal{I} \cup I)
  • エピソード終端で、\mathcal{I} から一様にサンプルし(I_{\text{train}} \sim \mathcal{I})、replay reward r^{\text{re}} を最大化するようにNERSを学習させる (その後 \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番目の時刻、\delta _{\kappa(i)}: TD誤差、\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) を計算


原論文より引用


原論文より引用

追記 2/18

Experience Replayの理論に関する調査記事を書きました。
https://zenn.dev/ymd_h/articles/c3ba23033a6442

Discussion