PGLeaf Drei全面的に書き直す事にした
現状
Policy Gradient Methods for Reinforcement Learning with Function Approximation
まず、上記論文の関数近似器の導入は断念しました。何をどういじっても、素のPGLeaf以上の性能にはならなかったので。
やった事は大体こんな感じ。
- 論文の手法をそのまま実装 → NG
- と変形してみた → NG
- の代わりに評価値を用いる → NG
- の代わりに評価値から予測した報酬の期待値を用いる → NG
考察
上記論文によると、まずと評価関数の学習を並行して行うので、学習初期のがあまり信用出来ないのでは?という疑問。
この為、学習初期に変な方向にパラメータ更新してしまい、そのままズルズルとネガティブスパイラルに陥っているのでは、と考えています。
対案
上記論文の手法をスッパリ諦めて、重点サンプリングを用いた方策勾配法を実装しようかと考えています。
ベースはLearning to Explore via Meta-Policy Gradientですが、ほとんど原型を留めていません。
アルゴリズムの擬似コードはこんな感じ。推定方策内の評価関数パラメータが、実戦(WCSC・UEC杯等)での対局用になります。
- 推定方策と探査方策を初期化。(推定方策は評価関数を内部に持つ。また、探査方策はそれとは独立した評価関数を内部に持つ。)
- エース評価関数を初期化。
- 以下、無限ループ
評価関数の初期化は、極小さな乱数で初期化を行う予定です。
ただ、とでは方策の分布に差異があるので、ここを補正してやる必要が有ります。有り難い事に、重点サンプリングという既存手法がありますので、これを用います。
まず、推定方策内のパラメータベクトルを、探査方策内のパラメータベクトルをとします。また、を「パラメータ、方策に従ってエピソードが出現する確率、をエピソードの収益とします。
この時、報酬の期待値をで偏微分すると、下記の様になります。これは通常のREINFORCEアルゴリズムですね。
ここで、インポータンス・ウェイト とすると、上記の式はこう変形出来ます。
がいきなり出てきましたが、の分母と上記の式のは打ち消し合うので、2つ上の式と同じになる事が確認出来ると思います。
こうすると何が嬉しいかと言うと、「探査方策を用いてサンプリングした結果から、推定方策の勾配が計算出来る様になる」事です。
実際にサンプリングした結果から勾配を求める式は、下記の通りとなります。なお、は局目のエピソード、は局目の総手数です。
重点サンプリングを用いたOff-Policy方策勾配法は、2年ほど前に動かしてそこそこちゃんと動いてたんで、今回も上手く行ってくれる事を期待しています。
*1:M=100~1000程度