強化學習做爲AI技術發展的重要分支,爲各家AI公司高度重視。去年,百度首次參與NeurIPS 2018的強化學習賽事,就擊敗了多達400支來自全球研究機構以及各大公司研究部門的參賽隊伍,大比分以絕對優點拿下了冠軍,並受邀在加拿大蒙特利爾舉辦的NeurIPS 2018 Competition Workshop上分享。近日,百度PaddlePaddle正式發佈在賽事奪冠中起到關鍵做用的深度強化學習框架PARL,同時開源了基於該框架的NeurIPS2018強化學習賽事的完整訓練代碼。(冠軍解決方案見https://github.com/PaddlePaddle/PARL)git
下載安裝命令 ## CPU版本安裝命令 pip install -f https://paddlepaddle.org.cn/pip/oschina/cpu paddlepaddle ## GPU版本安裝命令 pip install -f https://paddlepaddle.org.cn/pip/oschina/gpu paddlepaddle-gpu
PARL的名字來源於PAddlepaddle Reinfocement Learning,是一款基於百度PaddlePaddle打造的深度強化學習框架。PARL凝聚了百度多年來在強化學習領域的技術深耕和產品應用經驗。與現有強化學習工具和平臺相比,PARL具備更高的可擴展性、可復現性和可複用性,強大的大規模並行化和稀疏特徵的支持能力,以及工業級應用案例的驗證。github
自2012年以來,百度就將在multi-arm bandits問題上的研究成果成功落地到推薦系統中,普遍應用於搜索、對話、推薦等產品,經過點擊反饋結合在線訓練的方式,動態調整探索(exploration)和收益(exploitation)的平衡點,下降探索風險的同時最大化推薦收益。近年來,百度在工業應用以及學術研究上進一步引入強化學習,落地在不只限於鳳巢,新聞Feed推薦等應用上,而且應用在前沿的學術研究領域例如機器人控制,通用人工智能AGI等。2018年,在機器人控制會議CoRL上,百度發表了干預強化學習機制的工做;進而在NeurIPS 2018的強化學習賽事上擊敗了400多個全球研究機構的參賽隊伍,首次參賽就拿下了NeurIPS2018 強化學習賽事冠軍。參賽隊伍中不乏RNN之父創立的公司、衛冕冠軍NNAISENSE、阿里、Yandex、Intel等強勁對手。web
設計深度強化學習框架是至關具有挑戰性的工做。雖然各大公司前後推出了一些強化學習框架,好比Intel的Coach、OpenAI的baseline、Google的Dopamine等,但截止到目前,開源社區中仍沒有一個主導的RL框架。這其中主要的一個緣由是強化學習近年來發展迅猛,新的研究方向不斷涌現。從15年Deepmind 發表DQN 算法以來,涌現了大量的DQN算法變種,包括Double DQN、Dueling DQN、Rainbow等,同時在連續控制(continuous control RL),分層控制(hierarchicalRL),多機器人控制(multi-agent RL)上涌現出至關多的新技術,甚至和元學習(meta-learning)以及環境建模(model-based)等結合起來。當前社區中存在的開源框架雖然能夠支持其中的一部分算法,可是因爲技術迭代太快,以前設計的框架難以跟上最新的研究熱點。第二個緣由是深度強化學習算法和應用,具備方法各異、超參難調、隨機性大等特色,即使是針對同一個問題,使用同一種算法,不一樣的實現方式會帶來極大的差別,學術界也一再強調強化學習可復現性問題。綜合這些因素,要實現一個統一的模型和計算平臺,是至關困難的事情。算法
PARL 在設計之初就考慮了上述提到的擴展性和可復現性的問題。從上圖能夠看出,PARL經過抽象出Model、Algorithm、Agent等基礎類幫助用戶快速搭建能夠和環境交互的機器人。Model類負責強化學習算法中的網絡前向計算(forward)部分,一般嵌套在algorithm中。Algorithm 類則定義了網絡的更新方式(backward)部分,一般屬於一個agent。Agent類負責和環境進行交互,而且收集數據訓練底下的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裏面,用戶無需再特別關注。框架
PARL基於百度內部的成熟應用開源,所以更能方便地定製大規模並行算法。經過調用簡單的函數接口,用戶能夠將算法從單機版擴展成GA3C、A3C、IMPALA等並行訓練架構。 PARL對於通信機制,數據I/O等也有獨特的加速處理。此外,基於PaddlePaddle對大規模工業級排序/推薦等稀疏模型的支持能力,PARL也能輕鬆擴展到百億級別數據或特徵的訓練。函數
PARL的並行能力在開源社區中處於絕對領先地位。根據百度在NeurIPS上作的技術分享,基於PARL最多能夠同時經過8塊GPU來拉動近20000個CPU節點運算,徹底發揮整個CPU集羣的計算潛力,在賽事中成功將須要近5個小時迭代一輪的PPO算法加速到了不到1分鐘,實現了相對單機運算高達幾百倍的加速比。這種目前開源社區中框架難以支持的並行提速,是他們拿下本次冠軍的關鍵因素之一。工具
百度本次正式發佈PARL, 不只在學術界引起熱議,更是在工業界引發巨大反響。百度擁有國內惟一有影響力的深度學習基礎庫,並積極推動AI生態戰略。隨着百度PaddlePaddle在工業界的影響不斷深刻,一個高性能、高規格的深度強化學習框架,也是知足工業界日趨發展旺盛的強化學習應用需求的必要條件。而這一系列舉措,對於百度最終決勝AI時代將是有力的推進。性能
冠軍解決方案見:
https://github.com/PaddlePaddle/PARL
>> 訪問 PaddlePaddle 官網,瞭解更多相關內容。
下載安裝命令 ## CPU版本安裝命令 pip install -f https://paddlepaddle.org.cn/pip/oschina/cpu paddlepaddle ## GPU版本安裝命令 pip install -f https://paddlepaddle.org.cn/pip/oschina/gpu paddlepaddle-gpu