本記事では、強化学習において重要な最適化方法の1つである方策反復法の具体的な手法の方策勾配法について解説するとともに、そこで使用する方策勾配定理について導出も示していきます。
はじめに
強化学習で使用する最適化手法は、大きく分けて、方策反復法をベースとするものと価値反復法をベースとするものがあります。方策反復法と価値反復法は、動的計画法を用いたプランニング問題で使用するものです。強化学習問題では、最適な方策を求めることが目標になるため、両手法の主な違いは、その方策を直接モデル化するか、価値を用いてモデル化するかの違いになります。
本記事のテーマである方策勾配法は、方策反復法の1つで、方策をパラメータ\(\theta\)で直接モデル化し、目的関数\(J(\theta)\)の勾配を用いて最適な方策を求める手法です。
方策勾配法
方策勾配法とは、方策をパラメータ\(\theta\)で直接モデル化し、期待収益\(J(\theta)\)を目的関数として勾配を用いて最適化します。学習率を\(\alpha\)と置くと、方策勾配法は以下のように表されます。
$$
\theta \leftarrow \theta + \alpha\nabla_\theta J(\theta)
$$
ニューラルネットワークについて学んだことがある方なら、このようなパラメータ更新方法には馴染みがあると思いますが、誤差関数を最小化するときに使用する勾配降下法の逆、勾配上昇法です。なぜ勾配上昇法を使用するかというと、目的関数が誤差関数の場合の最適化問題は目的関数の最小化ですが、目的関数が期待収益の場合の最適化問題は目的関数の最大化だからです。
方策勾配法を利用するには、期待収益\(J(\theta)\)の勾配\(\nabla_\theta J(\theta)\)を求める必要があります。そのためには、期待収益を何で定義するかを考える必要があります。期待報酬は方策の良さを表して欲しいため、一般的には、状態価値関数を使用します。
$$
J(\theta) = V^\pi(s)
$$
このとき、以下の方策勾配定理により期待収益の勾配が定義されます。
$$
\nabla_\theta J(\theta) = \mathbb{E}_\pi\left[\nabla_\theta\ln\pi_\theta(a|s)Q^\pi(s,a)\right]
$$
以降では、この方策勾配定理について導出していきます。
基礎知識
方策勾配定理の証明は難易度が高く、また、状態価値関数の定義方法によって若干、導出が異なるため、本記事ではそれらについても触れながら解説していきますが、そこで必要となる基礎知識について、ここでは述べていきます。
ここで説明する基礎知識は、基本的に以下の記事から重要な部分を抜粋したもの+αになります。
マルコフ決定過程
強化学習で使用する報酬、状態価値、行動価値関数は、マルコフ決定過程(Markov Decision Process: MDP)に基づいて定義されています。マルコフ決定過程は、次の状態は現在の状態と行動にのみに依存して決定されるという性質を持つ状態を考えます。
マルコフ決定過程は以下で定義されます。
マルコフ決定過程
MDP:\(\langle S, A, P, R, \gamma \rangle\)
where:
\(S\):状態の有限集合
\(A\):行動の有限集合
\(P\):\(S×A×S\)で定義された条件付き状態遷移確率,\(P(S_{t+1}| S_t, A_t)\)
\(R\):\(S×A\)で定義された報酬関数,\(R(S_t, A_t)\)
\(\gamma\):割引率,\(\gamma\in [0, 1]\)
下図は、現在の時刻を\(t\)としたとき、現在の状態\(s_t\)で方策\(\pi\)に従って行動\(a_t\)を実施したら、報酬\(R_{t+1}\)が得られ、時状態\(s_{t+1}\)に遷移する状況を表しています。ちなみに、確率変数は大文字、既に決定したら小文字という使い分けしています。図では、全て確率変数として表していますが、文章では基本的に小文字を使用していくことになると思います。
累積報酬和と割引報酬和
報酬和とは、即時報酬\(R\)を加算したものをいいます。加算方法によって2種類の報酬和を考えることができます。1つ目は、累積報酬和で、現在から未来にかけて得られる報酬を全て同じスケールで加算していきます。ただし、この場合は発散してしまう可能性があるため、ある程度で打ち切る必要があります。2つ目は、割引報酬和で、現在から未来にかけて割引率によって即時報酬の値を割引ながら加算していきます。
累積報酬和
$$
G_t = R_{t+1} + R_{t+2} + \cdots + R_{t+K} = \sum_{k=0}^{K-1} R_{t + k + 1}
$$
割引報酬和
$$
G_t = R_{t+1} + \gamma R_{t+2} + \gamma^2 R_{t+3} + \cdots = \sum_{k=0}^\infty \gamma^k R_{t + k + 1}
$$
状態価値関数
状態価値関数とは
状態価値関数とは、マルコフ決定過程における状態に注目して、その価値を定量化したもので、以下のように定義されます。
$$
V^{\pi}(s) = \mathbb{E}_{\pi}[G_t|S_t=s]
$$
状態価値関数とベルマン方程式
ここでは、割引報酬和を用いた場合の状態価値関数とベルマン方程式について紹介します。
$$
V^{\pi}(s) = \sum_{a\in A}\pi(a|s)\sum_{s'\in S}P(s'|s, a)\left[r(s, a) + \gamma V^{\pi}(s') \right]
$$
累積報酬和を使用する場合の状態価値関数のベルマン方程式は上式から\(\gamma\)を取り除いたものになります。
細かい導出は以下のページをご参照ください。
行動価値関数
行動価値関数とは
行動価値関数とは、マルコフ決定過程における状態と行動に注目して、その価値を定量化したもので、以下のように定義されます。
$$
Q^{\pi}(s, a) = \mathbb{E}_{\pi}[G_t|S_t=s, A_t=a]
$$
行動価値関数のベルマン方程式
ここでは、割引報酬和を用いた場合の行動価値関数とベルマン方程式について紹介します。
$$\begin{eqnarray}
Q^\pi (s, a) &=& r(s, a) + \gamma \sum_{s'\in S} P(s'|s, a)V^\pi (s')\\
&=& r(s, a) + \gamma \sum_{s'\in S} \sum_{a'\in A} P(s'|s, a)\pi (a'|s') Q^\pi (s', a')
\end{eqnarray}$$
累積報酬和を使用する場合の行動価値関数のベルマン方程式は上式から\(\gamma\)を取り除いたものになります。
細かい導出は以下のページをご参照ください。