百度正式發佈PaddlePaddle深度強化學習框架PARL

去年,斯坦福大學神經生物實驗室與 EPFL 聯合舉辦了一場強化學習賽事——人工智能假肢挑戰賽(AI for Prosthetics Challenge),希望將強化學習應用到人體腿部骨骼仿真模擬模型的訓練。

經過激烈的角逐,最終來自百度大腦的 NLP 技術團隊一舉擊敗衆多強勁對手,以9980分的成績奪得冠軍!

近日,百度正式發佈在賽事奪冠中起到關鍵作用的深度強化學習框架  PaddlePaddle PARL,同時開源了基於該框架的 NeurIPS 2018強化學習賽事的完整訓練代碼。點擊“閱讀原文”可查看冠軍解決方案。

PaddlePaddle PARL 的名字來源於 PAddlepaddle Reinfocement Learning,是一款基於百度 PaddlePaddle 打造的深度強化學習框架。PaddlePaddle PARL 凝聚了百度多年來在強化學習領域的技術深耕和產品應用經驗。與現有強化學習工具和平臺相比,PaddlePaddle PARL 具有更高的可擴展性、可復現性和可複用性,強大的大規模並行化和稀疏特徵的支持能力,以及工業級應用案例的驗證。


自2012年以來,百度就將在 multi-arm bandits 問題上的研究成果成功落地到推薦系統中,廣泛應用於搜索、對話、推薦等產品,通過點擊反饋結合在線訓練的方式,動態調整探索(exploration)和收益(exploitation)的平衡點,降低探索風險的同時最大化推薦收益。近年來,百度在工業應用以及學術研究上進一步引入強化學習,落地在不僅限於鳳巢、新聞 Feed 推薦等應用上,還應用在前沿的學術研究領域,例如機器人控制,通用人工智能 AGI 等。2018年,在機器人控制會議 CoRL 上,百度發表了干預強化學習機制的工作;進而在 NeurIPS 2018的強化學習賽事上擊敗了400多個全球研究機構的參賽隊伍,首次參賽就拿下了 NeurIPS 2018強化學習賽事冠軍。參賽隊伍中不乏 RNN 之父創立的公司、衛冕冠軍 NNAISENSE、Yandex、Intel 等強勁對手。

設計深度強化學習框架是相當具備挑戰性的工作。雖然各大公司先後推出了一些強化學習框架,但截止到目前,開源社區中仍沒有一個主導的 RL 框架。這其中主要的一個原因是強化學習近年來發展迅猛,新的研究方向不斷涌現。當前社區中存在的開源框架雖然可以支持其中的一部分算法,但是由於技術迭代太快,之前設計的框架難以跟上最新的研究熱點。

第二個原因是深度強化學習算法和應用,具有方法各異、超參難調、隨機性大等特點,即便是針對同一個問題,使用同一種算法,不同的實現方式會帶來極大的差異,學術界也一再強調強化學習可復現性問題。綜合這些因素,要實現一個統一的模型和計算平臺,是相當困難的事情。


PaddlePaddle PARL 在設計之初就考慮了上述提到的擴展性和可復現性的問題。從上圖可以看出,PaddlePaddle PARL 通過抽象出 Model、Algorithm、Agent 等基礎類幫助用戶快速搭建可以和環境交互的機器人。Model 類負責強化學習算法中的網絡前向計算(forward)部分,通常嵌套在 algorithm中。Algorithm 類則定義了網絡的更新方式(backward)部分,通常屬於一個 agent。Agent 類負責和環境進行交互,並且收集數據訓練底下的 algorithm。通過這樣的設計方案,PARL 保證了算法擴展性:針對同一個場景,用戶想調研不同的網絡結構對算法效果影響的時候,比如調研 RNN 建模或者 CNN 建模,只需要重寫 model 部分即可;針對不同場景想用同一個算法調研的時候,也是隻需重寫 model 即可。可復現性主要體現在框架提供的 algorithm 集合上,在下一段和複用性一起結合理解。

PaddlePaddle PARL 的這種設計結構的另一個好處是高複用性。倉庫內的提供了大量經典算法的例子(algorithms目錄內), 包括主流的 DQN 、DDQN、Dueling DQN、DDPG、PPO 等,這些算法由於和網絡結構進行了解耦(網絡結構定義在 Model 類中),因此不針對特定任務,而是一個相當通用的算法抽象。用戶通過 PaddlePaddle PARL 搭建強化學習算法來解決自己目前遇到的問題時,可以直接 import 這些經典算法,然後定義自己的網絡前向部分即可短時間內構建出經典的 RL 算法。這種高複用性不僅極大地降低了用戶的開發成本,而且由於 PARL 提供的算法內部包含完整的超參數列表,確保倉庫內模型具備復現論文級別指標的能力。

下圖是 PaddlePaddle PARL 的一個構建示例,展示瞭如何快速構建可以解決 Atari 遊戲的 DQN 模型。用戶只需要定一個前向網絡(Model 類),然後調用框架算法集合裏面的 DQN algorithm 即可構建一個經典 DQN 算法了。DQN 算法裏面的繁瑣的構建 target 網絡,同步 target 網絡參數等細節,已經包含在構建的 algorithm 裏面,用戶無需再特別關注。


PaddlePaddle PARL 基於百度內部的成熟應用開源,因此更能方便地定製大規模並行算法。通過調用簡單的函數接口,用戶可以將算法從單機版擴展成 GA3C、A3C、IMPALA 等並行訓練架構。 PaddlePaddle PARL 對於通訊機制,數據 I/O 等也有獨特的加速處理。此外,基於 PaddlePaddle 對大規模工業級排序/推薦等稀疏模型的支持能力,PARL 也能輕鬆擴展到百億級別數據或特徵的訓練。


PaddlePaddle PARL 的並行能力在開源社區中處於絕對領先地位。根據百度在 NeurIPS 上做的技術分享,基於 PaddlePaddle PARL 最多可以同時通過8塊 GPU 來拉動近20000個 CPU 節點運算,完全發揮整個 CPU 集羣的計算潛力,在賽事中成功將需要近5個小時迭代一輪的 PPO 算法加速到了不到1分鐘,實現了相對單機運算高達幾百倍的加速比。這種目前開源社區中框架難以支持的並行提速,是百度拿下本次冠軍的關鍵因素之一。


百度本次正式發佈 PaddlePaddle PARL, 不僅在學術界引發關注,工業界也將因此受益。百度擁有在國內具有相當影響力的深度學習基礎庫,並積極推進 AI 生態戰略。隨着百度 PaddlePaddle 在工業界的影響不斷深入,一個高性能、高規格的深度強化學習框架,也是滿足工業界日趨發展旺盛的強化學習應用需求的必要條件。

AI 時代,用科技讓複雜的世界更簡單!


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章