游戏开发论坛

 找回密码
 立即注册
搜索
查看: 71030|回复: 1

【EEA】人工智能在游戏中的十个应用场景 - 序篇

[复制链接]

8723

主题

8783

帖子

1万

积分

版主

Rank: 7Rank: 7Rank: 7

积分
11952
发表于 2018-6-1 09:21:48 | 显示全部楼层 |阅读模式
文/邪让多杰

简介

关于我们

EEA是探娱互动研究院(Explore Entertainment Academy),我们会定期分享我们对游戏研究的文章,希望通过解决一个又一个的命题帮助大家以及我们自己将游戏设计的理论系统化,最终提高生产力。

题目

人工智能是什么,在游戏领域中,怎么用?

导读

本文大约3000字,泛读时间11分钟,精度需要半小时以上。建议精度。

要点:

l  最基础概念

l  最简单的理解

l  最易懂的案例

最基础的概念

人工智能的概念,受到众多科幻小说的“普及”,大家都对其有了初步的印象。从本质上,这种印象并没有什么坏处,但具体到“专业”与“非专业”群体时,你向别人描述你对“人工智能”的未来想法时,别人就会觉得你不懂人工智能,很Low。

人工智能这玩意,用普通话应该怎么说?

用普通话了解人工智能

假设一张图片,分辨率是28*28,这张图上别人手写了个位的阿拉伯数字,那么,计算机该如何识别图上的数字?

这也许不是最简单,但绝对是最典型的例子,有了解过人工智能的童鞋,一定对这个例子十分熟悉,如果不了解,不要紧,我们稍后对它更多的介绍,现在,把注意力放到这个问题。

如果要使用人工智能技术去解决这个问题,首先就需要明白人脑是怎么处理这个问题的。通常,我们会把问题拆分为:“输入”、“输出”,通过不断的将输入信息与输出信息做关联,最后大脑在没有看到输出信息的时候,通过输入信息也能判断出结果。

再简单点的例子就是:

我们的老师,告诉了我们 “1 + 1 = 2”

通过作业题的训练,当我们看到 “1 + 1 =” 时候,自然就明白了后续的结果:2

其中:“1 + 1 =” 就是输入参数

而2,就是我们大脑的输出结果。

image001.1509782423.png

有关大脑如何决策与学习的例子,可以参考《认知模型》

“人工智能”的基本原理,也是如此,我将其称呼为“映射”,其执行过程就是:“给当前输入的参数,找到一个最合适的结果,并输出”。

回到“手写数字识别” 问题上,假设我们已经有了很多手写数字的数据,其中包含了图片,与图片对应结果,也就是阿拉伯数字的0~9,接下里,我们只用不断的告诉计算机:这张图,就是这个数字,那张图,就是那个数字即可。

image002.1509782423.jpg

当人脑不断的被告知这是“1”时,当下一次不给告知时,我们知道这就是1.

同样的,当“人工智能”的计算机被不断的告诉这是1后,下一次不告诉他结果时,他也知道这是1.

这,就是“人工智能”最基础,也是最重要的作用:

“通过过往的学习,去映射最近似的结果”。

案例

基于现在的技术,计算机还只能理解数学问题,所以像图片这样的信息,我们都要把它转化为数学表达,才能让计算机认识这些“输入”的东西。

在《MNIST机器学习入门》中,对这个案例进行了详细的讲解,而文章的此处,我们就简单的对其进行介绍。

1.      假设,我有一个“人工智能”,我叫他X先生。

2.      假设,我有一堆手写图片,我叫他:Inputs数据集。

3.      假设,我还提前知道了,这些手写的图片对应什么数字,我叫他:Labels数据集

那么,接下来我该怎么做?

结合前面的知识点,我想部分观众的心理应该能从最上层的逻辑明白我应该做些什么。很简单。

image003.1509782423.png

第一步:在X先生的耳边,唠叨几千字,告诉他每一张图,对应着哪个数字

第二步:给X先生一张图,问问他,你识不识得?

第三步:向别人吹牛逼:“我的朋友X先生,他已经能够识别人类手写的数字了!”

普通话

用普通话来说,人工智能就是一个黑盒子,它的机制与我们的人脑是一样的,不同的是输入的信息不同,所以暂时无法让人工智能变成人类一般的智能。

但在具体的应用范围内,我们将人与人工智能所遇到的环境信息都限定得一样了,人工智能就会发挥出与人一般,甚至比人还要好的效果。

再次记住:“一个黑盒子,多次丢进去环境信息+结果,就可以只凭环境信息得到之前学会的结果。”这是人工智能的本质。

超级简单的案例

要想功夫深,基础就得好,今天我们先不讲解各种具体的实现,我们针对人工智能的概念,以及它的应用场景,进行大胆的假设与设计。

通过上面的例子,我们已经明白,假设存在一个人工智能,我叫X先生,他的作用不过是把曾经 输入 与 输出 的关连复习好,当我们展现给他 输入 时,他就会告诉我们,根据他的学习,此时应该出现的结果应该是……

问题来了,我们知道了这种机制后,这种模仿人类大脑的机制后,如何用到游戏中?

场景一、SLG中的用户行为模拟

这个标题是不是吼厉害,每个字都看得懂,连在一起就无法给出清晰的定义。

没关系,三分钟后,你就会喊出:“我曹,原来这么简单!”

准备好了吗?我们开始!

设计目的

了解SLG游戏类型的用户应该知道,SLG品类的游戏对于用户量的需求是十分庞大的,通常一个服务器需要几千名用户共同生存,它的生态才是健康的,直白点的话就是:“才有足够的免费玩家让付费玩家去欺负”。

那么,模拟出行为类似于真人的机器人,就是突破该品类市场难度的重要方向。

从简单的应用题开始

我们假设一款SLG中,玩家有一下行为:建造、造兵,打野

再假设玩家看到的信息有:建筑等级,金钱,兵力

我们先从玩家的大脑开始分析,有这个一个逻辑:“当玩家看到游戏内的信息(inputs)时,做出了选择(labels)“,这和人工智能的原理一模一样。

其中,包含了一个未知信息:“当玩家做出决策时,我们不知道他观察了哪些信息。”

通常我们写普通AI时,就需对它们进行逐一的判断。

n  如果 兵力足够 ,那么 去打野

n  如果 钱 足够,那么去建筑 或  造兵

n  …

等等之类的,通常是通过非常复杂的“人工编写”的智能去完成NPC的行为逻辑。

建模

回归到人工智能的话题上,这个命题就会变得十分的简单。

再次思考之前我们得到的结论,人工智能不过是:“一个X先生,你要不断的丢给他数据,以后再丢类似的,他就知道结果是啥了。“

也就是说,关于人工智能的建模过程,就是建立输入与输出一一对应的过程,而建出来的模型,也就是平常所说的:“数据模型“。

问题:对于SLG玩家这个命题,其中哪些数据,是需要输入的,哪些数据,是输出的?

TIM图片20180601091415.png

参考前面“手写数字识别”的例子,labels的取值范围为0~9,于是教程里通过标记位的方式,来将结果整合成统一的表达方式。这里面有三种行为,分别是:“建造”、“造兵”、“打野”。我们就手动的,做出三种label,分别代表它们:

-  建造 = [1,0,0]

-  造兵 = [0,1,0]

-  打野 = [0,0,1]

而inputs,整理后,就成了

-  [1,333,44] = 【等级,金钱,兵力】

代表着,我等级为1,金钱为333,兵力为44。

最后,我们就有一种映射表达式:

-  [1, 999, 0] = [1,0,0]

//这代表着,当我一级时,有999的钱,我没有兵,所以我去建造。

再通俗点说,也就是,我输入了长度为3的数据,会得到一个长度为1的结果。

数据

建出了这样的模型后,缺乏的就是数据源,我们的题目是:“模拟用户的行为”,所以数据来源不是电脑对抗(类似于Zero战胜阿尔法狗),而是通过学习玩家的行为,来模拟玩家的决策方式,更接近于阿尔法狗的实现模式。

我们采集每个用户在进行有效决策时,他的角色信息,这样,我们就可以得到大量的,来源于玩家的数据。

最后就会形成类似于下面这样的数据集:

TIM图片20180601091439.png

在程序里能够得到这样的数据后,在本篇中暂时忽略归一化等操作,我们把这张表交给X先生,等他做出的充足的学习后,他就可以根据此时的三个环境参数,来判断应该做出什么样的行为。

如果还没有明白的观众,我可以再详细的解释一下刚才我们做了什么。

1.     我们建了一个模型

2.     等玩家玩的时候,数据按照模型的要求被记录了下来

3.     我们把玩家数据丢给X先生

4.     X先生学习完后,能够根据当前输入做出决策,模仿出玩家的样子进行游戏

这种实现方式,避免的复杂逻辑“人工编写”,当信息量只有如例子所示的三个元素时,我们还可以通过人工编写去达到AI的灵巧,但输入数据的长度达到几十个时,我们就难再编写出不容易被看出的游戏AI。

结束语

概念讲解到此,X先生已经能够在这个超级简单的版本的SLG中进行自我控制行为,这些行为来源于在相同机制下,其他玩家大量的做出了如此的决策被X先生所学习。

本篇文章作为整个系列的开篇,不求精彩,只求能够最简单的方式,向大家传达什么是人工智能这个概念,并通过一个超级简单,但绝对可以实用的案例,描述了人工智能这玩意在没有复杂的代码逻辑与数学知识时,是如何被一个工程师应用到具体的项目中。

我们的文章题目,是“十个应用”场景,也就是说,我真的储备了从简到到复杂的十个应用场景来向大家描述,当今的技术,在游戏中实现人工智能帮助我们提升游戏体验是多么简单的一件事。

但在写的过程中,我也遇到了困难,这是一个看起来很高级的学科,想要很好的在游戏中设计出这样的应用场景,就需要设计的人既懂得游戏设计,也要懂得人工智能。当我讲解概念时,人们就会说缺乏实例,而当我讲解实例时,文章又会显得冗长恶心。

所以在第一篇,我会尽量的用最简单的方式先把概念讲出来,这部分内容就不分策划还是程序,大家都可以看,而之后的章节,我也会去探索如何更好的将这种设计与技术融合的文章给表达清楚。

今天的内容就到这里,谢谢大家。也希望大家随意在文章评论区攻击,毕竟你们的攻击,才是我们进步的最大源泉。

后续内容

如果没有太监,根据目录,接下来的内容可能会有:

image004.1509782423.png

1

主题

16

帖子

80

积分

注册会员

Rank: 2

积分
80
发表于 2018-6-1 11:21:58 | 显示全部楼层
之前写过slg的AI,就是那种最笨的达到**条件后去做**事,脑子快写炸了,还费力不讨好…………
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2024-4-23 22:14

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表