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顺时针或逆时针旋转时,从右边的俯视角度可以发现,其它的“学习者”会跟着旋转。