今天我们来聊聊MAS,即多智能体系统(Multi-Agent System),它是由多个相互作用的智能体组成的系统,这些智能体可以是软件程序、机器人、传感器或者任何能够感知环境并作出决策的实体。在多智能体系统中,每个智能体都有自己的目标和能力,并且它们能够相互通信和协作,以解决复杂的问题或完成特定的任务。
多智能体系统的关键特点包括:
-
自主性:每个智能体都有自己的控制结构,能够独立地做出决策和行动。
-
交互性:智能体之间可以进行通信和信息交换,这有助于它们协作解决问题。
-
协作性:智能体可以协同工作,共同完成任务或达成目标。
-
可扩展性:多智能体系统可以轻松地添加更多的智能体,以适应更大规模或更复杂的任务。
-
鲁棒性:即使某些智能体失败或不可用,系统通常仍能继续运作。
-
灵活性:系统能够适应环境变化和新的任务要求。
多智能体系统在许多领域都有应用,包括但不限于:
-
智能制造:在生产线上协调机器人和其他自动化设备。
-
交通管理:优化交通流量,减少拥堵。
-
分布式计算:通过网络中的多个计算节点来处理大规模数据集。
-
游戏:在视频游戏中模拟多个角色的行为。
-
环境监测:使用传感器网络来监测和响应环境变化。
多智能体系统的研究和开发是一个活跃的研究领域,涉及到人工智能、机器学习、分布式系统和决策理论等多个学科。
在MAS出现之前,那些系统都是各干各的,比如一个目标检测模型,它就负责找出图片里所有可能的东西。但要是我们想让它识别更细节的东西,就得用更小、更有针对性的数据集来调整这个模型。基本上,就是想用一个模型搞定所有任务,这就是单智能体系统。
但是,你想过没,如果我们有好几个目标检测模型,每个都专门识别特定的目标,那会怎样?它们可以一起工作,搞定那些复杂的目标检测任务,效果肯定比只用一个模型来处理所有目标检测任务要好。这种多个模型一起合作解决问题的系统,其实就是多智能体系统的实际应用,也就是多智能体系统。
在这篇文章里,我们会从算法的角度聊聊MAS从早期到现在的最新进展。咱们就从最早的方法之一——SMFFNN框架开始说起。
神经网络在预测那些和训练数据差不多的测试数据时,表现得特别靠谱。不过,一旦测试数据和训练数据差得远了,它们就有点儿力不从心了。
比如说,我们训练了一个神经网络,用很多猫和狗的图片来教它怎么分辨这两种动物。如果测试的时候,给它一张猫的图片,它可能就能正确地认出来。但要是给它一张长颈鹿的图片,它可能就懵了,给出一个错误的预测。简单来说,神经网络在处理那些和训练时不一样,更复杂的真实世界数据时,通常都不太行。
为了解决这个问题,人们想出了一个很早就用的方法,就是把 监督多层前馈神经网络(SMFFNN) 和 潜在权重线性分析(PWLA) 结合起来用。
图- PWLA和SMFFNN的工作流程。
就像它的名字一样,SMFFNN是由很多层组成的神经网络。它只训练一轮,用一个二进制步函数来简化每一层的决策,让每个决策都变成简单的“是”或者“否”,这样一来,训练起来就快多了。在训练SMFFNN之前,数据得先通过PWLA来预处理一下。
简单来说,PWLA就是一种数据预处理的技术。它用了一些物理学的概念,比如向量力矩,来初步判断数据中哪些部分比较重要。PWLA首先用“最小和最大”的方法把输入数据标准化,挑出重要的数据部分,然后通过关注最相关的数据来进行降维处理。
处理完数据后,SMFFNN就用这些数据来训练,然后做出准确的预测。这个方法的好处在于,一旦有了新的数据,我们可以直接把它加入到PWLA中去。这里就能看出多智能体系统(MAS)的一个早期应用,因为PWLA和SMFFNN会一起工作,对来自不同地方的数据进行分类。
比如,如果我们想要一个MAS来决定哪个城市最需要新建一个医院,我们就得先收集一些数据,比如人口数量、离首都的距离、当地医护人员的数量、有医疗保险的人数、现有的医院数量等等。然后,PWLA会收集这些数据,进行归一化处理,分析出在我们的案例中哪些特征是重要的,然后进行降维,只关注最重要的那些特征。最后,我们把这些特征送到SMFFNN那里去,让它进行训练和预测。
图- 示例用例说明:智能分类建设医院的区域。
然而,这种方法有几个局限性。
SMFFNN和PWLA这两个家伙,它们设计的时候就是单向传递信息的,所以想要弄个能互相反馈的智能系统就有点困难。想象一下,在一个真正的多智能体系统里,每个智能体都得能根据反馈或者新信息来调整自己的行为。但SMFFNN就做不到这一点,它缺少那种能让智能体随时间学习和适应的反馈机制。
而且,这个系统只能让一个智能体自己玩。如果我们往里头加更多的SMFFNN或者智能体,每个智能体就只能自己顾自己,没法儿高效地分享知识或者根据和其他智能体的互动来调整自己。智能体一多,这个方法就不太好使了,因为训练多层网络和给所有智能体做预处理的计算量太大了。
那使用 强化学习(RL) 呢?这玩意儿自从被提出来就挺火的,因为它不需要我们去定义任务的动态,这和SMFFNN里头的监督方法不一样。RL还带来了SMFFNN所没有的反馈机制。
简单来说,RL系统就是由一群智能体和它们所处的环境互动来完成任务。智能体每做一个动作,都会得到一些奖励。它的动作越符合任务目标,得到的奖励就越多。所以,RL的目标就是帮助智能体改进它们将来的行动策略,以此来拿到更多的奖励。
为了最大化奖励,引入了一个称为Q值的度量。Q值评估智能体在给定状态下采取特定行动的好处,基于它期望接收的未来奖励。智能体使用这些信息来决定采取哪些行动以最大化其长期累积奖励。
深度Q学习(DQN)和深度确定性策略梯度(DDPG) 是两个最有名的强化学习算法,它们都用来帮助智能体最大化Q值。
DQN主要是关注怎么优化那些有明确选择的行动(比如往右走、往左走、往前走或者往后走)的Q值函数。它用贝尔曼方程来更新Q值,基于它从环境中获得的奖励和未来预期的奖励,这样就能算出最好的Q值,也就是最好的策略。
而DDPG这个算法呢,它是由两个部分组成的:
-
Actor(演员):演员的工作就是直接给出在每个状态下最好的行动。
-
Critic(评论家):评论家的工作是估计Q值,这和Q学习里Q值的学习方式有点像。不过,在DDPG里,评论家要评估的是演员在有很多可能行动(比如控制一辆车,要考虑转向角度和速度这些连续的值)的情况下选择的行动的质量。
图- DQN和DDPG的图表。
DDPG的目标是让演员(也就是策略)和评论家(也就是Q值函数)都达到最佳状态。尽管如此,评论家的Q值函数在评价和改进演员的策略中扮演着非常关键的角色。
不过,和SMFFNN一样,DQN和DDPG都是为单个智能体设计的,也就是说,它们只优化一个智能体的策略。一个简单的解决办法就是创建多个单一智能体,但这样做的话,优化起来就比较困难了。因为从每个智能体的角度来看,环境不再是一成不变的,一个智能体的行动可能会因为其他智能体的行动而得到不同的奖励。
为了解决这个问题,人们就提出了一种叫做 多智能体深度确定性策略梯度(MADDPG) 的方法。这个方法可以更有效地处理环境的非静态性,也就是环境是不断变化的。
MADDPG的一个关键特点就是它有一个集中式的评论家,这意味着在训练的时候,评论家可以看到所有智能体的观察和行动。这样,Q值函数就可以通过考虑其他智能体的策略来优化每个智能体的策略。这种方法很有用,因为它逼着每个智能体去学习如何应对其他智能体当前的策略,而不是把它们当成环境里固定不动的一部分。
图- 在25000次迭代后的合作通信上的智能体奖励(左)和策略学习成功率(右)。
如上图,和那些只处理单个智能体的算法(比如DDPG)比起来,MADDPG下的智能体在实验中得到的奖励和策略学习的成功率都要更好一些。
但是,MADDPG这个方法也有它的问题:可扩展性问题。前面所提到的,MADDPG用集中式的评论家来考虑所有智能体的观察和行动。如果我们想要训练更多的智能体,这个可扩展性问题可能就会变得麻烦,因为训练过程会变得很费时间,计算成本也会很高。
一个看起来能解决这个挑战的方案是图神经网络(GNN)。
在我们深入研究GNN如何在多智能体系统中使用之前,先理解图的概念是非常重要的。图是一种数据结构,它有两个基本的组成部分:节点和边。节点可以代表各种实体,这取决于具体的用例,比如单词、智能体、标记等等。同时,边则表示两个节点之间的连接。
图- 图数据结构。
每个节点通常都有自己的特点或者属性,这些可以用一个特定维度的向量来表示。边有时候也会有特征,尽管这种情况比节点有特征要少一些。要弄清楚哪两个节点是通过边连接的,我们通常会用一个叫做邻接矩阵的东西来表示,如果矩阵里的A[i,j]是1,那就表示节点i和节点j之间有一条边,如果是0,那就表示它们之间没有边。
有了节点、节点的特征和邻接矩阵之后,我们就可以开始用基于图的神经网络(GNN)来训练了。GNN训练的目标可以定在节点上、边上,甚至是整个图上。也就是说,我们可以用GNN来做节点分类、边分类或者整个图的分类。
通过这些概念,我们现在明白了,可以把多智能体环境看作是一个图来建模。这也就是所谓的图卷积强化学习(Graph Convolutional Reinforcement Learning),简称DGN。
图- DGN架构:编码器、卷积层和Q网络,所有智能体共享权重,并且累积梯度以更新权重。
在DGN这个模型里,每个智能体都相当于图里的一个节点。节点之间的边表示智能体之间的邻近关系,这通常是根据智能体之间的距离或者其他的一些标准来定的。这些邻近的智能体可以互相通信,因为它们更有可能相互影响。而且,这个图的结构不是固定不变的,它会随着智能体的移动或者智能体进入和离开环境而变化。
DGN的一个好处就是它很容易扩展,因为它让所有智能体都使用相同的神经网络参数,这样不管智能体有多少,需要学习的参数数量都不会增加太多。就像之前说的,DGN的核心思想是,邻近的智能体更有可能相互影响。所以,每个智能体只需要关心它邻居的特征,不用管整个环境里有多少智能体。
为了证明DGN的可扩展性,它能够在训练时智能体数量更多的情况下也表现得很好。比如,在路由实验中,一个用20个智能体和20个路由器训练出来的DGN,可以在有140个智能体的情况下也表现得很好,而且不需要重新训练。这样,我们就可以不用牺牲性能,把智能体的数量增加很多。
除了图神经网络,那个很有名的Transformer架构也被用在了多智能体的场景中。你可能已经知道,Transformer架构包括编码器和解码器两部分。编码器负责把输入的序列映射到一个潜在的空间里,而解码器则以一种自回归或者顺序的方式生成输出。
Transformer架构之所以这么特别,是因为它在每个编码器和解码器的块里都有一个注意力层。这个注意力层在提供输入序列的上下文信息方面非常重要。比如,因为有了这个注意力层,“park”这个词在“I park my car in the garage”和“I walk outside in a park”这两个句子里,会被Transformer以不同的方式理解。
图- Transformers架构。
Transformer架构一开始只是用来处理文本的,比如做文本分类、识别文本里的实体、生成文本、回答问题等等。但是,人们后来发现Transformer其实挺万能的,不光能处理文本,还能处理图像、声音这些不同的信息类型。所以,把它用在多智能体系统这样的场景里,也就不足为奇了。
就像之前提到的,多智能体系统里,几个智能体得协作起来,才能拿到最多的共享奖励。难点在于,我们得考虑每个智能体的行动是怎么和其他智能体的行动相互影响的,然后还得找到每个智能体的最优策略。而且,系统的非静态性也是多智能体系统面临的一个大挑战。
有一个观点是,多智能体的决策可以看作是一系列行动的序列,这和语言任务里句子中单词的排列有点像,比如翻译。这就给用序列模型(SM)比如Transformer打开了大门。
有一个算法,它就是把Transformer用在多智能体环境里的,这个算法叫做Multi-Agent Transformers (MAT)。MAT把智能体的决策过程看作是一个序列,就像句子里单词的顺序一样。
图- 传统的多智能体学习范式(左)所有智能体同时采取行动与多智能体顺序决策范式(右)智能体按顺序采取行动。
在MAT这个方法里,智能体们是轮流做决定的,就像造句时一个单词接一个单词那样。也就是说,第一个智能体会根据自己的观察来选择一个行动。然后,第二个智能体不光看到环境,还看到第一个智能体做了什么,然后它再根据自己的观察来决定怎么做。这个流程会一直继续下去,每个智能体在做决定之前,都会先看看前一个智能体是怎么做的。这样做的好处是,MAT把智能体一起做决策的复杂问题简化了,变成了一个一步一步来的过程,更好处理。
因为MAT用了Transformer模型,所以它在多智能体的应用中需要用到编码器和解码器:
-
编码器:编码器的任务是接收所有智能体的观察结果(也就是它们在环境中看到的东西),然后把这些观察转换成有用的信息。
-
解码器:解码器拿到这些信息后,就会一个接一个地预测每个智能体最好的行动。它会考虑前一个智能体的行动,并且用一个类似文本生成时的注意力机制,来集中关注在决定行动时信息中最重要的那些部分。
就像你在下面的图表中看到的,MAT在一些标准的挑战中表现得比一些很强的基线算法,比如MAPPO和HAPPO,还要好。MAT通过把问题分解成一步步可管理的小步骤,大大简化了协调多个智能体的难题。
图- 在不同禁用关节的HalfCheetah任务上的表现。
在这篇文章里,我们聊了聊人工智能中多智能体系统是怎么一步步发展过来的,从最开始的神经网络到现在用的各种先进的学习算法。最开始的时候,我们用单个神经网络,再加上一个叫做SMFFNN的模型和PWLA这种数据预处理技术,来实现多智能体系统。但是,SMFFNN有个问题,就是它没有反馈机制,处理多智能体之间的交互也有点困难。
为了解决这些问题,人们就引入了更高级的方法,比如DQN和DDPG这样的强化学习(RL)算法。这些算法有了反馈机制,也能处理更复杂的行动空间。不过,这些早期的RL算法在把单个智能体的强化学习扩展到多智能体场景时,遇到了一些挑战,这就促成了MADDPG算法的开发。而为了解决MADDPG在扩展性方面的问题,人们开始在多智能体系统中使用基于图或者基于Transformer的算法,这些新算法和以前的基线模型比起来,看起来还是挺有潜力的。
下一篇预告:《一文了解:多智能体系统(MAS)的演变(方法论篇)》
参考资料:
1. A Framework For Intelligent Multi Agent System
Based Neural Network Classification Model(https://arxiv.org/pdf/0910.2029)
2. Multi-Agent Actor-Critic for Mixed
Cooperative-Competitive Environments(https://arxiv.org/pdf/1706.02275)
3. GRAPH CONVOLUTIONAL REINFORCEMENT LEARNING(https://arxiv.org/pdf/1810.09202)
4. Multi-Agent Reinforcement Learning is
A Sequence Modeling Problem(https://arxiv.org/pdf/2205.14953)