actor-criticの実装よりアルゴリズム逆読み

強化学習の勉強会でゲーム学習の高速化の解説があった。

www.slideshare.net

 

これらはActor-criticを基本とした並列化、GPUの使用で高速化を

図っている。ここでActor-criticのアルゴリズムを詳しく見てみた。

 

DQNは価値関数の改善だけで行っているが、現在の強化学習は価値関数と方策関数の改善も同時に行うActor-criticで構成されることが多い。

損失関数\mathcal{L}_\thetaは報酬Rを反映した目標とする価値targetと現在の価値関数Q(s,a)の差で与えられ、最適なパラメータ\thetaは損失関数が最小になる様に求める。

    \mathcal{L}_\theta = (target - Q_\theta(s,a))^2

しかしDQNとActor-criticは行動aの選択が異なる。DQNは最大の価値になる行動aを選択するのに対し、Actor-critcは最適な方策a=\pi^*_\phi(s)で選択される。

DQN

     target = R + \gamma \max_{a'} Q_\theta(s',a')

Actor-critic

    target =  R + \gamma Q_\theta (s',\pi^*_\phi(s))

DQNは単に局所的に価値が高い行動aを選ぶだけであるが(但しε-greetyは反映されている)、Actor-criticは過去に高い価値関数が得られた履歴から学習された方策関数\pi_\phi(s)を採用しているので頑健性があると見做せる。

下記のActor-criticのサイトのプログラムのupdate_modelからアルゴリズムを解釈してみた。

qiita.com

アルゴリズムは以下のシュミレーションと学習を繰返して、価値関数Q_\theta(s,a)と方策関数\pi_\phi(s)の両方を精緻化します。

  (1) シュミレーション

  ①これまで学習した方策関数a =\pi_\phi(s)で行動aを決定します。

   方策関数は状態sを引数でパラメータ\phiのニューロとなっています。

  ②行動a後の状態s'と得た報酬Rを観測します。

  ③行動前後の状態と行動と報酬(s,a,s',R)のタプルを履歴メモリーeMemに追加します。

  (2) 履歴メモリーからの価値関数と方策関数の学習

   ④履歴メモリーeMemからランダムにタプルを適切な数を取り出し経験群(s_b,a_b,s_b'R_b)とします。

      ⑤新状態群s_b’から学習した方策関数a_b=\pi_\phi(s_b’)で次の行動群a_b'を決定します。

   ⑥新状態群s_b'と次の行動群a_b'より学習した価値関数Q_\theta(s_b',a_b')から価値V_bを推定します。

   この価値は行動と状態(s,a)を引数としてニューロQ_\theta(s_b',a_b')で解きます。

   ⑦経験群にある報酬R_bで目標価値を得ます。

           target_b=R_b + \gamma V_b

      ⑧損失関数が最小になる様に価値関数のパラメータ\thetaを更新します。

        \mathcal{L}_\theta = (target_b - Q_\theta(s_b,a_b))^2

      ⑨上記の損失関数の最小化で微小な状態変化での行動の変化\frac{\partial a}{\partial s}も同時に計算します。ニューロなら逆伝播で値が保持されています。

    ⑩微小な行動変化を入れて最適な方策関数のパラメータ\phiを更新して、最適な方策関数\pi_\phi(s)を得ます。

   これはニューロでは教師データを与えるほかに、差分を与えて解を出力層から取り出すことができます。ニューロ\pi_\phi(s)に行動の変化\frac{\partial a}{\partial s}を与えて逆伝播で最適方策を得るが出来ます。

    ①のシュミレーションに戻ります

 

この様にActor-criticはシュミレーション(Actor)→履歴保存(Replay Memory)→学習(Learnier)のパイプラインになるのでこれを並列化したA3Cが可能になります。しかし下図の様にパイプラインの各要素が非同期で並列化されるGorilaではその整合性の工夫が必要になってくる。

 

f:id:mabonki0725:20180316073411p:plain

 冒頭の強化学習の勉強会での講演者が言っていたが、これらは逐次的に報酬が得られるゲームの高速化に過ぎない。迷路探索等の戦略が必要な場合はUNREAL等の探索アルゴリズムを組み込む必要がある。