博舍

网易游戏人工智能实验室分享:游戏中应用的AI技术 游戏编程中的人工智能技术用什么软件做

网易游戏人工智能实验室分享:游戏中应用的AI技术

在2019网易游戏开发者峰会上,网易游戏人工智能实验室技术总监WeldonZhang,分享了人工智能实验室在游戏AI上的探索和成果,对游戏中应用的AI技术进行了盘点。

总体来看,AI技术可以在游戏中运用的五个方向分别是:图像API,模型动画,语音文本,游戏机器人以及营销运营。

以下是分享实录:

众所周知,中国是世界上最大的游戏市场,一是得益于庞大的玩家人数,二是离不开各公司在技术上的突破。

作为其中一份子,网易也非常注重技术积累。同时在看似繁荣的游戏市场下,我们也面临了很多挑战,经过多年培养,玩家对游戏的品质要求越来越高,游戏的开发成本逐年增加。同时由于玩家结构调整和市场变化,都给我们的市场增长带来阻碍。这些问题要求我们要在技术上不断的创新。AI实验室就希望通过人工智能技术,服务于各游戏研发部门,寄希望打造精品化的游戏。

首先,简单回顾一下游戏AI的背景。游戏AI是伴随电子游戏而出现的,在早期的《吃豆人》等游戏中就出现了对抗类AI角色,后来逐渐出现了更复杂的NPCAI。自从DeepMind发表在《自然》杂志上的DQN文章后,游戏AI开始引起重视,在短短三四年的时间,DQN发展出了很多变种,解决了很多以往无法解决的功能问题。

对于游戏行业之外的人,真正了解到游戏AI可能是从AlphaGo开始的,这让大家感觉到游戏AI的春天即将到来。在去年OpenAIFive在《Dota2》里已经可以打败一般水平的玩家。

除通常理解的游戏AI之外,语音、视觉、机器学习等所有AI技术都可以运用到游戏中。

这次主要是想探讨一下哪些技术可以在游戏中得到应用,所以出发点是从技术方面来考虑的,并不是从产品的方面去考虑。接下来分为五个方向进行分享:图像API,模型动画,语音文本,游戏机器人以及营销运营。

一、图像API

这是传统AI行业经常做的事情,在游戏里也经常用到。因为在很多游戏推广运营甚至游戏的交互中,经常需要玩家上传图像,这里面就存在很多应用。举几个例子:

第一,人脸解锁,也可以应用到手游非登陆密码解锁;

第二,人脸美化,使玩家交互过程更加和谐;

第三,人脸变换,制作年龄变化、脸型变化等趣味玩法和营销赋能,不仅是静态的变脸,还可以实现动态替换。

第四,图像检测,进行黄图检测、垃圾广告检测、政治人物检测和暴恐方面的检测,过滤掉不合适的内容。

还有一类图像API是游戏美术图像的生成和变换,美术资源的制作是整个游戏制作成本中最大的一块,所以我们就思考,有没有什么AI技术可以自动生成这些美术资源,当然不仅限于图像。后来发现利用图像技术进行场景风格化,角色风格化,自动上色,个性字体等方面的应用都可以帮助美术节省成本。

画面风格迁移可以把不同画家的风格转化到同一张图片上,得到不同画家风格的图片。我们在游戏中也做过很多尝试,例如通过一张真实的照片,直接转换为各种风格的素材。

二、模型动画

1.角色,场景,道具生成

模型生成主要是围绕人物角色、动物角色、物体的3D扫描重建以及最近很流行的智能捏脸等方面。

捏脸已经成为很多游戏的标配,其中有很多可以探索的地方。玩家想达到自己想要的脸型会花费很多时间,那么如果上传玩家自己的照片就可以进行自动匹配脸型。

另外还可以利用玩家上传的照片和游戏的模型进行融合,进行智能捏脸,让玩家有较好的游戏代入感,以及对人头模型进行宠物化实现趣味玩法等。

2.动画生成

有了人头和人体模型之后,就要进行动画生成。动画方面我们也进行了很多研发,例如口型动画,表情动画;同时还做了很多表情捕捉、动作捕捉、动画控制器等方面的探索。

语音驱动口型动画基本原理是:对输入的语音做特征提取,通过深度网络模型找到对应的口型,从而生成动画。目前口型的模型也已经做到可以自动生成了,可以自动识别语音的情感变换面部表情。同时在虚拟直播时,面向一些有特色的直播,可以做一些表情实时迁移。

三、语音文本应用

语音和文本方面也存在很多应用,例如语音识别、语音合成、声纹识别、文本生成、文本分类、文本交互等。

语音识别主要是用于识别玩家上传的语音,过滤掉不合适的内容,也可以用语音识别技术对游戏进行控制;

语音合成主要运用于NPC配音,基于端对端神经网络语音合成,生成多语言带感情的语音,还可以做一些声纹识别,例如闻声识人,从而进行玩家身份验证,无须输入身份信息。

文本生成的方法可以生成古诗、对联、战报、文案等,实现趣味玩法或者加速文案制作;

文本分类中,通过对聊天频道的内容监控,我们可以做广告过滤、社交推荐等;

文本交互可以做互动交互、智能客服、新人引导、NPC聊天以及伴随养成和辅导这些相关内容,给玩家提供更好的体验。

四、游戏AI机器人

类似于DeepMind和OpenAI,我们也在游戏机器人方面做了大量的工作。结合监督学习、强化学习以及规则库,我们在游戏角色的微操、决策等方面做了很多尝试,可以应用于卡牌、对抗类游戏。

五、智能营销运营

在智能营销方面,我们可以利用图像识别技术进行外挂检测。还可以给玩家进行推荐,譬如道具推荐,搭配推荐,战场匹配等。最后还可以进行图像,文本,动画等玩家分享。

游戏外挂破坏了游戏的平衡,所以游戏需要对这些外挂进行检测。我们训练了一个基于深度学习的轻量级外挂作弊检测模型,放到PC端或移动端做定时的检测,可以把外挂识别出来。模型的准确率非常高,且占用资源量非常少,检测速度很快,能够深度打击这些外挂。

毫无疑问,人工智能给游戏开发带来更多便利和更加多样性的玩法,同时,一款游戏中人工智能运用的好坏也会直接影响到游戏的可玩性。如何在现有技术水平的基础上加入更多、更新颖的人工智能技术,也是未来游戏开发中值得讨论的课题。未来在游戏以及更多领域中,人工智能会有更多、更强大的应用。

本文来自https://mp.weixin.qq.com/s/AcuQh1PPPPh97DR4RLDdmg,本文观点不代表GameLook立场,转载请联系原作者。

游戏开发中的人工智能(十三):不确定状态下的决策:贝叶斯技术

接上文游戏开发中的人工智能(十二):概率概论

本文内容:贝叶斯技术是概率技术,本章解释如何运用,以便在游戏中做决策并适应游戏。

不确定状态下的决策:贝叶斯技术

本章要介绍贝叶斯推论和贝叶斯网络,教你怎么把这些技术应用在游戏中。准确的说,是使用这些技术让NPC在游戏世界处于不确定状态下做决策,也会讲解简单的贝叶斯模型,让你的NPC可以适应变动的情况。我们会用到大量的概率,如果你不熟悉概率,可以先读一读第十二章,再回来阅读本章。

何谓贝叶斯网络

贝叶斯网络是一些可以替特定问题简明表示出随机变量(随机数)间的关系的图形。这些图形有助于在面对不确定状态时,做推理或决策。这些推理的依据是第十二章讨论过的贝叶斯规则。

本章我们要用简单的贝叶斯网络,仿真特定问题场景,让NPC面对游戏世界的不确定信息,做出决策。

结构

贝叶斯网络由代表随机变量的节点,以及代表随机变量间因果关系的弧或连线组成。

想象一个游戏,NPC遇到储物柜,也许被上锁(locked),也许没上锁。是否上锁,取决于是否存放宝物(treasure)或是否设有陷阱(trapped)。图13-1是这个例子的贝叶斯网络实例。

此图中,标示为T、Tr以及L的节点,代表的是随机变量(在概率中称为事件)。连接每个节点的箭头代表的是因果关系。例如,图13-1的“上锁”节点,是因为“设陷阱”节点或“有宝物”节点才产生的,或是因为既“设陷阱”有“有宝物”的节点才产生的。这种因果关系是并不确定的,有概率的。例如,“设陷阱”的储物柜不一定会被“上锁”。“设陷阱”可能造成上锁,但也有可能“设陷阱”而不“上锁”。

要从概率的观点看待事件间连接的强度。每个节点都有相关联的条件概率表,根据母事件结果的所有可能组合,给出子事件任何结果的概率。因为我们只考虑独立事件,也就是说任何事件都可取一组独立值中的任何一个。例如,“上锁”节点可取TRUE或FALSE这组独立值中的任何一个。

我们假设“设陷阱”节点可以是TRUE或FALSE,“宝物”节点可以是TRUE或FALSE。“上锁”节点也是TRUE或FALSE之一,则我们判断“上锁”节点的状态时,需要一个条件概率表。根据“设陷阱”节点以及“宝物”节点的值的每种组合,给定“上锁”节点TRUE或FALSE的概率。表13-1给出“上锁”节点的条件概率表。

当事件的可能值数目增多时,或者子节点的母节点数量增加时,子节点的条件概率表中的组合数量,就呈指数增加。这是在游戏中使用贝叶斯方法的最大障碍之一。技术上说,贝叶斯网络被视为NP难题(NP-hard),也就是说,有大量节点时,将耗费太多计算资源。

记住一点,每个子节点都需要一个条件概率表。根结点(就是没有母节点的节点,此例中,就是“设宝物”和“宝物”两节点)并没有条件概率表。但是,根结点有事前概率表,包含这类事件概率的可能值。“事前”指的是尚未利用网络其他地方的新信息对概率做调整前就决定根结点的概率。根据新信息更新的概率称为事后概率。

推论

贝叶斯网络有三种基本类型的推理或者说推论可供使用。讨论时,我们以图13-2(A)所示的简单网络做参考物。

左边的网络叫做因果链,此例中为三节点因果链。右上方的网络叫做共通成因网络,另一种常用的名称是简式贝叶斯网络或贝叶斯分类。右下角的网络叫做共通结果网络。这三种基本类型的推理形式如下:

诊断推理(贝叶斯分类网络的推理)

诊断推理,可能是使用贝叶斯网络时最常用的推理形式。这种推理配合贝叶斯分类网络,广泛应用于医疗诊断中。例如,图13-2(A)右上角的网络(贝叶斯分类网络)中,A是疾病,B和C是病兆。根据病兆,医生就能推论出该疾病的概率。

预测推理(因果链网络的推理)

预测推理是根据成因的信息推论出结果。例如,参见图13-2(A)左边的网络(因果链),如果我们知道A,而A引起了B,则我们可以推论出B发生的概率。

解释消除(共通结果网络的推理)

解释消除牵涉到共通结果网络,如图13-2(A)右下角的网络所示。假设节点都是二元节点,即结果是真或假。如果我们知道C为真,而且知道A和B引起了C。通过C为真的事实,就可以推论A和B也是真的概率。

贝叶斯网络中的事件独立性:

图13-2(A)右下角的网络暗示着事件A和B之间互相独立,即A和B之间并没有因果关系。然而,如果我们知道了C为真而且B也为真,即使A和B是互相独立的事件,也会降低A为真的概率。

某个节点阻断另一个节点:

分析图13-2(A)左边的网络。此例中,我们看见A会引起B,而B会引起C。如果我们知道B的状态,就能推论出C的状态,即与A的状态无关。换句话说,如果我们知道B的状态,则A对C事件就没有影响。用贝叶斯网络的术语,称为节点B阻断了A对C的影响力。

D分离:某个节点阻断一群节点

贝叶斯网络中另一形式的独立性称为D分离。如图13-2(B)所示,此时不像前面讨论的某个节点阻断了另一个节点,而是某个节点阻断了一群节点。在图13-2(B)中,C引起了D,而D引起了E和F,但A和B引起了C。然而,如果我们知道了C的状态,则A和B就对D没有影响,也对E和F也没有影响。同样的,如果我们知道D的状态,节点A、B、C就和E、F没有因果关系。试着解决贝叶斯网络时,这些独立性的情况可是让我们把网络的各个部分分开处理,以简化某些计算。

下面我们将通过举例子,来说明贝叶斯技术。

设置陷阱

假设你正在写一个游戏,里面的NPC会抢劫放有玩家宝物的储存柜。玩家可以把宝物放在存储柜存储,而且也可以选择是否替此储物柜上锁以及是否设下陷阱。NPC可以试着抢劫它们找到的这类储物柜,但是NPC只能通过观察储物柜是否被锁住了,但他无法直接看出储物柜是否有陷阱或者是否有宝物。NPC必须决定是否尝试打开此储物柜。如果成功了,就能拿到宝物。如果储物柜设有陷阱,他可能会丧命。

我们要用简单的贝叶斯网络,再配上一些模糊规则替此NPC做决策。我们先只考虑“设陷阱”和“上锁”问题。这个网络是两节点链,如图13-3所示。

每个事件(“设陷阱”和“上锁”)只能是两个独立状态的其中一种:真或假。因此,对每个事件节点而言,我们就有下列概率表,如表13-2和表13-3所示。

树图

有时候以树图形式协助解决问题会很有效,上述问题的数图如图13-4所示。

此图说明了贝叶斯网络和树图相比,在可视的因果关系中,有其简洁之处。树图用来表示每个事件间的关系时,就会变得很笨重。

做推论

此例中,我们要用诊断推论。我们的目标是判断,当NPC遇到储物柜时,储物柜设有陷阱的概率是多少?如果NPC没看到储物柜被锁住,则储物柜设有陷阱的概率就是P(T),然而,如果NPC观察到储物柜是上锁的状态,我们就能根据此新信息,修改储物柜设有陷阱的概率。我们要用贝叶斯规则做此调整,贝叶斯规则如下所示:

P(T)代表Trapped=TRUE(设陷阱)的概率,P(L)代表Locked=TRUE(上锁)的概率,P(L|T)代表Trapped=TRUE时,Locked=TRUE的概率。这个问题以贝叶斯规则的方式表示如下:

P(L|T)的值可以从条件概率表中得来,P(T)也可以从概率表中得知。因此,我们必须计算P(L)即储物柜上锁的概率。观察图13-4的树图,可知储物柜上锁时有两种情况:1.储物柜已经设有陷阱,2.储物柜没有设陷阱。我们可以用十二章的概率规则4来求P(L),即P(L)如下所示。

同样的,以贝叶斯规则的方式表示如下:

现在,我们考虑一些实际数字。假设你的游戏里的某NPC具有打开100个储物柜的经验,其中37个设有陷阱。在这37个设有陷阱的储物柜里,29个被锁住。在63个没有设陷阱的储物柜中,有18个被锁住。根据这些信息,我们就能计算下列概率:

有了这些概率,我们可知储物柜设有陷阱的概率是37%。如果NPC已注意到储物柜上锁,即“上锁”=TRUE的情况,储物柜设有陷阱的概率则为:

观察到储物柜是锁着时,会加强NPC相信该储物柜设有陷阱,因此P(T)的概率从37%(P(T)=0.37)上升到61%(P(T|L)=0.61)。以贝叶斯网络的术语来讲,37%概率是事前概率,修改后的61%是事后概率。

现在,假设NPC观察到储物柜没上锁。就此而言,我们有:

可得:

因此:

这表示储物柜可能没设陷阱,因为NPC可以看到储物柜没上锁,而经过我们计算后概率只为15%。

现在,有了这些概率,我们还需要借助第十章讨论的模糊规则,结合这些概率决定是否让NPC开储物柜。

使用模糊逻辑

我们可以替储物柜设有陷阱的概率,建立如图13-5所示的模糊隶属(归属)函数。

然后,使用模糊规则决定要做什么。例如,考虑如下条件和行动,做出模糊规则:

如果设陷阱的概率高,就不打开储物柜如果设陷阱的概率低,就打开储物柜

再把其他相关信息也考虑进来会更有效。例如,碰到设陷阱的储物柜时,将对NPC造成某种损伤,因此,根据储物柜设陷阱的推论而决定是否打开时,也要考虑其健康状况。采取这种方法,我们可以设立如下规则:

如果设陷阱的概率高而健康值低,就不代开如果设陷阱的概率低而健康值高,就打开如果设陷阱的概率中等而健康值高,就打开如果设陷阱的概率中等而健康值中等,就不打开

上述只是你可以设立的规则示例。使用贝叶斯方法再搭配模糊规则优点,可以让NPC有能力在面对不确定状态时做决策。

简评游戏人工智能相关的中文书(下)

赖勇浩(http://laiyonghao.com)

游戏开发中的人工智能

2006 年 9 月第一版

AIforGameDevelpoers 应该算得上一本质量在中等偏上的书,可惜的是即使中文版是由 O’ReillyTaiwan 公司编译,中文版的质量依然差强人意。小的翻译错误就不提了,只让你猜一下“描述式AI及描述引擎”是什么?纠结吧,告诉你,是“脚本化AI和脚本引擎”。里面关于脚本的翻译全部错了。

这本书基本上按操控、寻路、脚本、状态机、模糊逻辑,然后讲到ANN 和 GA 的套路来写的,比较出彩之处是补充了一章概率,使得在介绍贝叶斯技术的时候平缓了学习曲线,里面介绍规则式 AI 的部分也颇能为有经验的 GameAI 人士一些参考,特别是想重构之前的 AI 引擎的话。

第一作者 David 也是《游戏开发中的物理学》一书的作者。这两本书现在都由东南大学出版社出了影印版和中文版,据我看这本中文的经验,我觉得有兴趣的还是去买影印版来看吧,用来入门还是颇为不错的。

推荐度:中文版,三星;英文版,三星半

游戏人工智能——计算机游戏中的人工智能

2007 年 6 月第一版

这本小册子很有意思,但有意思的不是它本身的技术与知识,而是关于作者、校对和译者的八卦。这本书的作者署了个中文名:方约翰,然后才用小括号包起一个英文名,之所以会这样,是因为他是校对者涂晓媛的丈夫,作为中国人的女婿,有个中文名很正常了。这个涂晓媛女士,google 一下的话会知道她相当有份量,在1996年获国际计算学会acm最佳博士论文奖,她的获奖论文题目就是“人工动物的计算机动画”(artificialanimalsforcomputeranimation:biomechanics,locomotion,perceptionandbehavior)。据说涂晓媛是第一位也是迄今唯一一位获此殊荣的中国学者,她有一个主页:http://www.dgp.toronto.edu/~tu/,有兴趣的可以去看看。后来离开学术界之后,她和丈夫创建了 AiLive 这家公司,关注 GameAI 等领域。她的父亲是中国人工智能学会理事长、北京科技大学涂序彦教授,所以像这样一本书也在国内有人翻译出版颇让人寻味了。

除了这本书,另一本方博士的博士论文也在国内出了中文版,那本书我曾在图书馆打过照面,薄薄一本,已经不记得说些什么,就不多言了。但这本书我手上却有一本,也读过了,倒是可以多说两句。本书的英文版名为:ArtificialIntelligenceForComputerGames:AnIntroduction,我觉得还是相当得当的,就是不知道北京邮电大学的老师李睿凡、郭燕慧是不是年纪太大,老眼昏花,硬是能把 Introduction 视而不见,弄出一个如此可笑的译名。这本书在内容上可以说是开卷有益,介绍了一个游戏 AI 引擎的基本架构,其仿真器、控制器和渲染器的架构是很为灵活的。如果是从头开始规划一个 AI 引擎,这种设计有借鉴意义,如果是在已经开发的游戏引擎上做一些 AI 功能,你又照本宣科,就只怕给自己招麻烦了。

另外照例说说翻译的情况,因为书是由在校师生翻译的,所以一些经典的游戏名称、一些游戏界的术语都译错了,关于技术方面的译法倒还算可以接受。最让人受不了的是这本书顶了个“智能科学与技术本科专业系列教材”,这样一本小册子成了一本教材,联想到作者的泰山大人的地位,不禁让人对国内学术腐败浮想联翩。

推荐度:中文版,两星半;英文版,没读过,不评价

AI游戏引擎程序设计

2007 年 11 月第一版

据封底介绍,作者 BrianSchwab 有十几年的开发经验,曾在 DreamWroks 做过 AI 程序设计,现在是 Sony娱乐公司的资深 AI 程序员,从作者看,书的技术含量应该不错。书中的第一部分是对 AI 的一个介绍,还引入了自己的 AI 实验平台,因为这个平台的存在,所以很多代码都可以让读者自己动手实践,还是不错的。第二部分花了一百多页来介绍各种类型的游戏中的 AI 实现,作者的确是见多识广,里面包含了不少经典游戏关于 AI 的代码片段,如果有耐心读完,应该有一些收获。从第三部分起,终于开始介绍常用的 AI 技术,比如状态机、模糊状态机、消息系统、脚本等。第四部分仍然落入俗套,介绍 ANN 和 GA,还扯了一下人工生命这种高端话题。第五部分终于进入了所谓的实践开发,但不知道仅占全书篇幅 10% 的“实践”内容能让读者有多少东西可以动手,或者说能够动得起手来?

从书来看,作者的见识是无需怀疑的,但全书的内容基本上停留在介绍的层面,没有深入的理论,也没有发挥自带实验平台的优势,让读者能够多多动手。在翻译上,也没有出彩之处,小的翻译错误仍然随处可见,还好,不置于太影响阅读。

推荐度:中文版,三星半,英文版,没读过,不评价

人工智能游戏编程案例精粹

2008 年 6 月第一版

哈哈,又一本 MatBuckland 的书,就像我在书评(上)篇(http://blog.laiyonghao.com/2009/09/book-reviews/374)中介绍的一样,Mat 的书写得非常平实,行为简单,但技术含量充足,而且学习曲线非常平缓,动手的机会也相当多。在 2005 年我初见这本书的英文版《ProgrammingGameAIbyExample》时,我就深信这本书是我一直在寻找的书。如果你也是一个想进入 GameAI 开发领域的朋友,那么这本书绝对不容错失;古人说半部论语治天下,这本书虽然达不到这样的高度,但读完之后,绝对能够胜任大部分 AI 开发工作,如果再把《AIGameProgrammingWisdom》四册啃掉,我觉得绝对可以搞定遇到的所有难题吧。

书中首先介绍游戏角色的基本属性(包括速度、质量等物理属性)及常用数学方法。接着,深入探讨游戏智能体状态机的实现。通过简单足球游戏实例,本书给出用状态机实现游戏AI的例子。在图论部分,本书详细介绍图在游戏中的用途及各种不同的图搜索算法,并用一章的篇幅讨论了游戏中路径规划是如何完成的。此外,本书还对目标驱动的智能体的实现、触发器与模糊逻辑在游戏中的运用进行了讨论。为使智能体行为更加丰富、灵活、易于实现,本书还介绍了游戏脚本语言的优点,并以Lua脚本语言为例进行了说明。

这本书的内容如此之好,所以我曾经在中文版还没有出版的时候,自己去作者的个人网站 ai-junkie.com 把他用来宣传本书的关于有限状态机的章节翻译出来放到自己的博客里(http://blog.csdn.net/lanphaday/archive/2007/06/24/1664369.aspx),现在成为了我的博客访问量最大的一个专题。

这本书读起来相当容易的,译者罗岱也译得比较用心,至少我没有发现多少让我忍受不了的错误,这是我目前看过的关于 AI 的最好的一本书。除了对 GameAI 的内容让人大感受用之外,如何设计正交的系统、如何编写更加面向对象的架构,这本书也能给大家意想不到的收获。

推荐度:中文版,四星半;英文版,四星半

嗯,好了,与游戏人工智能相关的中文书七本,就评价完了。在写这篇博客的过程中,我又想起了一些跟游戏人工智能有关的书,但又不是这方面的专注的,我将另写一篇博客介绍之,敬请期待。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。

上一篇

下一篇