強化學習能夠按照方法學習策略來劃分紅基於值和基於策略兩種。而在深度強化學習領域將深度學習與基於值的Q-Learning算法相結合產生了DQN算法,經過經驗回放池與目標網絡成功的將深度學習算法引入了強化學習算法。其中最具表明性分別是Q-Learning與Policy Gradient算法,將Q-Learning算法與深度學習相結合產生了Deep Q Network,然後又出現了將兩種方式的優點結合在一塊兒的更爲優秀Actor Critic,DPG, DDPG,A3C,TRPO,PPO等算法。而本文所採用的是目前效果較好的近端策略優化算法PPO。算法
PPO算法思想
PPO算法是一種新型的Policy Gradient算法,Policy Gradient算法對步長十分敏感,可是又難以選擇合適的步長,在訓練過程當中新舊策略的的變化差別若是過大則不利於學習。PPO提出了新的目標函數能夠再多個訓練步驟實現小批量的更新,解決了Policy Gradient算法中步長難以肯定的問題。其實TRPO也是爲了解決這個思想可是相比於TRPO算法PPO算法更容易求解。編程
PolicyGradient回顧
從新回顧一下PolicyGradient算法,Policy Gradient不經過偏差反向傳播,它經過觀測信息選出一個行爲直接進行反向傳播,固然出人意料的是他並無偏差,而是利用reward獎勵直接對選擇行爲的可能性進行加強和減弱,好的行爲會被增長下一次被選中的機率,很差的行爲會被減弱下次被選中的機率。
策略以下圖方式定義,詳細公式信息接下來會介紹。網絡
公式推導
PolicyGradient算法原來是On-Policy的,(感謝指正,更正:PPO也是on-policy)。機器學習
important sampling不能算是off-policy,PPO裏面的 important sampling
採樣的過程仍然是在同一個策略生成的樣本,並未使用其餘策略產生的樣本,所以它是on-policy的。而DDPG這種使用其餘策略產生的數據來更新另外一個策略的方式纔是off-policy函數
- On-Policy:只與相同的環境下進行交互學習
- off-Policy:能夠與學習本身環境下的經驗也能夠得到其餘環境下的經驗
策略τ的回報指望以下學習
原來是使用 與環境交互,當
更新時就對訓練數據從新採樣,那要變成off-policy根據以前的經驗就須要使用另一個網絡來幫助採樣,就像DQN裏的targetNet,如今目標是使用
採樣來訓練
被固定因此從新使用採樣數據。
上圖中所示,PolicyGradient是model-free的因此不知道模型的機率,因此只能經過與真實環境數據的分佈P(x)中去採樣加和平均求指望。但如今咱們爲了把它變成offpolicy,就不能直接從P(x)中去直接採樣。這時候把指望等價寫成而後引入新的採樣分佈q(x)進行變換
,這時候咱們發現這和最大熵模型引入隱含變量的套路有點類似,而後就能夠把原來x~p的指望改寫成x~q的指望。因此最終能夠獲得優化
上述推導就是important sample的技巧。在這個式子中其中的就是important weight。經過這個公式咱們也能夠想象獲得,若是採樣的分佈p與真實的分佈q差得不少,那麼確定會致使兩個指望不一致。下圖經過舉了一個例子來說解
上圖的p(x)與q(x)差別很大左邊爲負右邊爲正,當採樣次數不多右邊採樣不少的狀況,就會得出與右邊爲正的錯誤結果,可是若是在左邊也被採樣到一個樣本時這個這個時候由於做爲權重修正就至關於給左邊的樣本一個很大的權重,就能夠將結果修正爲負的。因此這就是 important weight的做用。可是咱們也能看出來,採樣次數要足夠多,萬一採樣次數少只採到了一邊那就涼涼了。
因此有了上述的 Important Sampling的技巧咱們就能夠將原來的on-policy變成off-policy了。url
上文提到咱們不但願與
的差距過大,因此要想辦法約束它。KL散度也叫相對熵,能夠用來衡量兩個分佈之間的差別性。因此最直接的辦法,就是對目標函數增長一個約束條件讓他的KL散度小於
。這個辦法其實就TRPO的思想啦~spa
直接求解TRPO這種帶約束的問題是十分複雜的,他與PPO算法的效果差很少,可是PPO將KL散度做爲懲罰項,更加容易求解。.net
另外還有一種PPO2算法效果比PPO要好一些,以下圖所示利用clip函數將其固定在了必定的範圍以內,一樣也能夠起到限制約束
的做用。
承接Matlab、Python和C++的編程,機器學習、計算機視覺的理論實現及輔導,本科和碩士的都可,鹹魚交易,專業回答請走知乎,詳談請聯繫QQ號757160542,非誠勿擾。
本文同步分享在 博客「於小勇」(CSDN)。
若有侵權,請聯繫 support@oschina.cn 刪除。
本文參與「OSC源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。