DeepMind悄咪咪開源三大新框架,深度強化學習落地希望再現

2021-01-08 AI科技大本營

作者 | Jesus Rodriguez

譯者 | 夕顏

【導讀】近幾年,深度強化學習(DRL)一直是人工智慧取得最大突破的核心。儘管取得了很多進展,但由於缺乏工具和庫,DRL 方法仍難以應用於主流的解決方案。因此,DRL 主要以研究形式存在,並未在現實世界的機器學習解決方案中得到大量應用。解決這個問題需要更好的工具和框架。而在當前的 AI 領域,DeepMind 在推動 DRL 研發方面做了大量工作,包括構建了許多專有工具和框架,以大規模地簡化 DRL agent 訓練、實驗和管理。最近,DeepMind 又默默開源了三種 DRL 框架:OpenSpiel、SpriteWorld 和 bsuite,用於簡化 DRL 應用。

作為一種新興的深度學習技術,採用 DRL 面臨著簡單實現算法之外的諸多挑戰,如訓練數據集、環境、監測優化工具和精心設計的實驗,以簡化 DRL 技術的採用。考慮到機制與大多數傳統的機器學習方法不同(DRL agent 嘗試在給定環境中通過反覆試驗來完成任務),應用 DRL 更是困難。在這種情況下,環境和實驗的穩健性在 DRL agent 開發的知識中起著最基本的作用。

下面我們開門見山,來看看這三種框架到底有什麼特別之處,以及如何使用。

OpenSpiel

GitHub:https://github.com/deepmind/open_spiel

遊戲在 DRL agent的 訓練中發揮著重要作用。與其他數據集一樣,遊戲本質上基於試驗和獎勵機制,可用於訓練 DRL agent。但是,正如我們所想,遊戲環境的複雜度還遠遠不夠。

OpenSpiel 是一系列環境和算法,用於研究一般強化學習和遊戲中的搜索/規劃。OpenSpiel 的目的是通過與一般遊戲類似的方式促進跨多種不同遊戲類型的一般多智能體強化學習,但是重點是強調學習而不是競爭形式。當前版本的 OpenSpiel 包含 20 多種遊戲的不同類型(完美信息、同步移動、不完美信息、網格世界遊戲、博弈遊戲和某些普通形式/矩陣遊戲)實現。

核心的 OpenSpiel 實現基於 C ++ 和 Python 綁定,這有助於在不同的深度學習框架中採用。該框架包含一系列遊戲,允許 DRL agent 學會合作和競爭行為。同時,OpenSpiel 還包括搜索、優化和單一 agent 等多種 DRL 算法組合。

安裝

摘要

安裝系統包並下載一些依賴項。只需要運行一次。./install.sh安裝 Python 依賴項,例如在 Python 3 中使用 virtualenv:vvirtualenv -p python3 venvsource venv/bin/activatepip3 install -r requirements.txt使用 deactivate 退出虛擬環境。

構建並運行測試以檢查一切是否正常:./open_spiel/scripts/build_and_run_tests.sh添加# For the python modules in open_spiel.export PYTHONPATH=$PYTHONPATH:/<path_to_open_spiel># For the Python bindings of Pyspielexport PYTHONPATH=$PYTHONPATH:/<path_to_open_spiel>/build/python到 ./venv/bin/activate 或你的 / .bashrc ,以便從任何地方導入 OpenSpiel。

為了確保 OpenSpiel 在默認配置上運行,我們使用 python3 命令而不是 python(現在 Linux 版本上仍默認為 Python 2)。

開發者指南

代碼結構

一般來說,open_spiel 下的目錄是 C ++(integration_tests 和 python 除外)。open_spiel / python 中提供了類似的結構,包含 Python 等效代碼。

一些頂級目錄是特殊的:

open_spiel / integration_tests:所有遊戲的通用(python)測試。open_spiel / tests:C ++ 常用測試實用程序。open_spiel / scripts:用於開發(構建、運行測試等)的腳本。例如,支持 C ++:

open_spiel /:包含遊戲抽象 C ++ API。open_spiel / games:包含 games ++實現。open_spiel / algorithms:在 OpenSpiel 中實現的 C ++ 算法。open_spiel / examples:C ++ 示例。open_spiel / tests:C ++ 常用測試實用程序。支持 Python:

open_spiel / python / examples:Python 示例。open_spiel / python / algorithms /:Python算法。添加遊戲

這裡僅介紹添加新遊戲最簡單、最快捷的方式。首先要了解通用 API(參見 spiel.h)。從 games/中選擇要複製的遊戲。推薦遊戲:Tic-Tac-Toe 和 Breakthrough,因為它們包含完美信息,沒有偶然事件,Backgammon 或 Pig 用於完美的信息遊戲與偶然事件,Goofspiel 和Oshi-Zumo 用於同步移動遊戲,Leduc 撲克和 Liar 骰子用於不完美信息遊戲。以下步驟以 Tic-Tac-Toe 為例講解。

將標頭和源:tic_tac_toe.h,tic_tac_toe.cc和tic_tac_toe_test.cc 複製到 new_game.h,new_game.cc 和 new_game_test.cc。配置 CMake:將新遊戲的源文件添加到 games / CMakeLists.txt。將新遊戲的測試目標添加到 games / CMakeLists.txt。更新樣板C ++代碼:在 new_game.h 中,重命名文件頂部和底部的標題保護。在新文件中,將最內層的命名空間從 tic_tac_toe 重命名為 new_game。在新文件中,將 TicTacToeGame 和 TicTacToeState 重命名為 NewGameGame 和 NewGameState。在 new_game.cc 的頂部,將短名稱更改為 new_game 並包含新遊戲的標題。更新 Python 集成測試:將簡短名稱添加到 integration_tests / api_test.py 中的已排除遊戲列表中。在 python / tests / pyspiel_test.py 中將短名稱添加到預期遊戲列表中。現在,你有了一個不同名稱的 Tic-Tac-Toe 複製遊戲。測試運行,並可以通過重建和運行示例 examples / example --game = new_game 來驗證它。現在,更改 NewGameGame 和 NewGameState 中函數的實現以表示新遊戲的邏輯。你複製的遊戲中的大多數 API 函數都應該與原來的遊戲有區分度。如果沒有,那麼重合的每個API 函數都將在 spiel.h 中的超類中被完整記錄。完成後,重建並重新運行測試以確保一切都順利(包括新遊戲測試!)。更新 Python 集成測試:運行 ./scripts/generate_new_playthrough.sh new_game 生成一些隨機遊戲,用於集成測試以防止任何回歸。open_spiel / integration_tests / playthrough_test.py 將自動加載遊戲並將它們與新生成的遊戲進行比較。

SpriteWorld

GitHub:https://github.com/deepmind/spriteworld

幾個月前,DeepMind 發表了一篇研究論文,介紹了一種好奇的基於對象的 seaRch Agent(COBRA),它使用強化學習來識別給定環境中的對象。COBRA agent 使用一系列二維遊戲進行訓練,其中數字可以自由移動。用於訓練 COBRA 的環境,正是 DeepMind 最近開源的 SpriteWorld。

Spriteworld 是一個基於 python 的強化學習環境,由一個可以自由移動的形狀簡單的二維競技場組成。更具體地說,SpriteWorld 是一個二維方形競技場,周圍可隨機放置數量可變的彩色精靈,但不會發生碰撞。SpriteWorld 環境基於一系列關鍵特徵:

多目標的競技場反映了現實世界的組合性,雜亂的物體場景可以共享特徵,還可以獨立移動。此外,它還可以測試與任務無關的特徵/對象的穩健性和組合泛化。連續點擊推動動作空間的結構反映了世界空間和運動的結構。它還允許 agent 在任何方向上移動任何可見對象。不以任何特殊方式提供對象的概念(例如,沒有動作空間的特定於對象的組件),agent 也完全可以發現。SpriteWorld 針對三個主要任務訓練每個 DRL agent:

目標尋找。agent 必須將一組目標對象(可通過某些功能識別,例如「綠色」)帶到屏幕上的隱藏位置,忽略幹擾對象(例如非綠色的對象)排序。agent 必須根據對象的顏色將每個對象帶到目標位置。聚類。agent 必須根據顏色將對象排列在群集中。安裝

可以使用 pip 安裝 Spriteworld:

pip install spriteworld或者通過 Github:

pip install git + https://github.com/deepmind/spriteworld.git或者通過籤出存儲庫的本地副本並運行:

git clone https://github.com/deepmind/spriteworld.gitpip install spriteworld /最後一個選項是下載測試,演示 UI 和示例運行循環。

開始

前提

Spriteworld 依賴於numpy,six,absl,PIL,matplotlib,sklearn 和 dm_env。

演示

安裝完成後,您可以通過 run_demo.py 熟悉 Spriteworld:

python /path/to/local/spriteworld/run_demo.py創建自己的任務

在 spriteworld / tasks.py 中有三個任務:FindGoalPosition、Clustering 和 MetaAggregated。可以以多種方式進行配置和組合,以創建各種任務,包括 COBRA 論文中使用的所有任務。值得注意的是,可以參閱 spriteworld / configs / cobra / sorting.py,了解目標查找任務的組合。

你還可以創建新任務,重新使用這些構建塊,或創建全新類型的任務(只需確保從 spriteworld / tasks.AbstractTask 中繼承)。

運行agent

有關如何在 Spriteworld 任務上運行隨機 agent 的示例,請參閱 example_run_loop.py。如果你更喜歡 OpenAI Gym 環境界面,請參閱 spriteworld / gym_wrapper.py。

bsuite

GitHub:https://github.com/deepmind/bsuite

強化學習行為套件(bsuite,The Behaviour Suite for Reinforcement Learning )的目標是成為強化學習領域的 MNIST。具體來說,bsuite 是一系列用來突出 agent 可擴展性關鍵點的實驗。這些實驗易於測試和迭代,對基本問題,例如「探索」或「記憶」進行試驗。具體來說,bsuite 有兩個主要目標:

收集清晰、信息量大且可擴展的問題,以捕獲高效和通用學習算法設計中的關鍵問題。通過在這些共享基準上的表現來研究 agent 行為。bsuite 當前的實現可以在不同環境中自動執行實驗,並收集可以簡化 DRL agent 訓練的相應指標。

如果你是一個 bsuite 新手,可以開始使用 colab 教程。這款 Jupyter 筆記本電腦配有免費的雲伺服器,因此無需任何安裝即可立即開始編碼。在此之後,你可以按照以下說明在本地計算機上運行 bsuite。

安裝

我們已測試了 bsuiteon Python 3.6,且無維護 Python 2.7 版本的計劃。

安裝 bsuite,請運行該命令

pip install git+git://github.com/deepmind/bsuite.git或克隆該庫並運行

pip install bsuite/想要能夠編輯代碼的同時安裝軟體包(請參閱下面的基線),請運行

pip install -e bsuite /要同時安裝baselines//示例的依賴項(不包括Gym和Dopamine示例),請安裝:

pip install -e bsuite [baselines]加載環境

環境由 bsuite_id 字符串指定,例如「deep_sea / 7」。 此字符串指定要使用的實驗和(索引)環境設置。

import bsuiteenv = bsuite.load_from_id('catch/0')可以通過以下方式以編程方式訪問運行所有實驗所需的 bsuite_ids 序列:

from bsuite import sweepsweep.SWEEP該模塊還包括每個實驗名稱對應的大寫常量單 bsuite_ids,例如:

sweep.DEEP_SEAsweep.DISCOUNTING_CHAINbsuite報告

你可以使用 bsuite 生成一個自動的 1 頁附錄,該附錄總結了強化學習算法的核心功能。本附錄與大多數主要的機器學習會議格式兼容。例如輸出運行,

pdflatex bsuite / reports / neurips_2019 / neurips_2019.tex由於篇幅有限,無法一一詳細介紹每個框架的具體使用方法,感興趣的朋友們可以在上文 GitHub 連結中查詢詳情情況和使用指南,以檢驗OpenSpiel、SpriteWorld 和 bsuite 的真正實現效果,並歡迎在留言中與我們交流上手體驗。

最後,相信隨著越來越多的深度強化學習工具和框架的湧現,把這項新興技術應用於現實世界的進程將大大加快,進一步推動 AI 研究和落地的進展。

原文連結:

https://towardsdatascience.com/deepmind-quietly-open-sourced-three-new-impressive-reinforcement-learning-frameworks-f99443910b16

(*本文為AI科技大本營整理文章,轉載請微信聯繫 1092722531)

【結果提交倒計時】PV,UV流量預測算法大賽,結果提交截止時間為9月20日,還沒有提交的小夥伴抓緊時間了~~9月25日公布初賽成績。最新排行榜請掃碼查看。

相關焦點

  • DeepMind開源了強化學習庫「松露」,團隊自身也嚴重依賴它
    雖然,用一個開源的、完整的智能體,對復現研究成果是有幫助的,但靈活度不夠,要修改就很難了。所以,才有了松露。損失函數模塊化深度強化學習 (DRL) ,依賴價值網絡或策略網絡的不斷更新。開源了,並待續如今,松露已經開源了,傳送門在文底。不過,團隊在博客裡寫到,這不是一次性發布。因為,DeepMind在做研究的過程中,也非常依賴這個庫,所以會持續對它進行維護,也會隨時添加新功能。當然,團隊也歡迎強化學習界的小夥伴們,為松露添磚加瓦。
  • 百度開源移動端深度學習框架mobile-deep-learning(MDL)
    2017 年 9 月 25 日,百度在 GitHub 開源了移動端深度學習框架 mobile-deep-learning(MDL)的全部代碼以及腳本,希望這個項目在社區的帶動下能夠更好地發展。寫在前面深度學習技術已經在網際網路的諸多方向產生影響,每天科技新聞中關於深度學習和神經網絡的討論越來越多。
  • 阿里巴巴深度學習框架X-Deep Learning,要開源了
    、推薦、搜索等高維稀疏數據場景,以填補TensorFlow、PyTorch等現有開源深度學習框架主要面向圖像、語音等低維稠密數據的不足。 阿里巴巴內部透露將開源內部深度學習框架 X-DeepLearning的計劃,這是業界首個面向廣告、推薦、搜索等高維稀疏數據場景的深度學習開源框架,可以與TensorFlow、PyTorch 和 MXNet 等現有框架形成互補。
  • 新智元專訪:清華大學深度強化學習框架「天授」開源|900星
    日前,清華大學人工智慧研究院基礎理論研究中心發布了深度強化學習框架「天授」,代碼已在GitHub開源(https://github.com/thu-ml/tianshou)。這也是繼「珠算」可微分概率編程庫之後,該中心推出的又一個面向複雜決策任務的編程庫。
  • Spark與深度學習框架——H2O、deeplearning4j、SparkNet
    例如,深度學習算法能創建一個識別動物圖片的函數:給一張動物的圖片,它能分辨出圖片上的動物是一隻貓還是一隻狗。深度學習可以看作是組合了許多神經網絡的一種深度結構。與其他已有的機器學習算法相比,深度學習需要大量參數及訓練數據。這也是我們介紹能在Spark上運行的深度學習框架的原因。要想在企業環境中穩定地進行深度學習的訓練,必須要有一個可靠而快速的分布式引擎。
  • DeepMind開源強化學習遊戲框架,25款線上遊戲等你來挑戰
    選自GitHub機器之心編譯參與:一鳴、思強化學習算法沒有遊戲訓練?DeepMind 開源 OpenSpiel 平臺了。研究者可在線部署遊戲環境,快速開始實驗。強化學習算法廣為人知的一個應用場景便是遊戲了,通過智能體在多玩家遊戲中的表現,研究者可以更好地調整算法和參數細節,實現更好的算法性能。
  • Alphabet旗下DeepMind開源開發AI項目的元件函式庫
    據中國臺灣地區媒體報導,Alphabet旗下AI子公司DeepMind周四開源釋出可撰寫TensorFlow強化學習(Reinforcement
  • 深度強化學習入門到精通--資料綜述
    其中,感知解決what,深度學習已經超越人類水平;決策解決how,強化學習在遊戲和機器人等領域取得了一定效果;認知解決why,知識圖譜、因果推理和持續學習等正在研究。強化學習,採用反饋學習的方式解決序貫決策問題,因此必然是通往通用人工智慧的終極鑰匙。
  • AI 四巨頭 Google、DeepMind、Microsoft、Uber 深度學習框架大比拼
    GPipe、Horovod、TF Replicator和DeepSpeed分別是這四家公司開發應用的深度學習框架,它們結合了深度學習研究及其基礎設施的前沿技術,以提高深度學習模型的訓練效率。這四個深度學習框架各有什麼特點和優勢呢?本文將對此做一個基本介紹。
  • 深度學習——你需要了解的八大開源框架
    深度學習八大開源框架導讀:深度學習(Deep Learning)是機器學習中一種基於對數據進行表徵學習的方法,深度學習的好處是用非監督式或半監督式的特徵學習、分層特徵提取高效算法來替代手工獲取特徵作為當下最熱門的話題,Google、Facebook、Microsoft等巨頭都圍繞深度學習重點投資了一系列新興項目,他們也一直在支持一些開源深度學習框架。
  • 輕量級部署,騰訊優圖開源深度學習推理框架TNN
    機器之心發布機器之心編輯部6 月 10 日,騰訊優圖實驗室宣布正式開源新一代移動端深度學習推理框架 TNN。從學界到工業界,「開源」已經成為 AI 領域的關鍵詞。6 月 10 日,騰訊優圖實驗室宣布正式開源新一代移動端深度學習推理框架 TNN,通過底層技術優化實現在多個不同平臺的輕量級部署落地。該框架性能優異、簡單易用。基於 TNN,開發者能夠將深度學習算法輕鬆移植到手機端並高效執行,開發人工智慧 APP,真正將 AI 帶到指尖。
  • 【深度強化學習】專業解讀「深度強化學習「:從AlphaGo到AlphaGoZero
    圖2是深度強化學習的框架圖,從圖中可以看到,DRL的框架包含兩個基本模塊:由深度學習組成的感知模塊和由強化學習組成的決策模塊。兩個模塊之前通過狀態動作相互影響。圖2.深度強化學習框架深度強化學習早期的主要思路是將神經網絡用於複雜高維數據的特徵提取,轉化到低維特徵空間便於強化學習處理。由於卷積神經網絡對圖像處理擁有天然的優勢,將卷積神經網絡與強化學習結合成了研究熱點。
  • DeepMind綜述深度強化學習中的快與慢,智能體應該像人一樣學習
    不過雖然它們很強大,但學習效率的低下讓它們很難推廣到更普遍的任務,也許結合「快」與「慢」的學習才是強化學習應該走的路。DeepMind 研究者近期在 Trends In Cognitive Sciences 期刊上發表文章,概覽了深度強化學習中的一些新技術,這些技術旨在彌補強化學習智能體與人類之間的學習速度鴻溝。
  • 人工智慧的新希望——強化學習全解
    很多人說,強化學習被認為是真正的人工智慧的希望。本文將從7個方面帶你入門強化學習,讀完本文,希望你對強化學習及實戰中實現算法有著更透徹的了解。| 介紹許多科學家都在研究的一個最基本的問題是「人類如何學習新技能?」。
  • 大腦也在用分布式強化學習?DeepMind新研究登上《Nature》
    但近日,DeepMind 的研究人員通過使用分布式強化學習算法發現,每個多巴胺神經元對獎勵的預測很不相同,它們會被調節到不同水平的「悲觀」和「樂觀」狀態。研究者希望通過這套算法研究並解釋多巴胺細胞對大腦的行為、情緒等方面的影響。這份研究成果昨日登上了《Nature》。
  • 阿里雲開源的業界首個面向NLP場景深度遷移學習框架EasyTransfer
    近日,阿里雲正式開源了深度遷移學習框架EasyTransfer,這是業界首個面向NLP場景的深度遷移學習框架。該框架由阿里雲機器學習PAI團隊研發,讓自然語言處理場景的模型預訓練和遷移學習開發與部署更加簡單和高效。
  • 十個值得一試的開源深度學習框架 - OSCHINA - 中文開源技術交流社區
    無疑,來自Google軍火庫的TensorFlow必然是開源深度學習軟體中的明星產品,登陸GitHub當天就成為最受關注的項目,當周獲得評星數就輕鬆超過1萬個。對於希望在應用中整合深度學習功能的開發者來說,GitHub上其實還有很多不錯的開源項目值得關注,首先我們推薦目前規模人氣最高的TOP3:一、Caffe。
  • 深度揭秘 AI 巨頭之谷歌 DeepMind
    DeepMind通過實現一個完全不同的技術系統,將深度學習提升到了一個全新的水平。該系統稱為深度強化學習,與常規的人工智慧系統不同,它是完全獨立的。 例如,IBM Watson或Deep Blue是出於特定目的而開發的,並且被編程為僅以所需容量運行。DeepMind的深度強化學習不是預先編程的,而是像人類一樣通過經驗學習。從本質上講,它基於卷積神經網絡進行深度學習,並將其與Q-learning進行匹配。
  • 微軟打造深度學習開源框架「自動翻譯機」:不同框架輕鬆切換
    【新智元導讀】微軟Cortana智能和機器學習小組的數據科學家最新在Giuhub開源項目,對各個深度學習框架進行了基準測試,提供了很多有參考價值的數據以及GPU優化代碼。眾多的深度學習框架,就像世界上各種不同的語言一樣,但是,不會「外語」並不可怕,他們希望構建一個深度學習框架的羅塞塔石碑,讓開發人員和研究者能在這個眾多框架並存的環境中,好好生存。
  • 16個GitHub值得收藏的深度學習框架
    作為一個相對較新的概念,對於無論是想要進入該領域的初學者,還是已經熟知方法的老手來說,觸手可及的學習資源太豐富了。 為了不被日新月異的技術和潮流所淘汰,積極參與深度學習社區中開源項目的學習和互動是個很好的方法。