近日,openai 發布了一種新型的強化學習演算法:近端策略優化(proximal policy optimization,簡稱 ppo),這種演算法不但在效能上比肩甚至超過當前最先進的方法,而且更容易實現和除錯。由於 ppo 易於使用並且效能優秀,openai 已將其設為預設的強化學習演算法。
近端策略優化(ppo)可以讓我們在極具挑戰性的環境中訓練 ai 策略。如上所示的 roboschool(進行機械人模擬的開源軟體,整合在 openai gym 中),當其中的智慧型體嘗試捕獲目標(粉紅色球體)時,它需要學習如何行走、跑動和轉向。在被白色方塊撞擊後,它還需要學習如何借助自身力量恢復平衡,在被撞倒時,還要學習如何從草地上站起來。
**位址
研究人員試圖使用 trpo 、acer 等方法約束或優化策略更新的步長大小,藉以消除這些弊端。但是這些方法本身也存在缺陷,acer 方法要比 ppo 方法複雜的多,它需要額外新增**來進行 off-policy 修正以及乙個 replay buffer,但它在 atari 基準上的表現僅僅比 ppo略好。
trpo 雖然在連續控制任務中非常有用,但它與那些在策略和值函式或輔助損失函式(auxiliary losses)間共享引數的演算法不易相容,此類演算法中有些常被用於解決 atari 和其他視覺輸入很重要的領域中的問題。
近端策略優化(ppo)
通過監督學習,我們可以輕鬆地實現 cost function,並在 cost function 上執行梯度下降。我們確信,只需稍微除錯幾次超引數,就能得到非常優秀的結果。
在強化學習上取得成功並不容易,演算法中通常具有許多難以除錯的活動模組,為了獲得好的結果,需要花費大量的精力來調整這些模組。ppo 演算法在實現難度、樣本複雜度和除錯難度之間找到了乙個平衡點,它嘗試在每一步長上計算乙個最小化 cost function 的更新,同時確保與先前策略的偏差維持在較小水平。
我們先前曾詳細介紹了 ppo 的乙個變體,該變體使用乙個自適應 kl 懲罰項來控制每次迭代中的策略改變。這一新變體使用了一種新的目標函式,該目標函式很少在其他演算法中使用:
該目標函式實現了一種與隨機梯度下降法相相容的置信域(trust region)更新方法,同時還通過移除 kl 懲罰項和不進行適應性更新,簡化了演算法。在測試中,該演算法在連續控制任務中表現出了最佳效能,並且在 atari 上幾乎比肩 acer 演算法的效能,但是它實現起來卻簡單的多。
可控制的複雜機械人
利用 ppo 訓練的智慧型體可以制定靈活的移動策略,在朝目標所在位置移動時可以臨時進行轉向和傾斜。
我們借助用 ppo 訓練出的策略開發出了互動式智慧型體。借助這種智慧型體,我們可以使用鍵盤在 roboschool 環境中為機械人設定新的目標位置;雖然輸入序列與訓練智慧型體所用的序列不同,但是它可以設法進行泛化(generalize)。
我們還使用 ppo 來教複雜的模擬機械人學習行走,如波士頓動力(boston dynamics)公司研發的「atlas」模型;此模型有 30 個不同的關節,而雙足機械人只有 17 個。其它研究人員還使用 ppo 訓練機械人,使其在跨越障礙時可以展現出驚人的跑酷技巧。
基準:ppo 和 trpo
發布的基準包括 ppo 和 trpo 的可擴充套件並行實現工具,它們兩個都使用 mpi 來進行資料傳輸,而且使用的都是 python3 和 tensorflow。我們還加入了策略的預訓練版本,用以在 roboschool agent zoo 中訓練上述機械人。
openai 正在尋找可以幫助他們構建和優化強化學習演算法**庫的人員。如果你對強化學習,標準檢查程式,深入實驗以及開源有興趣,以下**進行申請:並且註明你已閱讀關於 ppo 的文章。
強化學習演算法 Q learning
q learning 演算法的步驟 1 給定引數lamda和獎勵矩陣r 2 令q為0 3 for each episode 3.1 隨機選擇初始的狀態s 3.2 未達到目標狀態,則執行以下幾步 1 在當前狀態s的所有可能行為中選取乙個行為a 2 按照q s,a r s,a lamda max,其中s...
強化學習 Q learning演算法
我們以乙個迷宮尋寶的遊戲為例來看什麼是 q learning。在這個遊戲中,agent 從乙個給定的位置開始,即起始狀態。在不穿越迷宮牆壁的前提下,在每個狀態時,都可以選擇上下左右四個方向走一步,或者原地不動,上下左右這四個動作的每乙個都會將 agent 帶到網格的乙個新的單元格,即新的狀態,在迷宮...
強化學習之Q learning演算法
以前在阿里雲上面搭了乙個wordpress部落格,最近快畢業了,阿里雲真的很貴,所以轉到csdn上寫部落格,主要是為了方便以後查詢。q learning演算法是強化學習的一種演算法,強化學習目前主要應用到遊戲中,主要是目的是訓練乙個知道怎麼做才能得到高分的model。強化學習的介紹很多,李巨集毅在上...