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
- 打開終端或控制臺窗口 -> 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
目錄下
- results:
- --port : TensorBoard使用的端口,如果不指定端口,則不需要改參數
- 打開瀏覽器窗口,然后導航到localhost:6006,就能查看詳細的訓練數據了。
注意: TensorBoard使用的默認端口是6006。如果端口6006上正在運行現有會話,則可以使用--port選項指定端口(如6007)啟動新會話。
注意:如果不分配run-id
標識符,請mlagents-learn
使用默認字符串“ ppo”。所有統計信息將保存到同一子文件夾中,并在TensorBoard中顯示為一個會話。幾次運行后,在這種情況下顯示可能會變得難以解釋。您可以刪除results
目錄下的文件夾以清除舊的統計信息。
在TensorBoard窗口的左側,您可以選擇要顯示的某個run-id
訓練結果。您可以選擇多個run-id
來比較統計信息。TensorBoard窗口還提供有關如何顯示和平滑圖形的選項。
3、使用TensorBoard觀察過程
ML-Agents訓練計劃保存以下統計信息:
默認的統計指標還是比較全面的,下面一個個分析各種指標的用途。
環境統計
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);