游戏设计,基于神经网络的Dota人机对抗人工智能系统

发表于2016-06-07
评论1 3.3k浏览

  摘要:人工智能是一门科学名称。自电子计算机发明后不久,人工智能学科即宣布创立,其目的就是要模拟人类的智力活动机制来改进计算机的软件硬件构成,使他们掌握一种或多种人的智能,以便在各种领域内有效替代人的脑力劳动,特别是解决用传统软硬件方法难以解决的问题,如模式识别,复杂的控制行为或对海量的数据进行实时评估等。
  所谓人工智能,就是由人工建立的硬件或软件系统的智能,是无生命系统的智能。智能是人类智力活动的能力,是一个抽象的概念。一个软件或硬件系统是否有智能,只能根据它所表现出来的行为是否和人类某些行为相类似来做判断。
  人工智能在计算机上的实现,有两种不同的方式。一种是采用传统的编程技术,使系统呈现智能的效果,而不考虑所用方法是否与人或生物机体所用的方法相同。这种方法称为工程学方法,它的编程方式虽然简单,智能效果显著,可是算法和程序一旦固定下来,智能就很难再进一步提高。另一种是模拟法,它不仅要看智能效果,还要求实现方法和人类或生物机体所用的方法相同或类似。人工神经网络是模拟人类或生物大脑中神经元的活动方式,属于模拟法。
  人工神经网络入门难度大,编程者需要为每一个对象设置一个智能系统来进行控制,新设置好的智能系统,虽然一开始什么都不懂,但它拥有学习的能力,可以通过学习,不断提升智能,不断适应环境、应付各种情况。通常来讲,使用人工神经网络虽然编程复杂,但编写完成后的维护工作,将比使用其他方式编程后的维护更加省力。
  本文采用人工神经网络构建一个完整的人工智能系统,并将该人工神经网络理论应用于电脑领域的项目DOTA。


目录
第一章神经网络系统概述
1、生物学神经网络
2、人工神经网络
 · 人工神经网络系统概念
 · 人工神经网络系统的组成
3、神经网络的训练
4、相关数学知识
 · 人工神经元输出的计算
 · 反向传播方法

第二章人工神经网络应用的设计
1、应用设计
2、DOTA简介
 · DOTA概念
 · DOTA规则
 · DOTA现状
 · DOTAAI概念
 · 现有DOTAAI弊端
3、新版DOTAAI的理论设计
 · 巡查系统
 · 控制系统
 · 指令中心

第四章数学算法的实际应用
1、确定三大系统的参数和意义
 · 巡查系统
 · 控制系统
 · 命令中心
2、三大系统的具体实现思路
 · 巡查系统
 · 控制系统
 · 命令中心

第五章总结
参考文献
附录

第一章神经网络系统概述
1、生物学神经网络
  人工神经网络系统是模拟人思维的一种方式,仿照生物的大脑来工作。为了帮助理解,首先介绍一下生物大脑的工作方式。
  生物的大脑拥有称为皮层的组织。大脑分为两层:灰色的外层和白色的内层。灰色层只有几毫米厚,但其中却紧密地分布着数十亿个被称为神经元的微小细胞;白色层占据了皮层组织的绝大部分空间,是由无数神经元相互连接组成的。
  神经元的构成是独特的。每个神经元都长有轴突,用来将信号传递给其他神经元。
  神经元由一个细胞体、树突和一根轴突组成。树突由细胞体向各个方向长出,用来接收信号;轴突也有很多分支,通过分支的末梢和其他神经元的树突相接触,形成突触。一个神经元是通过轴突和突出把产生的信号送至其他神经元。每个神经元通过它的树突,与大约1万个其他神经元连接。
  神经元利用电化学过程交换信号。输入信号来自另一些神经元。这些神经元的末梢和本神经元的树突相遇形成突触,信号就从树突上的突触进入本细胞。虽然信号在大脑中的传输过程极其复杂,但也可以把它看做与计算机一样,利用二进制的0与1进行操作。
  每个神经元只有两种状态:兴奋和不兴奋。神经元把所有从树突的突触上接受来的激励信号,通过我们目前还未知的的方式相加。如果相加所得结果超过某种阈值,则该神经元就会被激励,变得兴奋,同时产生一个激励信号,通过它轴突的突触,把产生的信号传给其他神经元;如果相加所得结果没有超过阈值,该神经元就不会被激励。
  虽然单个神经元的结构极其简单,功能有限,频率大约只有100Hz,但正因为有数量巨大的神经元,相互连接构成一个庞大的并行处理网络,所以整个神经网络系统具备难以置信的能力:
a、能实现无监督的学习
  功能完整的神经网络系统可以实现自行学习,而不需要导师的监督教导。如果一个神经元在一段时间内受到较高频率的刺激,则它和输入信号的神经元之间的连接强度就会在一定程度上改变,使得该神经元下一次受到刺激时,更容易兴奋。
b、对损伤有冗余性
  神经网络系统即使受到了损伤,它依然能执行复杂的工作。
c、处理信息的效率极高。
  神经元之间的信息传递速度,与计算机CPU中数据传递的速度相比,是非常非常慢的。但因为神经网络系统采取了并行处理方式,使得整个系统可以同时处理巨量的数据,因此整体处理速度得到极大的提升。
d、善于归纳推广
  神经网络系统和计算机不同,前者极其擅长模式识别,并能根据已经掌握的信息进行归纳推广。比如,一个人可以阅读另一个人手写的文字,即使这前者以前从未见过后者写的东西。
e、拥有意识
  这是神经学家和人工智能研究者至今仍在商讨的话题。人拥有意识,这是无可辩驳的,但除了人以外,拥有完整神经网络系统的其他事物,是否也拥有意识?
  综上所述,一个人工的神经网络系统,所要完成的任务,就是在现有计算机规模的约束下,尽可能地模拟生物学大脑的这种并行处理机制,并且在其运作时,能够显示出许多与生物学大脑相类似的特性。

2、人工神经网络
· 人工神经网络系统概念
  生物学大脑中的神经网络系统是由很多神经元组成的,模拟大脑的人工神经网络系统也是由很多称为人工神经元的单元组成。
  人工神经元其实就是生物学神经元的简化版,但却是采用电子方式来模拟的。一个人工神经网络系统里使用的人工神经元数量,差别可以非常大,从简单的数个,到数千个,这完全取决与要用人工神经网络系统要实现的功能。
  下面是一个人工神经元的结构图:
  w称作权重,是浮点数。进入人工神经元的每一个信号都会与一个权重相联系。而正是有这些权重,一个人工神经元才会有活跃性,才会对输入的信号做出判断。
  假设所有权重w的取值为-1到1之间的一个随机小数。因为权重有正有负,所以能够影响与它有关联的信号输入。如果权重为正,就会对相关联的信号输入起激发作用;如果权重为负,就会对相关联的信号输入起抑制作用。
  一个人工神经元会把所有的输入信号,与其对应的权重分别相乘,然后把相乘的结果作为给神经元核的输入。神经元核把这些经过权重调整过的输入全部加起来,形成最终激励值,激发这个人工神经元进入兴奋或非兴奋状态。最终激励值也是一个浮点数,如果它超过这个人工神经元的某个阈值(假设阈值为1.0),则人工神经元会向外输出一个数值为1的兴奋信号,反之则输出一个数值为0的非兴奋信号。
  这就是人工神经元最简单的一种激励方式。这里激励值产生输出值的过程,是由一个函数来完成,这个函数就叫阶跃激励函数。
· 人工神经网络系统的组成
  生物学大脑里的神经元是和其他神经元相互连接在一起的。为了创建一个人工神经网络,人工神经元也要以相同的方式互相连接在一起。
  所有人工神经网络系统中,中最容易理解并且也是最广泛地使用的,是前馈网络。该网络把人工神经元一层一层地连接在一起,每一层的人工神经元都向前一层馈送,直至获得整个网络的输出。
  前馈网络共有3层。输入层中的每个输入都亏送到了隐藏层,作为该层的每一个人工神经元的输入;从隐藏层的每个人工神经元的输出,都连到了输出层的每一个人工神经元。
作为前馈网络,实际上可以有任意多个隐藏层,每一层也可以有任意数目的人工神经元,这完全取决与要解决目标的复杂性。

3、神经网络的训练
  一旦神经网络构建完毕,就可以对其进行训练,使其处理数据的能力符合最初的设计要求。
  假设需要该神经网络识别物体A。
a、为神经网络中,每一个层、每一个人工神经元里每一个权重赋予初始数值。
b、对输入层中的人工神经元输入需要识别的一系列数据。
c、对于每一种输入配置,检查它的输出是什么,并调整相应的权重。
  输入一张图片,里面画的不是物体A,而是其他物品。这时网络应输出一个0。
  对与每个非物体A的图片数据,都要调节网络权重,使得它的输出趋向于0;对于每个物体A的图片数据,也要调节网络权重,使得它的输出趋向于1。
d、成功识别出物体A后,通过再次训练,就可以使网络识别其他物体B、C、D等等。
  这种类型的训练称为有监督的学习,用来训练的数据成为训练集。调整权重可以采用许多方法,这里采用反向传播方法。


第二章人工神经网络应用的设计
1、应用设计
  本文将使用神经网络技术,设计一个人机对抗项目,并将这个人机对抗项目,应用于电脑上的一个多人的人人对抗项目DOTA中。
2、DOTA简介
 ·  DOTA概念
  DOTA是电脑领域上新兴的一个多人对抗项目,全称为DefenseOfTheAncients,即守卫遗迹。它的编写者名为IceFrog。
 ·  DOTA规则
  DOTA是一个多人的人人对抗项目。但它的规则在某些方面与象棋类似。
a、参与对抗的对抗者最多为10
b、每个参与者扮演一名“棋子”。每个棋子拥有生命力、战斗力等属性,可以通过学习不同的技能,购买不同的物品提升自身的实力。
c、双方所有棋子在一定的地域内活动。同时,双方各有一座遗迹,和数个保卫遗迹的建筑物。
d、每一方的棋子都必须不计一切代价保护己方的建筑物和遗迹,同时利用一切可行方式去摧毁敌方的建筑物和遗迹。
e、一旦一方棋子率先突破防御,摧毁了对方的遗迹,该方立即获胜,并宣告对抗终结。
  ·  DOTA现状:
  DOTA于几年前年开始流行。随着它的编写者IceFrog不断努力,DOTA的平衡性越来越高,内容越来越丰富,因此,DOTA迅速风靡全球。世界各地都频频举办大型DOTA竞技比赛,我国也在今年5月举办过世界级的竞技大赛(WCG2009)。
  ·  DOTAAI概念:
  但正因为DOTA是多人对抗项目,为了能进行对抗电脑必须联网,而且还必须有他人参与。如果因为某些原因,比如电脑无法联网,或者参与的人数不足等,便无法正常进行对抗。
  为了解决这些问题,一名国外编程高手Lazyfiend,简称RGB,于数年前编写了一套人工智能系统,可以生成数个电脑控制的角色(简称AI),来顶替人数的空缺,跟真正的人类竞技。这就是DOTA上最初的人机对抗项目。
  这个人机对抗系统极大地缓解了因为电脑无法联网或人数不足等原因,而不能正常进行对抗的问题。使用DOTA人工智能系统进行竞技的人不计其数。
  因此,DOTA人机对抗项目独立出来,成为与DOTA人人对抗项目齐名的新形项目——DOTA人工智能系统,简称DOTAAI。人们也分成了两大类,一类跟其他人通过DOTA对抗,一类跟电脑通过DOTAAI对抗。
  ·  现有DOTAAI弊端
  可是,随着时间的推移,RGB的DOTAAI的弊端也就浮现出来。RGB由于完全采用了工程学方法编程,电脑角色的一切行为全都固定化,电脑角色控制的棋子的行动套路全部是事先编好的,不会随机应变。虽然这种人工智能系统在当时打败了不少人,击溃了不少挑战,但现在,人们已经看破了这种人工智能系统的运作方式,找出了它的致命破绽。
  这可以用一个例子来比喻,人跟电脑下象棋时,电脑很厉害,人下不过,但多下几局后,人发现,电脑下棋的方式是完全固定的,每一步走棋都严格重复上一把的套路。因此,人可以从电脑这一成不变的下法中找出破绽,摸索出完全克制电脑的套路,从而击败电脑。一旦有了克制的套路,人就可以一点都不动脑筋,只要简单地按这种套路下棋,就能轻易击败电脑——因为电脑不懂得随机应变。
  遗憾的是,RGB只对他的DOTAAI更新过几次,就退出不再干了。流传至今的,还只是他数年前编写的、不懂得随机应变的那套人工智能系统。
  现在DOTA的版本飞速更新换代,由于一直没有人接替RGB的工作,从根本上改变DOTAAI智力底下的现状,导致DOTA与DOTAAI之间的差距越来越大。
  还是用下象棋举例。电脑的程序更新之后,电脑就多了几种下法,不再一成不变地使用那套已经被人看破的套路了。一下棋,人自然又被电脑击败了。但再多下几次,人又发现了电脑的致命破绽——多出来的那几种套路,也全是固定不变的。只要人摸清了电脑全部的套路之后,自然能摸索出克制这些固定下法的套路。总而言之,就算程序再更新几次,也没有实质的用处;电脑的固定的套路无论有多少种,人只要多花点时间就能全部看破。
  DOTAAI参与者的抱怨之声越来越大,这时候国外又出现一名编程高手BuffMePlz,简称BMP。但他同样没有能力从根本上改变DOTAAI智力低下的现状。他所做的,只有一件事,那就是不停地更新程序,为人工智能系统机械地加入更多的固定的算法。
  人跟电脑下象棋,如果电脑只有固定的一种套路,人很快就能看破;如果电脑更新程序,多了几种不同的但仍然固定的套路,人就需要多花点时间看破;但如果电脑有了十几种、几十种、乃至上百种不同的套路,虽然每种套路还是固定的,可由于数量激增,人要想看破,就需要花巨量的时间。这种机械式的程序更新,从某种意义上来说,能极大缓解DOTAAI智力低下的问题。
  固定套路数量的激增带来的,首先是程序容量的剧增——程序容量越大,就可能隐藏越多的错误,导致电脑出问题;其次是工作量的剧增——编写套路需要非常多的时间。
  人们看破了电脑的套路后,编写者就要编出另外的套路。可人们会更快地看破,因此编写者又需要加快速度,绞尽脑汁再编写更多的套路——这种固定套路的人工智能系统,陷入了一个恶性循环,它的弊端无需置疑。
  本人于去年开始尝试设计新的DOTAAI。
3、新版DOTAAI的理论设计
  不同于RGB的完全工程学方法、完全固定套路的算法,本人将采用以模拟法为主导,工程学为辅助的算法,在理论上构建一个人工智系统。
  理论上,一个完整的人工智能系统,应包含如下几大部分。
 ·  巡查系统
  DOTAAI是建立在DOTA的基础上的,所以最重要的一点,是必须严格遵守DOTA的各项规则,电脑角色的各种行为不能超出DOTA规则所允许的范围之外。
  这些规则将通过一个巡查系统实现。由于规则是完全固定的,不会,也不容许有任何更改,因此该系统使用工程学方法编程。
  巡查系统是独立于所有电脑角色之外的裁判,应该有如下功能:
a、信号转化
  把进行对抗时,所有传递给人类的、人类大脑可以识别的视觉、听觉等信息,转化为电脑角色可以识别的数字信号。
  这个功能为电脑角色提供知觉能力。
b、行为限制
  因为人类角色在进行对抗前,已经熟知了对抗规则,所以会自觉地避免让所控制棋子做出违规行为的情形。
  而巡查系统就起着实时监控电脑角色行为的功能,如果某个电脑角色的数据,有可能指引它控制的棋子做出违规的行为,则巡查系统就对该电脑角色发出警告,使其修正数据。
 ·  控制系统
  为了使电脑角色有效地控制它的棋子,必须有一个系统,能够接收电脑角色发出的指令,并使棋子执行该指令。
  由于棋子应对电脑角色发出的指令绝对服从,因此控制系统也使用工程学方法编程。
  控制系统应该有如下功能:
a、发布指令
  电脑角色可以通过这一功能,对它控制的棋子下达各种指令,比如移动、攻击、撤退、防守,等等。
b、响应指令
  电脑角色发布一个指令后,棋子就必须立刻响应该指令,并严格执行。
c、执行结果反馈
  棋子执行指令后,要对电脑角色汇报指令的执行情况。如果由于一些不可抗拒因素,指令未被执行,或者指令执行不到位,电脑角色就要迅速做出其他决策。
 ·  指令中心
  指令中心是整个人工智能系统的核心,它起着人类大脑的思维的作用。没有指令中心,所有电脑角色也只不过是一堆堆数据;有了指令中心,电脑角色就是真人一样的存在,才有类似真人一样的思维和行为。
  指令中心应该有如下功能:
a、知己知彼
  所谓“知己知彼,百战不殆”,电脑角色想要正确做出决策,必须全面掌握己方和敌方的详细数据。
  虽然电脑角色可以控制的棋子种类很多,每个棋子的实力也不同,但由于棋子所有的能力(生命力、战斗力等)都可以用具体的数据来表示,因此无论任何时候,一个由电脑角色控制的棋子,它的整体实力都可以靠一系列实数完整地描述。所以这个功能用完全工程学方法实现。
b、探索活动区域
  DOTA的活动区域很大,而棋子的视野很小,所以电脑角色需要通过让棋子探索活动区域来掌握战场状况。因为存在少数几处固定的“兵家必争之地”,但由于其他(不论人类还是电脑)角色控制的棋子是活动的,懂得转移阵地或建立临时阵地,所以这个功能可以由半工程学方法、半模拟法共同实现。
c、提升棋子实力
  为了战胜敌人,需要使自己控制的棋子变得更强。增强棋子实力的方式是获得经验值、提升等级、学习技能、购买物品。
  DOTA中每个棋子都有经验值的设定,通过与敌人对抗,每次对抗的胜利者都会获得经验值。
  每当经验值累积到一定程度,棋子的等级就会提升。
  棋子每提升一次等级,就可以学习一个技能。一个棋子可以从它的技能库中选择一个技能(五选一)进行学习。
  DOTA中有数量众多的物品可供电脑角色购买,并装备给它控制的棋子。通过与敌人对抗,每次对抗的胜利者都会获得金钱奖励,当金钱奖励累积到一定程度,就可以从物品库中购买一个物品(多选一),装备给它的棋子。
  每个电脑的棋子实力都不相同,因此不同技能和不同物品对棋子起到的能力提升作用也不同,组合数量非常巨大。虽然在技能学习和物品购买方面,存在一些已有的常识性规则,但更多时候还要靠模拟法实现。
d、实时评估
  就算电脑角色知己知彼,也知道如何提升自己棋子的实力,但真正面对敌人时,就需要有快速反应能力,评估战场局势,是攻是退、是坚守阵地还是呼叫支援。
  RGB的人工智能系统最大的弊端就在于,这一战场评估功能也采用了完全工程学编程,使得电脑角色没有主动的、实时的评估能力,只有被动的、反应速度慢的评估能力,而被人类角色用计谋轻易击败。
  而新版人工智能系统采用模拟法编程,能使电脑角色拥有较强的分析能力和计谋使用能力,让其更不易被击败。
  另外,电脑角色的实施评估能力要受到巡查系统的制约,即电脑角色不能以违规的方式对付敌方角色,敌方角色也不能以违规的方式对付己方角色。
  拥有上述三大系统后,这个人工智能理论设计就完成了。
  下面可以开始将数学算法应用于理论当中。

第四章数学算法的实际应用
1、确定三大系统的参数和意义
  三大系统为巡查系统、控制系统和指令中心。每个系统都有传入、传出两类参数。
 ·  巡查系统
  巡查系统使用完全工程学方法编写。
  巡查系统的参数有:
a、信号转化方面
  传入参数:
  内容:己方角色总数量及棋子总数量、每个己方角色当前金钱资源、每个己方棋子当前的实力数据(生命力、战斗力、已学技能、已购买物品),以及所处位置
  敌方角色总数量及棋子总数量、每个敌方棋子当前的实力数据(生命力、战斗力、已学技能、已购买物品),以及出现在己方棋子视野中的每个敌方棋子的位置
  类型:视觉信号
  描述:对于人类角色,上述信号都是通过人类的双眼,以视觉图像方式传入大脑。
  传出参数:
  内容:内存中的数据
  类型:实数组
  描述:上述各项信号虽然以视觉图像表达出来,通过人类的双眼传入大脑,但这些信号在电脑内存中都有对应的内存地址。信号转化实际上,是直接将这些信号对应的内存中的数据,传送给指令中心。
b、行为限制方面
  传入参数:
  内容:每个电脑角色通过控制系统下达给棋子的指令
  类型:句柄——发布指令的电脑角色,句柄——执行指令的棋子,整数——指令本身,句柄——目标单位或目标地点
  描述:巡查系统检查电脑角色下达的指令,将其与内置的固定规则进行运算、比较
  传出参数:
  内容:“允许”或“否决”
  类型:布尔值
  描述:如果下达给棋子的指令没有违反最根本的规则,就允许该指令;反之否决该指令,并给电脑角色一个“警告”惩罚,让其重新调整角色。
 ·  控制系统
  控制系统也使用完全工程学方法编写。
  控制系统的参数有:
  传入参数:
  内容:电脑角色通过指令中心实施评估后,下达的指令
  类型:句柄——发布指令的电脑角色,句柄——执行指令的棋子,整数——指令本身,句柄——目标单位或目标地点
  描述:棋子接收到指令后会立刻响应。
  传出参数:
  内容:棋子执行指令的结果
  类型:浮点数——指令完成度
  描述:用于反馈给命令中心,这次下达/响应指令是否成功。
·  命令中心
  命令中心的参数有:
a、知己知彼方面
  该功能使用完全工程学方法编写。
  传入参数:
  内容:经过巡查系统转化过的各种信号
  类型:实数组
  描述:巡查系统为电脑角色提供知觉
  传出参数:
  内容:己方角色及其控制的棋子的整体实力、敌方角色及其控制的棋子的整体实力
  类型:实数组
  描述:命令中心接收到巡查系统传来的数据后,经过相关计算,生成敌我双方目前实力的评估报告(一系列实数),储存于电脑角色的记忆数组中。
b、探索活动区域方面
  该功能使用半工程学、半模拟法——前馈网络编写。
  传入参数:
  内容:经过巡查系统转化过的各种信号
  类型:实数组
  描述:传入的信号主要是己方棋子的位置分布,和敌方棋子的活动记录。因为敌方棋子不可见,只有进入己方棋子的视线内才会被察觉,所以命令中心会根据传入参数,预测敌人出现的地点。
  传出参数:
  内容:三维坐标,及坐标的重要程度
  类型:实数组
  描述:整个活动范围是三维的空间,用三个实数变量x、y、z表示一个三维坐标(x,y,z)。传出的三维坐标表示目的地,目的地所处的地域不同,重要性也不同。重要性是固定的,但命令中心会根据目的地的重要程度,自行决定是否派棋子去探索。
c、提升棋子实力方面
  该功能使用半工程学方法、半模拟法编写。
  传入参数:
  内容:经过巡查系统转化过的各种信号
  类型:实数组
  描述:传入的信号主要是跟电脑角色自己有关的数据,为自身当前拥有的金钱资源(用于购买物品),和棋子当前的实力(为了学习技能)。
  传出参数:
  内容:技能的编号和物品的编号
  类型:整数
  描述:为了实现“有效提升”棋子实力这一目的,需要先掌握电脑角色和棋子当前的数据(一系列实数),然后输进一个训练好的神经网络系统。神经网络识别这一系列数据后,将迅速并准确地给出对应的具体实施方案。
d、实时评估方面
  该功能使用模拟法——竞争网络编写。
  传入参数:
  内容:经过巡查系统转化过的各种信号
  类型:实数组
  描述:电脑角色的棋子遇到敌方单个棋子时,需要迅速评估自己棋子和敌方棋子的实力;如果己方数个棋子同时遇见敌方数个棋子时,不仅需要评估每一个棋子的实力,还得考虑敌我双方棋子之间,互相配合的能力(换句话讲,就是计谋)
传出参数:
  内容:电脑角色对它的棋子发布的指令
  类型:句柄——发布指令的电脑角色,句柄——执行指令的棋子,整数——指令本身,句柄——目标单位或目标地点
  描述:电脑角色经过实时评估后,就会做出决策。决策的内容就是一系列指令,控制棋子做出一系列能够击败敌方棋子,或保全己方棋子的行动。行动包括直接上前攻击、迂回、诱敌深入、埋伏落单棋子、辅助己方棋子,或者撤退、掩护友方棋子等等。
2、三大系统的具体实现思路
 ·  巡查系统
a、信号转化功能
  由于各种信息的视觉信号,都与电脑内存中具体的数据相对应,所以,只要将这种对应关系整理出来,列成一个可查询的表格,就能实现信号转化功能。


b、行为限制功能
  违反规则的行为共有下列几种:


  这些违规行为都可以通过多组数据描述。
  一旦一个电脑角色发出的指令,其具体数据通过逐条比较后,与违规行为数据组中的数据整体相似,就可以认定这 个指令违规。
 ·  控制系统
  为了实现指令的发布与响应功能,这里构造一个指令队列系统。
  构造方式如下:
a、系统为每一个电脑角色的棋子分配一个指令队列
b、每个指令队列中包含有编号1至编号10,一共10个(总数可变)指令单元
c、每个指令单元均有6项数据,分别是指令单元的指令、指令的目标单位、指令的目标地点、指令的计时器、指 令的描述、指令的描述注解。
d、指令单元每项数据的作用:


e、指令队列中若存在指令,棋子将按编号从1至指令总数量(最大数量10),依次执行指令单元中 的指令。
f、电脑角色对指令队列进行的操作,共有如下几种:
  下达一个立刻执行指令
  下达的指令会直接替换编号1的指令单元中的指令,无论棋子刚才在做什么,现在都会立刻执行新下 达的指令。
  在指定编号的指令单元中下达一个非立刻执行指令,或在指令队列最后附加一个非立刻执行的指令
  这可以让棋子拥有做出一系列指定动作(即使用计谋)的能力。
  清除指令队列中所有指令
  这可以让棋子处于原地待命状态。
  计算指令完成程度
  如果指令根本没被执行,则输出0,否则输出完成度数值(百分比)
g、指令队列原理
  发布指令给事物(电脑角色发布指令给队列)——事物接收指令并执行(棋子接收到指令,并执行),这一方式模 拟了人类“思考”——“行动”的过程。
 ·  命令中心
a知己知彼功能
  一个角色的整体实力包括其拥有的金钱资源,棋子本身实力(生命力、战斗力)和技能、物品对棋子本身实力的提 升。
  由于DOTA的设定,一个角色和它控制的棋子自身各种数据一旦确定,就一定会有一个确定的整体 实力数值。
  设一个角色金钱资源为M,棋子本身生命力为H,棋子本身战斗力为A,棋子已经学习的技能对生命力、战斗力的 提升为S、I,棋子已经购买的技能对生命力、战斗力的提升为S’、I’,整体实力为T。
  则会有一个线性函数F,使得T=F(M,H,A,S,I,S’,I’)。
  对于每一个角色(无论敌我),由于它各种数值(除了坐标数值) 虽然会改变,但在一定时间范围内(数秒到数分钟)可以保持稳定不突变(就算现在突然改变了,但也再会保持一 定时间,才再次改变),因此在这段稳定期内,可以使用函数F求出整体实力T。
b、探索活动区域功能
  半工程学方面,由于整个活动区域内各项地形数值不会改变(地面不会在这里凸起一块,或凹进一块等),因此 一个地域内的地形的重要性(是否利于防守、是否毫无战略价值等),在一开始就被设置好了,不会 改变。
  所以目标地点所处的地域,重要性也能通过一个可查询表格实现。
  输入目标地点坐标 → 查询表格 → 得到输出结果
  而目标地点坐标,可以通过对敌方棋子活动记录预测(敌人最后出现在哪里,就尝试去哪里探索),或者反向查询 表格(输入重要性,得到目标地点)来求出。
  半模拟法方面,由于电脑角色只需要求出自身、敌方每个未露面棋子整体实力,然后通过简单权重计算,算出棋 子到达未探索的目的地时,万一遇见敌方棋子时,是否敌得过即可。
  所以构建一个只有一个神经元的系统。
  神经元有五个输入,为自身棋子的整体实力,与敌方每个未露面棋子的整体实力的大小比较。如果自身棋子的整体 实力比一个敌方棋子强大,对应的输入就为1,否则为0.
  神经元依次把五个输入与其对应的权重(电脑角色对于每个敌方角色的实力预估)相乘,并求积的总和。如果最终 激励值超过神经元的阈值,则去目标地点探索承担的风险可以接受;否则表示去目标地点探索承担的风险太大,不 可接受。
c、提升棋子实力功能
  提升棋子实力主要通过两点,技能的(多选一)学习和物品的(多选一)购买。
  技能的学习:
  技能可以提升棋子的生命力或战斗力。
  每个棋子每一等级可以学习一个技能(从自身技能库中五选一),由于一个技能不会同时提升生命力和战斗力,因 此需要评估所有类别的技能的各项数据,找出学习哪一个技能后,棋子整体实力提升最明显。
  对于一些棋子的部分技能,存在一些常识性学习规则,这些规则是人类角色通过无数次试验,得到的常识。如果一 个棋子技能学习部分存在常识性学习规则,技能将优先按照该规则以固定的方式学习技能。
  如果一个棋子没有或只有很少常识性学习规则,那么就需要使用一个通用技能学习神经网络,通过该网络求最优解 。
  由于通用技能学习神经网络需要做到五选一,存在竞争关系,因此需要使用竞争网络。
  构建一个只有输入层和竞争层的双层竞争网络。
  输入层由处理单元构成,处理单元的作用是将输入的,可以完整描述一个棋子自身实力的所有数据,转化为一个输 入模式。对于每一个棋子,输入模式是通用的,但因为每个技能都不相同,所以竞争单元也不相同。
  竞争层由五个竞争单元组成。每个竞争神经单元都与输入层的处理单元相连接,如果一个竞争单元输入的加权和最 大,则该竞争单元对应的技能成为优胜者,被棋子学习。
  由于技能的复杂性,这个竞争网络必须由人工监督训练。
  物品的购买:
  物品也可以提升棋子的生命力或战斗力。
  物品总量众多,而且物品的购买不受棋子种类限制(就是说对于每一个棋子,它能购买的物品都是相同的)。物品 的购买仅仅受限于电脑角色的金钱资源,和棋子所携带物品总量(一个棋子最多可以携带6个物品) 。
  电脑角色在为棋子购买物品时,不可能把每一个物品都买一遍,因此需要评估所有类别的物品的各项数据,找出购 买哪一个物品后,棋子整体实力提升最明显。
  对于一些棋子的部分物品,也存在一些常识性购买规则,这些规则是人类角色通过无数次试验,得到的常识。如果 一个棋子物品购买部分存在常识性购买规则,物品将优先按照该规则以固定的方式购买。
  如果一个棋子没有或只有很少常识性学习规则,那么就需要使用一个通用物品购买神经网络,通过该网络求最优解 。
  由于通用物品购买神经网络需要做到多选一,存在竞争关系,因此需要使用竞争网络。
  构建一个只有输入层和竞争层的双层竞争网络。
  输入层由处理单元构成,处理单元的作用是将输入的,可以完整描述一个棋子自身实力的所有数据,转化为一个输 入模式。对于每一个棋子,输入模式都通用,竞争单元也通用的。无论棋子是什么种类的,只要它的输入模式与已 知的符合,就可以购买对应的物品。
  竞争层由多个竞争单元组成,数量取决与物品总数。每个竞争神经单元都与输入层的处理单元相连接,如果一个竞 争单元输入的加权和最大,则该竞争单元对应的物品成为优胜者,被棋子购买。
  由于物品的复杂性,这个竞争网络必须也由人工监督训练。
d、实时评估功能
  发生遭遇战时,巡查系统会对每个电脑角色进行通告,并为其提供战况情报与数据。
  对敌我双方临近战场棋子整体实力的评估,是通过一个神经元进行的。这个神经元构造与实现“探索活动区域”功 能的神经元相似,只不过目的地坐标被自动设定为战场。
  这个评估是告诉一个电脑角色,加入战斗有多大风险,多大的胜算。电脑角色将评估结果于自身的性格值结合,最 后决定是否加入战斗。
  电脑角色谋略的使用,是靠一个竞争网络实现的。
  这个竞争网络的处理单元,将战场的地形、坐标、范围,以及参与战斗的敌我双方的棋子整体实力等详细数据,转 化成一个输入模式。对于每一个棋子,输入模式都通用,竞争单元也通用。无论棋子是什么种类的,只要它的输入 模式与已知的符合,控制它的电脑角色就会做出相应的一系列动作(即实施谋略)。
  竞争层有多个竞争单元组成,数量取决与一个角色可以做出的谋略或配合的总数。对于电脑角色,它们一开始并不 了解,也不能识别不同输入模式对应的行为的意义。所以这个竞争网络必须由监督人工训练,由人告诉电脑角色, 什么样的行为是迂回、是诱敌深入或埋伏落单敌方棋子等,以及什么样的输入模式对应什么样的行为 ,等等。

第五章 总结
  上述全部内容就是一个DOTA人工智能系统的构建理论和实现思路。
  理论的核心内容是通过三大系统,即巡查系统、控制系统和命令中心,来实现一个人工智能的完整功能。
a、巡查系统就像是个裁判,它为电脑角色提供知觉能力,同时每时每刻监督电脑角色的行为,如果发现电脑角色 违规,就会警告该角色并责令改正。
b、控制系统是一个带有反馈环节的控制手段,它为电脑角色提供对棋子的绝对控制权力,使电脑角色能够有效地 将思维通过棋子的行为表现出来。
c、命令中心类似于人类的大脑,它为电脑角色提供思维能力,电脑角色通过这个系统产生意识,会对感知环境, 并对对各种复杂状况做出反应。
  整个人工智能实际制作起来的难点,一是理论的建立,二是算法的设计,而算法的设计又依赖于现有 数据的输入。
  理论为实际算法和程序代码提供思路,反过来实际算法和程序代码会通过自身的设计、执行来支持理 论的正确性。
  编写一个DOTA人工智能系统虽然是非常费时的工作,但它由于使用了人工神经网络系统,因此不论是功能方面 、排错维护方面,还是算法复杂度、实际代码所需量,都比完全工程学方法编写的人工智能系统强大 。
  目前,整个DOTA AI的程序代码已经实现了第一大系统巡查系统的“信号转化”功能,和第二大系统控制系统的全部功能“指令的 发布/响应与执行结果反馈”。
  所有系统中,以第三大系统命令中心“实施评估”功能最为重要。可以说一切其他的智能,都建立在电脑角色正确 识别当前环境、当前棋子实力等数据的基础上。
  要完整、精确地实现第第三大系统的功能,需要以各种数据录入完毕、各个算法设计完毕、所有神经网络正确。目前整个DOTA AI的制作正在进行的阶段,就是数据的录入。只有将所有必要的数据录入完毕后,所有依赖于数据完整的后续功 能(算法设计、神经网络训练)才有实现的可能。
  总体来说,新版人工智能系统编程已经完成了40%,进度快速增长中。这个全新的,与旧版有着本质不同的人工 智能,预计完成时间——2009年年底。

后记:
  这是DOTA官方汉化组成员Harreke于2011年6月份发表在PD论坛上的一篇帖子。
End.

如社区发表内容存在侵权行为,您可以点击这里查看侵权投诉指引