PPO

On-policy VS Off-policy

  • On-policy: The agent learned and the agent interacting with the environment is the same.
  • Off-policy: The agent learned and the agent interacting with the environment is different.


On-policy \rightarrow Off-policy

  • 使用\pi_\theta來手機數(shù)據(jù),當(dāng)\theta已經(jīng)更新,我們要重新采樣訓(xùn)練數(shù)據(jù)
  • 目標(biāo):用\pi_{\theta^\prime}采樣到的數(shù)據(jù)來訓(xùn)練\theta,\theta^\prime是固定的,所有我們可以重復(fù)使用采樣到的數(shù)據(jù)

Importance Sampling

E_{x\sim p\lbrack f(x)\rbrack}代表從分布p中取樣本x送入f(x)并求期望,可以近似為從p中取N個x^i,然后代入f(x)求平均,即


現(xiàn)在假設(shè)我們不能從分布 p 中 sample 數(shù)據(jù),只能從分布 q 中 sample,這樣不能直接套上述近似。而要用:

即從p分布sample數(shù)據(jù)變?yōu)閺膓分布sample數(shù)據(jù),只需在后面乘上一個weight,即

Importance Sampling 存在的問題:


通過上述公式看出,即便兩者期望值一樣,但是他們的方差(variance)不同,兩式的區(qū)別在于紅框那里多了一項。

Issue of Importance Sampling


這幅圖具體說明了上述問題:藍線代表 p的分布,綠線代表 q 分布,紅線代表f(x)函數(shù),現(xiàn)在我們要從 p、q 分布中 sample 出 x ,投到f(x)中計算。

可以看出 p、q 分布對于f(x)的計算而言差別是很大的。如果sample次數(shù)不夠多,會造成只sample到每一種分布中,數(shù)量比較多的那些樣本,比如從p中sample,會容易sample到使f(x)小于0的x;從q中sample,會容易sample到使f(x)大于0的x。


可以看到,sample次數(shù)夠多的時候,可能就能sample到左邊的點,在這里可以人為給它設(shè)定一個很大的weight。
這樣sample到左邊綠線那個點的時候,會得到一個很大的值,這樣就會將原本應(yīng)該是正的f(x)拉回負的。
但這個前提是sample足夠多次。如果sample次數(shù)不夠多,就會造成

有很大的差別,這就是importance sampling的不足。
回到一開始,講了importance sampling后,我們知道如何由θ變?yōu)棣取?。?br>

使用 off-policy,使用梯度做參數(shù)更新時要注意的點:

  • A^\theta(a_t,s_t)是總計的reward減掉bias,即A^\theta(a_t,s_t)=R(\tau^n)-b,就是衡量在狀態(tài)s_t下采取行動用做a_t的回報。A^{\theta^\prime}(a_t,s_t)是根據(jù)sample到的數(shù)據(jù)計算
  • 因為是\pi_{\theta^\prime}與環(huán)境做互動,所以A^\theta(a_t,s_t)要變?yōu)?img class="math-inline" src="https://math.jianshu.com/math?formula=A%5E%7B%5Ctheta%5E%5Cprime%7D(a_t%2Cs_t)" alt="A^{\theta^\prime}(a_t,s_t)" mathimg="1">
  • 這里我們估計\frac{p_\theta(s_t)}{p_{\theta^\prime}(s_t)}=1,因為猜測 state 的出現(xiàn)與θ關(guān)系不大,況且這一項本來就無法計算,因為state出現(xiàn)的概率我們是不能控制或估計的。
  • \frac{p_\theta(a_t|s_t)}{q_{\theta^\prime}(a_t|s_t)}可以直接計算,由此可以得到新的目標(biāo)函數(shù):
  • 上標(biāo)\theta^\prime代表跟環(huán)境互動的,\theta是要更新的參數(shù)。

PPO / TRPO 算法

\theta^\prime\theta相差太多,就會導(dǎo)致結(jié)果錯誤
為了防止\theta^\prime\theta相差太多,就可以使用PPO算法


在原來的目標(biāo)函數(shù)后再加一項約束值 ,這個約束就像深度學(xué)習(xí)中的正則化項
這一項和衡量和的差距,這里的差距指的是actor行為上的差距而不是參數(shù)上的差距。
下面這個是TRPO算法:

TRPO和PPO的區(qū)別:
TRPO在作梯度上升的時候,只對

求梯度上升,而

只作為一個額外的約束,很難計算。
而PPO的約束是放到式子中減去的一項,比較容易算。
所以,為了方便使用,而且兩者性能差不多,就直接使用PPO吧


PPO中和學(xué)習(xí)率有點類似,需要手動設(shè)置。我們可以**設(shè)定兩個閾值。經(jīng)過一次參數(shù)更新后,查看KL的值

  • 如果大于最大值,說明\theta^\prime\theta相差太大,懲罰項沒有發(fā)揮作用,需要加大\beta,加大懲罰。
  • 反之則減小\beta,減小懲罰。
  • 綠線代表min()函數(shù)的第一項的圖像,藍線代表min()函數(shù)的第二項的圖像,紅線代表最終min()函數(shù)的輸出結(jié)果。
  • 若A>0,則取下圖左邊紅線部分,若A<0則取下圖右邊紅色部分。
  • 這個式子其實就是讓 \theta^k\theta不要差距太大。
    • 如果A(advantage function)>0,代表當(dāng)前的action是好的,所以我們希望越p_\theta(s_t|a_t)大越好,但是p_\theta(s_t|a_t)p_{\theta^k}(s_t|a_t)不能相差太多,所以設(shè)置了一個上界1+\epsilon;
    • A<0,代表當(dāng)前的action是不好好的,所以我們希望越p_\theta(s_t|a_t)越小越好,所以設(shè)置了一個下界1-\epsilon

TRPO / PPO2 等方法的實驗效果:


簡單說一下,PPO(Clip)是紫色的線,可以看到每個任務(wù)中的效果都是名列前茅。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容