強化学習の基礎　~方策勾配編~

# 方策勾配に基づくアルゴリズム


価値反復に基づく強化学習では、方策(policy)は行動価値関数Qを通して表現されていた(前の記事参照→[強化学習基礎](https://qiita.com/Mak-GIBA/items/b3a7f14dc6a12df5f00c))。
つまり、方策は行動価値関数から導出されるものとして定義され、エージェントは行動価値関数を試行錯誤を通して学習することで、最適な方策を求めていた。


一方で、方策を価値関数とは別のパラメータで表現し、最適化することで強化学習問題を解く方法も考えられる。
具体的には確率的方策をあるパラメータベクトル𝜃によってパラメタライズされた確率モデル$𝜋_𝜃 (𝑎|𝑠)$を考え、これを𝜃について最適化する。


方策勾配に基づくアルゴリズムでは、Q-learningやSarsaなと行動価値関数を更新していくアルゴリズムと異なり、方策𝜋を明示的に更新していくことになる。

# 適用対象となる問題例
   ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1820910/99c3f112-a6f7-4548-ff22-176e6ea3b271.png)

```
・ エージェントは状態として、「ボールとカップの距離」「風の強さ」を連続値として観測可能
・ 各ステップでエージェントは行動として「スイングの速さ」を連続値で設定できる
・ エージェントは「ボールとカップまでの距離」に応じて報酬を得る
```

具体的な適用対象として例としては、ゴルフ問題が考えられる。
ゴルフ問題のように状態$s$や行動$a$のとり得る行動が連続値だと、それらの値をすべて数え上げることが難しい。
そのため、前記事([強化学習基礎](https://qiita.com/Mak-GIBA/items/b3a7f14dc6a12df5f00c))で書いた状態や行動を離散化し、価値関数をテーブルとして保持する方法を使うのは困難になる。

その問題を解決し得る手段として**行動価値関数$Q(s,a)$を何かしらで関数近似する方法**が考えられる。
これが強化学習において方策勾配法用いる動機である。

つまり、連続の状態、行動空間を取り扱いたい場合に方策勾配法に基づくアルゴリズムを選択する利点が大きい。

# 方策勾配法の学習の流れ
方策勾配に基づく強化学習の手順を大まかにまとめると次のようになる。
  ①方策$𝜋_𝜃 (𝑎|𝑠)$による行動  
 
②方策$𝜋_𝜃 (𝑎|𝑠)$の評価  
   
  ③方策$𝜋_𝜃 (𝑎|𝑠)$の更新     

## ①確率的方策による行動

方策があるパラメータベクトル$θ$でパラメタライズされていることを仮定しているため、
まずは、エージェントの方策を**確率モデル$𝜋_𝜃 (𝑎|𝑠)$で定める必要がある**。
　　           　　　　　
```math
𝜋_{θ}(a|s) = {\frac{exp(θ_{sa})}{\sum_{b{\in}A}exp(θ_{sb})}}
```
$$\style{align: center; font-family: "Helvetica Neue",Helvetica,"ヒラギノ角ゴ ProN W3","Hiragino Kaku Gothic ProN","メイリオ",Meiryo,sans-serif}{\text{[状態空間：離散、行動空間：離散の場合の確立モデル例]}}$$

$θ_{sa}$は行動価値関数とは別の調整可能なパラメータであり、本パラメータベクトル$[θ_{11},..,θ_{sa},..,θ_{|S||A|}]^T$を直接学習することが方策勾配に基づく強化学習アルゴリズムの目的になる。　　   
        　　　　　　　　　　　　　　

```math
𝜋_{θ}(a|s) = {\frac{exp(θ^{\rm{T}}\Phi(s,a))}{\sum_{b{\in}A}exp(θ^{\rm{T}}\Phi(s,b))}}
```
$$\style{align: center; font-family: "Helvetica Neue",Helvetica,"ヒラギノ角ゴ ProN W3","Hiragino Kaku Gothic ProN","メイリオ",Meiryo,sans-serif}{\text{[状態空間：連続、行動空間：離散の場合の確率モデル例]}}$$

この数式に見られる$\Phi(s,a)$は状態と行動によって特徴づけられる任意の関数$\Phi$によって定まる特徴ベクトルである。
そして、$θ$が方策を調整するパラメータベクトル。


```math
𝜋_{θ}(a|s) = {\frac{1}{(2𝜋)^{\frac{d_{a}}{2}}|C|^{\frac{1}{2}}}}exp(-\frac{1}{2}(a-Ws)^{T}C^{-1}(a-Ws))
```

$$\style{align: center; font-family: "Helvetica Neue",Helvetica,"ヒラギノ角ゴ ProN W3","Hiragino Kaku Gothic ProN","メイリオ",Meiryo,sans-serif}{\text{[状態空間：連続、行動空間：連続の場合の確率モデル例]}}$$

ここで、$W$は$d_{a}×d_{s}$の行列を表し、共分散行列$C$は分布の形状を決めるパラメータとみなせる。
確率的方策全体のパラメータベクトル$θ$は、$W, C$の要素を並べたベクトルとなる。

ここで書いた3つの確率的方策はあくまでも典型的な例であり、他のモデルを採用することもできる。
例えばニューラルネットワーク等のモデルで確率的方策を定義することも可能。

## ②方策の評価

確率的方策のパラメータ$θ$によって定まる方策を評価する必要がある。ここで評価の指標として用いるのは「収益」である。
収益は、将来に渡って得られる報酬の平均(平均報酬)や割引和(割引報酬和)で与えられ、これを最大化することが強化学習の目的であった。

方策勾配に基づく強化学習では、ある確率的方策の平均的な収益、すなわち期待収益(平均報酬や割引報酬和の期待値)によって、確率的方策の良さを量ることにする。
具体的には、初期ステップからの平均報酬の期待値を目的関数として、これを最大化することを目指す。



```math
J(θ;s_{0}) = E[G_{0}|S_{0}=s_{0}] = E[\sum_{t=1}^{∞}\gamma^{t-1}R_{t}|S_{0}=s_{0}]
```
$$\style{align: center; font-family: "Helvetica Neue",Helvetica,"ヒラギノ角ゴ ProN W3","Hiragino Kaku Gothic ProN","メイリオ",Meiryo,sans-serif}{\text{[目的関数(平均報酬の期待値)]}}$$


## ③方策の更新

方策の良さを評価するための目的関数を定義することができたため、その目的関数を最大化するような確率的方策のパラメータ$θ$を求めればよい。
勾配法による数値解析でより良い方策を求めることになる。勾配法では、ある時点$t$のパラメータ$θ^{t}$を目的関数の$θ$に関する微分で得られる勾配方向に以下の式で更新していく。



```math
θ^{t+1} = θ^{t} + {\eta}{\nabla}_{θ}J(θ)
```
$$\style{align: center; font-family: "Helvetica Neue",Helvetica,"ヒラギノ角ゴ ProN W3","Hiragino Kaku Gothic ProN","メイリオ",Meiryo,sans-serif}{\text{[パラメータθの更新式]}}$$

ここで、$\eta$は学習率とよばれる更新幅を決定するパラメータである。そして、${\nabla}_{θ}J(θ)$ は 以下で定義される。
以下の式は$θ$に関する勾配で、偏微分を使って表すことができる。

```math
{\nabla}_{θ}J(θ) = [\frac{\partial J(θ)}{\partial θ_{1}},...,\frac{\partial J(θ)}{\partial θ_{d}}]^T
```
$$\style{align: center; font-family: "Helvetica Neue",Helvetica,"ヒラギノ角ゴ ProN W3","Hiragino Kaku Gothic ProN","メイリオ",Meiryo,sans-serif}{\text{[パラメータθのの勾配]}}$$

この式は行動価値関数$Q(s,a)$を用いて次のように表せる。これを方策勾配定理と言う。

```math
{\nabla}_{θ}J(θ) = E_{π_{θ}}[{\frac{\partial π_{θ}(a|s)}{\partial θ}} {\frac{1}{π_{θ}(a|s)}}Q^{π}(s,a)]=E_{π_{θ}}[{\frac{\partial logπ_{θ}(a|s)}{\partial θ}} Q^{π}(s,a)]
```
$$\style{align: center; font-family: "Helvetica Neue",Helvetica,"ヒラギノ角ゴ ProN W3","Hiragino Kaku Gothic ProN","メイリオ",Meiryo,sans-serif}{\text{[方策勾配定理]}}$$

E[・]は行動$s$と行動$a$に関しての期待値を表しており、ここでの行動価値関数は$Q^{π}(s,a) = E[\sum_{k=1}^{∞}\gamma^{k-1}R_{t+k}|s_{t}=s, a_{t}=a, π]$である。

# まとめ
方策勾配に基づく強化学習アルゴリズムを使用する意義や、学習の流れを解説しました。
次の記事では、実際に使用されている具体的なアルゴリズムを例に取りながら、引き続き解説していきます。