奪魁NeurIPS 2018強化學習大賽,百度正式釋出RL模型庫和演算法框架PARL
專案地址如下:https://github.com/PaddlePaddle/PARL
PARL 框架的名字來源於 PA ddlepaddle R einfocement L earning,是一款基於百度PaddlePaddle 打造的 深度強化學習 框架。PARL 與現有強化學習工具和平臺相比,具有更高的可擴充套件性、可復現性和可複用性,支援大規模並行和稀疏特徵,能夠快速 對工業級應用案例的驗證。
為了幫助使用者快速搭建可以和環境互動的機器人,PARL 抽象出數個基礎類,包括 Model、Algorithm、Agent 等。
Model 類負責強化學習演算法中的網路前向計算(forward)部分,通常巢狀在 Algorithm 類中。
Algorithm 類則定義了網路的更新機制(backward),通常屬於一個 Agent。
Agent 類負責和環境進行互動,負責資料 I/O,並且收集資料訓練集下的 algorithm。
通過這樣的設計方案,PARL 保證了演算法的可擴充套件性:針對同一個場景,使用者想調研不同的網路結構對演算法效果影響的時候,比如調研 RNN 建模或者 CNN 建模,只需要重寫 model 部分即可;針對不同場景想用同一個演算法調研的時候,也是也只需重寫 model 即可。可復現性主要體現在框架提供的 algorithm 集合上,在下一段和複用性一起結合理解。
此外,PARL 的這種結構設計方式也保證了高複用性。倉庫內的提供了大量經典演算法的例子 (algorithms 目錄內), 包括主流的 DQN 、DDQN、Dueling DQN、DDPG、PPO 等,值得注意的是,這些演算法由於和網路結構進行了解耦(網路結構的定義在 Model 類中),因此,演算法並不針對特定任務,而相當於一個相當通用的演算法抽象。使用者在通過 PARL 搭建強化學習演算法來解決自己目前遇到的問題時,可以直接 import 這些經典演算法,然後只需要定義自己的網路前向部分,即可在短時間內構建出經典的 RL 演算法。這種高複用性在極大地降低了使用者的開發成本之外,也讓 PARL 提供的多個演算法的完整的 超引數 列表得以確保倉庫內模型具備復現論文級別指標的能力。
下圖是 PARL 官方提供的一個構建示例,展示瞭如何快速構建可以解決 Atari 遊戲的 DQN 模型。使用者只需要定一個前向網路(Model 類),然後呼叫框架演算法集合裡面的 DQN algorithm 即可構建一個經典 DQN 演算法了。DQN 演算法裡面的繁瑣的構建 target 網路,同步 target 網路引數等細節,已經包含在構建的 algorithm 裡面,使用者無需再特別關注。
百度對強化學習的關注由來已久。早在 2012 年,百度就將在 multi-armed bandit 問題上的研究成果部署到了推薦系統中,應用於搜尋、對話、推薦等產品,通過點選反饋結合線上訓練的方式,動態調整探索 (exploration) 和收益 (exploitation) 的平衡點,在降低探索風險的同時最大化推薦收益。近年來,強化學習在百度工業應用方面落地在了鳳巢,新聞 Feed 推薦等產品線上,在學術方面也在機器人控制、通用人工智慧等領域發表了多篇學術論文。2018 年,在第二屆機器人控制會議 CoRL 上,百度發表了干預強化學習機制的工作。而在 NeurIPS 2018 的強化學習賽事上,百度也擊敗了 400 多支來自全球各個研究機構的參賽隊伍,獲得冠軍。
隨著強化學習領域的發展,多家 AI 公司都在嘗試進行 深度強化學習 框架的設計,比如 Intel 的 Coach、OpenAI的 baseline、Google 的 Dopamine 等。如今的開源社群中仍然是「百家爭鳴」態勢,並未出現一個主導的 RL 框架。
這其中主要的一個原因是強化學習近年來發展迅猛,新的研究方向不斷湧現導致設計框架難以追趕演算法本身的發展速度。從 15 年 Deepmind 發表 DQN 演算法以來,大量的 DQN 演算法變種紛紛湧現,包括 Double DQN、Dueling DQN、Rainbow 等,同時在連續控制 (continuous control RL),分層控制 (hierarchical RL),多機器人控制 (multi-agent RL) 上湧現出相當多的新技術,甚至和元學習(meta-learning)以及環境建模(model-based)等結合起來。當前社群中存在的開源框架均可支援上述的一部分演算法,但是由於技術迭代太快,並沒有一個框架能夠覆蓋所有新演算法。
第二個原因是 深度強化學習 演算法和應用,具有方法各異、超參難調、隨機性大等特點,即便是針對同一個問題,使用同一種演算法,不同的實現方式會帶來極大的差異,學術界也一再強調強化學習可復現性問題。綜合這些因素,要實現一個統一的模型和計算平臺,是相當困難的事情。
PARL 在設計之初就將上述問題考慮在內,強調可複製(reproducible)可重用(reusable)以及可擴充套件(extensible)。
此外,由於 PARL 基於百度內部的成熟應用開源,因此更能方便地定製大規模並行演算法。通過呼叫簡單的函式介面,使用者可以將演算法從單機版擴充套件成 GA3C、A3C、IMPALA 等並行訓練架構。PARL 對於通訊機制,資料 I/O 等也有獨特的加速處理。此外,基於 PaddlePaddle 對大規模工業級排序/推薦等稀疏模型的支援能力,PARL 也能輕鬆擴充套件到百億級別資料或特徵的訓練。
根據百度在 NeurIPS 上做的技術分享,基於 PARL 最多可以同時通過 8 塊 GPU 來拉動近 20000 個 CPU 節點運算,完全發揮整個 CPU 叢集的計算潛力,在 NeurIPS 2018強化學習賽事中,成功將需要近 5 個小時迭代一輪的 PPO 演算法加速到了不到 1 分鐘每輪,實現了相對單機運算數百倍的加速比。這種目前開源社群中框架難以支援的並行提速,是他們拿下本次冠軍的關鍵因素之一。