ML-Agents 是一個(gè)開源項(xiàng)目,使游戲和模擬場景能夠作為訓(xùn)練智能代理的環(huán)境。它提供最先進(jìn)算法的實(shí)現(xiàn)(基于 PyTorch),使游戲開發(fā)者和愛好者能夠輕松訓(xùn)練 2D蒋腮、3D 和 VR/AR 游戲的智能代理。研究人員還可以使用提供的簡單易用的 Python API 來使用強(qiáng)化學(xué)習(xí)藕各、模仿學(xué)習(xí)池摧、神經(jīng)進(jìn)化或任何其他方法來訓(xùn)練代理。
機(jī)器學(xué)習(xí)系列:
ML-Agents學(xué)習(xí)筆記一:環(huán)境搭建
ML-Agents學(xué)習(xí)筆記二:UNITY實(shí)例工程簡介
ML-Agents學(xué)習(xí)筆記三:Pyramids demo 詳解
ML-Agents學(xué)習(xí)筆記四:使用強(qiáng)化學(xué)習(xí)訓(xùn)練模型
ML-Agents學(xué)習(xí)筆記五:使用TensorBoard 觀察訓(xùn)練
……
AI小白系列:
AI小白篇一:Anaconda+Pycharm搭建深度學(xué)習(xí)環(huán)境
AI小白篇二:使用anaconda搭建TensorFlow環(huán)境
AI小白篇三:Tensorflow首項(xiàng)
AI小白篇四:Tensorflow的開源案例實(shí)踐1
AI小白篇五:Tensorflow的開源案例實(shí)踐2
AI小白篇六:Tensorflow的開源案例實(shí)踐3
……
按照上一節(jié)中描述的方式使用mlagents-learn
命令將訓(xùn)練激况,在首次訓(xùn)練過程中作彤,ml-agents
會(huì)在根目錄下創(chuàng)建一個(gè)results
目錄,并將結(jié)果與過程中的統(tǒng)計(jì)信息乌逐,保存到改目錄下對應(yīng)run-id
的文件夾中竭讳。
ML-Agents Toolkit 在學(xué)習(xí)期間保存統(tǒng)計(jì)數(shù)據(jù),您可以使用 TensorFlow提供的 可視化工具包TensorBoard查看這些數(shù)據(jù)浙踢。
1绢慢、 TensorBoard簡介
在機(jī)器學(xué)習(xí)中,要改進(jìn)模型的某些參數(shù)成黄,您通常需要對其進(jìn)行衡量呐芥。TensorBoard 是用于提供機(jī)器學(xué)習(xí)工作流期間所需測量和呈現(xiàn)的工具。它使您能夠跟蹤實(shí)驗(yàn)指標(biāo)(例如損失和準(zhǔn)確率)奋岁,呈現(xiàn)模型計(jì)算圖思瘟,將嵌入向量投影到較低維度的空間等。
TensorBoard 提供機(jī)器學(xué)習(xí)實(shí)驗(yàn)所需的可視化功能和工具:
- 跟蹤和可視化損失及準(zhǔn)確率等指標(biāo)
- 可視化模型圖(操作和層)
- 查看權(quán)重闻伶、偏差或其他張量隨時(shí)間變化的直方圖
- 將嵌入投射到較低的維度空間
- 顯示圖片滨攻、文字和音頻數(shù)據(jù)
- 剖析 TensorFlow 程序
- ……
2、啟動(dòng)TensorBoard
為了在訓(xùn)練期間或之后觀察訓(xùn)練過程蓝翰,請啟動(dòng)TensorBoard
- 打開終端或控制臺窗口 -> CD到ML-Agents Toolkit的安裝目錄光绕。 -> 輸入命令運(yùn)行:
tensorboard --logdir=results/run-id --port=6006
- --logdir : 訓(xùn)練統(tǒng)計(jì)信息存放目錄
- results:
ml-agents
創(chuàng)建的,存放訓(xùn)練數(shù)據(jù)及結(jié)果的目錄 - run-id : 上節(jié)執(zhí)行訓(xùn)練的命令
mlagents-learn /config/Pyramids.yaml --run-id=Pyramids
中的Pyramids
,ml-agents
會(huì)把本次訓(xùn)練的結(jié)果存在Pyramids
目錄下
- results:
- --port : TensorBoard使用的端口畜份,如果不指定端口诞帐,則不需要改參數(shù)
- 打開瀏覽器窗口,然后導(dǎo)航到localhost:6006爆雹,就能查看詳細(xì)的訓(xùn)練數(shù)據(jù)了停蕉。
注意: TensorBoard使用的默認(rèn)端口是6006。如果端口6006上正在運(yùn)行現(xiàn)有會(huì)話钙态,則可以使用--port選項(xiàng)指定端口(如6007)啟動(dòng)新會(huì)話慧起。
注意:如果不分配run-id
標(biāo)識符,請mlagents-learn
使用默認(rèn)字符串“ ppo”册倒。所有統(tǒng)計(jì)信息將保存到同一子文件夾中蚓挤,并在TensorBoard中顯示為一個(gè)會(huì)話。幾次運(yùn)行后,在這種情況下顯示可能會(huì)變得難以解釋灿意。您可以刪除results
目錄下的文件夾以清除舊的統(tǒng)計(jì)信息估灿。
在TensorBoard窗口的左側(cè),您可以選擇要顯示的某個(gè)run-id
訓(xùn)練結(jié)果脾歧。您可以選擇多個(gè)run-id
來比較統(tǒng)計(jì)信息甲捏。TensorBoard窗口還提供有關(guān)如何顯示和平滑圖形的選項(xiàng)。
3鞭执、使用TensorBoard觀察過程
ML-Agents訓(xùn)練計(jì)劃保存以下統(tǒng)計(jì)信息:
默認(rèn)的統(tǒng)計(jì)指標(biāo)還是比較全面的司顿,下面一個(gè)個(gè)分析各種指標(biāo)的用途。
環(huán)境統(tǒng)計(jì)
Environment/Lesson
-繪制從課程到課程的進(jìn)度兄纺。只有在進(jìn)行課程訓(xùn)練時(shí)才需要關(guān)注大溜。Environment/Cumulative Reward
-所有特工的平均累積情節(jié)獎(jiǎng)勵(lì)。在成功的訓(xùn)練課程中應(yīng)增加估脆。Environment/Episode Length
-環(huán)境中所有特工的每個(gè)情節(jié)的平均長度钦奋。
策略統(tǒng)計(jì)
Policy/Entropy
(PPO;SAC) - 模型決策的隨機(jī)性疙赠。在成功的訓(xùn)練過程中應(yīng)緩慢下降付材。如果下降得太快,beta
則應(yīng)增加超參數(shù)圃阳。Policy/Learning Rate
(PPO; SAC) - 訓(xùn)練算法在搜索最佳策略時(shí)采取的步長厌衔。應(yīng)隨時(shí)間減少。Policy/Entropy Coefficient
(SAC)- 確定熵項(xiàng)的相對重要性捍岳。此值會(huì)自動(dòng)調(diào)整富寿,以便代理在訓(xùn)練期間保留一定程度的隨機(jī)性。Policy/Extrinsic Reward
(PPO; SAC)——這對應(yīng)于每集從環(huán)境收到的平均累積獎(jiǎng)勵(lì)锣夹。Policy/Value Estimate
(PPO; SAC) - 代理訪問的所有狀態(tài)的平均值估計(jì)页徐。在成功的訓(xùn)練過程中應(yīng)該會(huì)增加。Policy/Curiosity Reward
(PPO/SAC+Curiosity)——這對應(yīng)于每集產(chǎn)生的平均累積內(nèi)在獎(jiǎng)勵(lì)银萍。Policy/Curiosity Value Estimate
(PPO/SAC+好奇心)——代理對好奇心獎(jiǎng)勵(lì)的價(jià)值估計(jì)变勇。Policy/GAIL Reward
(PPO/SAC+GAIL) - 這對應(yīng)于每集產(chǎn)生的平均累積基于判別器的獎(jiǎng)勵(lì)。Policy/GAIL Value Estimate
(PPO/SAC+GAIL) - 代理對 GAIL 獎(jiǎng)勵(lì)的價(jià)值估計(jì)贴唇。Policy/GAIL Policy Estimate
(PPO/SAC+GAIL)- 鑒別器對策略生成的狀態(tài)和動(dòng)作的估計(jì)贰锁。Policy/GAIL Expert Estimate
(PPO/SAC+GAIL)——根據(jù)專家示范得出的鑒別器對狀態(tài)和行動(dòng)的估計(jì)。
學(xué)習(xí)損失函數(shù)
Losses/Policy Loss
(PPO滤蝠;SAC)- 策略損失函數(shù)的平均幅度。與策略(決定行動(dòng)的過程)的變化程度相關(guān)授嘀。在成功的訓(xùn)練過程中物咳,該幅度應(yīng)該會(huì)減小。Losses/Value Loss
(PPO蹄皱;SAC) - 價(jià)值函數(shù)更新的平均損失览闰。與模型預(yù)測每個(gè)狀態(tài)的價(jià)值的能力相關(guān)芯肤。在代理學(xué)習(xí)時(shí),該值應(yīng)該會(huì)增加压鉴,然后在獎(jiǎng)勵(lì)穩(wěn)定后減少崖咨。Losses/Forward Loss
(PPO/SAC+Curiosity)- 前向模型損失函數(shù)的平均幅度。對應(yīng)于模型預(yù)測新觀察編碼的能力油吭。Losses/Inverse Loss
(PPO/SAC+Curiosity)- 逆模型損失函數(shù)的平均幅度击蹲。對應(yīng)于模型能夠多好地預(yù)測兩次觀察之間采取的行動(dòng)。Losses/Pretraining Loss
(BC) - 行為克隆損失的平均幅度婉宰。對應(yīng)于模型模仿演示數(shù)據(jù)的程度歌豺。Losses/GAIL Loss
(GAIL) - GAIL 鑒別器損失的平均幅度。對應(yīng)于模型模仿演示數(shù)據(jù)的程度心包。
自我對弈
-
Self-Play/ELO
(自我對戰(zhàn))- ELO衡量兩名玩家之間的相對技能水平类咧。在適當(dāng)?shù)挠?xùn)練過程中,代理的 ELO 應(yīng)該穩(wěn)步提高蟹腾。
4痕惋、 從 TensorBoard 導(dǎo)出數(shù)據(jù)
要以 CSV 或 JSON 格式導(dǎo)出時(shí)間序列數(shù)據(jù),請選中左上角的“顯示數(shù)據(jù)下載鏈接”娃殖。這將啟用每個(gè)圖表下方的下載鏈接值戳。
5、Unity 的自定義指標(biāo)
要將 C# 環(huán)境中的自定義指標(biāo)導(dǎo)入 TensorBoard珊随,您可以使用 StatsRecorder:
var statsRecorder = Academy.Instance.StatsRecorder;
statsRecorder.Add("MyMetric", 1.0);