【我們為什麼挑選這篇文章】DeepMind 去年開源了多巴胺資料庫,這次開源了松露資料庫,目前 DeepMind 依然是世界上最強的人工智慧公司之一,開源對他們如此重要的資料庫,對世界的人工智慧發展都是重要的貢獻(責任編輯:林子鈞)
本文經 AI 新媒體量子位(公眾號 ID:QbitAI)授權轉載,轉載請聯繫出處
作者:量子位/ 強化栗
今天,DeepMind 開源了一個基於 TensorFlow 的強化學習庫,名字叫 TRFL。
思路是模塊化,強調靈活度:如果把造智能體想像成搭積木,許多關鍵的、常用的木塊都在這裡集合了:
比如,DQN(深度Q網絡) 、DDPG(深度確定策略梯度),以及 IMPALA (重要性加權演員學習者架構) ,都是 DeepMind 功勛卓著的組件。
庫裡面的組件,雖然來源各不相同,但都經過嚴密測試,因而相對可靠;並且只要一個 API,對開發者比較友好。
DeepMind 團隊自身做研究,也嚴重依賴這個庫。
為了那些難以發覺的 Bug
這個庫,寫作 TRFL,讀作「Truffle」。翻譯成中文叫「松露」。
那麼,松露為何而生?
交互 Bug 很隱秘
深度強化學習智能體,裡面常常包含大量的交互組件:
至少要有環境,加上價值網絡或者策略網絡;
通常,還會有環境學習模型(Learned Model) 、偽獎勵函數(Pseudo-Reward Functions)、或者重播系統(Replay System)這樣的部分。
可是,交互組件到底用什麼方式交互?論文裡一般沒有細緻的討論,有 bug 也很難發現。
為此,OpenAI 寫過一篇博客,研究了 10 個熱門的強化學習智能體,發現 6 個都有隱藏 bug。
雖然,用一個開源的、完整的智能體,對復現研究成果是有幫助的,但靈活度不夠,要修改就很難了。
所以,才有了松露。
損失函數模塊化
深度強化學習(DRL) ,依賴價值網絡或策略網絡的不斷更新。
DeepMind 團隊發現,比起傳統的 RL 更新,損失函數更加模塊化,更容易結合到監督/無監督的目標裡去。
松露裡包含了許多損失函數和運算,全部在純 TensorFlow 裡實現。
不是完整算法,但是各自經過嚴密測試,可以用來搭成完整的智能體。
並且,只要一個 API 來解決各種核心組件,即便各自來源是天南地北,也很容易互相組合。
松露,營養很豐富
松露裡的許多函數和運算,既可以用在經典 RL 算法裡,也可以用在尖端技術上。
基於價值
針對基於價值的強化學習,松露提供了各種 TensorFlow 運算,用於在離散動作空間 (Discrete Action Spaces)裡學習:時間差分法,Sarsa,Q 學習,以及它們的變體。還有連續控制算法(比如 DPG)需要的運算。
除此之外,也有學習分佈式價值函數(Distributional Value Function)用的運算。
以上運算都支持批量(Batches),返回的損失可以用 TensorFlow 優化器來最小化。不論是 Transition 的批量,還是 Trajectory 的批量。
基於策略
針對基於策略的強化學習,這裡既有工具可以輕鬆實現在線方法,比如 A2C ,也支持離線的修正技術,比如 v-trace。
另外,連續動作裡策略梯度的計算,松露也支持。
最後的最後,松露還提供輔助的偽獎勵函數(Pseudo-Reward Functions),用來提升數據效率。
開源了,並待續
如今,松露已經開源了,傳送門在文底。
不過,團隊在博客裡寫到,這不是一次性發佈。
因為,DeepMind 在做研究的過程中,也非常依賴這個庫,所以會持續對它進行維護,也會隨時添加新功能。
當然,團隊也歡迎強化學習界的小夥伴們,為松露添磚加瓦。
多巴胺也是強化學習庫
如果你還記得,今年 8 月谷歌開源了強化學習框架 Dopamine,中文叫多巴胺,也是基於 TensorFlow。
名字取自人類大腦獎勵機制中的主角物質多巴胺,為了表達神經科學和強化學習之間的緣分聯繫。
多巴胺框架,也是強調靈活性、穩定性和復現性。
至於,多巴胺和松露之間有怎樣的關係,或者怎樣的差別,如果你也好奇的話,可以自行探索一下。
–
DeepMind
Google 用 DeepMind 控制數據中心冷卻系統:AI 從人類想不到的地方節省了能源
Google DeepMind 新 GQN 技術:幫 AI「開天眼」,一張平面圖片就能建構 3D 模型
不過半年 AlphaGo 已經像古董了:DeepMind 最新 AI,一天訓練就能稱霸東西方三種棋類!
(本文經原作者 量子位 授權轉載,並同意 TechOrange 編寫導讀與修訂標題,原文標題為 〈DeepMind開源了強化學習庫“松露”,團隊自身也嚴重依賴它〉。)