Replay BufferがPolicy Gradientで使えない理由

piqcy
programming-soda
Published in
6 min readMar 20, 2019

Replay Bufferは、環境での経験を直接ではなくバッファに貯めて利用する手法です。これにより、学習時に直近の経験だけでなく過去の経験も活用することができます。Deep Q-Network(DQN)登場時から使われている、とても一般的な手法です。

しかし、Replay BufferはPolicy Gradientにつらなる手法では使えません。具体的には、戦略で獲得可能な期待値の向上を目指して更新するような手法です。その理由について、本記事で説明します。目次は以下の通りとなります。

  • Policy Gradientの式から見る、Replay Bufferが使えない理由
  • Policy GradientでReplay Bufferを使う方法

Policy Gradientの式から見る、Replay Bufferが使えない理由

Policy Gradientは、戦略を通じ獲得できる期待値を向上させるよう更新を行っていく手法です。期待値の定義は、以下の通りとなります。

戦略π_θにより獲得できる、期待値の定義式

ちょっと難しく見えますが、戦略(π)の下で「状態に遷移する確率」×「その状態での行動確率」×「行動の価値」を掛け合わせているだけです。期待値は確率×価値で計算しますが(サイコロなら、「目が出る確率」×「目の値」)、その定義のままの式です。Policy Gradientは、上式で定義した期待値J(θ)を勾配法を用いて更新していく手法となります。

期待値の定義から、Replay Bufferが使えない理由を知ることができます。この期待値は、「現在の」戦略の期待値を計算しています。もし状態遷移や行動確率の計算に過去の経験が影響をしてしまうと、現在の戦略が良いのか悪いのか分からなくなってしまいます。人間でいえば、テスト勉強する前の点数とした後の点数とで、混ぜられて評価されたら困るでしょう、ということです。

この点については、OpenAI Spinning Upでも解説があります。

こちらには、lossの値についても言及があります。戦略が変われば、当然直面する状態も変わってきます。先ほどのテストの例でいえば、テストの問題が変わるということです(例: 勉強した学力に応じて内容が変わるなど)。そのため、Policy Gradientにおいてloss(端的には期待値の負の値)は定常的に下がるものではなくなっています。

余談ですが、ロマンシング・サガというゲームでは戦闘回数が多くなるにつれて敵も強くなるという特性があります。うっかり戦闘しすぎたせいで敵が強くなりすぎて詰むということもしばしばです。期待値=戦闘での勝率とした場合、ロマンシング・サガの世界では経験を詰んでもそれほど上がらない(逆に下がる可能性もある)ということです。しかし、キャラクターは着実に成長しています。この事例から、Policy Gradientにおけるlossの評価の難しさについて感じて頂けると思います(?)。

物語は無限大!ロマンシングサガ2(ロマサガ2)でレッツ皇帝ライフ!より

Policy GradientでReplay Bufferを使う方法

とはいえ、Replay BufferをPolicy Gradientで使う方法がいくつかあります。現在の戦略から得られる経験だけではどうしても得られる経験の分散が低くなるので、Replay Bufferを使えればそれに越したことはありません。

Replay Bufferを使う方法は2つあります。

  1. 探索用(Replay Buffer蓄積用)の戦略を別途設ける
  2. 戦略を価値関数に従った決定的(Deterministic)なものとする

1はOff-Policy Actor-Criticと呼ばれる手法が源流となります。Replay Bufferは、behaviour policyと呼ばれる既知の(適当な)戦略で収集します。ただ、更新を行う際は行動の決定は戦略で行われたとします。もちろんこのままでは意味が通らないので、この差を重みで調整します(下記式のπθ(a|s)/βθ(a|s)=βに対するπの重み)。

Deterministic Policy Gradient Algorithms 式4/5より

behaviour policyにより収集する経験の分散を担保しつつ、戦略の更新を行うことができます。これを発展させた手法として、ACERなどがあります。

2は、端的には戦略による決定が価値関数による決定と同様と見なせるなら、価値関数の勾配を使用して更新できる、というものです。「価値関数の勾配」の計算では、もちろんReplay Bufferが使えます。この考え方を用いた手法としては、DPGやDDPGがあります。導出については、Deterministic Policy Gradient Algorithmsの、3.Gradients of Deterministic Policiesからの展開が分かりやすいと思います。なお、2の場合はもちろん戦略は確率的でなく決定的である必要があります(元々決定的な選択を行うために生まれた手法なので)。

上記の工夫を行うことで、Policyの更新でもReplay Bufferを使用することができます。

参考文献

--

--

piqcy
programming-soda

All change is not growth, as all movement is not forward. Ellen Glasgow