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

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

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


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

本章要介绍贝叶斯推论和贝叶斯网络,教你怎么把这些技术应用在游戏中。准确的说,是使用这些技术让 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 有能力在面对不确定状态时做决策。

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值