多智能体强化学习(MARL)核心概念与算法概览

训练单个 RL 智能体的过程非常简单,那么我们现在换一个场景,同时训练五个智能体,而且每个都有自己的目标、只能看到部分信息,还能互相帮忙。

这就是多智能体强化学习(Multi-Agent Reinforcement Learning,MARL),但是这样会很快变得混乱。

什么是多智能体强化学习

MARL 是多个决策者(智能体)在同一环境中交互的强化学习。

环境类型可以很不一样。竞争性的,比如国际象棋,一方赢一方输。合作性的,比如团队运动,大家共享目标。还有混合型的,更像现实生活——现在是队友,过会儿可能是对手,有时候两者同时存在。

但是这里与一个关键的问题:从任何一个智能体的视角看世界变成了非平稳的,因为其他智能体也在学习、在改变行为。也就是说在学规则的时候,规则本身也在变。

MARL 在现实中的位置

单智能体 RL 适合系统只有一个"大脑"的情况,而MARL 则出现在世界有多个"大脑"的时候。

现实世界中有很多这样的案例,比如交通信号控制:每个路口是一个智能体,一个信号灯"贪婪"了,下游路口就会卡死;仓库机器人:每个机器人自己选路径,碰撞和拥堵天然是多智能体问题;广告竞价和市场:智能体用不断变化的策略争夺有限资源;网络安全:攻击者和防御者是相互适应的智能体对;在线游戏和模拟:协调、欺骗、配合、自我对弈——这些都是MARL 的经典试验场。

核心概念

大多数真实场景中,智能体只能看到状态的一部分。所以 MARL 里的策略通常基于局部观测,而不是完整的全局状态。

单智能体 RL 里环境动态是稳定的,而MARL 不一样"环境"包括其他智能体。它们在学习,你的转移动态也就跟着变了。

这正是经典的 Qlearn在多智能体环境里容易震荡、甚至崩溃的原因。

合作任务中团队拿到奖励,但功劳该算谁的?团队成功了,是智能体 2 的动作起了作用,还是智能体 5 在 10 步之前的作用?这就是信用分配问题,这是MARL 里最头疼的实际难题之一。

集中式与分布式

集中训练、分布式执行(CTDE)

这是目前最常见的模式。训练时智能体可以用额外信息,比如全局状态或其他智能体的动作。执行时每个智能体只根据自己的局部观测行动。

这样的好处是,既有集中学习的稳定性,又不需要在运行时获取不现实的全局信息。

完全分布式学习

智能体只从局部经验学习。这个听起来是对的,而且简单任务也能用。但实际中往往不够稳定,合作任务尤其如此。

算法总览

合作性基于价值的方法:Independent Q-Learning(IQL)是最简单的基线,容易实现但通常不稳定;VDN 和 QMIX 通过混合各智能体的价值来学全局团队价值,合作处理得更好。

策略梯度和 Actor-Critic 方法:MADDPG 用集中式 Critic 配分布式 Actor,概念上是很好的切入点;MAPPO 在很多合作任务里是靠谱的默认选择。

自我对弈(Self-play):和自己不同版本对打来建立泛化的策略。思路简单粗暴效果也很好。

用 Python 从零搭一个小 MARL 环境

来做个玩具游戏:两个智能体必须协调。经典设定——两者选同一个动作才有奖励。每个智能体选 0 或 1,动作一致拿 +1,不一致拿 0。

我们这里刻意设计得简单,这样方便我们聚焦在 MARL 机制本身。

import random from collections import defaultdict class CoordinationGame: def step(self, a0, a1): reward = 1 if a0 == a1 else 0 done = True # single-step episode return reward, done

接下来是最小化的 Independent Q-Learning 设置,每个智能体学自己的 Q 表。这里没有状态,Q 只取决于动作。

def epsilon_greedy(Q, eps=0.1): if random.random() < eps: return random.choice([0, 1]) return 0 if Q[0] >= Q[1] else 1 Q0 = defaultdict(float) # Q0[action] Q1 = defaultdict(float) # Q1[action] alpha = 0.1 eps = 0.2 env = CoordinationGame() for episode in range(5000): a0 = epsilon_greedy(Q0, eps) a1 = epsilon_greedy(Q1, eps) r, done = env.step(a0, a1) # One-step update (no next-state) Q0[a0] += alpha * (r - Q0[a0]) Q1[a1] += alpha * (r - Q1[a1]) # Inspect learned preferences print("Agent0 Q:", dict(Q0)) print("Agent1 Q:", dict(Q1))

多数运行会收敛到两种"惯例"之一:两者都学会总是选 0,或者都学会总是选 1。

这就是协调从学习中涌现出来的样子。虽然小但和大型合作 MARL 系统里依赖的模式是同一类东西。

这个玩具例子太友好了。难一点的任务里,IQL 常常变得不稳定,因为每个智能体都在追一个移动靶。

让例子更"MARL"一点

常见技巧是加共享团队奖励,同时保证足够长的探索期来发现协调,下面是一个带衰减 epsilon 的训练循环:

Q0 = defaultdict(float) Q1 = defaultdict(float) alpha = 0.1 eps = 0.9 eps_decay = 0.999 eps_min = 0.05 env = CoordinationGame() for episode in range(20000): a0 = epsilon_greedy(Q0, eps) a1 = epsilon_greedy(Q1, eps) r, _ = env.step(a0, a1) Q0[a0] += alpha * (r - Q0[a0]) Q1[a1] += alpha * (r - Q1[a1]) eps = max(eps_min, eps * eps_decay) print("Agent0 Q:", dict(Q0)) print("Agent1 Q:", dict(Q1))

这当然不会解决 MARL,但它演示了一个真实原则:早期探索帮助智能体"找到"一个稳定的协调惯例。

总结

一旦解决了单步协调问题,还会有三个问题会反复出现:

虚假学习信号:智能体可能觉得"是自己动作导致了奖励",实际上是另一个智能体的动作起了作用。

糟糕的均衡陷阱:在竞争性游戏里,智能体可能卡在稳定但不强的弱策略上。

规模爆炸:多智能体的状态和动作空间膨胀很快,需要更好的函数逼近(神经网络)、更好的训练方案(CTDE),通常还需要更讲究的环境设计。

应对这些问题没有万能解法,但有一些经过验证的思路。针对虚假学习信号,可以用 CTDE 架构让 Critic 看到全局信息,帮助每个智能体更准确地评估自己动作的贡献。均衡陷阱的问题,自我对弈加上一定的探索机制能帮智能体跳出局部最优。规模问题则需要参数共享、注意力机制等技术来降低复杂度。

实际项目中,建议先在概念上理解集中式 Critic 的工作原理,不用急着写完整的深度 RL 代码。这一步会改变你思考可观测性和稳定性的方式,后面上手具体算法会顺畅很多。

https://avoid.overfit.cn/post/56fb12fbb46e400180fad2999d533292

作者:Syntal

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1174938.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

罗德与施瓦茨ZNB8 网络分析仪ZVB8

罗德与施瓦茨ZNB8 网络分析仪ZVB8主要特点 宽动态范围&#xff1a;140 dB 短扫描时间&#xff1a;4ms 即可扫描完401个点 高温度稳定性&#xff1a;0.01 dB/℃&#xff08;典型值&#xff09; 宽功率扫描范围&#xff1a;98 dB 宽IF带宽范围&#xff1a;1 Hz至10 MHz 支持手动和…

【软考系统架构设计师】六、软件工程 - 详解

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

『MCP开发工具』Chrome DevTools MCP:AI驱动的浏览器自动化调试实战

&#x1f4e3;读完这篇文章里你能收获到 &#x1f4c1; 掌握Chrome DevTools MCP的安装配置&#x1f40d; 学会使用MCP协议让AI自动操作Chrome进行动态调试&#x1f310; 通过真实JS逆向案例掌握AI辅助分析的实战技巧&#x1f5a5;️ 了解AI自动化调试在多个场景中的应用 文章…

『MCP开发工具』从零掌握 Context7 MCP:安装配置与实战应用

&#x1f4e3;读完这篇文章里你能收获到 &#x1f4c1; 掌握Context7 MCP的安装配置&#x1f40d; 学会使用Context7获取最新API文档&#x1f310; 了解自动调用规则的配置方法&#x1f5a5;️ 通过实战案例掌握Context7的应用技巧 文章目录前言一、Context7 MCP核心能力二、安…

【大数据毕业设计选题】基于Hadoop+Spark的脑肿瘤分析系统完整实现 毕业设计 选题推荐 毕设选题 数据分析 机器学习

✍✍计算机毕设指导师** ⭐⭐个人介绍&#xff1a;自己非常喜欢研究技术问题&#xff01;专业做Java、Python、小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。 ⛽⛽实战项目&#xff1a;有源码或者技术上的问题欢迎在评论区一起讨论交流&#xff01; ⚡⚡有什么问题可以…

AtCoder Beginner Contest 441 ABCDEF 题目解析

A - Black Square 题意 有一个 \(10^{100}\) 行 \(10^{100}\) 列的网格图。 我们将第 \(i\) 行第 \(j\) 列的单元格称作 \((i, j)\)。 在这个网格图中,只有以单元格 \((P,Q)\) 为左上角的大小为 \(100\times 100\) 的…

2026年维普AIGC检测怎么过?这3款降AI工具亲测有效

2026年维普AIGC检测怎么过&#xff1f;这3款降AI工具亲测有效 TL;DR&#xff1a;维普AIGC检测算法与知网不同&#xff0c;需要选择适配维普的降AI工具。亲测嘎嘎降AI效果最好&#xff08;67%→9%&#xff0c;达标率99.26%&#xff09;&#xff0c;支持维普/知网/万方多平台。预…

提示工程架构师实战:Agentic AI在教育领域的3大创新应用

提示工程架构师实战&#xff1a;Agentic AI在教育领域的3大创新应用 关键词&#xff1a;提示工程架构师、Agentic AI、教育领域、创新应用、人工智能教育 摘要&#xff1a;本文聚焦于提示工程架构师如何在教育领域通过Agentic AI实现创新应用。首先介绍Agentic AI的背景及在教育…

是德N9917B手持式网络频谱分析仪N9917A

是德N9917B手持式网络频谱分析仪N9917AN9917B是是德科技 (Keysight)推出的多功能集成式手持射频 / 微波分析仪&#xff0c;频率覆盖30kHz-18GHz&#xff0c;集电缆与天线测试 (CAT)、矢量网络分析 (VNA)、频谱分析 (SA)三大核心功能于一体&#xff0c;同时支持实时频谱分析 (RT…

生成式提示设计用户访谈:提示工程架构师的7个关键问题

生成式提示设计用户访谈&#xff1a;提示工程架构师的7个关键问题 引言 背景介绍 在当今人工智能飞速发展的时代&#xff0c;生成式人工智能&#xff08;如大型语言模型&#xff09;已经广泛应用于各个领域。而提示工程作为与生成式人工智能交互的关键环节&#xff0c;其重要性…

保姆级教程:论文降AI率的完整操作流程

保姆级教程&#xff1a;论文降AI率的完整操作流程 TL;DR&#xff1a;论文降AI率完整流程&#xff1a;检测AI率 → 选择工具&#xff08;推荐嘎嘎降AI&#xff09;→ 上传处理 → 人工检查 → 复检确认。全程约20-30分钟&#xff0c;一万字花费50元左右。本文手把手教你每一步怎…

生成式提示设计用户访谈:提示工程架构师的7个关键问题

生成式提示设计用户访谈&#xff1a;提示工程架构师的7个关键问题 引言 背景介绍 在当今人工智能飞速发展的时代&#xff0c;生成式人工智能&#xff08;如大型语言模型&#xff09;已经广泛应用于各个领域。而提示工程作为与生成式人工智能交互的关键环节&#xff0c;其重要性…

【计算机毕业设计案例】基于python的卷神经网络训练混凝土是否含有裂缝识别

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

Unity 查找对象 API 对比

方法 返回结果 查找范围 性能特点 使用场景FindObjectOfType() 返回场景中第一个找到的对象 遍历整个场景 较旧实现,GC 分配较多 传统用法,已不推荐,主要用于兼容旧代码FindObjectsOfType() 返回场景中所有符合类型…

【计算机毕业设计案例】基于人工智能python-pytorch训练会飞的昆虫识别

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

【计算机毕业设计案例】基于人工智能python-pytorch训练会飞的昆虫识别

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

Linux下载Navicat、特定版本Mysql

1、根据下载版本&#xff0c;给AI要出对应的下载链接&#xff1b; 以5.7.26版本为例&#xff0c;如&#xff1a;https://downloads.mysql.com/archives/get/p/23/file/mysql-5.7.26-linux-glibc2.12-x86_64.tar.gz 2、打开Linux终端&#xff1b; wget https://downloads.mys…

图像像素的位深对图像质量的影响

一、说明 1.图像的像素位深bit_depth是数字图像中一个非常重要的参数&#xff0c;它决定了 每个像素可以表示的颜色或者灰度的数量。 2.位深会直接影响图像的视觉质量二、位深 1.灰度图像中&#xff0c;位深表示每个像素的灰度级别数 2.其中1bit位深&#xff0c;只能表示黑白二…

缓存界三座大山:穿透、击穿、雪崩 - 指南

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

2026 年户外 LED屏广告公司综合实力排行榜单及选择建议指南:2026年户外 LED屏广告公司如何选?哪家好?哪家强?哪家靠谱?选哪家 - Top品牌推荐

一、全国性户外 LED 广告传媒公司 1. 艾迪亚控股集团 综合实力:★★★★★覆盖范围:全国 330 多个城市,拥有 4000 多块楼体全彩 LED 大屏媒体资源:除 LED 大屏外,还代理地铁、电梯框架、电梯电子屏、社区灯箱、道…