當前位置:
首頁 > 新聞 > TensorFlow Agents日前開源,輕鬆在TensorFlow中構建並行強化學習演算法

TensorFlow Agents日前開源,輕鬆在TensorFlow中構建並行強化學習演算法

雷鋒網 AI科技評論消息,用於在TensorFlow中構建並行強化學習演算法的高效基礎架構範例TensorFlow Agents日前開源,這個項目是由谷歌的兩位研究員James Davidson、Vincent Vanhoucke,以及Danijar Hafner共同研發的。關於這個項目的開源信息他們在GitHub上進行了介紹,雷鋒網 AI科技評論將內容進行編譯整理。

TensorFlow Agents

TensorFlow Agents為強化學習提供了優化的基礎架構,它將OpenAI gym介面擴展到多個並行環境,並能在TensorFlow中訓練智能體,進行批量計算。在這個項目中,我們提供BatchPPO,這是針對近端策略優化(Proximal Policy Optimization,PPO)的一個實現。

如果你在研究中使用了我們這個項目的代碼,請引用我們之前發布的關於TensorFlow Agents的論文TensorFlow Agents: Efficient Batched Reinforcement Learning in TensorFlow,論文地址:https://drive.google.com/file/d/0B20Yn-GSaVHGMVlPanRTRlNIRlk/view

@misc,

author=,

year=

}

工具:Python 2/3, TensorFlow 1.3+, Gym, rumamel.yaml

說明

先執行如下代碼複製資料庫並運行PPO演算法。

python3 -m agents.scripts.train --logdir=/path/to/logdir --config=pendulum

這裡用的演算法已經在配置中定義好了,其中pendulum利用了已有的PPO實現。可以在agents/scripts/configs.py中查看更多的預定義配置。

如果想要重新開始運行之前的任務,可以在最後的指令中增加--timestamp=標誌,並提供你運行的目錄名中的時間戳。

為了將度量可視化,需要從另一個終端啟動TensorBoard,然後將瀏覽器指向http://localhost:2222:

tensorboard --logdir=/path/to/logdir --port=2222

如果要渲染視頻,收集OpenAI Gym的統計數據上傳至記分板,請輸入以下代碼:

python3 -m agents.scripts.visualize --logdir=/path/to/logdir/---outdir=/path/to/outdir/

修正

這個項目的發布能讓新的強化學習思想更容易實現。當修正代碼之後,你可以從如下幾個文件開始執行任務。

scripts/configs.py(指定任務和演算法的實驗配置)

scripts/networks.py(被定義為TensorFlow RNNCell的神經網路模型)

scripts/train.py(包含訓練設置的可執行文件)

ppo/algorithm.py(PPO演算法的TensorFlow圖)

如果要運行所有的單元測試,請輸入如下代碼:

python3 -m unittest discover -p "*_test.py"

如果有更多問題,可以在 Github上提問。

執行

這次的發布還包括OpenAI Gym環境下的一個批處理介面,它能與TensorFlow無縫集成,實現高效的演算法。這是通過如下核心組件實現的:

agents.tools.wrappers.ExternalProcess

agents.tools.wrappers.ExternalProcess是構造外部進程里的OpenAI Gym 環境的包裝(wrapper),它可以調用step()、reset()以及屬性訪問,轉發到進程中,然後等待結果,可以並行運行多個環境而不受Python全局解釋器鎖(global interpreter lock)的限制。

agents.tools.BatchEnv

agents.tools.BatchEnv能將OpenAI Gym介面擴展至多個環境中,它可以聯合多個OpenAI Gym環境,用step()接受批量的動作,返回觀察值、獎勵、完成的標記和info對象。如果有多個獨立的環境在外部進程中,它們將能被並行處理。

agents.tools.InGraphBatchEnv

agents.tools.InGraphBatchEnv將batch環境集成到TensorFlow圖中,保證step()和reset()函數都可以被調用。觀察值、最後的動作、獎勵和完成的標記中的batch都存儲在變數中,並作為可用的張量。

agents.tools.simulate()

agents.tools.simulate()將in-graph batch環境和強化學習演算法融合成一步,可以在訓練循環中調用,這減少了調用會話的數量,並提供了一種簡單的方法來訓練接下來的演算法。

如果要理解這些代碼,需要對TensorFlow的控制流運算(尤其是tf.cond(),tf.scan()和tf.control_dependencies())非常熟悉。

GitHub地址:https://github.com/tensorflow/agents

雷鋒網 AI科技評論整理編譯。

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 雷鋒網 的精彩文章:

知名量子科學家施堯耘加入阿里云:探索終極計算能力
小米全面屏MIX2手機來了,雷軍這次的目標是重回國產第一
高通沈勁:無人便利店的價值還需要進一步的市場檢驗
暴風也要做「信息流」精準推薦,坦言模仿今日頭條
關於蘇寧人工智慧平台的真面目,你想知道的都在這裡了

TAG:雷鋒網 |