一文了解【完全合作关系】下的【多智能体强化学习】

处于完全合作关系的多智能体的利益一致,获得的奖励相同,有共同的目标。比如多个工业机器人协同装配汽车,他们的目标是相同的,都希望把汽车装好。

在多智能体系统中,一个智能体未必能观测到全局状态 S。设第 i 号智能体有一个局部观测,记作 Oi,它是 S 的一部分。不妨假设所有的局部观测的总和构成全局状态:
在这里插入图片描述

完全合作关系下的MARL:
在这里插入图片描述

目录

  • 策略学习
  • 多智能体A2C
    • 策略网络和价值网络
    • 训练和决策
    • 实现中的难点
  • 三种架构
    • 完全中心化
    • 完全去中心化
    • 中心化训练 + 去中心化决策

策略学习

下面由policy-based的MARL方法入手。(value-based MARL也有很多工作)
MARL 中的完全合作关系 (Fully-Cooperative) 意思是所有智能体的利益是一致的,它们有相同的奖励R,回报U,动作价值函数Q,状态价值函数V。Q和V依赖于所有agent的策略π
在这里插入图片描述
通常来说,团队成员有分工合作,所以每个成员的策略是不同的,即 θi ≠ θj。

如果做策略学习(即学习策略网络参数 θ1, · · · , θm),那么所有智能体都有一个共同目标函数
在这里插入图片描述

所有智能体的目的是一致的,即改进自己的策略网络参数 θi,使得目标函数 J 增大。那么策略学习可以写作这样的优化问题:
在这里插入图片描述
(注意,只有“完全合作关系”这种设定下,所有智能体才会有共同的目标函数,其原因在于 R1 = · · · = Rm。对于其它设定,“竞争关系”、“混合关系”、“利己主义”,智能体的目标函数是各不相同的。)

在这里插入图片描述
可能有人好奇R,U,Q,V都一样了,为什么训练出来π不一样?主要是每个agent的动作空间有区别,各司其职,所以agent的策略会有区别。

由于无法计算策略梯度∇θiJ,我们需要对其做近似。下面用 价值网络 近似 策略梯度 ,从而推导出一种实际可行的策略梯度方法。

 

多智能体A2C

下面介绍“完全合作关系”设定下的多智能体 A2C 方法 (Multi-Agent Cooperative A2C),缩写 MAC-A2C。简单点入手,本文只考虑离散控制问题

策略网络和价值网络

MAC-A2C 使用两类神经网络:价值网络 v策略网络 π

在这里插入图片描述

在这里插入图片描述

所有智能体共用一个价值网络。
每个智能体有自己的策略网络。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
 

训练和决策

在这里插入图片描述

在这里插入图片描述
 

实现中的难点

最大的问题,在 MARL 的常见设定下,第 i 号智能体只知道 oi,而观测不到全局状态。

在这里插入图片描述

下面介绍中心化 (Centralized) 与去中心化 (Decentralized) 的实现方法。

  • 中心化让智能体共享信息;优点是训练和决策的效果好,缺点是需要通信,造成延时,影响速度。
  • 去中心化需要做近似,避免通信;其优点在于速度快,而缺点则是影响训练和决策的质量。

 

三种架构

下面介绍MAC-A2C的三种实现方法。

在这里插入图片描述

完全中心化

中心化训练 + 中心化决策,这是MAC-A2C最忠实的实现方法,作出的决策最好,但是速度最慢,在很多问题中不适用
训练和决策全部由中央控制器完成。智能体只负责与环境交互,然后把各种数据传给中央。智能体只需要执行中央下达的决策,而不需要自己“思考”,纯纯工具人。

在这里插入图片描述
在这里插入图片描述

 

完全去中心化

想要避免通信代价,就不得不对策略网络和价值网络做近似,变为“去中心化训练 + 去中心化决策”。

在这里插入图片描述

在这里插入图片描述

MAC-A2C 变成了标准的 A2C,每个智能体独立学习自己的参数 θi 与 wi。
去中心化训练的本质就是单智能体强化学习 (SARL),而非多智能体强化学习 (MARL)。在 MARL 中,智能体之间会相互影响,而本节中的“去中心化训练”把智能体视为独立个体,忽视它们之间的关联,直接用 SARL 方法独立训练每个智能体。用上述 SARL 的方法解决 MARL 问题,在实践中效果往往不佳。

 

中心化训练 + 去中心化决策

当前更流行的MARL 架构是“中心化训练 + 去中心化决策”,相对于上面两种方法,有效结合了它们的优点又缓解了它们的缺点,近年来很流行。

训练的时候使用中央控制器,辅助智能体做训练;
训练结束之后,不再需要中央控制器,每个智能体独立根据本地观测 oi 做决策。

训练:
在这里插入图片描述
 
决策:

在这里插入图片描述
智能体只需要用其本地部署的策略网络π做决策,决策过程无需通信。
中心化执行的速度很快,可以做到实时决策。

本文内容为看完王树森和张志华老师的《深度强化学习》一书的学习笔记,十分推荐大家去看原书!

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

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

相关文章

c语言:用一个宏,可以将一个整数的二进制位的奇数位和偶数位交换。

题目 用一个宏,可以将一个整数的二进制位的奇数位和偶数位交换。 如:01,是1,交换完是10,是2. 思路 1.分别取出奇数位上的数字和偶数位上的数字 举个例子:1001 0110 1001 0110 奇…

javaScript设计模式-工厂

它的好处是消除对象间的耦合度,在派生子类时提供了更大的灵活性。但盲目的把普通的构造函数扔在一边,并不值得提倡。如果要采一不可能另外换用一个类,或都不需要在运行期间在一系列可互换的类中进行选择,就不应该使用。这样在后期…

基于android的违章处理APP 前后端服务 -毕业设计

基于android的违章处理APP 该项目是基于android版本的违章处理APP,系统包含前端android服务和后端web服务,内容和技术都是目前比较流行的架构。 技术介绍 前端android端: jdk17 gradle8.0 android studio 采用2023版本 后端web端&#xff…

手动添加测试用例配置输入参数和期望值

1.选中函数,点击右键选择插入测试用例。这里所选择的插入测试用例区别于之前的测试用例的地方在于,这里插入测试用例是手动配置的,之前的是自动生成的。手动配置可以自定义选择输入参数和期望值。 2.添加测试用例后,点击测试用例&…

FTP文件传输与vsftpd配置

一 存储类型 直连式存储DAS 适用于那些数据量不大,对磁盘访问速度要求较高的中小企业 存储区域网络SAN 用来存储非结构化数据,虽然受限于以太网的速度,但是部署灵活,成本低 网络附加存储NAS 适用于大型应用或数据库系统&…

进程间通信之利用命名管道进行通信

文章目录 什么是命名管道命名管道的作用有什么命名管道的特点和用法是什么命名管道与匿名管道有什么区别匿名管道相较于命名管道的局限性 命名管道如何使用代码 什么是命名管道 命名管道(Named Pipe),也被称为FIFO(First In, Fir…

宝藏排序1

题目 冒泡排序 import java.util.Arrays; import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner sc new Scanner(System.in);int n sc.nextInt();sc.nextLine();int[] res new int[n];for(int i0;i<n;i)res[i] sc.nextInt()…

C语言——整数和浮点数在内存中的存储

目录 一、整数在内存中的存储 二、大小端字节序和字节序判断 2.1 什么是大小端&#xff1f; 2.2 为什么有大小端? 2.3 练习 2.3.1 练习1 2.3.2 练习2 三、浮点数在内存中的存储 3.1练习 3.2 浮点数的存储 3.2.1浮点数存的过程 3.2.2浮点数取的过程 3.3 题目解…

provide和inject快速上手

应用案例 代码 点击弹窗1按钮&#xff0c;弹窗2出现 父组件 provide注入数据 // 弹窗1<Event ></Event> // 弹窗2<EventEvaluation v-if"isShowEventEvaluation"></EventEvaluation>const isShowEventEvaluation falseconst isShowEvent…

数学建模-预测人口数据

目录 中国09~18年人口数据 创建时间 绘制时间序列图 使用专家建模器 得到结果 预测结果 残差的白噪声检验 中国09~18年人口数据 创建时间 路径&#xff1a;数据-> 定义日期和时间 绘制时间序列图 使用专家建模器 看看spss最终判断是那个模型最佳的契合 得到结果 预…

【2024最新-python3小白零基础入门】No4.python控制语句学习

文章目录 1 选择结构1.1 if语句 2 循环结构2.1 while循环语句2.2 for循环语句2.3 break、continue、pass在循环中的用途 对于 Python 程序中的执行语句,默认是按照书写顺序依次执行的,这时称这样的语句是顺序结构的。但是,仅有顺序结构还是不够的,因为有时需要根据特定的情况,有…

vite多页面打包学习(一)

一、前期准备 首先初始化两套独立的vue实例和相关生态&#xff08;多页面嘛&#xff09;&#xff0c;如下 我在src文件下创建了pages大文件夹&#xff0c;并初始化了两套页面分别为index和page1&#xff0c;每套页面都有自己单独的组件、路由、状态、入口等等&#xff0c;这里…

SpringMVC实现原理及详解

1、什么是 SpringMVC ? 在介绍什么是 SpringMVC 之前&#xff0c;我们先看看 Spring 的基本架构。如下图&#xff1a; 我们可以看到&#xff0c;在 Spring 的基本架构中&#xff0c;红色圈起来的 Spring Web MVC &#xff0c;也就是本系列的主角 SpringMVC&#xff0c;它是属于…

被忽视的暗面:客户端应用漏洞挖掘之旅

被忽视的暗面&#xff1a;客户端应用漏洞挖掘之旅 前言 在2023年12月15日&#xff0c;我有幸参加了由“字节跳动安全中心”举办的“安全范儿”沙龙活动。作为“中孚信息元亨实验室”的一员&#xff0c;我被邀请分享名为“被忽视的暗面&#xff1a;客户端应用漏洞挖掘之旅”的…

unocss+iconify技术在vue项目中使用20000+的图标

安装依赖 npm i unocss iconify/json配置依赖 vue.config.js文件 uno.config.js文件 main.js文件 使用 <i class"i-fa:user"></i> <i class"i-fa:key"></i>class名是 i- 开头&#xff0c;跟库名:图标名&#xff0c;那都有什么库…

mysql函数group_concat()返回结果不全

目录 一、场景二、原因三、排查1、查看group_concat_max_len配置2、修改group_concat_max_len配置a) 如果不方便重启mysql&#xff0c;可以通过以下命令进行配置修改b) 修改mysql配置文件&#xff0c;永久生效 一、场景 mysql使用group_concat()函数拼接返回字段时&#xff0c…

《游戏-01_2D-开发》

首先利用安装好的Unity Hub创建一个unity 2D&#xff08;URP渲染管线&#xff09;项目 选择个人喜欢的操作格局&#xff08;这里采用2 by 3&#xff09; 在Project项目管理中将双栏改为单栏模式&#xff08;个人喜好&#xff09; 找到首选项&#xff08;Preferences&#xff09…

Docker(二)安装指南:主要介绍 Docker 在 Linux 、Windows 10 和 macOS 上的安装

作者主页&#xff1a; 正函数的个人主页 文章收录专栏&#xff1a; Docker 欢迎大家点赞 &#x1f44d; 收藏 ⭐ 加关注哦&#xff01; 安装 Docker Docker 分为 stable test 和 nightly 三个更新频道。 官方网站上有各种环境下的 安装指南&#xff0c;这里主要介绍 Docker 在…

CentOS 7安装 NVIDIA 独立显卡驱动(禁用nouveau)

1.禁用nouveau 安装nvidia显卡驱动首先需要禁用nouveau&#xff0c;不然会碰到冲突的问题&#xff0c;导致无法安装nvidia显卡驱动。 禁用步骤 1.使用su命令切换到root用户下: su root查看nouveau是否禁用 lsmod | grep nouveau如果像这样输出一堆信息&#xff0c;则表示没…

allegro画PCB如何倒板框圆弧角

对板框进行倒圆角:Manufacture-Drafting-Fillet 对板框进行倒圆角:Manufacture-Drafting-Fillet 上图中的25对应的就是弧度半径&#xff0c;默认单位是mil&#xff0c;也可以设置成mm 最后点击相邻的边框线就可以倒成圆弧角了。 效果如下图&#xff1a;