ML-AGENT模仿学习(一)

https://v.qq.com/x/page/i070855nabf.html
unity官方老师讲解视频如上。
什么是模拟学习

有很多开发者都咨询过这个问题,甚至还会追问“模仿学习与强化学习的区别是什么?”

Alexandre Attia和Sharone Dayan在今年1月发表的《模仿学习全面概述》中,做出了定义:模仿学习是学习者尝试模仿专家行为,从而获取最佳性能的一系列任务。这里的“学习者”相应在Unity ML-Agents中就是Agent(代理)。这篇论文中,对于现今比较流行的一些模仿学习算法进行了回顾,展示主要特征,并针对性能和缺点做出对比。

如果你像全面了解模仿学习的概况,可以访问这片论文:

https://arxiv.org/abs/1801.06503

下图很清楚地解释模仿学习的工作原理。

下图列举出了强化学习与模仿学习的主要区别,归根结底就是:强化学习是通过“奖励”来驱动的;模仿学习是通过“示范”来驱动。

如何创建模仿学习训练与实现环境

构建一个模仿学习的其实并不复杂,主要分成下面的步骤:

创建Teacher和Student二个Brain

确认Teacher的Brain设置为 Player模式,确定 “Broadcast” 广播功能为启用状态

设置Student的Brain为External模式

对应设置Teacher和Student的Agent

在python/trainer_config.yaml中设置Student的Brain

·   trainer 参数为 imitation

·   brain_to_imitate设置为Teacher的Brain名字

·   batches_per_epoch设置每个时刻进行多少次训练

·   调高max_steps,可使得在较长时间内进行训练

训练准备

·   (v0.3)通过Build Settings生成APP用于训练

·   (v0.4)直接编辑器内训练

通过命令行工具输入进行训练

·   (v0.3)通过python3 python/learn.py --train –slow 启动APP进行训练

·   (v0.4)通过python3 python/learn.py --train –slow在编辑器内训练

操作Teacher观察输出

观察Student查看模仿情况

一旦Student有比较好的模仿,Ctrl+C结束训练

将生成的二进制文件(.bytes)放回Unity工程,将Student的Brain Type改为Internal,重新运行查看其模仿学习训练结果

Unity ML-Agents 模仿学习示例项目

在Unity ML-Agents项目中,打开ML-Agents Examples BananaCollectors Scenes BananaIL场景,我们会发现如下图中的游戏视图布局。

在Hierarchy中,Academy下面有二个Brain:TeacherBrain和StudentBrain,分别对应了“示范”作用的代理和处理“学习”的代理。

玩家可以通过WASD键,操作戴帽子的Teacher在香蕉地图中移动收集香蕉。收集到黄色的好香蕉会加分,收集到紫色的烂香蕉会减分。还能按空格键攻击其它的代理,冻结它的行动。

在下图中展示的是模仿学习训练的一个片段:当操作Teacher顺时针或逆时针旋转时,从右边的俯视角度可以发现,其它的“学习者”会跟着旋转。

你可能感兴趣的:(ML-AGENTS,ANACONDA,游戏开发)