方策勾配法のアルゴリズムまとめ 〜REINFORCE・ベースライン・Actor-Critic〜

方策勾配法(Policy Gradient Method)を改善させたアルゴリズムには、REINFORCE・ベースライン・Actor-Criticなどのアルゴリズムがあります。当記事ではこれらの$3$つのアルゴリズムについて取りまとめを行いました。
「ゼロから作るDeep Learning④ー強化学習編」の第$9$章の「方策勾配法」や付録Dの「方策勾配法の証明」の内容を参考に当記事の作成を行いました。

・用語/公式解説
https://www.hello-statisticians.com/explain-terms

前提知識

方策勾配法の目的関数と勾配の式

詳しくは上記で取り扱ったが、方策勾配法の目的関数と目的関数の勾配の式はそれぞれ下記のように表される。

・目的関数
$$
\large
\begin{align}
J(\theta) &= \mathbb{E}_{\tau \sim \pi_{\theta}}[G(\tau)] \quad (1.1) \\
G(\tau) &= R_0 + \gamma R_1 + \gamma^{2} R_2 + \cdots + \gamma^{T} R_{T} \quad (1.2)
\end{align}
$$

・目的関数の勾配
$$
\large
\begin{align}
\nabla_{\theta} J(\theta) = \mathbb{E}_{\tau \sim \pi_{\theta}} \left[ \sum_{t=0}^{T} G(\tau) \nabla_{\theta} \log{\pi_{\theta}(A_t|S_t)} \right] \quad (1.3)
\end{align}
$$

方策の学習にあたって

方策の学習にあたっては下記のような勾配上昇法を用いることで行える。
$$
\large
\begin{align}
\theta \leftarrow \theta + \alpha \nabla_{\theta} J(\theta) \quad (1.4)
\end{align}
$$

上記はオーソドックスな勾配法の式であり、$\alpha$は学習率を表す。また、実際に$(1.2)$式を用いて学習を行うにあたっては、下記のように実際に方策$\pi_{\theta}$に基づいて軌道$\tau^{(i)}$をサンプリングし、その平均を取れば勾配の近似値が計算できる。
$$
\large
\begin{align}
\tau^{(i)} & \sim \pi_{\theta}, \qquad i=1,2,\cdots,n, \quad \mathrm{i.i.d.} \quad (1.5) \\
j^{(i)} &= \sum_{t=0}^{T} G \left( \tau^{(i)} \right) \nabla_{\theta} \log{ \pi_{\theta} \left( A_t^{(i)} \middle| S_t^{(i)} \right) } \quad (1.6) \\
\nabla_{\theta} J(\theta) &= \mathbb{E}_{\tau \sim \pi_{\theta}} \left[ \sum_{t=0}^{T} G(\tau) \nabla_{\theta} \log{\pi_{\theta}(A_t|S_t)} \right] \simeq \frac{1}{n} \sum_{i=1}^{n} j^{(i)} \quad (1.7)
\end{align}
$$

$(1.7)$式が勾配の近似値を表す。上記の$(1.6)$式の$i$は方策$\pi_{\theta}$に基づいて生成された軌道$\tau^{(i)}$のインデックス、$t$は軌道$\tau^{(i)}$における系列$\displaystyle \left(S_0^{(i)},A_{0}^{(i)}, \cdots , S_t^{(i)},A_{t}^{(i)}, \cdots, S_{T+1}^{(i)} \right)$のインデックスを表すことに注意しておくと良い。

$i$番目の軌道$\tau^{(i)}$における収益は$\displaystyle G \left( \tau^{(i)} \right)$によって表されるが、$(1.6)$式はこの$\displaystyle G \left( \tau^{(i)} \right)$による重み付け和であると解釈することができる。

ここで$\displaystyle \nabla_{\theta} \log{ \pi_{\theta} \left( A_t^{(i)} \middle| S_t^{(i)} \right) }$はインデックス$t$を用いて表される一方で、重みが$\displaystyle G \left( \tau^{(i)} \right)$ではこれまでに得た報酬も取り扱うので方策の評価を行う観点では適切ではない。よって、$(1.5)$式の$\displaystyle G \left( \tau^{(i)} \right)$に改善の余地が生じる。次節ではこの改善の余地の視点から方策勾配法の改善の手法についてそれぞれ取り扱う。

方策勾配法の改善

基本方針

前節で取り扱った$(1.3)$式に基づいて勾配は下記のように表される。
$$
\large
\begin{align}
\nabla_{\theta} J(\theta) = \mathbb{E}_{\tau \sim \pi_{\theta}} \left[ \sum_{t=0}^{T} G(\tau) \nabla_{\theta} \log{\pi_{\theta}(A_t|S_t)} \right] \quad (1.3)
\end{align}
$$

上記の$G(\tau)$を$\Phi_{t}$に置き換えると下記が得られる。
$$
\large
\begin{align}
\nabla_{\theta} J(\theta) = \mathbb{E}_{\tau \sim \pi_{\theta}} \left[ \sum_{t=0}^{T} \Phi_{t} \nabla_{\theta} \log{\pi_{\theta}(A_t|S_t)} \right] \quad (2.1)
\end{align}
$$

以下では$\Phi_{t}$に様々な指標を用いることで方策勾配法の改善について取り扱う。

REINFORCE

REINFORCE(REward Increment $=$ Nonnegative Factor $\times$ Offset Reinforcement $\times$ Characteristic Eligibility)は下記のように$\Phi_{t}$を定義する。
$$
\large
\begin{align}
\nabla_{\theta} J(\theta) &= \mathbb{E}_{\tau \sim \pi_{\theta}} \left[ \sum_{t=0}^{T} \Phi_{t} \nabla_{\theta} \log{\pi_{\theta}(A_t|S_t)} \right] \quad (2.1)’ \\
\Phi_{t} &= G_{t} \quad (2.2) \\
G_{t} &= R_t + \gamma R_{t+1} + \gamma^{2} R_{t+2} + \cdots + \gamma^{T-t} R_{T} \quad (2.3)
\end{align}
$$

このようにREINFORCEでは$\displaystyle \nabla_{\theta} \log{\pi_{\theta}(A_t|S_t)}$にかかる重みを$S_t$以後に得られる収益$G_t$を用いて表す。

ベースライン付きREINFORCE

ベースライン付きREINFORCEはベースライン$b(S_t)$を導入することで$\Phi_{t}$の分散を小さくする手法であり、下記のように$\Phi_{t}$を定義する。
$$
\large
\begin{align}
\nabla_{\theta} J(\theta) &= \mathbb{E}_{\tau \sim \pi_{\theta}} \left[ \sum_{t=0}^{T} \Phi_{t} \nabla_{\theta} \log{\pi_{\theta}(A_t|S_t)} \right] \quad (2.1)’ \\
\Phi_{t} &= G_{t} – b(S_t) \quad (2.4)
\end{align}
$$

ここで上記の収益$G_t$にQ関数、ベースライン$b(S_t)$に価値関数を用いると$\Phi_{t}$はアドバンテージ関数に一致する。詳しくは『ベースラインとアドバンテージ関数』で取り扱う。

Actor-Critic

Actor-Criticでは下記のように$\Phi_{t}$を定義する。
$$
\large
\begin{align}
\nabla_{\theta} J(\theta) &= \mathbb{E}_{\tau \sim \pi_{\theta}} \left[ \sum_{t=0}^{T} \Phi_{t} \nabla_{\theta} \log{\pi_{\theta}(A_t|S_t)} \right] \quad (2.1)’ \\
\Phi_{t} &= R_{t} + \gamma V(S_t) – V(S_t) \quad (2.5)
\end{align}
$$

Actor-CriticはTD法と対応させて理解すると良い。

ベースラインとアドバンテージ関数

ベースライン付きREINFORCE』では$\Phi_{t} = G_{t} – b(S_t)$のようにベースライン$b(S_t)$を導入したが、収益$G_t$にQ関数、ベースライン$b(S_t)$に価値関数を用いると$\Phi_{t}$は下記のように表せる。
$$
\large
\begin{align}
\Phi_{t} &= Q(S_t,A_t) – V(S_t) \\
&= A(S_t,A_t) \quad (2.6)
\end{align}
$$

上記の$A(S_t,A_t)$はアドバンテージ関数であり、PPOのように論文によっては収益ではなくアドバンテージを元に式が表される場合があるので$(2.6)$式は抑えておくと良い。

・PPO論文