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

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

「確率的パラメータを持つ方策関数に対する方策勾配法」読んだまとめ

ci.nii.ac.jp

概要

 オープンアクセス不可の論文なんで、気になった所だけ書こうと思います。

  1. 通常の方策勾配法では、パラメータ\thetaは「確定的な」ベクトルである。これを、ハイパーパラメータ\nu*1から生成される「確率的な」ベクトルに拡張する。
    1. つまり、\thetaの値は(多分)エピソードごとにランダムに変化する。
    2. 学習の目的は、\nuを最適化する事。
  2. 方策\pi \left( a | s; \nu \right) = \int_\theta p \left( a | s ; \theta \right) p \left( \theta | \nu \right) d \thetaとする。
    1. p \left( a | s ; \theta \right)は、状態s・(ランダムに生成された)パラメータ\thetaのもとで行動aを選択する確率。
    2. p \left( \theta | \nu \right)は、ハイパーパラメータ\nuのもとでパラメータ\thetaが生成される確率。
  3. 後は、この方策を\nuに関して微分してやって、方策勾配法でよしなに最適化する。

 こうすると何が嬉しいかと言うと、探索・搾取のトレードオフを自動的に解決出来る事らしいです。学習初期は分散を大きめにとって探索重視、ある程度学習が進んだら自動的に分散が減少していって搾取重視にシフトしていく、と。

PGLeafへの適用

 原論文では\nuに含まれる分散は1つだけの様に読み取れました。つまり、「全てのパラメータ\theta_iに対して、共通の分散を用いる」らしいです。

 ただ、コンピュータ将棋に関しては個々のパラメータに対して分散があった方が良い様に思えます。例えば、「歩1枚の価値はだいたい推測出来ている*2が、持ち駒の6枚目の歩の価値は曖昧*3」という状況が起こり得ると思います。

 という訳で、ハイパーパラメータ\nuは「2(平均、分散)×パラメータの個数」分の要素を持つベクトルにしようと思います。

 後は方策勾配ですが、原論文では連続状態・連続行動問題を扱っているので解析的に求めていました。ただ、PGLeafではp \left( a | s ; \theta \right)はSoftmax関数とαβ探索・評価関数の組み合わせになるので、多分解析的には解けません。

 具体的には、p \left( a | s ; \theta \right)は下記の様になります。

 \displaystyle p \left( a | s ; \theta \right) = \frac{\exp \left(  evl \left( a, s', \theta)  \right) \right)}{\sum_{x \in A \left( s \right)} \exp \left(  evl \left( x, y', \theta)  \right) \right)}

 s',y'はそれぞれ「状態(局面)sから行動(指し手)a,xを指した後の、αβ探索のPV Leafノード」になります。また、A\left(s\right)は局面sにおける合法手の集合です。αβ探索についてはアルファ・ベータ法 - Wikipedia等をご参照下さい。

 また、evl \left( a, s, \theta \right) = \sum_{i=1}^N \phi_i\left(s\right) \theta_iとなります。(\phi_i \left(s\right)は、局面sの特徴量*4)です。)

 これを解析的に解くのは難しそう(無理?)なので、\thetaに関するモンテカルロ積分をしてやって解く事にします。

 具体的にはM回*5のサンプリングを行い、

\pi \left( a | s; \nu \right) = \frac{1}{M} \sum_{m=1}^M p \left( a | s ; \theta \right)

とします。

 \nuが消えちゃったので微分しようが無いですね。困りました。

 かなり複雑な関数の積分をしたいのですが、自力では出来なくて質… - 人力検索はてなで質問しました。ベストな回答には1,000pt進呈しますので、分かる方がいらっしゃればご回答お願い致します。

*1:正規乱数の平均・分散。後、元の論文では別の字が使われてたけど、読み方が分からないので似た字をあてている。

*2:分散は小さくていい

*3:分散を大きくしたい

*4:駒割等

*5:M=100~1000程度