雷锋网 AI 科技评论按:我们都已经知道了,OpenAI 的 5v5 DOTA AI 「OpenAI Five」再次完胜人类。
美国时间 8 月 5 日星期天下午,OpenAI 组织的线下比赛(OpenAI 称其为「OpenAI Five Benchmark」)中一共进行了四局比赛。第一局 5 名现场观众组成的路人队伍被 7 分钟破中路二塔,9 分钟上路上高地,12 分钟破两路,人头比 26:4,可以说是完全碾压。
之后的三局比赛是重头戏,「OpenAI Five」对阵 4 位前职业选手(Blitz、Cap、Fogged、Merlini)与 1 位现任职业选手(MoonMeander)组成的高手队伍。第一局依然惨败,21 分钟破第二路高地,人类选手打出 GG,人头比 39:8。第二局人类选手选择了更强的控制、更积极的打法,却也只坚持到了 24 分钟,人头比 41:12。这样,三局两胜的比赛就已经告负了。
第二局人类高手比赛结束后,OpenAI CTO Greg Brockman 上前依次拥抱 5 位(前)职业选手致意
胜负已分,第三局就成为了娱乐局,现场观众给「OpenAI Five」选择了 5 个不怎么厉害的英雄,最后果然让人类玩家获得了胜利。
不过除了比赛比分之外,广大强化学习研究人员和人工智能爱好者还有一个深深的疑问就是,这样的 AI 是如何训练出来的。
毋庸置疑,DOTA 游戏的复杂程度比围棋要高,反馈也相当稀疏,即便选用了 OpenAI 已经开发得非常成熟的大规模分布式 PPO 实现「Rapid」,我们也难以直觉上信服「只要有足够的训练时间就能学到如此丰富的游戏行为」。比如首先「OpenAI Five」的团队协作上表现出了人类一样的明确的核心和辅助英雄的区分,比如据 OpenAI 的研究人员介绍「OpenAI Five」也会选择打肉山,只说这两件事就都是人类玩家需要经过有意识的策略判断和执行才能做出的。强化学习算法现在就有这么高层次的思维了?不太可能吧。
下面这些 5 日的比赛中的瞬间也值得玩味:
比赛进行到 20 分钟,AI 的巫妖去看肉山。实际上整场比赛中 AI 的英雄时不时就会去看看肉山
Blitz 的影魔被 AI Gank,用暗影护符原地隐身,AI 的直升机和冰女两个有 AOE 的英雄在附近还有一个 AI 队友的情况下直接就撤退了。现场解说评价「简直是人类对隐身物品的滥用」
还是天辉方的 Blitz 的影魔,绕树林被 AI 方的眼看到。值得注意的是,这时候天辉方下路 2 塔都已经丢了,而这个夜魇方的眼就插在夜魇下路一塔外不远的地方。这个眼位可算是非常保守、非常奇怪
AI 的火枪手很喜欢见面就给大,Blitz 的满血影魔露头就被大 —— 这个策略其实非常有效,团战中人类方的冰女经常在团战开始前先被火枪大到半血,然后团战一开始就马上阵亡
22 分钟 AI 方的冰女补出了点金手,不过在接下来的 3 分钟内都没有使用它
强化学习的范式决定了「能帮助带来高反馈的行为」会更容易被学到,而 DOTA 的复杂就在于,许多行为和最终游戏结果之间的关联似乎也是若即若离,在大多数场合下都能起到一锤定音效果的行为也许人类自己都说不清。即便相信 AlphaGo 能在反复的自我对局中找到更好的策略的人,也不一定相信在 DOTA 如此复杂的环境下仅靠自我对局就可以学到定位、分路、补兵、先手、看肉山、插眼等等系列行为。
结合 OpenAI 之前放出的一些资料和「OpenAI Five」开发团队在比赛现场的访谈,雷锋网 AI 科技评论找到了「计算集群上相当于180 年游戏时间每天的训练」之外的,能帮助我们理解更具体的 AI 实现过程一些端倪。相比于说这些是「强化学习研究的小技巧」,我们更觉得这是「人类教学的小技巧」;相比于「OpenAI Five」训练中模型自己的探索行为,我们觉得意义更重大的是人类成功地把自己的知识和经验设法教给了「OpenAI Five」。
只使用最终比赛结果作为反馈,过于稀疏,所以 OpenAI 还增加了一些评价人类选手表现的常用指标,比如总财产、击杀数、死亡数、助攻数、补刀数等等。这些指标上的改进也会与比赛输赢一起带来反馈的提升,促进模型的学习(避免长时间停留在无效学习区)。
但同时为了避免 AI 过于关注这些偏向于短期策略的数据,OpenAI 对基于指标的反馈的设计并不是「指标数值越大越好」,而是只鼓励 AI 在这些方面做到人类玩家的平均水平。这项巧妙的设计同时也可以帮助 AI 学习到不同英雄在团队作战中不同定位:以人类玩家的平均水平而言,火枪是核心英雄,应当高伤害输出、高正补、高人头、低助攻、低辅助行为,冰女则应当低正补、低人头、高助攻、高辅助行为。数据指标的不同就可以引领不同的行动策略。
DOTA 中的英雄除了自身的定位,他们之间也是需要合作的,比如抱团杀人拿塔。OpenAI 并没有为 AI 之间设计显式的沟通频道,目前他们设计了一个名为「团队精神」的超参数,这个 0 到 1 之间的值会反应每个英雄关注自己单独的反馈和整个团队的反馈之间的比例。在训练中 OpenAI 通过退火来优化这个值的具体大小。
大家可能记得,在「OpenAI Five」刚刚发布的时候,它是还不支持肉山的。很快支持了肉山之后,大家都很感兴趣 OpenAI 团队做了哪些改进。在 5 日比赛现场 OpenAI 的研究人员给出了答案:正常的探索中很难出现 5 个英雄都来到 Roshan 坑里然后打了 Roshan 拿到正面反馈的情况,所以他们引导模型学习的方法是,在训练过程把 Roshan 的血量设为随机的,那么在探索过程中英雄如果遇到了血量很低的 Roshan,显然就可以轻松地获得高反馈,从而鼓励 AI 开始关注 Roshan。不过同时 Roshan 也不是随时都要打的,随机血量的设定会让 AI 只有在觉得自己能打过 Roshan 的时候才会打。
从长期学习的角度讲,只要有足够的训练时间让 AI 探索各种行为,人类觉得有帮助的各种游戏操作 AI 最终都是有机会学会的(比如切假腿吃大药,也比如打肉山),只不过在 AI 做出足够多的次数之前,都还不能形成有效的学习。那么人类希望 AI 快速学会的行为,可以通过设计一些正反馈来鼓励学习;而另一方面,不常出现的局面,也就会像我们对深度学习模型的正常预期一样,AI 并不知道应该怎么处理。
关于装备和眼,OpenAI 的研究人员透露目前都是通过 API 编写脚本让 AI 购买的,AI 并不需要自己选择;尤其是眼,目前脚本的设定是眼只要 CD 就会购买。这样的设定当然降低了训练的难度,让 AI 享有稳定的出装,同时也给辅助英雄带来一个有趣的境地:因为有眼就要买,就会占它们的格子、迟早需要清出来,这成为了一项促使它们插眼的动力;而实际上,如果真的要为「插眼」动作本身设计反馈的话,OpenAI 的研究人员发现还真的很难找到任何指标量化眼插得好不好。所以这样的设计确实是一种简单快捷的解决方案。
现在知道了这些 OpenAI 的「教学」方法之后,再回过头去看看前面提到的「OpenAI Five」的游戏表现,是否显得合理多了、亲切多了呢?
可以说「OpenAI Five」的开发团队想了许多办法鼓励 AI 用像人类一样的策略和操作玩 DOTA,但并不对表现的上限做出明确的限制。在人类玩家探索了这个游戏这么久之后,借助人类的经验快速避开低效的游戏空间当然是一个好主意。从这个角度讲,OpenAI 现阶段的「OpenAI Five」就仿佛是早期的 AlphaGo,以从人类的过往游戏中学习为基础,然后尝试提升和创新。
那么这套系统继续优化之后在 DOTA2 国际邀请赛(TI)上面对现役职业选手还能有如何的表现,比现在明显进化明显全面的(也许是 Master 版)「OpenAI Five」甚至去掉一切约束完全自己探索的「OpenAI Five」Zero 版未来是否还有可能呢?我们拭目以待。
雷锋网 AI 科技评论报道。