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

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

ソフトマックス方策を用いた方策勾配法の計算式(リトライ版)

 http://d.hatena.ne.jp/Gasyou/20100916/1284623513 が間違ってたんで再計算。今度は後で検証しやすい様に、途中経過も詳しく書いてみる。

 最初に、状態=局面、行動=手として扱うので、これ以降はそれぞれ"局面"、"手"と記述する。

 行動価値関数は線形近似、方策はボルツマン分布を使用するソフトマックス方策を用いる場合の、方策勾配法の式の計算を行う。なお、TD(λ)に対するTDLeaf(λ)の様に、価値関数及び勾配の計算にはαβ探索を行った末端の局面の特徴を用いる。

 まず、行動価値関数Qは下記の様に計算する。

Q \left( s, a; \theta \right) = \sum_{b=1}^B \left( \theta_b \cdot \phi_b \left( s, a \right) \right)
 
 なお、式中の\thetaは価値関数のパラメータ、\phi\left( s , a \right)は「局面sで手aを指した後の局面から、αβ探索(全幅+静止探索)で得たPV末端の局面の特徴量」、Bは特徴量の次元数とする。


 次に、方策*1は下記の通り。

\pi \left( a | s ; \theta \right) = \frac{ exp(\frac{Q \left( s, a; \theta \right)}{T}) }{ \sum_{a' \in A}exp(\frac{Q \left( s, a'; \theta \right)}{T}) }

 なお、式中のAは局面sにおける合法手の集合。


 最後に、方策の勾配を計算する。

\begin{eqnarray} \nabla_\theta log \left( \pi \left( a | s ; \theta \right) \right ) &=& \frac{ \nabla_\theta \pi \left( a | s ; \theta \right) }{ \pi \left( a | s ; \theta \right) } \\ &=& \frac{ exp(\frac{Q \left( s, a; \theta \right)}{T}) \nabla_\theta \frac{ Q\left( s, a | \theta )}{T} \sum_{a' \in A}exp(\frac{Q \left( s, a'; \theta \right)}{T}) - exp(\frac{Q \left( s, a; \theta \right)}{T}) \sum_{a' \in A} \left{ exp(\frac{Q \left( s, a'; \theta \right)}{T}) \nabla_\theta \frac{ Q \left( s, a'; \theta \right) }{ T } \right} }{ \pi \left( a | s ; \theta \right) \left( \sum_{a' \in A}exp(\frac{Q \left( s, a'; \theta \right)}{T}) \right)^2 } \end{eqnarray}

 ここで、方策\piの式を用いて変形すると

\begin{eqnarray} \nabla_\theta log \left( \pi \left( a | s ; \theta \right) \right ) &=& \frac{ \pi \left( a | s ; \theta \right) \nabla_\theta \frac{ Q\left( s, a | \theta )}{T} \sum_{a' \in A}exp(\frac{Q \left( s, a'; \theta \right)}{T}) - \pi \left( a | s ; \theta \right) \sum_{a' \in A} \left{ exp(\frac{Q \left( s, a'; \theta \right)}{T}) \nabla_\theta \frac{ Q \left( s, a'; \theta \right) }{ T } \right} }{ \pi \left( a | s ; \theta \right) \sum_{a' \in A}exp(\frac{Q \left( s, a'; \theta \right)}{T}) } \\ &=& \frac{ \nabla_\theta \frac{ Q\left( s, a | \theta )}{T} \sum_{a' \in A}exp(\frac{Q \left( s, a'; \theta \right)}{T}) - \sum_{a' \in A} \left{ exp(\frac{Q \left( s, a'; \theta \right)}{T}) \nabla_\theta \frac{ Q \left( s, a'; \theta \right) }{ T } \right} }{ \sum_{a' \in A}exp(\frac{Q \left( s, a'; \theta \right)}{T}) } \\ &=& \nabla_\theta \frac{ Q\left( s, a | \theta )}{T} - \sum_{a' \in A} \left{ \pi \left( a' | s; \theta \right) \nabla_\theta \frac{ Q \left( s, a'; \theta \right) }{ T } \right} \end{eqnarray}

 任意のa \in Aに対して\nabla_\theta \frac{ Q \left( s, a; \theta \right) }{ T } = \frac{ \phi \left( s, a \right) }{ T }なので

\nabla_\theta log \left( \pi \left( a | s ; \theta \right) \right ) = \frac{1}{T} \left{ \phi \left( s, a \right) - \sum_{a' \in A} \left{ \pi \left( a' | s; \theta \right) \phi \left( s, a' \right) \right} \right}

 となる。

*1:パラメータ\thetaを用いる場合に、局面sで手aを選択する確率