这个例子就是三个枪兵打一个 Super 的小狗,这个小狗是我们编辑过的,血量非常大,一下子打不死。三个枪兵打一个小狗,a/b 这两个图,在训练的早期其实是没有学会太多的配合意识,所以他们走位的时候经常会发生碰撞,经过可能几万轮的训练以后,他们慢慢学会了配合队友的走位,这样大家撞不到一起。 第二个场景,边打边撤 这个配合就是边打边撤,Hit and Run 这样的技能,这个例子就是三个枪兵打一个狂徒,利用远程攻击的优势来消灭敌人。 第三种,掩护攻击 刚才三个枪兵打一个狂徒的时候是同时撤退,但是在这个场景下有些枪兵可能会去吸引这个小狗或者去阻挡一下,让另外两个枪兵抓住这个时间空隙来消灭这个小狗。非常有意思的一点就是,这种协作不是在任何情况下都会出现的,如果你的环境不是那么的有挑战性,可能它就是简单的 Hit and Run 就足够了,如果我们的环境更严苛一点,比如这个小狗血量调高,攻击力从 3 调到 4,或者血量从 210 调到 270,发现它又学会了另一种更高级的掩护攻击的协作,这就非常有意思了。 第四种,分组的集火攻击 这个例子是 15 个枪兵打 16 个枪兵,大家想想应该怎么取胜?策略可能 3 个枪兵或者 4 个枪兵自动组成一组,这 3 个枪兵先干掉一个、再干掉一个,就是把火力集中,但又不是 15 个枪兵打 1 个,而把火力分散一点,最后可能我们这方还剩 6 个枪兵,对方可能全部消灭掉了,这个都是通过很多轮次的学习之后他们自动去学到的这样一个配合。 第五种,不光是枪兵之间学会配合,还可以多兵种配合,异构的 Agent 的配合。 这个例子就是,两个运输机,每个运输机带一个坦克去打一头大象,正常来讲,两个坦克打一个大象肯定是打不过的,加上运输机的配合以后,大象攻击某一个坦克的时候,运输机会及时的把这个坦克收起来,让大象扑空,同时另外一个运输机赶紧把它的坦克放下去,去攻击大象,这样一来一回可能大象一点便宜占不到就被消灭了,这个是基于我们之前的做出 BiCNet 一个协作的展现。 关于未来的一些思考 但是《星际争霸》里其实不光是微观战斗,其实更难的是宏观的策略方面,怎么样“宏观 + 微观”打一整个游戏,这样其实我们也有一些思考,可能不是特别成熟,但是我们可以一起探讨一下。 每一个层级设定一个 Goal 要玩一个 full-game,如果是简单的单层次的强化学习,可能解决不了问题,因为 action space 实在太大了,一个比较自然的做法就是做层级式的方式,可能上层是策略规划,下面一层就是它的战斗、经济发展、探路、地图的分析等等,这样的话一层一层的,就是高层给下层设置一个 goal,下层再给下面一层设计一个 goal,其实这跟人的问题分解是比较类似的。 模仿学习(Imitation Learning) 我们觉得值得去研究和探讨的是模仿学习,Imitation Learning,刚刚讲的 AlphaGo 的例子也是 Imitation Learning,第一步通过监督学习学习比较好的策略,再把监督学习学好的策略通过自我的对弈去提升,在《星际争霸》里面更需要这种模仿学习,比如说我们两个枪兵打一个小狗的时候,我们认为一个好的策略是一个枪兵吸引小狗在那儿绕圈,然后另外一个枪兵就站在中心附近开枪,把这个小狗消灭,两个枪兵一滴血可以不死。 (责任编辑:本港台直播) |