天天看點

清華大學生開發強化學習平台「天授」:千行代碼實作,性能吊打國外成熟平台,剛剛開源

雲栖号資訊:【 點選檢視更多行業資訊

在這裡您可以找到不同行業的第一手的上雲資訊,還在等什麼,快來!

江山代有才人出,開源一波更比一波強。

就在最近,一個簡潔、輕巧、快速的深度強化學習平台,完全基于Pytorch,在Github上開源。

如果你也是強化學習方面的同仁,走過路過不要錯過。

而且作者,還是一枚清華大學的大學生——翁家翌,他開發了”天授(Tianshou)“平台。

沒錯,名字就叫“天授”。

清華大學生開發強化學習平台「天授」:千行代碼實作,性能吊打國外成熟平台,剛剛開源
Why 天授?

主要有四大優點:

1、速度快,整個平台隻用1500行左右代碼實作,在已有的toy scenarios上面完勝所有其他平台,比如3秒訓練一個倒立擺(CartPole)。

清華大學生開發強化學習平台「天授」:千行代碼實作,性能吊打國外成熟平台,剛剛開源

2、子產品化,把所有policy都拆成4個子產品:

  • init:政策初始化。
  • process_fn:處理函數,從回放緩存中處理資料。
  • call:根據觀測值計算操作
  • learn:從給定資料包中學習

隻要完善了這些給定的接口就能在100行之内完整實作一個強化學習算法。

3、天授平台目前支援的算法有:

清華大學生開發強化學習平台「天授」:千行代碼實作,性能吊打國外成熟平台,剛剛開源

随着項目的開發,會有更多的強化學習算法加入天授。

4、接口靈活:使用者可以定制各種各樣的訓練方法,隻用少量代碼就能實作。

如何使用天授

以DQN(Deep-Q-Network)算法為例,我們在天授平台上使用CartPole小遊戲,對它的agent進行訓練。

配置環境

習慣上使用OpenAI Gym,如果使用Python代碼,隻需要簡單的調用Tianshou即可。

CartPole-v0是一個可應用DQN算法的簡單環境,它擁有離散操作空間。配置環境時,你需要注意它的操作空間是連續還是離散的,以此選擇适用的算法。

設定多環境層

你可以使用現成的gym.Env:

清華大學生開發強化學習平台「天授」:千行代碼實作,性能吊打國外成熟平台,剛剛開源

也可以選擇天授提供的三種向量環境層:VectorEnv、SubprocVectorEnv和RayVectorEnv,如下所示:

清華大學生開發強化學習平台「天授」:千行代碼實作,性能吊打國外成熟平台,剛剛開源

示例中分别設定了8層和100層環境。

建立網絡

天授支援任意使用者自主定義的網絡或優化器,但有接口限制。

清華大學生開發強化學習平台「天授」:千行代碼實作,性能吊打國外成熟平台,剛剛開源

以下是一個正确的示例:

清華大學生開發強化學習平台「天授」:千行代碼實作,性能吊打國外成熟平台,剛剛開源

設定政策

我們使用已定義的net和optim(有額外的政策超參數)來定義一個政策。下方我們用一個目标網絡來定義DQN算法政策。

清華大學生開發強化學習平台「天授」:千行代碼實作,性能吊打國外成熟平台,剛剛開源

設定收集器

收集器是天授的關鍵概念,它使得政策能夠高效的與不同環境互動。每一步,收集器都會将該政策的操作資料記錄在一個回放緩存中。

清華大學生開發強化學習平台「天授」:千行代碼實作,性能吊打國外成熟平台,剛剛開源

訓練

天授提供了訓練函數onpolicy_trainer和offpolicy_trainer。當政策達到終止條件時,他們會自動停止訓練。由于DQN是無政策算法,我們使用offpolicy_trainer。

清華大學生開發強化學習平台「天授」:千行代碼實作,性能吊打國外成熟平台,剛剛開源

訓練器支援TensorBoard記錄,方法如下:

清華大學生開發強化學習平台「天授」:千行代碼實作,性能吊打國外成熟平台,剛剛開源

将參數writer輸入訓練器中,訓練結果會被記錄在TensorBoard中。

清華大學生開發強化學習平台「天授」:千行代碼實作,性能吊打國外成熟平台,剛剛開源

記錄顯示,我們在幾乎4秒的時間内完成了對DQN的訓練。

儲存/加載政策

因為我們的政策沿襲自torch.nn.Module,是以儲存/加載政策方法與torch子產品相同。

清華大學生開發強化學習平台「天授」:千行代碼實作,性能吊打國外成熟平台,剛剛開源

觀察模型表現

收集器支援呈現功能,以35幀率觀察模型方法如下:

清華大學生開發強化學習平台「天授」:千行代碼實作,性能吊打國外成熟平台,剛剛開源

用你自己的代碼訓練政策

如果你不想用天授提供的訓練器也沒問題,以下是使用自定義訓練器的方法。

清華大學生開發強化學習平台「天授」:千行代碼實作,性能吊打國外成熟平台,剛剛開源
上手體驗

天授需要Python3環境。以CartPole訓練DQN模型為例,輸入test_dqn.py代碼進行訓練,其結果統計如下:

清華大學生開發強化學習平台「天授」:千行代碼實作,性能吊打國外成熟平台,剛剛開源

可以看出整個訓練過程用時7.36秒,與開發者給出的訓練時間符合。

模型訓練結果如下:

清華大學生開發強化學習平台「天授」:千行代碼實作,性能吊打國外成熟平台,剛剛開源
作者介紹

天授的開發者:翁家翌,清華大學的在讀大四大學生。

高中畢業于福州一中,前NOI選手。

大二時作就作為團隊主要貢獻者獲得了強化學習國際比賽vizdoom的冠軍。他希望能将天授平台深入開發,成為強化學習平台的标杆。開源也是希望有更多的小夥伴加入這個項目。

【雲栖号線上課堂】每天都有産品技術專家分享!

課程位址:

https://yqh.aliyun.com/zhibo

立即加入社群,與專家面對面,及時了解課程最新動态!

【雲栖号線上課堂 社群】

https://c.tb.cn/F3.Z8gvnK

原文釋出時間:2020-04-01

本文作者:賈浩楠

本文來自:“量子位”,了解相關資訊可以關注“公衆号 QbitAI”