10MARL深度强化学习 Value Decomposition in Common-Reward Games

文章目录

  • 前言
  • 1、价值分解的研究现状
  • 2、Individual-Global-Max Property
  • 3、Linear and Monotonic Value Decomposition
    • 3.1线性值分解
    • 3.2 单调值分解

前言

中心化价值函数能够缓解一些多智能体强化学习当中的问题,如非平稳性、局部可观测、信用分配与均衡选择等问题,然而存在很难直接学习价值函数等问题,特别是动作价值函数难以学习,原因是联合动作空间随智能体个数呈指数增长的问题,因此本文章学习如何有效的学习价值函数且最大化共同和奖励过程


1、价值分解的研究现状

价值函数如何分解才能更好的学习已经具有很长的研究历史,通过多智能体在交互过程中并非所有智能体互相之间都存在交互过程这一观点,提出了coordination graph,稀疏的协作图能够近似联合动作函数作为交互智能体的价值和,能够更高效的评估价值,例子如下:
在这里插入图片描述
在共同和奖励过程,已经有很多成功的价值分解算法应用到价值函数的学习中,价值分解算法能够将价值函数分解为更简单的函数,在共同和奖励过程能够更高效的学习,中心动作价值函数能够表示为如下(共同奖励过程):在这里插入图片描述

2、Individual-Global-Max Property

最简单的分解Q函数的方法便是每个智能体单独学习效用函数,只与其历史观测序列与动作有关,这些效用函数采用相同的结构如下所示:
在这里插入图片描述
之所以称为效用函数是这些函数并不会去学习如何近似自身的期望回报,而是将所有智能体的效用函数联合优化近似中心动作价值函数并且满足individual-global-max(IGM)性质
为了定义IGM性质,引入中心化动作价值函数与效用函数的贪婪动作,如下所示:在这里插入图片描述
其中 Q ( s , a ; θ ) Q(s,a;\theta) Q(s,a;θ)表示中心动作价值函数、 Q ( h i , a i ; θ i ) Q(h_{i},a_{i};\theta_{i}) Q(hi,ai;θi)表示智能体i的效用函数
IGM性质满足以下关系:
在这里插入图片描述
解释:如果联合动作相对于中心动作价值函数是贪婪的,那么相对于效用函数来说每个智能体i在联合动作中自身的动作也是贪婪的,也就是说如果智能体i相对于自身的效用函数选择贪婪动作,那么相对于分解中心动作价值函数,单个贪婪动作组成的联合动作也是贪婪的
在满足IGM的条件下,每个智能体能够根据自身的效用函数选择贪婪动作,那么所有的智能体能够一起选择贪婪的联合动作,效用函数除了能够简单的分解中心动作价值函数之外,还能够评估每个智能体在共同奖励过程中的贡献,这样来看,价值分解还能够在一定程度上减轻信用分配问题

3、Linear and Monotonic Value Decomposition

在这里插入图片描述

3.1线性值分解

满足IGM性质是假设共同奖励过程满足线性分解,每个智能体单独的奖励等于整体的奖励
r t = r ‾ 1 t + ⋯ + r ‾ n t r^{t}=\overline{r}_{1}^{t}+\cdots+\overline{r}_{n}^{t} rt=r1t++rnt
在改假设的基础之上,中心动作价值函数能够分解为如下:
在这里插入图片描述
基于线性的分解方法提出VDN算法,通过维护包含所有智能体经验的回收池以及采用所有智能体联合优化得到近似中心化价值函数,其损失函数如下:
在这里插入图片描述

3.2 单调值分解

在一些情况下,每个智能体的贡献在非线性的情况下具有更好的表现,线性分解无法起到作用
在满足IGM的前提下,还需要满足中心化动作价值函数相对于每个智能体的效用函数的导数为正,如下图所示:
在这里插入图片描述
那就意味着每个智能体采取动作后效用函数增加,那么采取相对应联合动作后中心价值函数也会增加

QMIX网络采用DQN作为每个智能体的效用函数,同时定义了一个混合网络用于聚合所有智能体的效用网络近似中心化的动作价值函数
在这里插入图片描述
在实际应用中,mix网络对于输入的权重均为正,通常mixing函数的参数通过额外的超参数网络获得,该网络用所有的状态作为输入,输出mixing网络的参数,为了保证mixing网络参数为正,超参网络采用绝对值函数作为激活函数,联合优化损失函数如下:
在这里插入图片描述
中心动作价值函数能够用如下的等式简单表达
在这里插入图片描述
其中的权重系数均大于等于0,代表对应智能体的贡献,若系数为1,则代表线性分解
**一些值得注意的点:**首先所有的智能体的效用网络参数是共享的、智能体通过onehot编码进行区别、智能体效用网络能够建模成RNN网络、每个episode会存储所有的经验,在其结束后进行更新

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

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

相关文章

从零开始学习Netty - 学习笔记 - NIO基础 - 文件编程:FileChannel,Path,Files

3.文件编程 3.1.FileChannel FileChannel只能工作在非阻塞模式下面,不能和selector一起使用 获取 不能直接打开FIleChannel,必须通过FileInputSream,或者FileOutputSetream ,或者RandomAccessFile来获取FileChannel 通过FileIn…

互联网高科技公司领导AI工业化,MatrixGo加速人工智能落地

作者:吴宁川 AI(人工智能)工业化与AI工程化正在引领人工智能的大趋势。AI工程化主要从企业CIO角度,着眼于在企业生产环境中规模化落地AI应用的工程化举措;而AI工业化则从AI供应商的角度,着眼于以规模化方式…

Rust ?运算符 Rust读写txt文件

一、Rust ?运算符 ?运算符:传播错误的一种快捷方式。 如果Result是Ok:Ok中的值就是表达式的结果,然后继续执行程序。 如果Result是Err:Err就是整个函数的返回值,就像使用了return &#xff…

电脑wifi丢失修复

当你打开电脑突然发现wifi功能不见了,可以先查看一下网卡的状态 在控制面板中找到设备管理器,打开就能找到网络适配器, 我这里是修复过的,wifi丢失后这里可能会显示WALN是丢失的,其他项显示黄色感叹号。 如何修复呢…

Go语言中的TLS加密:深入crypto/tls库的实战指南

Go语言中的TLS加密:深入crypto/tls库的实战指南 引言crypto/tls库的核心组件TLS配置:tls.Config证书加载与管理TLS握手过程及其实现 构建安全的服务端创建TLS加密的HTTP服务器配置TLS属性常见的安全设置和最佳实践 开发TLS客户端应用编写使用TLS的客户端…

[游戏开发][虚幻5]新建项目注意事项

鼠标右键点击Client.uproject文件,可以看到三个比较关键的选项, 启动游戏,生成sln解决方案,切换引擎版本 断点调试 C代码重要步骤 如果你想断点调试C代码,则必须使用使用代码编译启动引擎,你需要做几个操作…

Backend - Docker 离线卸载

目录 一、卸载 docker 1. 停止 docker 2. 删除相关文件 3. 重新加载配置文件 4. 移除 docker 二、卸载 docker-compose 三、查看 Docker-compose 和 Docker、docker.service 是否卸载干净 1. 首先确定自己安装的目录 2. 进入这三个目录下查看文件夹 3. 删除docker-se…

Python 正斜杠 (斜杠 /) 和反斜杠 (倒斜杠 \)

Python 正斜杠 [斜杠 /] 和反斜杠 [倒斜杠 \] 1. Windows2. LinuxReferences 1. Windows 倒斜杠有两个,因为每个倒斜杠需要由另一个倒斜杠字符来转义。 Microsoft Windows [版本 6.1.7601] 版权所有 (c) 2009 Microsoft Corporation。保留所有权利。C:\Users\fore…

从零开始学习Netty - 学习笔记 - NIO基础 - 网络编程: Selector

4.网络编程 4.1.非阻塞 VS 阻塞 在网络编程中,**阻塞(Blocking)和非阻塞(Non-blocking)**是两种不同的编程模型,描述了程序在进行网络通信时的行为方式。 阻塞(Blocking)&#xff1…

C#中使用list封装多个同类型对象以及组合拓展实体的应用

文章目录 一、list使用方法二、C#组合拓展实体 一、list使用方法 在C#中&#xff0c;使用List<T>集合是封装多个同类型对象的常用方式。List<T>是泛型集合&#xff0c;T是集合中元素的类型。下面是一个简单的例子&#xff0c;演示如何创建一个List<T>&#…

鸿蒙 gnss 开关使能流程

先WiFi&#xff0c;后 定位&#xff0c;再从蓝牙到NFC&#xff0c;这个就是我大致熟悉开源鸿蒙代码的一个顺序流程&#xff0c;WiFi 的年前差不多基本流程熟悉了&#xff0c;当然还有很多细节和内容没有写到&#xff0c;后续都会慢慢的丰富起来&#xff0c;这一篇将开启GNSS的篇…

js设计模式:计算属性模式

作用: 将对象中的某些值与其他值进行关联,根据其他值来计算该值的结果 vue中的计算属性就是很经典的例子 示例: let nowDate 2023const wjtInfo {brithDate:1995,get age(){return nowDate-this.brithDate}}console.log(wjtInfo.age,wjt年龄)nowDate 1console.log(wjtInf…

mq大量消息堆积有哪些解决方案

当消息队列中出现大量消息堆积时&#xff0c;可能会导致系统性能下降、消息延迟增加以及服务不可用等问题。针对这种情况&#xff0c;可以采取以下几种解决方案&#xff1a; 增加消费者数量&#xff1a;增加消费者数量可以提高消息消费的速度&#xff0c;缩短消息队列中消息的处…

在 Windows 上安装 Redis 过程全记录(使用WSL在Windows中搭建虚拟环境)

在Windows上使用Redis进行开发 Windows 上不正式支持 Redis。但是&#xff0c;您可以按照以下说明在 Windows 上安装 Redis 进行开发&#xff0c;本教程采用WSL方式安装Linux虚拟环境&#xff08;并非唯一方式&#xff0c;也可通过其他方式安装Linux虚拟环境&#xff0c;本教程…

flink分区与算子链

flink分区与算子链 flink 分区策略flink 什么情况下才会把 Operator chain 在一起形成算子链&#xff1f; flink 分区策略 GlobalPartitioner 数据会被分发到下游算子的第一个实例中进行处理RebalancePartitioner 数 据会 被循 环发 送到 下 游的 每一 个实 例中 进 行处 理。…

【算法与数据结构】1020、130、LeetCode飞地的数量 被围绕的区域

文章目录 一、1020、飞地的数量二、130、被围绕的区域三、完整代码 所有的LeetCode题解索引&#xff0c;可以看这篇文章——【算法和数据结构】LeetCode题解。 一、1020、飞地的数量 思路分析&#xff1a;博主认为题目很抽象&#xff0c;非常难理解。想了好久&#xff0c;要理解…

【蝶变跃升】壹起来|就业辅导系列活动——职业生涯规划和模拟面试

为使困难家庭更深层次了解自己就业现状&#xff0c;明确就业方向&#xff0c;同时提升在面试时的各类技巧。2024年2月17日&#xff0c;由平湖市民政局主办、平湖吾悦广场和上海聘也科技有限公司协办、平湖市壹起来公益发展中心承办的“蝶变跃升”就业辅导系列——职业生涯规划和…

2024新版Java高频面试题+Java八股文面试真题

Java面试题_2024新版Java高频面试题Java八股文面试真题 Java高频面试专题视频课程&#xff0c;瓤括了Java生态下的主流技术面试题&#xff0c;课程特色&#xff1a; 1、全面&#xff0c;jvm、并发编程、mysql、rabbitmq、spring、mybatis、redis、分布式、微服务、数据结构等等…

零基础到高级:Android音视频开发技能路径规划

音视频开发趋势 Android音视频开发领域目前正处于一个高速发展的阶段&#xff0c;主要趋势如下&#xff1a; 超高清视频&#xff1a;4K视频亚毫米级显示清晰&#xff0c;更加逼真&#xff0c;为开发更加逼真的虚拟现实应用提供了基础。AI技术&#xff1a;自适应码率控制、视频…

GIT使用和简介

Git 是一个版本控制系统&#xff0c;它可以追踪文件的更改&#xff0c;并可以在不同的分支上进行并行开发。下面是 Git 的基本概念和使用方式的解释&#xff1a; 1. 仓库&#xff08;Repository&#xff09;&#xff1a;仓库是用来存储项目代码的地方。一个仓库可以包含多个文…