On/Off-policy
- On-policy
- 學習的 agent 和與環境互動的 agent 是同一個
- Off-policy
- 學習的 agent 和與環境互動的 agent 是不同個
想從 On-policy 轉 Off-policy
- On-policy 每次都要重新蒐集資料,很花時間
- 由另一個 $\pi_{\theta^{'}}$ 去 train $\theta$,$\theta^{'}$是固定的,所以我們可以 re-use sample data
Importance Sampling
-
是一個 general 的想法,不限於 RL
-
$E_{x \text{\textasciitilde} p}[f(x)]\approx \frac{1}{N}\displaystyle\sum_{i=1}^N f(x^i)$
- $x^i$ is sampled from p(x)
-
我們遇到的問題是沒辦法從 p 來 sample data,只能透過 q(x) 去 sample $x^i$
-
可以把上式改寫成 $E_{x \text{\textasciitilde} p}[f(x)]=E_{x \text{\textasciitilde} q}[f(x)\frac{p(x)}{q(x)}]$
Issue
-
雖然理論上 q 可以任意選,只要不要 q(x) 是 0 的時候 p(x) 不是 0,實作上 p 和 q 不能差太多,不然會有問題
- 這兩項的 Variance 不一樣,如果 p 除以 q 差距很大,右邊的 Variance 會很大,如果 sample 不夠多次就會有問題
轉換
-
原本
- $\triangledown \overline{R_{\theta}}=E_{\tau \text{\textasciitilde}p_{\theta}(\tau)}[R(\tau)\triangledown log p_{\theta} (\tau)]$
-
改為
- $\triangledown \overline{R_{\theta}}=E_{\tau \text{\textasciitilde}p_{\theta^{'}}(\tau)}[\frac{p_{\theta}(\tau)}{p_{\theta^{'}}(\tau)}R(\tau)\triangledown log p_{\theta} (\tau)]$
- 從 $\theta^{'}$ sample 資料
- 更新 $\theta$ 多次
Advantage function
-
原本
- $E_{(s_t,a_t)\text{\textasciitilde}\pi_{\theta}}[A^{\theta}(s_t,a_t)\triangledown log p_\theta(a_t^n|s_t^n)]$
-
改為
- $E_{(s_t,a_t)\text{\textasciitilde}\pi_{\theta^{'}}}[\frac{P_\theta(s_t,a_t)}{P_{\theta^{'}}(s_t,a_t)}A^{\theta^{'}}(s_t,a_t)\triangledown log p_\theta(a_t^n|s_t^n)]$
- 要注意 Advantage 的結果要由 $\theta^{'}$ 得出,是 $\theta^{'}$在和環境互動
-
新的 objective function
- $J^{\theta^{'}}(\theta)=E_{(s_t,a_t)\text{\textasciitilde}\pi_{\theta^{'}}}[\frac{p_\theta(a_t|s_t)}{p_{\theta^{'}}(a_t|s_t)}A^{\theta^{'}}(s_t,a_t)]$
PPO
- 確保 $\theta$ 和 $\theta^{'}$ 不會差太多
- $J_{PPO}^{\theta^{'}}(\theta)=J^{\theta^{'}}(\theta)-\beta KL(\theta, \theta^{'})$
前身 TRPO
- Trust Region Policy Optimization
- $J_{TRPO}^{\theta^{'}}(\theta)=E_{(s_t,a_t)\text{\textasciitilde}\pi_{\theta^{'}}}[\frac{p_\theta(a_t|s_t)}{p_{\theta^{'}}(a_t|s_t)}A^{\theta^{'}}(s_t,a_t)], KL(\theta, \theta^{'})<\delta$
- constrain 很難處理
KL divergence
- 這邊不是 $\theta$ 和 $\theta^{'}$ 參數上的距離,而是 behavior 的距離
- 參數上的距離是指這兩個參數有多像
- 是給同樣的 state 生出 action 的 distribution 要像
algorithm
- 初始參數 $\theta^0$
- 每個 iteration
-
用 $\theta^k$ 和環境互動,蒐集{$s_t,a_t$},並計算 advantage $A^{\theta^k}(s_t,a_t)$
-
找出 theta 最佳化 $J_{PPO}(\theta)$
- $J_{PPO}^{\theta^{k}}(\theta)=J^{\theta^{k}}(\theta)-\beta KL(\theta, \theta^{k})$
- 可以更新很多次
-
動態調整 $\beta$
- Adaptive KL Penalty
- 設可接受的 KL 數值範圍
- if $KL(\theta,\theta^k)>KL_{max},\text{increase} \beta$
- if $KL(\theta,\theta^k)<KL_{min},\text{decrease} \beta$
-
PPO2
-
PPO
- $J_{PPO}^{\theta^{k}}(\theta)=J^{\theta^{k}}(\theta)-\beta KL(\theta, \theta^{k})$
-
PPO2
- $J_{PPO2}^{\theta^{k}}(\theta)\approx \displaystyle\sum_{(s_t,a_t)}min(\frac{p_{\theta}(a_t|s_t)}{p_{\theta^k}(a_t|s_t)}A^{\theta^k}(s_t,a_t), \\ clip(\frac{p_{\theta}(a_t|s_t)}{p_{\theta^k}(a_t|s_t)}, 1-\varepsilon, 1+\varepsilon)A^{\theta^k}(s_t,a_t))$