ここでは「9章 方策勾配法」で使用した数式の証明を行います。

D.1 方策勾配法の導出

「9.1 最も単純な方策勾配法」で説明したとおり、 $J(\theta) = \mathbb{E}{\tau \sim \pi{\theta}}[G(\tau)]$ としたとき、その勾配は次の式(9.1)で表されます。

$$ \nabla_\theta J(\theta) =\mathbb{E}{\tau \sim \pi{\theta}}[\sum^T_{t=0} G(\tau) \nabla_\theta \log \pi_{\theta}(A_t| S_t)] \qquad (9.1) $$

ここでは、式(9.1)の導出を行います。


まずは記号の確認です。ここでは方策を $\pi_{\theta}$ としたとき、軌道 $\tau$ が得られる確率を $\Pr(\tau | \theta)$ で表すことにします。それでは、 $\nabla_\theta J(\theta)$ を数式で順に展開していきます。

$$ \begin{aligned} \nabla_\theta J(\theta) &= \nabla_\theta \mathbb{E}{\tau \sim \pi{\theta}}[G(\tau)] \\ &= \nabla_\theta \sum_{\tau} \Pr(\tau|\theta) G(\tau) \qquad 期待値を展開 \\ &= \sum_{\tau} \nabla_\theta \left( \Pr(\tau|\theta) G(\tau) \right) \qquad \nabla_\theta を\sumの中に移動\\ &= \sum_{\tau} \left(G(\tau)\nabla_\theta \Pr(\tau|\theta) + \Pr(\tau|\theta) \nabla_\theta G(\tau) \right) \qquad 積の微分\\ &= \sum_{\tau} G(\tau)\nabla_\theta \Pr(\tau|\theta) \qquad \nabla_\theta G(\tau)は常に0 \\ &= \sum_{\tau} G(\tau) \Pr(\tau|\theta) \frac{\nabla_\theta \Pr(\tau|\theta)}{\Pr(\tau|\theta)} \qquad \frac{\Pr(\tau|\theta)}{\Pr(\tau|\theta)}を乗算 \\ &= \sum_{\tau} G(\tau) \Pr(\tau|\theta) \nabla_\theta \log \Pr(\tau|\theta) \qquad \log 勾配のトリック(★) \\ &= \mathbb{E}{\tau \sim \pi{\theta}}[G(\tau) \nabla_\theta \log \Pr(\tau|\theta)] \qquad (D.1) \\ \end{aligned} $$

数式の右側にあるコメントを参考に一つずつ追ってみましょう。微分についての知識があれば、特に難しい点はないと思います。ここでは一点「 $\log$ 勾配のトリック」という箇所について補足します。 そこでは、次の関係性を利用しています。

$$ \nabla_\theta \log \Pr(\tau|\theta) = \frac{\nabla_\theta \Pr(\tau|\theta)}{\Pr(\tau|\theta)} $$

上式は $\log$ の勾配を求めただけですが、この式により、 $\log$ の勾配( $\nabla_\theta \log \Pr(\tau|\theta)$ )と通常の勾配( $\nabla_\theta \Pr(\tau|\theta)$ )を“入れ替えられる”ことがわかります。これは log勾配のトリック(Log-Derivative Trick) という名前で知られており、機械学習の分野では良く使われる式変形です。

続いて、式(D.1)をさらに展開するために、次の関係性を利用します。

$$ \begin{aligned}\Pr(\tau|\theta) &= p (S_0) \pi_{\theta}(A_0|S_0)p(S_1|S_0, A_0) \cdots \pi_{\theta}(A_T|S_T)p(S_{T+1}|S_T, A_T) \\ &= p (S_0) \prod_{t=0}^{T} \pi_{\theta}(A_t|S_t)p(S_{t+1}|S_t, A_t) \end{aligned} $$

ここでは、初期状態 $S_0$ の確率を $p (S_0)$ で表します。上のように、軌道 $\tau$ が得られる確率は、初期状態の確率、方策、そして次の状態の遷移確率による積として(分解して)表されます。また、 $\log \Pr(\tau | \theta)$ については次のように表すことができます。

$$ \log \Pr(\tau|\theta) = \log p(S_0) + \sum_{t=0}^T \log p(S_{t+1}|S_t, A_t) + \sum_{t=0}^T \log \pi_{\theta}(A_t|S_t) $$

$\log x y = \log x + \log y$ なので、上のように和として表されます。これより、 $\nabla_\theta \log \Pr (\tau | \theta)$ は次のように求められます。

$$ \begin{aligned} \nabla_\theta \log \Pr(\tau|\theta) &= \nabla_\theta \left( \log p(S_0) + \sum_{t=0}^T \log p(S_{t+1}|S_t, A_t) + \sum_{t=0}^T \log \pi_{\theta}(A_t|S_t) \right) \\ &= \nabla_\theta \sum_{t=0}^T \log \pi_{\theta}(A_t|S_t) \end{aligned} $$

$\nabla_\theta$ は $\theta$ に関する勾配です。 $\theta$ に関係しない要素の勾配—— $\nabla_\theta \log p(S_0)$ と $\nabla_\theta \sum_{t=0}^T \log p(S_{t+1}|S_t, A_t)$ ——は $0$ になります。以上から次の式が得られます。

$$ \begin{aligned}

\nabla_\theta J(\theta)
&= \mathbb{E}{\tau \sim \pi{\theta}}[G(\tau) \nabla_\theta \log \Pr(\tau|\theta)] \qquad (D.1) \\

&= \mathbb{E}{\tau \sim \pi{\theta}}[\sum^T_{t=0} G(\tau) \nabla_\theta \log \pi_{\theta}(A_t| S_t)] \qquad (9.1)

\end{aligned} $$