從Zero到Hero,OpenAI重磅發佈深度強化學習資源

機器之心報道

機器之心編輯部

今天,OpenAI 發佈了 Spinning Up,這是一份教學資源,旨在讓所有人熟練掌握深度強化學習方面的技能。Spinning Up 包含清晰的 RL 代碼示例、習題、文檔和教程。

在項目主頁中,OpenAI 提供了非常完整的使用教程,包括 Spinning Up 的詳細介紹、各種環境下的安裝方法、收錄的算法,以及實驗實現的教程等。除此之外,OpenAI 也提供了豐厚的學習資料,包括強化學習的入門基礎、結合 Spinning Up 學習 RL 的課程、論文推薦、實驗練習和基準結果參考等。給人的第一印象就是,要想在深度強化學習上從 Zero 到 Hero,天天逛這個網站就夠了~

項目地址:https://spinningup.openai.com/en/latest/

在 Deep RL 中邁出第一步

OpenAI 相信深度學習——特別是深度強化學習——將在強大是 AI 技術發展中發揮核心作用。雖然有很多資源可以讓人們快速瞭解深度學習,但深度強化學習更具挑戰性。爲此,OpenAI 設計了 Spinning Up 來幫助人們學會使用這些技術並擴展關於它們的一些想法。

OpenAI 設計 Spinning Up 的靈感來源於與該機構學者和研究員的合作,通過該合作,他們發現,如果獲得正確的指導和資源,在機器學習方面經驗甚少甚至沒有經驗的人也可以快速成長爲從業者。在 Deep RL 中開發的 Spinning Up 正是爲這種需求準備的,該資源已被納入了 2019 年的學者和研究員團隊課程(https://blog.openai.com/openai-scholars-2019/)。

OpenAI 還發現,具有 RL 方面的能力可以幫助人們參與跨學科研究領域,如 AI 安全——涉及強化學習和其它技能的混合。還有很多從零開始學習 RL 的人向 OpenAI 尋求建議,因此他們決定把提供的這些非正式建議正式發佈出來。

Spinning Up 主要包含以下核心內容:

  • 強化學習技術的簡介,包含各種算法和基本理論的直觀理解;
  • 一些介紹如何才能做好強化學習研究的經驗;
  • 重要論文的實現,按照主題進行分類;
  • 各種強化學習算法的單獨實現,它們都有非常完善的介紹文檔;
  • 最後還會有一些熱身練習題。

整個項目主要可以分爲用戶文檔、強化學習簡介、資源、算法文檔和 Utilities 文檔。其中用戶文檔主要介紹了學習該項目所需要的一些準備,包括怎樣安裝 Python 和 OpenAI Gym 等強化學習環境,學習資源的主要內容以及實戰所需要注意的事項等。

在強化學習簡介中,OpenAI 主要討論了 RL 中的關鍵概念、關鍵算法和策略優化等內容。根據這一部分的內容,至少我們會對強化學習有一個清晰的認識,也就正式從小白到入門了。簡介後面的資源章節纔是進階者的最愛,OpenAI 會先介紹如何才能做好強化學習研究,包括需要怎樣的背景知識、如何寫 RL 代碼及思考強化學習問題等。當然這一部分還提供了非常多的「硬資源」,OpenAI 按照 12 大研究主題提供了 98 篇「必讀」論文,並提供了其它一些練習題與挑戰賽。

估計等讀者搞定資源部分,就可以成爲真正的強化學習研究者了。當然我們也可以跳過直接學習第三部分的算法文檔,它包含了策略梯度、策略優化和 Actor-Critic 等多種主流強化學習算法。只要我們完成了第一部分的前提準備,第三部分的各種算法就能手到擒來。此外對於每一個 RL 算法,文檔都會提供全面的介紹,包括基本思想、公式定理、模型組件和參數等。

支持

該項目具有以下支持計劃:

  • 高帶寬軟件支持期:發佈後的前三週,OpenAI 將快速處理 bug 修復、安裝問題,以及解決文檔中的錯誤和歧義。我們將努力簡化用戶體驗,使用 Spinning Up 自學變得儘可能簡單。
  • 2019 年 4 月的主要審查:發佈約六個月後,OpenAI 將基於從學習社區收到的反饋認真審查軟件包的狀態,並宣佈任何未來修改的計劃。
  • 內部開發的公開發布:如果 OpenAI 在與學者和研究員一起工作時,對 Deep RL 中的 Spinning Up 進行了修改,OpenAI 會將修改發至公共報告,並立即向所有人開放。

OpenAI 還將與其它組織合作來幫助人們學會使用這些材料。他們的第一個合作伙伴是加州大學伯克利分校的 Center for Human-Compatible AI (CHAI),並將在 2019 年初合作舉辦一個關於深度 RL 的研修班,類似於計劃在 OpenAI 舉辦的 Spinning Up 研修班。

Hello World

感受深度強化學習算法表現如何的最好方式就是運行它們。而有了 Spinning Up,這變得非常簡單:

python -m spinup.run ppo --env CartPole-v1 --exp_name hello_world

在訓練結束時,你將獲得關於如何從實驗中查看數據以及觀看訓練智能體視頻的指導。

Spinning Up 實現與 Classic Control、Box2D 和 MuJoCo 任務套件中的 Gym 環境兼容。

考慮到新學者,我們爲 Spinning Up 設計了代碼,使其更短、更友好,也更加容易學習。我們的目標是用最小的實現來演示理論如何變成代碼,避免深度強化學習庫中常見的抽象層和模糊層。我們傾向於清晰化而不是模塊化——實現之間的代碼重用嚴格受限於日誌和並行實用程序。給代碼加註釋,這樣你就總能知道事情的進展,並在相應的文檔頁面上得到背景材料(和僞代碼)的支持。

學習資源概覽

在整個項目中,強化學習簡介部分和算法部分可能是很多數讀者都非常感興趣的章節,下面主要介紹了這兩部分包含的內容。首先在強化學習簡介中,關鍵概念是必須解釋清楚的:

  • 狀態和觀察值;
  • 動作空間;
  • 策略;
  • 軌跡;
  • 不同形式化的獎勵;
  • RL 最優化問題;
  • 值函數。

在關鍵概念之後,OpenAI 詳細介紹了各種強化學習算法及技術在整體所處的位置。如下所示,強化學習也是個桃李滿天下的大家族:

最後在強化學習簡介部分,OpenAI 還重點介紹了策略優化,這一部分有挺多推導的,尤其是梯度的推導。不過好消息是這些推導都給出了詳細的過程,包括變換、消元和一些對數技巧等。讀者可以感受下推導過程:

此外在算法章節,Spinning Up 還收錄了很多重要的強化學習算法,在項目頁上也給出了各個算法的詳細介紹和調用方法。

Spinning Up 收錄的算法。

比如策略梯度算法,如上圖所示,文檔中會給出關鍵的方程、僞代碼、使用方法以及參考文獻。

策略梯度算法的有限時域未折扣回報的梯度期望,以及策略參數的梯度更新方法。

策略梯度算法的僞代碼。

策略梯度算法的調用函數,我們可以看到,Spinning Up 提供的函數調用可以直接設置參數。文檔還提供了詳細的參數解釋。

策略梯度算法的參考文獻。

Spinning Up 提供了 MuJoCo Gym 任務套件的 5 個環境下的算法實現基準,包括 HalfCheetah、Hopper、Walker2d、Swimmer、Ant。

HalfCheetah-2 環境下訓練 3 百萬時間步的基準結果。

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