---
# System prepended metadata

title: '**An Outsider’s Tour of Reinforcement Learning (Part6)**'

---

# **An Outsider’s Tour of Reinforcement Learning (Part6)**

[TOC]

## [The Policy of Truth](http://www.argmin.net/2018/02/20/reinforce/)
 

### Policy Gradient

policy gradient 指的是直接輸出動作機率，然後經由網路找出好的策略梯度方向進而慢慢改變神經元的權重使得網路輸出的策略達到最佳狀態，因此若此環境有n的動作的話，那麼輸出神經元就有n個，每個神經元的値分別代表不同動作的機率，因此選擇的動作的時候可以依據機率分布來挑選，這樣的學習方式稱為 policy gradient。

&emsp;

:::info
如果一個動作得到的 reward 多，那們就使其出現的機率增加，如果一個動作得到的 reward 少，我們就使其出現的機率減小。
:::

&emsp;
&emsp;


![](https://i.imgur.com/ExsL4Xz.png)

$p_θ$(τ) 為得到Trajectory的機率

$p_θ$($a_t$|$s_t$) 為在 $s_t$ 狀態下採取 $a_t$ 這個動作的機率
 
$p_.$($s_{t+1}$|$s_t$,$a_t$) 為在 $s_t$ 狀態並且採取 $a_t$ 的動作下與環境互動能得到 $s_{t+1}$ 的機率
&emsp;

![](https://i.imgur.com/9Ne0GgD.png)
&emsp;
Expected reward 則是使用期望值的概念來算出的，窮舉所有可能出現的 Trajectory 並且把相對應的值與相對應的機率相乘做加總的動作就是網路採取 θ 這組參數所得到的 Expected reward

:::info
Policy gradient 想解決的問題就是找到參數 θ 使得每次與環境互動時都可以得到最佳策略使之獲得的 Expected reward 能極大化
:::

**找出 θ 的微分方向並且移動使得 Expected reward 越來越大**

![](https://i.imgur.com/n3X7d2X.png)
![](https://i.imgur.com/YLrQdR9.png)



![](https://i.imgur.com/VDfMzkI.png)
&emsp;
&emsp;
![](https://i.imgur.com/hD4dtKq.png)
&emsp;
&emsp;

### Monte-Carlo Policy Gradient (REINFORCE)

Update parameters by stochastic gradient ascent
&emsp;
&emsp;
![](https://i.imgur.com/T20ocwD.png)

![](https://i.imgur.com/FNIexuk.png)



**Policy gradient 的優缺點**
:::success
優點 :+1: 

- 比較好的收斂特性
- 能應用於高維度或是連續動作的空間
- 可以學習隨機的策略
&emsp;

缺點 :-1: 
- 通常收斂到局部最優而非全域最優
- 評估一個策略的效率通常不高，且會有較高的 variance
:::
 
 
:::warning
對於任何的 application，如果 policy gradient 是成功的話，是否存在一個比它更簡單更好用的演算法 ? 
:::


[.](https://hackmd.io/55fbbfyDRriD1jtQaF-jIA?view)



參考資料 : 

http://www.argmin.net/2018/02/20/reinforce/

https://www.youtube.com/watch?v=y8UPGr36ccI&list=PLJV_el3uVTsPy9oCRY30oBPNLCo89yu49&index=34

https://www.youtube.com/watch?v=CXgbekl66jc&list=PLJV_el3uVTsPy9oCRY30oBPNLCo89yu49&index=1