強化學習---TRPO/DPPO/PPO/PPO2


時間線:

OpenAI 發表的 Trust Region Policy Optimization

Google DeepMind 看過 OpenAI 關於 TRPO后, 2017年7月7號,搶在 OpenAI 前面 把 Distributed PPO給先發布了. 

OpenAI 還是在 2017年7月20號 發表了一份拿得出手的 PPO 論文 。(ppo+ppo2)

 Proximal Policy Optimization

PPO是off-policy的方法。

跟環境互動的agent與用來學習得agent 不是同一個agent,可以理解為PPO 是一套 Actor-Critic 結構, Actor 想最大化 J_PPO, Critic 想最小化 L_BL

利用importance sampling

 

 通過KL散度加一個懲罰,使梯度更新的時候幅度不要太大。

總的來說 PPO 是一套 Actor-Critic 結構, Actor 想最大化 J_PPO, Critic 想最小化 L_BL. Critic 的 loss 好說, 就是減小 TD error. 而 Actor 的就是在 old Policy 上根據 Advantage (TD error) 修改 new Policy, advantage 大的時候, 修改幅度大, 讓 new Policy 更可能發生. 而且他們附加了一個 KL Penalty (懲罰項, 不懂的同學搜一下 KL divergence), 簡單來說, 如果 new Policy 和 old Policy 差太多, 那 KL divergence 也越大, 我們不希望 new Policy 比 old Policy 差太多, 如果會差太多, 就相當於用了一個大的 Learning rate, 這樣是不好的, 難收斂.

 

 Trust Region Policy Optimization

ppo是吧懲罰項放在了目標函數中,而TRPO 是以 constrain的形式。不好求解。

 

 

 

PPO2

看圖,橫坐標是   ,當A>0時候,獎勵是正的,更新的幅度越大越好,但是為了

加入懲罰,所以更新的幅度在橫坐標大於時候,就不增加同一個幅度,所以是一條橫線,不會無限制增大。

同理,當A<0時候,橫坐標是更新的幅度,因為獎勵是負數,正常應該 更新是越小越好,但是不能無限小啊,所以假如

懲罰就是不能無限小。

 



 

Distributed Proximal Policy Optimization

 摘自:https://morvanzhou.github.io/tutorials/machine-learning/reinforcement-learning/6-4-DPPO/

Google DeepMind 提出來了一套和 A3C 類似的並行 PPO 算法.  paper 

取而代之, 我覺得如果采用 OpenAI 的思路, 用他那個 “簡陋” 偽代碼, 但是弄成並行計算倒是好弄點. 所以我就結合了 DeepMind 和 OpenAI, 取他們的精華, 寫下了這份 DPPO 的代碼.

總結一下我是怎么寫的.

  • 用 OpenAI 提出的 Clipped Surrogate Objective
  • 使用多個線程 (workers) 平行在不同的環境中收集數據
  • workers 共享一個 Global PPO
  • workers 不會自己算 PPO 的 gradients, 不會像 A3C 那樣推送 Gradients 給 Global net
  • workers 只推送自己采集的數據給 Global PPO
  • Global PPO 拿到多個 workers 一定批量的數據后進行更新 (更新時 worker 停止采集)
  • 更新完后, workers 用最新的 Policy 采集數據

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM