去年,斯坦福大學神經生物實驗室與 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 時代,用科技讓複雜的世界更簡單!