OpenAI 提出強化學習近端策略最佳化,可替代策略梯度法

思源發表於2017-07-21

近日,OpenAI 釋出了一種新型的強化學習演算法,近端策略最佳化(Proximal Policy Optimization/PPO)演算法,該演算法的實現和調參十分簡單,並且它的效能甚至要超過現階段最優秀的方法。因為該演算法實現非常簡單並且有優秀的效能,PPO 已經成為了 OpenAI 預設使用的強化學習演算法。


近端策略最佳化(PPO)可以讓我們在複雜和具有挑戰性的環境中訓練 AI 策略。如上所示的 Roboschool(進行機器人模擬的開源軟體,整合在 OpenAI Gym 中),其中智慧體嘗試抵達粉紅色的目標點,因此它需要學習怎樣走路、跑動和轉向等。同時該智慧體不僅需要學會怎樣從小球的打擊中保持平衡(利用自身的動量),在被撞倒後還需要學會如何從草地上站起來。

  • 程式碼:https://github.com/openai/baselines
  • 論文:https://openai-public.s3-us-west-2.amazonaws.com/blog/2017-07/ppo/ppo-arxiv.pdf

策略梯度法(Policy gradient methods)是近來使用深度神經網路進行控制的突破基礎,不論是影片遊戲還是 3D 移動或者圍棋控制等,它們都基於策略梯度法。但是透過策略梯度法獲得優秀的結果是十分困難的,因為它對步長大小的選擇非常敏感。如果迭代步長太小,那麼訓練進展會非常慢,但如果迭代步長太大,那麼訊號將受到噪聲的強烈干擾,因此我們會看到效能會急劇降低。同時這種策略梯度法有非常低的樣本效率,它需要數百萬(或數十億)的時間步驟來學習一個簡單的任務。

研究人員希望能透過約束或其他最佳化策略更新(policy update)大小方法來消除這些缺陷,如 TRPO 和 ACER 等方法。這些方法都有其自己的權衡,ACER 方法要比 PPO 方法複雜地多,它需要額外新增程式碼來修正離策略(off-policy)和重構緩衝器,但它在 Atari 基準上僅僅比 PPO 好一丟丟。TRPO 雖然對連續控制任務非常有用,但它並不容易與那些在策略和值函式或輔助損失函式(auxiliary losses)間共享引數的演算法相容,即那些用於解決 Atari 和其他視覺輸入很重要領域的演算法。

近端策略最佳化(PPO)

透過監督學習,我們可以輕鬆地計算實現成本函式,並在成本函式上執行梯度下降。我們應該對 PPO 非常有信心,因為它只需要少量的調參就能實現非常優秀的結果。強化學習成功的路徑並不明顯,演算法通常具有許多難以除錯的活動模組,這些模組需要大量的精力進行調整才能獲得良好的效果。PPO 演算法很好地權衡了實現簡單性、樣本複雜度和調參難度,它嘗試在每一迭代步計算一個更新以最小化成本函式,在計算梯度時還需要確保與先前策略有相對較小的偏差。

我們以前詳細說明了一個 PPO 變體,即使用一個適應性 KL 罰項來控制每一次迭代中的策略改變。這一新變體使用了一種新的目標函式,該目標函式很少在其他演算法中出現:

OpenAI 提出強化學習近端策略最佳化,可替代策略梯度法

該目標函式實現了一種與隨機梯度下降相匹配的置信域(Trust Region)更新方法,它同時還移除了 KL 罰項以簡化演算法和構建適應性更新。在測試中該演算法在連續控制任務中取得了最好的效能,並且儘管實現起來非常簡單,但它同樣在 Atari 上獲得了與 ACER 演算法相匹配的效能。

可控制的複雜機器人


用 PPO 訓練的智慧體發揮出了靈活的移動策略,使它們可以在朝目標地點移動的時候臨時進行轉向和傾斜。

我們已經在用 PPO 訓練出的策略的基礎上創造了互動式智慧體,即我們可以使用鍵盤在 Roboschool 環境中為機器人設定新的目標地點;儘管輸入序列與智慧體訓練的序列不同,它也試圖進行泛化(generalize)。

我們也使用 PPO 來教複雜的模擬機器人如何進行走動,像上方所示的波士頓動力的「Atlas」模型;此模型有 30 個不同的關節,而雙足機器人有 17 個。其它研究人員已經使用 PPO 來訓練機器人,當其經過障礙時,可以展現出引人注目的跑酷技巧。

基準:PPO 和 TRPO

基準的釋出包括 PPO 和 TRPO 的可擴充套件且並行的實現工具,它們兩個都使用 MPI 來進行資料傳輸,而且都使用的是 Python3 和 TensorFlow。我們也加入了策略的預訓練版本,用來在 Roboschool agent zoo 中訓練上述機器人。


論文:近端策略最佳化演算法(Proximal Policy Optimization Algorithms)

OpenAI 提出強化學習近端策略最佳化,可替代策略梯度法

論文地址:https://openai-public.s3-us-west-2.amazonaws.com/blog/2017-07/ppo/ppo-arxiv.pdf

摘要:我們為強化學習提出了一種新型策略梯度法,它可以透過與環境的互動而在抽樣資料中轉換,它還能使用隨機梯度下降最佳化一個「surrogate」目標函式。而標準策略梯度法為每一個資料樣本執行一個梯度更新,因此我們提出了一種新的目標函式,它可以在多個 epoch 中實現小批次(minibatch)更新。這種新方法我們稱之為近端策略最佳化(PPO)演算法,該演算法從置信域策略最佳化(TRPO)演算法獲得了許多啟發,但它更加地易於實現、廣泛和有更好的樣本複雜度(經驗性)。我們在一組基準任務上測試 PPO 的演算法,包括了模擬機器人移動和 Atari 遊戲,這些基準測試展示了 PPO 演算法要比其他線上策略梯度法更優秀,該演算法總體上在樣本複雜度、簡單性和實際時間(wall-time.)中有非常好的均衡。

OpenAI 正在尋找可以幫助他們建造和最佳化強化學習演算法程式碼庫的合作者。如果你對強化學習,標準檢查程式,深入實驗以及開源有興趣,歡迎你來申請(https://jobs.lever.co/openai/5c1b2c12-2d18-42f0-836e-96af2cfca5ef),並且註明你已經閱讀基準 PPO 的相關內容。

原文地址:https://blog.openai.com/openai-baselines-ppo/

相關文章