今回は方策勾配法の基礎なる定理である方策勾配定理について紹介します。
方策勾配定理
方策勾配定理とは、
Q値を用いて、累積報酬を増加させる方策の勾配を求めるための定理です。
つまり、この勾配を用いることで、
累積報酬の向上を目指して方策を更新できます。
では、方策勾配定理によって得られる勾配\(\nabla J({\bf \theta})\)を見てみます。
$$
\begin{eqnarray}
\nabla_\theta J(\theta) \propto \mathbb{E}_{\pi} [Q^\pi(s, a) \nabla_{\theta} \ln \pi_\theta(a \vert s)]
\end{eqnarray}
$$
\begin{eqnarray}
\nabla_\theta J(\theta) \propto \mathbb{E}_{\pi} [Q^\pi(s, a) \nabla_{\theta} \ln \pi_\theta(a \vert s)]
\end{eqnarray}
$$
式中の各変数については以下のようになります。
- \(s\):状態
- \(a\):行動
- \(Q\):Q値
- \({\bf \theta}\):方策\(\pi\)のパラメータ
証明に関しては参考文献や以下の記事を参照してください。
【強化学習入門】方策勾配定理の証明メモ 【Policy Gradient Theorem】
この式のおかげで、これまで学習してきたQ値を用いて
累積報酬値を向上させる方向の勾配を求めることができます。
単純な問題でパラメータが1つの場合、以下のような図になります。
求めている勾配は赤矢印になります。
つまり、矢印方向に\(\theta_t\)を更新していけば、累積報酬\(J\)を最大化させる\(\theta\)を求めることができることがわかります。
なので、パラメータ\(\theta _t\)は以下のように更新します。
$$
\begin{eqnarray}
{\bf \theta}_{t+1} \leftarrow {\bf \theta}_{t} + \alpha \nabla J({\bf \theta _t})
\end{eqnarray}
$$
\begin{eqnarray}
{\bf \theta}_{t+1} \leftarrow {\bf \theta}_{t} + \alpha \nabla J({\bf \theta _t})
\end{eqnarray}
$$
\(\alpha\)は学習率になります。
この方策勾配定理を用いて、REINFORCEアルゴリズム等の様々な方策勾配法が提案されてきました。
今後はREINFORCEアルゴリズム等の紹介と実装を進めていきます。
参考文献
http://incompleteideas.net/book/the-book-2nd.html
機械学習スタートアップシリーズ Pythonで学ぶ強化学習 [改訂第2版] 入門から実践まで
コメント