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
……
上文以示例 pyramids为例,详细介绍ML-Agents的核心配置属性,让你知道如何构建一个使用ML-Agents进行训练的项目。
虽然demo中提供了预先训练好的.onnx模型文件,但是,您肯定会非常好奇,我该如何训练它呢,我们自己创建的其它场景都需要怎么玩呢。
在本节中,我们继续以pyramids为例,学习如何使用ML-Agents Python包中的强化学习算法来完成这一任务。
1、训练模型
Unity 提供了一个方便的命令mlagents-learn,它接受用于配置培训和推理阶段的参数。
- 打开Anacomda Prompt,激活之前创建的虚拟环境
mlagents
conda activate mlagents
- cd 到 ml-agents 的存储库的文件夹。
# D:\develop\AI\MachineLearning\ml-agents是我的本地目录,请替换为你的项目目录
cd D:\develop\AI\MachineLearning\ml-agents
D:
注意:如果遵循默认安装,那么应该能够从任何目录运行mlagents-learn。
- 运行
mlagents-learn ./config/Pyramids.yaml --run-id=Pyramids
config/ppo/Pyramids.yaml
是工具包提供的默认训练配置文件的路径。
config/ppo
文件夹包含所有示例环境(包括Pyramids)的培训配置文件。
run-id
是此训练课程的唯一名称。
当屏幕上显示“Start training by pressing the Play button in the Unity Editor”的信息时,您可以在Unity中按Play键开始在编辑器中进行训练。
启动训练后,可以看到小方人在迷宫中开始寻宝啦,再回到终端窗口,可以看到当前训练情况
请注意,随着训练的进行,打印在屏幕上的平均奖励值是如何增加的。这是培训成功的积极信号。
当训练结束后,会有如下生成 Pyramids.0nnx文件的提示:
2. 训练结果
训练过程完成后,培训过程将保存模型(Saved Model
消息指示),您可以将其添加到Unity项目中,并与兼容的Agent(生成模型的Agent)一起使用。
注意:Saved Model
消息出现 后,不要只是关闭Unity窗口。等待培训过程关闭窗口,或者Ctrl+C
在命令行提示符下按。如果您手动关闭窗口,则.onnx
包含训练模型的文件不会导出到ml-agents文件夹中。
如果您早已退出训练Ctrl+C
并想恢复训练,请再次运行相同的命令,并附加以下--resume
标志:
mlagents-learn /config/Pyramids.yaml --run-id=Pyramids --resume
你训练的策略模型将自动生成在results/<run-identifier>/<behavior_name>.onnx
这里。
<behavior_name>
为的名称Behavior Name
相对应的模型的agents。
3、查看训练成果
Pyramids.onnx文件就是我们的训练成果,我们可以把它拷贝到Unity 工程的TFModels目录替换原来的模型,运行,就能看到我们的训练成果了。
注意,一般会给自己的训练模型加个日期,如:Pyramids-20200607.onnx,再拷贝过去,这样就能切换模型(切换方法见下图),看看自己的训练成果与官方提供的训练模型的差距,差距不是一般的小,哭!
4、结论
能看得出来,自己训练的模型与项目自带的官方训练出来的模型差距还是蛮大的,不明白啥原因,准备抽时间找找原,找到后再给大家分享。