GA将?開発日記~王理のその先へ~

ネタ勢最強を目指して絶賛開発中。

PGLeaf Drei全面的に書き直す事にした

現状

 Policy Gradient Methods for Reinforcement Learning with Function Approximation

 まず、上記論文の関数近似器の導入は断念しました。何をどういじっても、素のPGLeaf以上の性能にはならなかったので。

 やった事は大体こんな感じ。

  1. 論文の手法をそのまま実装 → NG
  2. f_w \left( s, a \right) = \tanh( w^T \nabla \log\left( \pi \left( s, a \right) \right)と変形してみた → NG
  3. f_wの代わりに評価値を用いる → NG
  4. f_wの代わりに評価値から予測した報酬の期待値を用いる → NG

考察

 上記論文によると、まずf_wと評価関数の学習を並行して行うので、学習初期のf_wがあまり信用出来ないのでは?という疑問。

 この為、学習初期に変な方向にパラメータ更新してしまい、そのままズルズルとネガティブスパイラルに陥っているのでは、と考えています。

対案

 上記論文の手法をスッパリ諦めて、重点サンプリングを用いた方策勾配法を実装しようかと考えています。

 ベースはLearning to Explore via Meta-Policy Gradientですが、ほとんど原型を留めていません。

 アルゴリズム擬似コードはこんな感じ。推定方策内の評価関数パラメータが、実戦(WCSC・UEC杯等)での対局用になります。

  1. 推定方策\pi_tと探査方策\pi_eを初期化。(推定方策は評価関数を内部に持つ。また、探査方策はそれとは独立した評価関数を内部に持つ。)
  2. エース評価関数を初期化。
  3. 以下、無限ループ
    1. M局*1探査方策を用いて自己対局する。
    2. M局分の棋譜を元に、推定方策のパラメータを更新する。更新後の方策は\pi_t'とする。
    3. エース評価関数と\pi_t'を用いて連続対局を行い、レーティング差⊿Rを求める。
      1. ⊿Rをメタ報酬として、探査方策のパラメータを更新する。(ここは上記論文の手法そのまま。)
      2. \pi_t'が優位に強くなっていれば、\pi_t \leftarrow \pi_t'と更新する。また、推定方策内の評価関数パラメータをエース評価関数にコピーする。

 評価関数の初期化は、極小さな乱数で初期化を行う予定です。

 ただ、\pi_t\pi_eでは方策の分布に差異があるので、ここを補正してやる必要が有ります。有り難い事に、重点サンプリングという既存手法がありますので、これを用います。

 まず、推定方策内のパラメータベクトルを\theta_t、探査方策内のパラメータベクトルを\theta_eとします。また、P\left( d; \theta, \pi \right)を「パラメータ\theta、方策\piに従ってエピソードdが出現する確率、R_dをエピソードdの収益とします。

 この時、報酬の期待値J\left( \theta_t \right)\theta_t偏微分すると、下記の様になります。これは通常のREINFORCEアルゴリズムですね。

\nabla_{\theta_t} J \left( \theta_t \right) = \nabla_{\theta_t} \int R_d P \left( d; \theta_t, \pi_t \right) = \int R_d P \left( d; \theta_t, \pi_t \right) \nabla_{\theta_t} \log P \left( d; \theta_t, \pi_t \right)

 ここで、インポータンス・ウェイト \eta \left( d \right) = \frac{P \left( d; \theta_t, \pi_t \right) }{P \left( d; \theta_e, \pi_e \right)}とすると、上記の式はこう変形出来ます。

\nabla_{\theta_t} J \left( \theta_t \right) = \int R_d \eta \left( d \right) P \left( d; \theta_e, \pi_e \right) \nabla_{\theta_t} \log P \left( d; \theta_t, \pi_t \right)
 
 \etaがいきなり出てきましたが、\eta \left( d \right)の分母と上記の式のP \left( d; \theta_e, \pi_e \right)は打ち消し合うので、2つ上の式と同じになる事が確認出来ると思います。

 こうすると何が嬉しいかと言うと、「探査方策\pi_eを用いてサンプリングした結果から、推定方策\pi_tの勾配が計算出来る様になる」事です。

 実際にサンプリングした結果から勾配を求める式は、下記の通りとなります。なお、d_mm局目のエピソード、T_mm局目の総手数です。

\nabla_{\theta_t} J \left( \theta_t \right) = \frac{1}{M} \sum_{m=1}^M R_d \eta \left( d_m \right) \frac{1}{T_m} \sum_{t=1}^{T_m} \nabla_{\theta_t} \log \pi_t \left( s_t, a_t \right)

 重点サンプリングを用いたOff-Policy方策勾配法は、2年ほど前に動かしてそこそこちゃんと動いてたんで、今回も上手く行ってくれる事を期待しています。

*1:M=100~1000程度