【MARL】MAT论文阅读笔记

文章目录

  • 前言
  • 一、如何产生这个想法
    • (TRPO -> ) PPO -> MAPPO -> HAPPO -> MAT
  • 二、多智能体优势值分解定理
  • 三、transformer 在MAT的应用
  • 四、伪代码简述
  • 五、实验效果


前言

正好有节课让我们调研最新的自己的方向的新论文,找到一篇自己觉得比较可行,效果看起来比较好的论文CommFormer
https://arxiv.org/pdf/2411.00382,发现他又是基于之前的论文改进的,于是就查到了MAT和HAPPO以及MAPPO。
好巧不巧,发现他们的代码几乎也是一体同源,后根据对论文里发表作者的大学查看,推测估计这几篇都是一个团队里的人发表的。

由于时间有限(下周讲PPT),虽然都看懂了文章,但是对于代码的修改止步于MAT,复刻完MAT了但是应该还有漏洞,以至于现在的效果不太好,故这里先讲下MAT的论文。

MAT论文:https://arxiv.org/pdf/2205.14953
MAT代码:github代码
MAT的效果展示十分不错。

以下不对论文的结构进行按章节解读,按自己理解解读。
(由于本篇文章也会用于演讲,所以,可能会有一些专业术语的解释以及图解)

参考算法推导:(强烈推荐)
1.强化学习 | 策略梯度 | Natural PG | TRPO | PPO
2.强化学习 | Multi Agents | Trust Region | HATRPO | HAPPO


一、如何产生这个想法

(TRPO -> ) PPO -> MAPPO -> HAPPO -> MAT

TRPO(Trust Region Policy Optimisation 信任区域策略优化算法):原理示意图如下:
在这里插入图片描述

PPO(Proximal Policy Optimisation近端策略优化算法):工业界常用的RL算法,也是大模型RLHF(RLHF (Reinforcement Learning from Human Feedback) ,即以强化学习方式依据人类反馈优化语言模型)的基础算法。(chatgpt背后用到了RLHF)

MAPPO:https://arxiv.org/pdf/2103.01955
对于之前的研究,MAPPO,只是简单的套用CTDE范式(即:集中式训练分散式执行),并模仿MADDPG多智能体的训练算法,将PPO从单智能体拓展到多智能体MAPPO上,采用了PPO之前有论文中研究的多种有效的tricks,在星际争霸SMAC和谷歌足球google football的环境下,取得了不错的效果,文章主要贡献在于,拓展并提出了5个在使用MAPPO时的设置参数建议。

(作者给出了两套代码,一套参数共享的,一套参数不共享。(该论文第11页伪代码下方说明)
参数共享:所有智能体共享一套参数,同一个actor网络参数,critic网络参数,智能同质的情况下。
参数不共享:每个智能体都有自己的独立的一套参数,即actor网络参数,critic网络参数)

HAPPO: (H :Heterogeneous)https://arxiv.org/pdf/2109.11251
1.针对上述MAPPO缺乏理论的收敛依据,提出并证明了多智能体优势值分解引理(multi-agent advantage decomposition lemma),并借此严格证明了算法的单调改进性。
2.针对MAPPO会出现的信用分配问题,例:在参数共享下(单个智能体不知道自己对总回报贡献了多少),参数不共享下(单个智能体不知道自己动作的奖励比其他智能体动作的奖励高多少)
利用优势值分解定理,解决了MAPPO用于异构智能体时造成的次优解的问题,将其推广到异构智能体上,这也是算法名字的由来。
效果上,智能体越多,越比MAPPO好。

(该作者从TRPO严格证明->多智能体的TRPO(HATRPO)->多智能体的HAPPO,附录近10页公式)

(由此,作者只给出了参数不共享的一套代码。)

来自该论文作者的blog图:生动展示上述出现的信用分配问题
在这里插入图片描述
MAT:(Muti-Agent transformer)
由HAPPO的优势值分解定理灵感所激发。
在这里插入图片描述
作者发现,由于优势值分解定理隐含的一个想法是,需要得到前一个智能体的动作,才能更新下一个智能体的动作,于是发现这跟transformer的文本自回归生成及其类似,于是将transformer架构引入进来,将其构造成一个 序列模型建模问题(squense model)。

HAPPO的存在问题:
优势值分解定理导致的情况是在一个智能体更新完得到它的优势值,再更新下一个智能体,导致计算效率低下。
MAT针对此引入transformer,将其计算并行化,加快计算效率,将传统的RL训练模式改造成类似于transformer训练的范式。
算法取得了惊人的效果。

二、多智能体优势值分解定理

这里重点讲下优势值分解定理是什么,为什么简单将信任区域学习拓展到多智能体会失败?

在单智能体中,信任区域学习会带来策略的稳定改进,简单的引入只能导致所有智能体在自己的范围内策略改进,可能会导致团体的的回报的下降,上述的两人开车的图。

在单个的智能体的优势值:𝐴𝜋(𝑠,𝑎)≜𝑄𝜋(𝑠,𝑎)−𝑉𝜋(𝑠),减掉的baseline是状态s的状态价值函数。

简单的想法是,我想令我当前的智能体在前一个智能体动作的达到的价值上,再做出一个动作,当前动作的价值希望比上一个价值更高。
简单写法:𝐴𝜋(𝑠,𝑎1,a2) = 𝑄𝜋(𝑠,𝑎1,a2) - 𝑄𝜋(𝑠,𝑎1) (两个智能体的情况下,第二个智能体的优势值)
(那么两个智能体的情况下,第1个智能体的优势值:𝐴𝜋(𝑠,𝑎1)≜𝑄𝜋(𝑠,𝑎1)−𝑉𝜋(𝑠))

理解:两个智能体的情况下,第二个智能体的优势值 就是第二个智能体在第一个智能体已经动作完它的动作a1之后,执行动作a2的相对好坏。

拓展到多个智能体就是多智能体优势值的定义:
在这里插入图片描述
HAPPO作者又多想一步:第一个智能体的优势值为A1,第二个智能体的优势值为A2(在第一个智能体更新的基础上)。。。
所有的智能体加起来之和就是联合智能体函数了。
在这里插入图片描述
例:
在这里插入图片描述
图来自参考2

三、transformer 在MAT的应用

原transformer框架:
在这里插入图片描述
此论文的transformer框架:

在这里插入图片描述
可以看出大体的框架和本论文的transformer框架大体一致,区别在于在此论文encoder的第二个attention还是采用的是masked attention,这与实际要解码的内容有关。

在原transformer论文中, 比方说 encoder 中文 decoder英文
encoder采用自注意机制:输入源句子 : 输出语句间的语义关系
decoder的第一个masked muti-head attention: 使用 senquence masked 为了使得 decoder 不能看见未来的信息
第二个muti-head attention :未使用masked,是因为解码器需要根据源语言句子(由编码器处理后的表示)来生成目标语言句子,此时需要全面了解源语言句子的信息,因此不应限制其关注范围。

举一个小例子来展示transformer在语言模型上是如何应用的:
推理阶段:准备两个正确的句子 中文:我喜欢吃苹果 英文 i like eating apples
1.编码器输入input :我喜欢吃苹果 解码器输入:起始标记(0 或start)
中间步:编码器输出语义到解码器的第二个attention 充当K,V(键值)
2.解码器最终输出 i (根据概率选择最大)
3.编码器输入input :我喜欢吃苹果 解码器输入:i
(将输出的i当作输入给解码器,这就是为什么解码器的开头是Outputs(shift right的原因)) -- 第一个难理解的地方
4.解码器最终输出 like
5.编码器输入input :我喜欢吃苹果 解码器输入:i like
此时attention 中的mask才发挥作用:--第二个比较难理解的地方
因为上一步计算I时是没有like的信息的,所以这里要屏蔽掉
在这里插入图片描述
之后类推 ->decoder最终输出i like eating apples

在此论文:(作者有一个很棒的gif 生动展示了 transformer是怎么做的 in https://sites.google.com/view/multi-agent-transformer)
(A-C框架下RL,有一个actor,一个critic)
编码器被看作一个输出价值的价值模拟器,替代了之前的critic
解码器被看作一个输出价值的动作模拟器,替代了之前的actor

encoder采用自注意机制:输入每个智能体的状态,输出每个智能体的状态函数
decoder的第一个mask self attention:这个和transformer一样,计算第二个智能体动作时,要屏蔽掉第一个智能体的未来信息
decoder的第二个mask self attention:可能这里作者还是觉得未来的动作应该屏蔽,所以这里还是做了mask。(作者这里并没有明确表述)

四、伪代码简述

在这里插入图片描述
最后这里伪代码,我们便能知道这个算法的总体架构了
在推理阶段使用transformer来进行对环境的探索
在训练阶段,将encoder的输出当成V函数的拟合,decoder的输出当成策略的拟合,最终通过类似于PPO的算法计算损失,来进行梯度下降。

五、实验效果

实验效果嘎嘎棒,领先于之前他们团队提出的MAPPO和HAPPO。
在这里插入图片描述
并且在他们网站上有更好的视频演示。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

代码随想录32 动态规划理论基础,509. 斐波那契数,70. 爬楼梯,746. 使用最小花费爬楼梯。

1.动态规划理论基础 动态规划刷题大纲 什么是动态规划 动态规划,英文:Dynamic Programming,简称DP,如果某一问题有很多重叠子问题,使用动态规划是最有效的。 所以动态规划中每一个状态一定是由上一个状态推导出来的…

基于SpringBoot的社区医院管理系统(代码+论文)

🎉博主介绍:Java领域优质创作者,阿里云博客专家,计算机毕设实战导师。专注Java项目实战、毕设定制/协助 📢主要服务内容:选题定题、开题报告、任务书、程序开发、项目定制、论文辅导 💖精彩专栏…

Leetcode 每日一题 49.字母异位词分组

目录 问题描述 示例 示例 1 示例 2 示例 3 约束条件 解决方案 思路 算法步骤 过题图片 代码实现 复杂度分析 题目链接 结论 问题描述 给定一个字符串数组,需要将其中的字母异位词分组。字母异位词是指通过重新排列源单词的所有字母得到的新单词。要求…

进程控制(下)

进程控制(下) 进程程序替换 fork() 之后,⽗⼦各⾃执⾏⽗进程代码的⼀部分如果⼦进程就想执⾏⼀个全新的程序呢?进程的程序 替换来完成这个功能! 程序替换是通过特定的接⼝,加载磁盘上的⼀个全新的程序(代码和数据)&am…

安全关系型数据库查询新选择:Rust 语言的 rust-query 库深度解析

在当今这个数据驱动的时代,数据库作为信息存储和检索的核心组件,其重要性不言而喻。然而,对于开发者而言,如何在保证数据安全的前提下,高效地进行数据库操作却是一项挑战。传统的 SQL 查询虽然强大,但存在诸…

读取电视剧MP4视频的每一帧,检测出现的每一个人脸并保存

检测效果还不错,就是追踪有点难做 import cv2 import mediapipe as mp import os from collections import defaultdict# pip install msvc-runtime# 初始化OpenCV的MultiTracker # multi_tracker = cv2.MultiTracker_create() # multi_tracker = cv2.legacy.MultiTracker_cre…

【AI系统】Transformer 模型小型化

Transformer 模型小型化 自 Vision Transformer 出现之后,人们发现 Transformer 也可以应用在计算机视觉领域,并且效果还是非常不错的。但是基于 Transformer 的网络模型通常具有数十亿或数百亿个参数,这使得它们的模型文件非常大&#xff0…

hhdb数据库介绍(10-43)

安全 密码安全管理 密码安全管理为用户提供了对计算节点数据库用户与存储节点的连接用户、备份用户的密码有效期监控提醒。到期后自动提示用户修改密码以提升系统的安全性。 数据库用户密码 (一)密码修改 用户可以在“安全->密码安全管理->数据…

MagicAnimate 技术浅析(五):视频融合策略浅析

视频融合策略(Video Fusion Strategy)是 MagicAnimate 中用于处理长视频动画生成的关键组件。它通过将长视频分解为多个重叠的片段,并在推理过程中对重叠帧的预测结果进行融合,确保生成的长视频动画在时间上平滑过渡,避…

【SNIP】《An Analysis of Scale Invariance in Object Detection – SNIP》

CVPR-2018 Singh B, Davis L S. An analysis of scale invariance in object detection snip[C]//Proceedings of the IEEE conference on computer vision and pattern recognition. 2018: 3578-3587. https://github.com/bharatsingh430/snip?tabreadme-ov-file 文章目录 …

GPS周和周内秒 UTC时 格林尼治时间

1.GPS周和周内秒介绍 GPS周和周内秒是全球定位系统(GPS)中用于时间表示的两个重要概念,它们共同构成了GPS时间系统。以下是对这两个概念的详细介绍: GPS周(GPS Week) GPS周是GPS系统内部所采用的时间单位…

探索JavaScript数组API:提升你的编程效率

大家好,今天我们来聊聊JavaScript中数组的常用API。数组是JavaScript中非常重要的一种数据结构,掌握数组的API对于提高编程效率具有重要意义。以下是一些实用的JavaScript数组API,让我们一起来看看吧! 一、创建数组 1、使用Arra…

PHP Paypal支付restful API接口集成插件教程

最近在做一个PHP外贸独立站,想集成PayPal在线支付,于是就想把PayPal做成一个插件。下面就教大家如何一步步来开发PayPal整个流程,有需要的朋友点赞收藏,或下载本插件代码参考。 Paypal接口申请 必须是企业认证的帐号才能申请在…

Visual Studio开发lua脚本环境搭建

在Visual Studio上开发lua脚本环境搭建 1、下载lua的jdk安装,以及环境变量配置 下载LuaForWindows_v5.1.5-52.exe安装, 安装好之后,检查是否路径自动。 下载地址: https://github.com/rjpcomputing/luaforwindows/releases (1…

MySQL 性能优化详解

MySQL 性能优化详解 硬件升级系统配置优化调整buffer_pool数据预热降低日志的磁盘落盘 表结构设计优化SQL语句及索引优化SQL优化实战案例 MySQL性能优化我们可以从以下四个维度考虑:硬件升级、系统配置、表结构设计、SQL语句和索引。 从成本上来说:硬件升…

智已汽车x-signature 登录算法 签到

智已汽车x-signature 登录算法 签到 python代码成品

Android 使用 Canvas 和 Paint 实现圆角图片

学习笔记 效果展示: 全部代码: public class YuanActivity extends AppCompatActivity {private ActivityYuanBinding binding;Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);// 通过 DataBinding 获取布局文件binding …

掌控时间,成就更好的自己

在个人成长的道路上,时间管理是至关重要的一环。有效的时间管理能够让我们更加高效地完成任务,实现自己的目标,不断提升自我。 时间对每个人都是公平的,一天只有 24 小时。然而,为什么有些人能够在有限的时间里做出卓…

flask-socketio相关总结

flask-socketio是一个为flask应用程序添加的实时双向通信功能的扩展库,有了这个库,就可以在flask应用中应用websocket协议,帮助flask实现低延迟、双向的客户端、服务端通信。客户端通过任何SocketIO官方库,都能与服务器建立长连接…

YOLOv8改进,YOLOv8引入CARAFE轻量级通用上采样算子,助力模型涨点

摘要 CARAFE模块的设计目的是在不增加计算复杂度的情况下,提升特征图的质量,特别是在视频超分辨率任务中,提升图像质量和细节。CARAFE结合了上下文感知机制和聚合特征的能力,通过动态的上下文注意力机制来提升细节恢复的效果。 理论介绍 传统的卷积操作通常依赖于局部区域…