为什么编码多智能体系统很困难
资源
“三十五年的AI研究的主要教训是,难题很容易解决,而难题也很难解决。” 平克(1994),《语言的本能》

认为编程软件代理来收集图表上的珍宝将是小菜一碟。 我完全错了。 编码代理程序以免他们愚蠢地行动,从本质上讲是困难的。

定义良好的多代理设置

代理可以看作是通过传感器感知其环境并通过效应器对该环境采取行动的任何事物。” 人工智能:现代方法 ,Stuart Russell 彼得·诺维格
为什么编码多智能体系统很困难
使用GraphStream库模拟收集宝物的多主体系统

这是一个简单的多主体问题。 n个代理人在完全相关的图中移动以收集宝藏。 行动者的行动,感知和交流受到限制。 他们只能观察并移动到直接与其连接的节点,并与足够近的代理进行通信。

代理共有三种ExplorersCollectorInfinite-backpack代理 探险者注定要探索地图,因为他们不允许挑选宝藏。 可以是收藏家的人,但不能携带太多,必须将收集到的宝藏交给无限背包特工。

代理人的知觉有限,但可以记住过去的观察结果。 每个代理都有自己的世界表示形式,自己的图,它是真实图的子图。 他们的子图是他们访问过的所有节点以及他们曾经看到或拍摄的边缘的记忆。 他们必须将此图传达给其他图,以便他们都可以共享所有子图的重构。

JADE (Java代理开发框架)将用于实现所谓的“行为” (可在此处此处找到教程)。 在此多代理系统框架中, 行为是代理将执行的一组指令。 在每个回合中,每个代理都按顺序执行其每个行为。

您的目标 :实施代理商的行为,以使他们在一定时间内收集尽可能多的宝藏。

看起来很容易,对吧?

(注意:该项目是Multi-Agent Systems简介的一部分(这是我目前在UPMC上攻读的AI硕士学位的ANDROIDE课程)。它的灵感来自生存恐怖游戏Hunt The Wumpus ,以及完整版版本的项目,代理商需要应对可怕的Wumpus徘徊)。

非平凡行为

想象一下,两个特工在长走廊中朝相反的方向移动。 图的每个节点只能有一个代理,因此他们必须协调其操作,以免妨碍方式。 必须实现特定的协议才能考虑这种情况。

为什么编码多智能体系统很困难
模拟中的代理冲突:MyExplorerAgent2阻止了另外两个

协调

特工的知觉有限,能力各异。 因此,合作是必要的 当发生冲突时,必须采取一种解除封锁的协议。 他们必须共享自己的子图,查看谁更接近高度连接的节点并就谁将移动达成一致。

资源管理器代理还必须就谁将探索未知图形的哪个部分达成共识 ,以优化其运动并防止冲突。

信息交流

在多主体设置中交换信息以使每个代理可以访问全局知识的过程称为八卦问题

为什么编码多智能体系统很困难
资源

例如,假设集合{1,2,…,n}中的每个代理都确切地知道一条信息,称为secret 然后,一种非常简单的协议是让代理1调用2,3,…,n并了解其秘密。 然后,当1知道所有秘密时,他呼叫2,…,n告诉他们这些秘密,然后每个人都知道所有秘密。 总共进行n-1 + n-1 = 2n-2次呼叫。 实际上, 最佳解决方案需要2n-4次调用,这接近于我们的简单算法。

但是,在我们的问题中, 直到探索完所有节点后才完全了解总信息 ,这使算法稍微复杂一些,因为总知识是动态的(代理探索图表越多,其总知识就越大) 。

这就是出现优化折衷的地方。 n个代理之间必须交换的所有消息的最佳数目是多少? 更多消息意味着更好的全球知识和更好的协调。 然而,在成千上万的代理程序和数百万个节点的情况下, 每毫秒发送数千条消息的成本远远不能忽略,而成为计算负担。

异步通讯

代理之间的通信是异步的 由于代理的执行是分布式的 ,因此没有全局时钟来同步代理的动作。 此外,在交换信息时,每个代理都有一个邮箱,其中包含来自其他代理的消息,因此通信可能会延迟。 在此延迟期间,一个座席可能会走得很远,并且从不回答原始消息

联盟阵型

为什么编码多智能体系统很困难
联盟形成的例子: 来源

某些目标不能单独实现(即举起重物)。 因此,特工可能同意组成一组称为联合的特工,以实现共同的目标。

对于具有三种不同必要技能(探索,收集和积累)的三个特工,必须形成至少三个特工的联盟 因此,必须实现用于创建和更新联盟的协议。 一种可能性是使用Shapley值 (由代理商联盟创建的盈余)来确定哪些联盟最有价值。

即使采用简单的问题解决方法, 也会很快出现一些障碍,并且算法复杂性似乎不可克服 当尝试构建将以类似于人类的方式运行的AI算法时,这是一个经常出现的现象。

构建具有简单行为的AI很难

“要使计算机在智力测验或游戏检查中表现出成年人水平的性能相对容易,而在感知和移动性方面很难或不可能赋予他们一岁大的技能。” 莫拉维克(1988)

如果我们用人类代替特工,我相信他们会很快理解如何在这场比赛中获胜,交流他们在图表中看到的内容,并组建联盟以收集最多的宝藏。 但是, 事实证明,为智能代理实施严格的行为规则非常困难。

这是Moravec的悖论

对人类而言容易的事情对于机器而言极其困难

在下棋方面,人工智能实现了超人的表现。 但是对于人类的基本行为,例如步行或协调动作来探索地图,人工智能算法出奇地困难。

国际象棋棋王大师加里·卡斯帕罗夫(Garry Kasparov)在《 深度思考》中发表了以下声明:任何足够先进的算法在同时进行的游戏中击败20名顶级棋手并不困难。 但是,任何人工智能(在机器人中)都无法在拥挤的酒吧里四处走动,自己移动棋子

为什么编码多智能体系统很困难
来源: DARPA机器人摔倒

机器学习在非常特殊的情况下有效

但是,为什么我们不使用最新的机器学习(ML)算法来解决我们的问题呢?…您说。 好吧, 仅ML算法只能用于某些任务

是的,强化学习(RL)算法风行一时,可以解决令人震惊的难题,例如在Atari GamesGo游戏中达到超人水平 但是这些游戏是具有少量数据输入的全可见性游戏 ,而对于我们的寻宝问题却不是这种情况,因为在开始时地图并不完全可见。

为什么编码多智能体系统很困难
资料来源: 深度强化学习尚未奏效 (2018年2月)

但是,OpenAI难道不是在多代理系统上使用机器学习算法在5对5的情况下在Dota 2上击败人类吗?...您说。

是的,当在Dota 2上以1比1 击败世界冠军时,OpenAI表现出了惊人的成绩。 但这主要是由于其强大的计算能力而不是人工智能的突破

他们的目标是使用580万场比赛的数据集,以5比5赢得比赛 因此,他们似乎正在使用完整的机器学习方法(从人类游戏中学习)来解决Multi-Agent问题,并且似乎缺少 针对Multi-Agent系统 的自上而下的 方法

代理人不能推断,也不能一概而论 Pure ML可以用于单个代理或完全可观察的系统,但是对于一个鲜为人知的世界中的Multi-Agent系统,必须采用更通用的方法。

我们不知道如何实现可扩展的行为

只有两个特工在走廊中朝相反的方向行走时,我们遇到了一个问题。 可以实施一个协议来解决此特定问题。

但是在400个节点上映射100个代理怎么办?
为什么编码多智能体系统很困难

少量代理的硬编码功能与具有多代理系统的可伸缩 通用的实现之间存在差距。

需要做什么

必须通过研究来开发特定的多代理协议 ,以解决此类问题。 在没有先验知识的情况下进行学习将不会教给代理如何沟通,因为搜索空间太大。 纯粹的数据驱动方法将无处可寻。

结论

实践证明,实现一种能够解决寻宝问题的算法比看起来要困难得多。 构想能够解决简单问题的多智能体系统绝非易事。 机器学习算法在过去十年中取得了不错的成绩,但仅靠它们并不能解决所有人工智能问题。

如果本文对您有所帮助,请按住 ???? 按钮(最多50次)并成为 ???? 帮的 一部分 您可以在 Medium Twitter上 关注我 ,或者 如果您足够疯狂, 甚至可以 订阅我的个人新闻

编辑:为了让您的手变脏并开始编码,这是CédricHerpson开发的用于快速尝试该项目的库。

From: https://hackernoon.com/why-coding-multi-agent-systems-is-hard-2064e93e29bb

相关文章: