【QMIX】一种基于Value-Based多智能体算法

QMIX:用于深度多智能体强化学习的单调值函数分解 QMIX:用于深度多智能体强化学习的单调值函数分解Abstract 摘要在许多现实世界中,一组代理必须协调他们的行为,同时以分散的方式行事。与此同时,通常可以在模拟或实验室环境中以集中方式训练代理,其中可以获得全局状态信息并解除通信约束。学习以额外状态信息为条件的联合动作值是利用集中式学习的一种有吸引力的方法,但提取分散式策略的最佳策略尚不清楚。我们的解决方案是QMIX,这是一种新颖的基于价值的方法,可以以集中的端到端方式训练分散的策略。 阅读详情

QMIX 是一种基于 Value-Based 的多智能体强化学习算法(MARL),其基本思想来源于 Actor-Critic 与 DQN 的结合。使用中心式学习(Centralized Learning)分布式执行(Distributed Execution)的方法,利用中心式 Critic 网络接受全局状态用于指导 Actor 进行更新。QMIX 中 Critic 网络的更新方式和 DQN 相似,使用 TD-Error 进行网络自更新。除此之外,QMIX 中为 Critic 网络设立了 evaluate net 和 target net, 这和 DQN 中的设计思想完全相符。

1. QMIX 解决了什么问题(Motivation)

QMIX 是一种解决多智能体强化学习问题的算法,对于大多数多智能体强化学习问题(MARL)都面临着同样一个问题:信度分配(也叫回报分配)。

这是指,当多个 Agent 在同时执行任务时,我们应该怎样合理的去评价每一个 Agent 的行为效用,举个例子:

假设我们现在正在训练一个算法模型,使用该算法模型去玩 MOBA 类游戏(DOTA 或者 LOL),算法模型需要同时操控 5 个英雄。在训练过程中遇到了这样一个情况:我方 3 个英雄迎面撞上了敌方 1 个英雄。此时,算法模型控制 1 号英雄和 2 号英雄对敌方英雄发起进攻,但却让 3 号英雄撤退。那么最终,因为 2 打 1 的局面,我方成功击败对方英雄,获得了 10 分的奖励分(Reward),那么我们该怎样为我方的这 3 个英雄进行奖励分配?

在上面案例中,我们很明显能看出,在人数占优势的情况下,算法选择让 1 号和 2 号英雄一起发起进攻是一次正确的尝试,而让 3 号英雄尝试撤退显然就不那么明智了。由于对 1 号和 2 号的正确决策,使得整个指挥策略得到了正向的奖励分(Positive Reward),但显然我们不能直接将这个正向奖励分同时应用到这 3 个英雄上。

我们希望被正确决策的英雄(1 号和 2 号)获得较高的奖励分,而被错误决策的英雄(3 号)获得负的惩罚分,即最后的期望得分可能为:1 号(8分),2 号(8分),3 号(-6分)。

三个英雄的得分总和加起来还是 10 分,只是每个英雄能够按照自己的实际情况获得对应的合理奖励分。

这就是 回报分配 的概念。

回报分配通常分为两种类型: 自下而上类型 和 自上而下类型。

  • 自上而下类型:这种类型通常指我们只能拿到一个团队的最终得分,而无法获得每一个 Agent 的独立得分,因此我们需要把团队回报(Team Reward)合理的分配给每一个独立的 Agent(Individual Reward),这个过程通常也叫 “独立回报分配”(Individual Reward Assign)。上述例子就属于这种类型,典型的代表算法为 COMA算法。

  • 自下而上类型:另外一种类型恰恰相反,指当我们只能获得每个 Agent 的独立回报(Individual)时,如何使得整个团队的团队得分(Team Reward)最大化。

QMIX 算法解决的是上述第二种类型的问题,即,在获得各 Agent 的独立回报的情况下,如何使得整个团队的团队收益最大化问题。


2. QMIX 怎样解决团队收益最大化问题(Method)

2.1 算法大框架 —— 基于 AC 框架的 CTDE(Centralized Training Distributed Execution) 模式

多智能体强化学习(MARL)训练中面临的最大问题是:训练阶段和执行阶段获取的信息可能存在不对等问题。即,在训练的时候我们可以获得大量的全局信息(事实证明,只有获取足够的信息模型才能被有效训练)。

但在最终应用模型的时候,我们是无法获取到训练时那么多的全局信息的,因此,人们提出两个训练网络:一个为中心式训练网络(Critic),该网络只在训练阶段存在,获取全局信息作为输入并指导 Agent 行为控制网络(Actor)进行更新;另一个为行为控制网络(Actor),该网络也是最终被应用的网络,在训练和应用阶段都保持着相同的数据输入。

AC 算法的应用非常广泛,QMIX 在设计时同样借鉴了 AC 的 “中心式网络” 和 “分布式执行器” 的想法,整个网络包含了 Mixing Network(类比 Critic 网络)和 Agent RNN Network(类比 Actor 网络),整个网络架构图如下所示:

下面我们分别来看看 Mixing Network 和 RNN Network 的详细设计。

2.2 Agent RNN Network

QMIX 中每一个 Agent 都由 RNN 网络控制,在训练时你可以为每一个 Agent 个体都训练一个独立的 RNN 网络,同样也可以所有 Agent 复用同一个 RNN 网络,这取决于你自己的设计。

RNN 网络一共包含 3 层,输入层(MLP)→ 中间层(GRU)→ 输出层(MLP),实现代码如下:

class RNN(nn.Module):

    # 所有 Agent 共享同一网络, 因此 input_shape = obs_shape + n_actions + n_agents(one_hot_code)
    def __init__(self, input_shape, args):
        super().__init__()

        self.fc1 = nn.Linear(input_shape, args.rnn_hidden_dim)
        self.rnn = nn.GRUCell(args.rnn_hidden_dim, args.rnn_hidden_dim)     # GRUCell(input_size, hidden_size)
        self.fc2 = nn.Linear(args.rnn_hidden_dim, args.n_actions)

    def forward(self, obs, hidden_state):
        x = F.relu(self.fc1(obs))
        h_in = hidden_state.reshape(-1, self.args.rnn_hidden_dim)
        h = self.rnn(x, h_in)                # GRUCell 的输入要求(current_input, last_hidden_state)
        q = self.fc2(h)                      # h 是这一时刻的隐状态,用于输到下一时刻的RNN网络中去,q 是真实行为Q值输出
        return q, h
2.3 Mixing Network

Mixing 网络相当于 Critic 网络,同时接收 Agent RNN Network 的 Q 值和当前全局状态 s t s_t st​ ,输出在当前状态下所有 Agent 联合行为 u u u 的行为效用值 Q t o t Q_{tot} Qtot​。

Mixing 同样使用神经网络结构,不同的是,上图中蓝色部分(中间层神经元)的权重(weights)和偏差(bias)均由右边红色的神经网络产生。即,Mixing 网络中实际包含两个神经网络,红色参数生成网络 & 蓝色推理网络。

  • 参数生成网络: 接收全局状态 s t s_t st​
多智能体强化学习—QMIX 多智能体强化学习—QMIX 论文地址:https://arxiv.org/pdf/1803.11485.pdf 1 介绍   首先介绍一下VDN(value decomposition networks)顾名思义,VDN是一种价值分解的网络,采用对每个智能体的值函数进行整合,得到一个联合动作值函数。 为了简单阐述考虑两个智能体:(o-observations,a-actions,Q-action-value function)   当智能体观察他自己的目标时,但不一定是队友的目标,那么有:   当(oi 阅读详情

相关推荐

多智能体强化学习入门Qmix

本文首发于:行者AI Qmix是多智能体强化学习中比较经典的算法之一,在VDN的基础上做了一些改进,与VDN相比,在各个agent之间有着较大差异的环境中,表现的更好。 1. IQL与VDN IQL(Independent Q_Learning),是一种比较暴力的解决问题的方法,每个agent都各自为政,自己学习自己的,没有一个共同的目标。导致算法最终很难收敛。但是在实际一些问题中有不错的表现。 VDN(Value-Decomposition Networks For CooperativeMulti-.

行者AI 4694

【多智能体强化学习】协作 + 值分解 + QMIX算法及其改进

用于多智能体协作的QMIX算法及其改进

weixin_42567789的博客 5974

多智能体强化学习算法整理

参考博客:多智能体强化学习算法【二】【MADDPG、QMIX、MAPPO】 超级经典,是基于DDPG算法改进的通过“集中式训练分布式执行”的思路,计算出每个智能体的最优策略。Counterfactual Multi-Agent Policy Gradients:解决了合作式的MARL中,如何为各个agent分配奖励的问题。设置一个反事实基线(counterfactual baseline),将action与默认action的reward比较,若更高则说明做出了贡献。对比:多智能体强化学习(二) MAPPO算

strawberry47的博客 4227

QMIX: Monotonic Value Function Factorisation for Deep Multi-Agent Reinforcement Learning笔记

QMIX: Monotonic Value Function Factorisation for Deep Multi-Agent Reinforcement Learning 1. 论文讲了什么/主要贡献是什么 在多代理强化学习中,存在代理单独计算价值函数和完全集中计算价值函数两种方式,前者存在不稳定的问题,后者存在可扩展性差的问题(维度灾难)。作者在介于两者之前的VDN算法的基础上,对从单代理...

Melody1211的博客 2659

阅读VDN:Value-Decomposition Networks For Cooperative Multi-Agent Learning Based On Team Reward

哇我先说一下,还真是技术/paper/理论像弹簧,我弱它就强,我一开始非常恐惧看这些啥啥分解的论文,最近看了VDN,QMIX,感觉真的就没我想得那么复杂,哎,惭愧惭愧,下一次会更勇敢一点的。我先放到这里,明天参加完活动顺利的话明天上午更一下,顺便把QMIX也更新一下,嘻嘻。 ...

养羊的博客 4289

MMSA:模型基多智能体强化学习在星际争霸中的应用

多智能体强化学习(MARL)是解决复杂协作问题的关键技术,其核心挑战包括部分可观测性、环境随机性和样本效率。模型基方法通过构建环境动力学模型,显著提升了样本利用率和策略稳定性。MMSA(Model-based Multi-agent State-Action representation learning)创新性地融合了图神经网络和变分推断,在《星际争霸》等即时战略游戏中实现了高效的多智能体协作。该框架通过联合状态-动作表征学习和值分解网络,解决了异构观测处理和策略协调问题。实验证明,在SMACv2环境中,

abc_1114的博客 389

多智能体强化学习源码实战:VDN、QMIX、QTRAN、QPLEX 从公式到落地

多智能体强化学习(MARL)中,值分解方法如 VDN、QMIX、QTRAN、QPLEX 通过分解联合 Q 值实现高效协作。其核心原理包括加性分解、单调性约束、线性分解和 dueling 结构,确保个体 Q 值与全局 Q 值的一致性。这些方法在 StarCraft II 等复杂环境中展现出强大的技术价值,广泛应用于游戏 AI、机器人协同和资源调度。本文提供完整 Python 源码包,涵盖四种算法的实现细节、SMAC 环境对接、ReplayBuffer 设计及训练避坑指南,助你快速复现并深入理解 mixing

weixin_34221775的博客 654

qmix_no_qmix_qmix实现_

Qmix的一种简单实现,基于MPE和pySC2的平台

nvprof:CUDA编程性能分析工具

NVIDIA提供了具有高性能计算的GPU产品,如何检验硬件的实际性能,写出高效的CUDA代码让算力加速卡物尽其用,那可以通过其配套提供的“护城河”软件工具链来检验和帮助发挥GPU的性能:nvprof。如下,对于将8192个A,B向量进行向量加法运算,即C[i] = A[i] + B[i],当软件设置不同的blocknum, threadnum时候,CUDA执行kernel的时间是不同的。比如如下命令,可以看到程序tmp1的总体性能,下面一行是打印gpu的执行时间情况。

Briwisdom的博客 3364

设备树实践:从零构建一个嵌入式板级的设备树描述

本文详细介绍了如何从零开始为嵌入式Linux系统构建设备树(Device Tree),以i.MX6ULL处理器为例,涵盖硬件分析、设备树语法、外设配置及调试技巧。通过实践指导,帮助开发者掌握设备树编写,实现硬件与软件的高效对接,提升嵌入式开发效率。

plum99的博客 300

手把手教你用ComfyUI搭建高效AI绘画工作流:从基础到高级技巧

本文详细介绍了如何使用ComfyUI构建高效的AI绘画工作流,从基础配置到高级技巧全面覆盖。通过模块化设计,ComfyUI显著提升显存利用率和创作灵活性,适合从新手到专业用户。文章包含部署指南、工作流搭建、性能优化及行业应用案例,帮助读者快速掌握AI绘画核心技术。

7up55的博客 715

为什么AI时代的优秀组织,都在学习Meta的Pod结构?看完秒懂

当AI技术重塑产业格局,企业协作正面临前所未有的挑战——层级繁琐、跨部门内耗、迭代滞后,传统组织模式早已难以跟上技术革新的步伐。作为全球AI原生企业的标杆,Meta独创的Pod组织模式,用“小而美”的自治单元打破困局,成为AI时代高效协作的典范。本文将从定义、运作、价值到未来演进,全面拆解Pod模式,为企业组织变革提供可参考的思路与路径。德鲁克曾说:“组织的功能就是让平凡的人做平凡的事。”而Meta Pod打破这一局限,通过去中心化、指标导向、跨界融合,让优秀人才产生“化学反应”。

Kiss_AIHR的博客 1136

瑞萨RA6M5驱动ST7735屏幕避坑指南:从软件SPI到显示汉字与图形的完整流程

本文详细介绍了瑞萨RA6M5单片机驱动ST7735屏幕的完整流程,涵盖硬件连接、软件SPI控制、汉字显示及图形绘制优化等关键步骤。通过避坑指南和实用代码示例,帮助开发者解决屏幕初始化、时序控制、字库移植等常见问题,实现高效稳定的显示效果。

weixin_28705087的博客 272

Idea插件Plugins无法联网下载 解决方法(终极版必解决!)

插件联网的Bug疑难杂症,网络上不一样的解决方式以及独特的彩蛋!包解决

码农研究僧的博客 5500

手把手教你学PCIE--基本概念:PCIe 初始化流程概述

硬件上电复位:系统上电时,所有 PCIe 设备都会进行复位。链路训练(Link Training):主机和设备之间通过链路训练状态机(LTSSM)协商链路参数(如速度和宽度)。配置空间访问:主机通过配置空间读写来发现和配置设备。资源分配:主机为设备分配内存映射 I/O 区域(BARs)、中断向量等资源。驱动程序加载和高级配置:操作系统加载设备驱动程序,并进行更高级的配置和状态监控。硬件上电复位:确保所有设备处于已知的良好状态。链路训练:主机和设备通过 LTSSM 协商链路速度和宽度。

MHD0815的博客 1368

[PCIe5.0] 2.2.7.1 TPH Rules

TPH 机制通过硬件提示优化数据流,适用于高性能计算和存储场景。

系统固件工程师 343

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

上一篇: MultiProcessing中主进程与子进程之间通过管道(Pipe)通信
下一篇: 【COMA】一种将团队回报拆分为独立回报的多智能体算法
__何枝
博客等级 码龄9年 78粉丝 20原创
评论 5
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值