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);