首页 / 资料库 / 微软 · AI 入门

资料库14 分钟读完MIT多智能体博弈论智能体

多智能体系统

译自《Multi-Agent Systems》 · 查看英文原文

原文出处Multi-Agent Systems 原作者:Microsoft · 许可证:MIT License 中文译本由诸葛AI学院整理,仅供学习参考,版权归原作者与微软所有。

实现智能有一条可行的路,叫涌现(emergent)方案,也叫协同(synergetic)方案。它的出发点是:许多相对简单的智能体(agent)合在一起行动,整个系统就能表现出更复杂、更聪明的行为。理论根基是集体智能涌现论进化控制论。这几个学派的主张一致:低级系统按正确的方式组合成高级系统时,会多出一些附加值,也就是所谓的元系统跃迁原则

课前测验

多智能体系统(Multi-Agent Systems)这个方向在 1990 年代进入 AI 领域,背景是互联网和分布式系统的兴起。经典教材《人工智能:一种现代方法》讲经典 AI 时,采用的就是多智能体的视角。

多智能体路线的核心概念是智能体:一个活在某个环境(environment)里的实体,能感知环境,也能对环境采取行动。这个定义很宽,智能体因此有各式各样的类型和分类法:

  • 按推理能力分:
  • 反应型(reactive)智能体:行为通常是一问一答式的简单响应
  • 慎思型(deliberative)智能体:会做某种逻辑推理,或者具备规划能力
  • 按代码运行位置分:
  • 静态(static)智能体:固定在一个网络节点上工作
  • 移动(mobile)智能体:可以带着代码在网络节点之间迁移
  • 按行为方式分:
  • 被动智能体(passive agents):没有特定目标。这类智能体能响应外部刺激,但自己不会主动发起动作。
  • 主动智能体(active agents):有自己的目标,并围绕目标行动
  • 认知智能体(cognitive agents):涉及复杂的规划与推理

多智能体系统如今用在不少应用场景里:

  • 游戏:很多非玩家角色都带某种 AI,可以看成智能体
  • 影视制作:涉及人群的复杂 3D 场景渲染,通常靠多智能体模拟来完成
  • 系统建模:用多智能体方法模拟复杂系统的行为。比如它曾被成功用于预测 COVID-19 在全球的传播,同样的方法可以给城市交通建模,观察交通规则改动后车流如何反应。
  • 复杂自动化系统:每台设备都是一个独立智能体,整个系统因此不那么庞大笨重,反而更抗故障。

这节课不会花太多时间深挖多智能体系统,只做一个多智能体建模的例子。

NetLogo

NetLogo 是一个多智能体建模环境,用的是改造过的 Logo 编程语言。Logo 本来是给小孩子讲编程概念用的,它让你控制一个叫海龟(turtle)的智能体:海龟会移动,一路留下轨迹。靠这个机制可以画出复杂的几何图形,也是理解智能体行为最直观的办法。

在 NetLogo 里,用 create-turtles 命令可以创建许多海龟。然后命令所有海龟一起做某件事(下面这个例子是各向前走 10 步):

create-turtles 10 ask turtles [ forward 10 ]

海龟都干同一件事没什么意思,所以我们可以只 ask 某一组海龟,比如某个点附近的那些。也可以用 breed [cats cat] 命令创建不同品种的海龟。这里 cat 是品种名,单数和复数两种形式都要声明,因为不同的命令会分别使用这两种形式,语义更清楚。

✅ 这里不打算教 NetLogo 语言本身。想深入的话可以去看Beginner's Interactive NetLogo Dictionary,是一份很出色的互动学习资源。

你可以下载 NetLogo 装上试用。

模型库

NetLogo 的一大好处是自带一批能直接跑的模型。打开 File → Models Library,有很多类别可以挑。

原文此处有一张图,画的是 NetLogo 模型库的窗口,左侧按 Biology、Social Science 等类别列出可选模型(Dmitry Soshnikov 的截图)。

随便打开一个模型,比如 Biology → Flocking(群飞)。

主要原理

模型打开后进入 NetLogo 主界面。下面这个示例模型描述的是狼和羊的种群,食物(草)资源有限。

原文此处有一张图,画的是 NetLogo 主界面:左边是仿真场地和操作按钮,右边是代码区(Dmitry Soshnikov 的截图)。

在这个界面上你能看到:

  • Interface(界面)区,包含:
  • 主场地,所有智能体住在上面
  • 各种控件:按钮、滑块等
  • 图表,用来显示仿真的参数
  • Code 标签页,里面是编辑器,可以输入 NetLogo 程序

多数模型界面上有一个 Setup 按钮负责初始化仿真状态,一个 Go 按钮负责开始运行。两者对应代码里形如下面的处理函数:

to go [ ... ]

NetLogo 的世界由以下对象组成:

  • 智能体(agents,即海龟):可以在场地上移动、做事情。命令的方式是 ask turtles [...] 语法,括号里的代码会以海龟模式被所有智能体同时执行。
  • 小块(patches):场地上的一块块正方形区域,海龟住在上面。你可以引用同一块区域上的所有智能体,也可以改变小块的颜色和一些其他属性。同样可以 ask patches 让它们做事情。
  • 观察者(observer):独一无二的、控制整个世界的智能体。所有按钮的处理函数都在观察者模式下执行。

✅ 多智能体环境的妙处在于:跑在海龟模式或小块模式里的代码,会被所有智能体同时并行执行。你只要写一点代码、编排好单个智能体的行为,整个仿真系统就能表现出复杂的行为。

群飞

多智能体行为的一个例子是群飞(flocking)。群飞是一种复杂的运动模式,很像鸟群飞行。看鸟群上天,你会以为它们在执行某种集体算法,或者拥有某种集体智能。其实这种复杂行为,来自每个个体(在这个例子里是一只)只观察离自己不远的同类,并且遵守三条简单规则:

  • 对齐(alignment):转向邻居平均飞行方向
  • 凝聚(cohesion):朝邻居的平均位置靠拢(远程吸引
  • 分离(separation):离别的鸟太近时,试图躲开(近程排斥

你可以运行群飞示例观察行为,也可以调参数,比如分离程度,或者决定每只鸟能看多远的视野范围。注意:视野范围调成 0,所有鸟变成瞎子,群飞就散了;分离程度调成 0,所有鸟会挤成一条直线。

✅ 切到 Code 标签页,看看群飞的三条规则(对齐、凝聚、分离)在代码里是怎么实现的。留意代码只引用视野之内的智能体。

其他值得一看的模型

还有几个模型适合动手玩:

  • Art → Fireworks:展示烟花如何被看作一束束火流的集体行为
  • Social Science → Traffic BasicSocial Science → Traffic Grid:一维和二维网格下的城市交通模型,可选有无红绿灯。仿真里的每辆车遵守两条规则:
  • 前方有空位就加速(不超过某个最高速)
  • 看到前方有障碍就刹车(驾驶员能看多远可以调)
  • Social Science → Party:展示酒会上人群如何聚成一堆。你可以找到让全场幸福感上升最快的参数组合。

从这些例子能看出,多智能体仿真很适合用来理解一种复杂系统:系统由众多个体组成,个体遵守相同或相近的逻辑。它也能用来控制虚拟智能体,比如电脑游戏里的 NPC(非玩家角色),或者 3D 动画世界里的智能体。

慎思型智能体

前面说的智能体很简单,靠某种算法响应环境变化,属于反应型智能体。但有些智能体能推理、能规划自己的行动,这类叫慎思型(deliberative)。

典型例子是私人智能体:人给它一条指令,让它订一个度假行程。假设互联网上还住着许多能帮上忙的智能体,它就要去联系其他智能体,问哪些航班有位、酒店各日期什么价,试着谈出最优惠的价格。行程方案齐了、主人确认之后,它再完成预订。

要做到这一点,智能体之间得通信。通信要顺利,需要:

  • 一些交换知识的标准语言,例如知识交换格式(KIF)和知识查询与操纵语言(KQML)。这两种语言都建立在言语行为理论之上。
  • 语言里还应包含一些谈判协议,基于不同的拍卖类型
  • 一套公共本体(ontology),保证各智能体引用的是同一批概念,并且知道彼此的语义。
  • 一种发现机制,弄清楚各个智能体能做什么,同样依托某种本体。

慎思型智能体比反应型复杂得多,因为它除了响应环境变化,还要能主动发起行动。一种被提出的慎思型智能体架构是所谓的信念-愿望-意图(Belief-Desire-Intention,BDI)智能体:

  • 信念(Beliefs):关于所处环境的一组知识,可以组织成知识库,或者一组规则,供智能体套用到环境的特定情形上。
  • 愿望(Desires):智能体想做的事情,也就是它的目标。比如上面私人助理智能体的目标是订成行程,酒店智能体的目标是利润最大化。
  • 意图(Intentions):智能体为达成目标而计划执行的具体行动。行动通常会改变环境,并引发与其他智能体的通信。

已有一些可用于构建多智能体系统的平台,比如 JADE这篇论文综述了多智能体平台,也简略回顾了多智能体系统的发展历程和各种使用场景。

小结

多智能体系统的形态非常多样,能用在很多应用里。它们的共同套路是:单个智能体的行为尽量简单,靠协同效应让整体系统表现出更复杂的行为。

挑战

把这节课带进现实,试着构想一个能解决问题的多智能体系统。比如,要优化校车路线,这样一个系统该做些什么?放到一家面包店里又能怎么玩?

课后测验

复习与自学

去查一查这类系统在工业界的实际用法。挑一个领域,比如制造业或游戏行业,看看多智能体系统能解决哪些别处碰不到的问题。

NetLogo 作业

这篇在讲什么,跟咱们的课怎么对?

资料库是大厂公开教材的中文译本,偏原理和工程做法。想看面向中小企业的白话版本,去入门课场景课