1、 Dota游戏中的人工智能技术 杨国强(2008242039) 摘要:Dota游戏有一个模式是人机对抗模式,在这个模式下人可以和AI进行对抗,Dota游戏中的AI设计的非常之棒,作为一个本身上手就很复杂,对操作要求很高,而且衍生非常多游戏战术的这么一款游戏,它的AI设计难度按说非常之大,但Dota的AI设计者水平非常之高,Dota的AI水平只有拥有相当高的水平的游戏爱好者才能与之抗衡。 Dota游戏的AI设计中,大量采用了神经网络技术,以实现一到多人与AI进行的在Dota游戏中的人机对抗。 关键
2、词: Dota AI 神经网络 人机对抗 引言 人机对抗技术其实不是什么新技术,早在 1963 年,第一次人机对抗的事件就发生了。当时的国际象棋大师兼教练大卫·布龙斯坦怀疑计算机的创造性能力,于是便同意用自己的智慧与计算机较量。下棋的时候他有一个非常不利的条件:让一个后。但当对局进行到一半时,计算机就把布龙斯坦的一半兵力都吃掉了。这时,布龙斯坦要求再下一局,但这次却不再让子了! 1997 年 5 月 11 日,在人与计算机之间挑战赛的历史上可以说是历史性的一天。计算机在正常时限的比赛中首次击败了等级分排名世界第一的棋手。加里卡斯帕罗夫以 2.5:3
3、5 输给 IBM 的计算机程序 “深蓝”。机器胜利的标志着国际象棋历史的新时代。也标志这人机对抗技术发展的逐步成熟。 电子游戏中的人机对抗本质上和棋类的人机对抗是一样的,即在一定的规则限制下,若干个人与电脑AI的,以达成一定成就为目标的对抗。 值得注意的是Dota仅仅是魔兽争霸这款游戏的一个地图,作为AI的设计者不会从中获得一点好处,他们的工作彰显的更多的是对人工智能这门学科的热爱。 Dota游戏规则明确,控制逻辑复杂,AI设计目标明确,难度很大。在这样难度下,Dota的AI水平能达到如此高度,值得我们对其进行研究。 (一) 神经网络系统概述 人工神经网络系统是
4、模拟人思维的一种方式,仿照生物的大脑来工作。 神经元的构成是独特的。每个神经元都长有轴突,用来将信号传递给其他神经元。 神经元由一个细胞体、树突和一根轴突组成。树突由细胞体向各个方向长出,用来接收信号;轴突也有很多分支, 通过分支的末梢和其他神经元的树突相接触,形成突触。一个神经元是通过轴突和突出把产生的信号送至其他神经 元。每个神经元通过它的树突,与大约1万个其他神经元连接。 每个神经元只有两种状态:兴奋和不兴奋。神经元把所有从树突的突触上接受来的激励信号,通过我们目前还未知 的的方式相加。如果相加所得结果超过某种阈值,则该神经元就会被激励,变得兴奋,同时产生一
5、个激励信号,通 过它轴突的突触,把产生的信号传给其他神经元;如果相加所得结果没有超过阈值,该神经元就不会 被激励。 虽然单个神经元的结构极其简单,功能有限,频率大约只有100Hz,但正因为有数量巨大的神经元,相互连接 构成一个庞大的并行处理网络,所以整个神经网络系统具备难以置信的能力: 1.能实现无监督的学习 功能完整的神经网络系统可以实现自行学习,而不需要导师的监督教导。如果一个神经元在一段时间内受到较高频 率的刺激,则它和输入信号的神经元之间的连接强度就会在一定程度上改变,使得该神经元下一次受到刺激时,更 容易兴奋。 2.对损伤有冗余性 神经
6、网络系统即使受到了损伤,它依然能执行复杂的工作。 3.处理信息的效率极高。 神经元之间的信息传递速度,与计算机CPU中数据传递的速度相比,是非常非常慢的 。但因为神经网络系统采取了并行处理方式,使得整个系统可以同时处理巨量的数据,因此整体处理速度得到极大 的提升。 4.善于归纳推广 神经网络系统和计算机不同,前者极其擅长模式识别,并能根据已经掌握的信息进行归纳推广。比如,一个人可以 阅读另一个人手写的文字,即使这前者以前从未见过后者写的东西。 5.拥有意识 这是神经学家和人工智能研究者至今仍在商讨的话题。人拥有意识,这是无可辩驳的,但除了人以
7、外,拥有完整神 经网络系统的其他事物,是否也拥有意识?。 (二) 神经网络的训练 一旦神经网络构建完毕,就可以对其进行训练,使其处理数据的能力符合最初的设计要求。 假设需要该神经网络识别物体A。 ①为神经网络中,每一个层、每一个人工神经元里每一个权重赋予初始数值。 ②对输入层中的人工神经元输入需要识别的一系列数据。 ③对于每一种输入配置,检查它的输出是什么,并调整相应的权重。 输入一张图片,里面画的不是物体A,而是其他物品。这时网络应输出一个0。 对与每个非物体A的图片数据,都要调节网络权重,使得它的输出趋向于0;对于每个物体A的图片数据,也要调节网络权重,使得它的输出
8、趋向于1。 ④成功识别出物体A后,通过再次训练,就可以使网络识别其他物体B、C、D等等。 这种类型的训练称为有监督的学习,用来训练的数据成为训练集。调整权重可以采用许多方法,这里采用反向传播方法。 (三) Dota AI的设计 3.1 DOTA概念 DOTA是电脑领域上新兴的一个多人对抗项目,全称为Defense Of The Ancients,即守卫遗迹。它的编写者名为Ice Frog。 3.2 DOTA规则 DOTA是一个多人的人人对抗项目。但它的规则在某些方面与象棋类似。 1) 参与对抗的对抗者最多为10人,分为两大阵营,每方阵营各5人。
9、 2)每个参与者扮演一名“棋子”。每个棋子拥有生命力、战斗力等属性,可以通过学不同的技能,购买不同的 物品提升自身的实力。 3)双方所有棋子在一定的地域内活动。同时,双方各有一座遗迹,和数个保卫遗迹的建筑物 4)每一方的棋子都必须不计一切代价保护己方的建筑物和遗迹,同时利用一切可行方式去摧毁敌方的建筑物和遗迹。 5)一旦一方棋子率先突破防御,摧毁了对方的遗迹,该方立即获胜,并宣告对抗终结。 3.3 Dota AI的理论设计 Dota AI采用以模拟法为主导,工程学为辅助的算法,在理 论上构建一个人工智系统。 理论上,一个完整的人工智能系统,应包含如下几大部分。
10、 1. 巡查系统 子功能包括: 信号转化 行为限制 2控制系统 子功能包括: 发布指令 响应指令 执行结果反馈 3 指令中心 子功能包括: 知己知彼 探索活动区域 提升棋子实力 3.4大系统的具体实现思路 巡查系统 1)信号转化功能 由于各种信息的视觉信号,都与电脑内存中具体的数据相对应,所以,只要将这种对应关系整理出来,列成一个可 查询的表格,就能实现信号转化功能。 输入待转化信号 → 查询表格 → 得到输出结果 2)行为限制功能 违反规则的行为共有下列几种: 使用作弊工具,非法修改角色的金钱资源 → 非法改变金钱 使用作弊工具,
11、非法修改棋子的实力 → 非法提升实力 以任何方式利用DOTA自身的漏洞 → 利用BUG。 一旦一个电脑角色发出的指令,其具体数据通过逐条比较后,与违规行为数据组中的数据整体相似,就可以认定这 个指令违规。 控制系统 为了实现指令的发布与响应功能,这里构造一个指令队列系统。 构造方式如下: 1)系统为每一个电脑角色的棋子分配一个指令队列 2)每个指令队列中包含有编号1至编号10,一共10个(总数可变)指令单元 3)每个指令单元均有6项数据,分别是指令单元的指令、指令的目标单位、指令的目标地点、指令的计时器、指 令的描述、指令的描述注解。 4)指令单元每项数据的作用: 5)
12、指令队列中若存在指令,棋子将按编号从1至指令总数量(最大数量10),依次执行指令单元中 的指令。 6)电脑角色对指令队列进行的操作,共有如下几种: ①下达一个立刻执行指令 下达的指令会直接替换编号1的指令单元中的指令,无论棋子刚才在做什么,现在都会立刻执行新下 达的指令。 ②在指定编号的指令单元中下达一个非立刻执行指令,或在指令队列最后附加一个非立刻执行的指令 这可以让棋子拥有做出一系列指定动作(即使用计谋)的能力。 ③清除指令队列中所有指令 这可以让棋子处于原地待命状态。 命令中心 1)知己知彼功能 一个角色的整体实力包括其拥有的金钱资源,棋子本身实力(生命力、战斗
13、力)和技能、物品对棋子本身实力的提升。 设一个角色金钱资源为M,棋子本身生命力为H,棋子本身战斗力为A,棋子已经学习的技能对生命力、战斗力的 提升为S、I,棋子已经购买的技能对生命力、战斗力的提升为S'、I',整体实力为T。 则会有一个线性函数F,使得T=F(M,H,A,S,I,S',I')。 对于每一个角色(无论敌我),由于它各种数值(除了坐标数值) 虽然会改变,但在一定时间范围内(数秒到数分钟)可以保持稳定不突变(就算现在突然改变了,但也再会保持一 定时间,才再次改变),因此在这段稳定期内,可以使用函数F求出整体实力T。 2)探索活动区域功能 ①半工程学方面,由于整个活动区域内各
14、项地形数值不会改变(地面不会在这里凸起一块,或凹进一块等),因此 一个地域内的地形的重要性(是否利于防守、是否毫无战略价值等),在一开始就被设置好了,不会改变。 ②半模拟法方面,由于电脑角色只需要求出自身、敌方每个未露面棋子整体实力,然后通过简单权重计算,算出棋 子到达未探索的目的地时,万一遇见敌方棋子时,是否敌得过即可。 所以构建一个只有一个神经元的系统。 神经元依次把五个输入与其对应的权重(电脑角色对于每个敌方角色的实力预估)相乘,并求积的总和。如果最终 激励值超过神经元的阈值,则去目标地点探索承担的风险可以接受;否则表示去目标地点探索承担的风险太大,不可接受。 3)提升棋子实力功
15、能 提升棋子实力主要通过两点,技能的(多选一)学习和物品的(多选一)购买。 技能的学习: 技能可以提升棋子的生命力或战斗力。 每个棋子每一等级可以学习一个技能(从自身技能库中五选一),由于一个技能不会同时提升生命力和战斗力,因 此需要评估所有类别的技能的各项数据,找出学习哪一个技能后,棋子整体实力提升最明显。 由于通用技能学习神经网络需要做到五选一,存在竞争关系,因此需要使用竞争网络。 构建一个只有输入层和竞争层的双层竞争网络。 输入层由处理单元构成,处理单元的作用是将输入的,可以完整描述一个棋子自身实力的所有数据,转化为一个输 入模式。对于每一个棋子,输入模式是通用的,但因为每
16、个技能都不相同,所以竞争单元也不相同。 竞争层由五个竞争单元组成。每个竞争神经单元都与输入层的处理单元相连接,如果一个竞争单元输入的加权和最 大,则该竞争单元对应的技能成为优胜者,被棋子学习。 由于技能的复杂性,这个竞争网络必须由人工监督训练。 物品的购买: 物品也可以提升棋子的生命力或战斗力。 物品总量众多,而且物品的购买不受棋子种类限制(就是说对于每一个棋子,它能购买的物品都是相同的)。物品 的购买仅仅受限于电脑角色的金钱资源,和棋子所携带物品总量(一个棋子最多可以携带6个物品) 。 电脑角色在为棋子购买物品时,不可能把每一个物品都买一遍,因此需要评估所有类别的物品的各项数据,
17、找出购 买哪一个物品后,棋子整体实力提升最明显。 对于一些棋子的部分物品,也存在一些常识性购买规则,这些规则是人类角色通过无数次试验,得到的常识。如果 一个棋子物品购买部分存在常识性购买规则,物品将优先按照该规则以固定的方式购买。 如果一个棋子没有或只有很少常识性学习规则,那么就需要使用一个通用物品购买神经网络,通过该网络求最优解 。 由于通用物品购买神经网络需要做到多选一,存在竞争关系,因此需要使用竞争网络。 构建一个只有输入层和竞争层的双层竞争网络。 由于物品的复杂性,这个竞争网络必须也由人工监督训练。 4)实时评估功能 发生遭遇战时,巡查系统会对每个电脑角色进行通告,并为其
18、提供战况情报与数据。 对敌我双方临近战场棋子整体实力的评估,是通过一个神经元进行的。这个神经元构造与实现“探索活动区域”功 能的神经元相似,只不过目的地坐标被自动设定为战场。 这个评估是告诉一个电脑角色,加入战斗有多大风险,多大的胜算。电脑角色将评估结果于自身的性格值结合,最后决定是否加入战斗。 电脑角色谋略的使用,是靠一个竞争网络实现的。 总结 上述全部内容就是一个DOTA人工智能系统的构建理论和实现思路。 理论的核心内容是通过三大系统,即巡查系统、控制系统和命令中心,来实现一个人工智能的完整功 能。 1)巡查系统就像是个裁判,它为电脑角色提供知觉能力,同时每时每刻监督电脑角色
19、的行为,如果发现电脑角色 违规,就会警告该角色并责令改正。 2)控制系统是一个带有反馈环节的控制手段,它为电脑角色提供对棋子的绝对控制权力,使电脑角色能够有效地将思维通过棋子的行为表现出来。 3)命令中心类似于人类的大脑,它为电脑角色提供思维能力,电脑角色通过这个系统产生意识,会对感知环境,并对对各种复杂状况做出反应。 整个人工智能实际制作起来的难点,一是理论的建立,二是算法的设计,而算法的设计又依赖于现有 数据的输入。 理论为实际算法和程序代码提供思路,反过来实际算法和程序代码会通过自身的设计、执行来支持理 论的正确性。 编写一个DOTA人工智能系统虽然是非常费时的工作,但它由于使用了人工神经网络系统,因此不论是功能方面 、排错维护方面,还是算法复杂度、实际代码所需量,都比完全工程学方法编写的人工智能系统强大 。 所有系统中,以第三大系统命令中心“实施评估”功能最为重要。可以说一切其他的智能,都建立在电脑角色正确 识别当前环境、当前棋子实力等数据的基础上。 参考文献 [1]Mat Buckland[美].《戏编程中的人工智能技术》 (AI Techniques for Game Programming).清华大学出版社. 2006.5 [2]《ASS使用教程》 [3]《神经网络的人机对抗人工智能系统》 Harreke(Dota AI作者)






