ML-Agents學習筆記五:使用TensorBoard 觀察訓練

ML-Agents 是一個開源項目,使游戲和模擬場景能夠作為訓練智能代理的環境。它提供最先進算法的實現(基于 PyTorch),使游戲開發者和愛好者能夠輕松訓練 2D、3D 和 VR/AR 游戲的智能代理。研究人員還可以使用提供的簡單易用的 Python API 來使用強化學習、模仿學習、神經進化或任何其他方法來訓練代理。


機器學習系列:
ML-Agents學習筆記一:環境搭建
ML-Agents學習筆記二:UNITY實例工程簡介
ML-Agents學習筆記三:Pyramids demo 詳解
ML-Agents學習筆記四:使用強化學習訓練模型
ML-Agents學習筆記五:使用TensorBoard 觀察訓練
……

AI小白系列:
AI小白篇一:Anaconda+Pycharm搭建深度學習環境
AI小白篇二:使用anaconda搭建TensorFlow環境
AI小白篇三:Tensorflow首項
AI小白篇四:Tensorflow的開源案例實踐1
AI小白篇五:Tensorflow的開源案例實踐2
AI小白篇六:Tensorflow的開源案例實踐3
……


按照上一節中描述的方式使用mlagents-learn命令將訓練,在首次訓練過程中,ml-agents會在根目錄下創建一個results目錄,并將結果與過程中的統計信息,保存到改目錄下對應run-id的文件夾中。

ML-Agents Toolkit 在學習期間保存統計數據,您可以使用 TensorFlow提供的 可視化工具包TensorBoard查看這些數據。

1、 TensorBoard簡介

在機器學習中,要改進模型的某些參數,您通常需要對其進行衡量。TensorBoard 是用于提供機器學習工作流期間所需測量和呈現的工具。它使您能夠跟蹤實驗指標(例如損失和準確率),呈現模型計算圖,將嵌入向量投影到較低維度的空間等。

TensorBoard 提供機器學習實驗所需的可視化功能和工具:

  • 跟蹤和可視化損失及準確率等指標
  • 可視化模型圖(操作和層)
  • 查看權重、偏差或其他張量隨時間變化的直方圖
  • 將嵌入投射到較低的維度空間
  • 顯示圖片、文字和音頻數據
  • 剖析 TensorFlow 程序
  • ……

2、啟動TensorBoard

為了在訓練期間或之后觀察訓練過程,請啟動TensorBoard

  1. 打開終端或控制臺窗口 -> CD到ML-Agents Toolkit的安裝目錄。 -> 輸入命令運行:
tensorboard --logdir=results/run-id --port=6006
  • --logdir : 訓練統計信息存放目錄
    • results: ml-agents創建的,存放訓練數據及結果的目錄
    • run-id : 上節執行訓練的命令 mlagents-learn /config/Pyramids.yaml --run-id=Pyramids 中的 Pyramids, ml-agents會把本次訓練的結果存在Pyramids目錄下
  • --port : TensorBoard使用的端口,如果不指定端口,則不需要改參數
  1. 打開瀏覽器窗口,然后導航到localhost:6006,就能查看詳細的訓練數據了。

注意: TensorBoard使用的默認端口是6006。如果端口6006上正在運行現有會話,則可以使用--port選項指定端口(如6007)啟動新會話。

注意:如果不分配run-id標識符,請mlagents-learn使用默認字符串“ ppo”。所有統計信息將保存到同一子文件夾中,并在TensorBoard中顯示為一個會話。幾次運行后,在這種情況下顯示可能會變得難以解釋。您可以刪除results目錄下的文件夾以清除舊的統計信息。

在TensorBoard窗口的左側,您可以選擇要顯示的某個run-id訓練結果。您可以選擇多個run-id來比較統計信息。TensorBoard窗口還提供有關如何顯示和平滑圖形的選項。

3、使用TensorBoard觀察過程

ML-Agents訓練計劃保存以下統計信息:

mlagents-TensorBoard

默認的統計指標還是比較全面的,下面一個個分析各種指標的用途。

環境統計
  • Environment/Lesson-繪制從課程到課程的進度。只有在進行課程訓練時才需要關注。

  • Environment/Cumulative Reward-所有特工的平均累積情節獎勵。在成功的訓練課程中應增加。

  • Environment/Episode Length -環境中所有特工的每個情節的平均長度。

策略統計
  • Policy/Entropy(PPO;SAC) - 模型決策的隨機性。在成功的訓練過程中應緩慢下降。如果下降得太快,beta則應增加超參數。

  • Policy/Learning Rate(PPO; SAC) - 訓練算法在搜索最佳策略時采取的步長。應隨時間減少。

  • Policy/Entropy Coefficient(SAC)- 確定熵項的相對重要性。此值會自動調整,以便代理在訓練期間保留一定程度的隨機性。

  • Policy/Extrinsic Reward(PPO; SAC)——這對應于每集從環境收到的平均累積獎勵。

  • Policy/Value Estimate(PPO; SAC) - 代理訪問的所有狀態的平均值估計。在成功的訓練過程中應該會增加。

  • Policy/Curiosity Reward(PPO/SAC+Curiosity)——這對應于每集產生的平均累積內在獎勵。

  • Policy/Curiosity Value Estimate(PPO/SAC+好奇心)——代理對好奇心獎勵的價值估計。

  • Policy/GAIL Reward(PPO/SAC+GAIL) - 這對應于每集產生的平均累積基于判別器的獎勵。

  • Policy/GAIL Value Estimate(PPO/SAC+GAIL) - 代理對 GAIL 獎勵的價值估計。

  • Policy/GAIL Policy Estimate(PPO/SAC+GAIL)- 鑒別器對策略生成的狀態和動作的估計。

  • Policy/GAIL Expert Estimate(PPO/SAC+GAIL)——根據專家示范得出的鑒別器對狀態和行動的估計。

學習損失函數
  • Losses/Policy Loss(PPO;SAC)- 策略損失函數的平均幅度。與策略(決定行動的過程)的變化程度相關。在成功的訓練過程中,該幅度應該會減小。

  • Losses/Value Loss(PPO;SAC) - 價值函數更新的平均損失。與模型預測每個狀態的價值的能力相關。在代理學習時,該值應該會增加,然后在獎勵穩定后減少。

  • Losses/Forward Loss(PPO/SAC+Curiosity)- 前向模型損失函數的平均幅度。對應于模型預測新觀察編碼的能力。

  • Losses/Inverse Loss(PPO/SAC+Curiosity)- 逆模型損失函數的平均幅度。對應于模型能夠多好地預測兩次觀察之間采取的行動。

  • Losses/Pretraining Loss(BC) - 行為克隆損失的平均幅度。對應于模型模仿演示數據的程度。

  • Losses/GAIL Loss(GAIL) - GAIL 鑒別器損失的平均幅度。對應于模型模仿演示數據的程度。

自我對弈
  • Self-Play/ELO(自我對戰)- ELO衡量兩名玩家之間的相對技能水平。在適當的訓練過程中,代理的 ELO 應該穩步提高。

4、 從 TensorBoard 導出數據

要以 CSV 或 JSON 格式導出時間序列數據,請選中左上角的“顯示數據下載鏈接”。這將啟用每個圖表下方的下載鏈接。

5、Unity 的自定義指標

要將 C# 環境中的自定義指標導入 TensorBoard,您可以使用 StatsRecorder:

var statsRecorder = Academy.Instance.StatsRecorder;
statsRecorder.Add("MyMetric", 1.0);
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容