AI与游戏的化学反应
对于研究者而言,游戏是完美的 AI 训练环境,教会人工智能打各种电子游戏一直是很多人努力的目标。
AlphaGo 在围棋上战胜人类顶尖选手之后,DeepMind 与暴雪合作开展星际争霸 2 的人工智能研究。去年 8 月,OpenAI 的人工智能也曾在 Dota 2 上用人工智能打败了职业玩家。
那么如果是手机上流行的多人在线战术竞技游戏(MOBA 游戏)《王者荣耀》呢?最近,匹茨堡大学、腾讯 AI Lab 等机构提交到 ICML 2018 大会的一篇论文揭开了王者荣耀 AI 研究的面纱。
案例分析:《王者荣耀》MOBA 游戏 AI
《王者荣耀》中,玩家被分为对立的两队,每一队有一个基地,分别在游戏地图的相反角落。每条线上有防御塔来防御,它可以攻击在一定范围内的敌人。每支队伍的目标是推塔并最终摧毁对方的水晶。
该实验中采用 1v1 模式,使用AI分析1V1对战中的游该方式,不同英雄的对战方法。结合模拟战斗训练,分析出英雄的强弱。
实验设置
系统的状态变量是一个 41 维的向量,包含直接从游戏引擎获取的信息,包括英雄位置、英雄健康度(血量)、小兵健康度、英雄技能状态和不同结构的相对位置。有 22 个动作,包括移动、攻击、治疗术(heal)和特殊的技能动作,包括(扇形)非指向技能。
奖励函数的目标是模仿奖励形态(reward shaping),使用信号组合(包括健康、技能、伤害和靠近水晶的程度)。研究者训练了五个《王者荣耀》智能体,使用的英雄是狄仁杰:
1、FBTS 智能体使用基于反馈的树搜索算法进行训练,一共迭代 7 次,每次进行 50 局游戏。搜索深度 d = 7,rollout 长度 h = 5。每次调用 MCTS 运行 400 次迭代。
2、第二个智能体因为没有 rollout 被标注为「NR」。它使用和 FBTS 智能体相同的参数,除了未使用 rollout。总体来看,它在批量设置上与 AlphaGo Zero 算法有些相似。
3、DPI 智能体使用 Lazaric et al., 2016 的直接策略迭代技术,进行 K = 10 次迭代。没有价值函数和树搜索(因为计算限制,不使用树搜索就可能进行更多次迭代)。
4、AVI 智能体实现近似价值迭代(De Farias & Van Roy, 2000; Van Roy, 2006; Munos, 2007; Munos & Szepesvari ´ , 2008),K = 10 次迭代。该算法可被认为是 DQN 的批量版本。
5、最后是 SL 智能体,它通过在大约 100,000 个人类玩游戏数据的状态/动作对数据集上进行监督学习来训练。值得注意的是,此处使用的策略架构与之前的智能体一致。
AI分析模型
事实上,策略和价值函数近似在所有智能体中都是一样的,二者分别使用具备五个和两个隐藏层的全连接神经网络和 SELU(scaled exponential linear unit)激活函数(Klambauer et al., 2017)。
初始策略 π0 采取随机动作:移动(w.p. 0.5)、直接攻击(w.p. 0.2)或特殊技能(w.p. 0.3)。除了将移动方向挪向奖励方向之外,π0 不使用其他启发式信息。MCTS 是 UCT 算法的变体,更适合处理并行模拟:研究者不使用 UCB 分数的 argmax,而是根据对 UCB 得分应用 softmax 函数所获得的分布进行动作采样。
与理论不同,在算法的实际实现中,回归使用 cosine proximity loss,而分类使用负对数似然损失。由于在该游戏环境中我们无法「倒带」或「快进」至任意状态,因此采样分布 ρ0 由第一次采取的随机动作(随机的步数)来实现并到达初始状态,然后遵循策略 πk 直到游戏结束。
为了减少价值逼近中的相关性,研究者丢弃了在这些轨迹中遇到的 2/3 的状态。对于 ρ1,研究者遵循 MCTS 策略,偶尔带入噪声(以随机动作和随机转向默认策略的方式)来减少相关性。在 rollout 中,研究者使用游戏内部 AI 作为英雄狄仁杰的对手。
实验结果
由于该游戏几乎是确定性的,因此研究者的主要测试方法是对比智能体对抗内部 AI 对手的有效性。研究者还添加了游戏内建 AI 的狄仁杰作为「完整性检查」基线智能体。
为了选择测试对手,研究者使用内建 AI 狄仁杰对抗其他内建 AI(即其他英雄)并选择六个内建 AI 狄仁杰能够打败的射手类英雄。研究者的智能体每一个都包含内建狄仁杰 AI,使用智能体对抗测试对手。
下图显示了每个智能体打败测试对手的时间长度(单位为帧)(如果对手赢了,则显示为 20,000 帧)。在与这些共同对手的战斗中,FBTS 显著优于 DPI、AVI、SL 和游戏内建 AI。
但是,FBTS 仅稍微超出 NR 的表现(这并不令人惊讶,因为 NR 是另外一个也使用 MCTS 的智能体)。研究者的第二组结果帮助可视化了 FBTS 和四个基线的对决(全部都是 FBTS 获胜):下图显示了 FBTS 智能体及其对手的金币比例,横轴为时间。
王者荣耀游戏中英雄对敌人造成伤害或者战胜敌人时,都会得到金币,因此金币比例大于 1.0(高出红色区域)表示 FBTS 的良好性能。如图所示,每个游戏结束时 FBTS 的金币比例都在 [1.25, 1.75] 区间内。
同时也展示出几种智能体战胜其他射手英雄所用时间(以帧为单位,即帧的数量),数字越小越好。其中 FBTS 为新研究提出的智能体。