05MARL经典算法 基于联合动作价值函数

文章目录

  • 前言
  • 一、动态规划值迭代算法
  • 二、TD差分联合动作学习
    • 1.Nash Q-learning
    • 2.Correlated Q-Learning
  • 三、JAL的限制
  • 总结


前言

用于记录MARL当中的经典算法
基础的MARL算法有三种类型:学习联合动作价值函数、学习智能体的显示模型根据过去的动作预测未来的动作、基于策略的学习方法基于梯度上升的方式直接学习策略的参数


一、动态规划值迭代算法

该方法类似于在MDP过程中的值迭代算法求解最优价值,算法如下:
在这里插入图片描述
将值迭代的方法应用到随机博弈过程中,值迭代的算法是基于有模型的强化学习算法,需要已知状态转移函数与奖励函数等
算法会对整个状态空间进行两次扫描:第一次扫描会计算每个智能体对于的状态的矩阵 M i , s M_{i,s} Mi,s,其包含了智能体i对于的联合动作得到的奖励,可以看做智能体i的奖励函数 R i ( a ) = M i , s ( a ) . \mathcal{R}_i(a)=M_{i,s}(a). Ri(a)=Mi,s(a).;第二次扫描利用每个智能体得到的期望回报更新每个状态的价值函数,扫描的过程重复执行,直到每个智能体价值函数收敛到最优价值函数
V i ∗ ( s ) = V a l u e i ( M 1 , s ∗ , . . . , M n , s ∗ ) M i , s ∗ = ∑ s ′ ∈ S T ( s ′ ∣ s , a ) [ R i ( s , a , s ′ ) + γ V i ∗ ( s ′ ) ] \begin{gathered}V_i^*(s)=Value_i(M_{1,s}^*,...,M_{n,s}^*)\\M_{i,s}^*=\sum_{s^{\prime}\in S}\mathcal{T}(s^{\prime}\mid s,a)\begin{bmatrix}\mathcal{R}_i(s,a,s^{\prime})+\gamma V_i^*(s^{\prime})\end{bmatrix}\end{gathered} Vi(s)=Valuei(M1,s,...,Mn,s)Mi,s=sST(ss,a)[Ri(s,a,s)+γVi(s)]
价值函数更新过程遵循下面的公式:
V ( s ) ← max ⁡ a ∈ A ∑ s ′ ∈ S T ( s ′ ∣ s , a ) [ R ( s , a , s ′ ) + γ V ( s ′ ) ] \begin{aligned}V(s)\leftarrow\max_{a\in A}\sum_{s'\in S}\mathcal{T}(s'\mid s,a)\left[\mathcal{R}(s,a,s')+\gamma V(s')\right]\end{aligned} V(s)aAmaxsST(ss,a)[R(s,a,s)+γV(s)]

V a l u e i ( M i , s ) = max ⁡ a i ∈ A i M i , s ( a i ) = max ⁡ a i ∈ A i ∑ s ′ ∈ S T ( s ′ ∣ s , a i ) [ R ( s , a i , s ′ ) + γ V ( s ′ ) ] \begin{aligned} Value_i(M_{i,s})& \begin{aligned}=\max_{a_i\in A_i}M_{i,s}(a_i)\end{aligned} \\ &\begin{aligned}=\max_{a_i\in A_i}\sum_{s'\in S}\mathcal{T}(s'|s,a_i)\left[\mathcal{R}(s,a_i,s')+\gamma V(s')\right]\end{aligned} \end{aligned} Valuei(Mi,s)=aiAimaxMi,s(ai)=aiAimaxsST(ss,ai)[R(s,ai,s)+γV(s)]

二、TD差分联合动作学习

无模型学习方法,将MDP过程中的TD差分引入到多智能体SG过程中,Joint action learning(联合动作学习)是MARL当中的基本算法,通过学习多智能体的联合动作价值模型评估给定状态下的联合动作的期望回报,联合策略的更新方式如下:
Q i π ( s , a ) = ∑ s ′ ∈ S T ( s ′ ∣ s , a ) [ R i ( s , a , s ′ ) + γ ∑ a ′ ∈ A π ( a ′ ∣ s ′ ) Q i π ( s ′ , a ′ ) ] \begin{aligned}Q_i^{\pi}(s,a)&=\sum_{s'\in S}\mathcal{T}(s'\mid s,a)\left[\mathcal{R}_i(s,a,s')+\gamma\sum_{a'\in A}\pi(a'\mid s')Q_i^{\pi}(s',a')\right]\end{aligned} Qiπ(s,a)=sST(ss,a)[Ri(s,a,s)+γaAπ(as)Qiπ(s,a)]
在给定状态下,智能体i要根据联合动作选择对于的Q值—— max ⁡ a i Q i ( s , a 1 , . . . , a n ) \max_{a_i}Q_i(s,a_1,...,a_n) maxaiQi(s,a1,...,an),此类算法称为JAL-GT
随机博弈的TD算法如下:
在这里插入图片描述
其中 Γ s \Gamma_{s} Γs与根据博弈类型有关,其中非重复标准博弈,以2个智能体3个动作为例, Γ s \Gamma_{s} Γs如下所示:
在这里插入图片描述
V a l u e i ( Γ s ′ ) = ∑ a ∈ A Γ s ′ , i ( a ) π s ′ ∗ ( a ) Value_i(\Gamma_{s^{\prime}})=\sum_{a\in A}\Gamma_{s^{\prime},i}(a)\pi_{s^{\prime}}^*(a) Valuei(Γs)=aAΓs,i(a)πs(a) π s ′ ∗ \pi_{s^{\prime}}^* πs代表标准博弈下的均衡联合策略

1.Nash Q-learning

适用范围:一般和博弈的随机博弈过程
使用条件:要求无限次探索所有状态与联合动作的组合以及每个状态s下博弈的过程存在最优点或鞍点
全局最优策略:每个智能体都达到最大的期望回报,没有任何一个智能体能够获得更大的回报
鞍点:任何一个智能体偏离策略 π \pi π时,其他所有的智能体都能获得更高的期望回报
更新方式:采用纳什价值进行更新,即 V a l u e i ( Γ s ′ ) Value_i(\Gamma_{s^{\prime}}) Valuei(Γs) v N a s h ( s ) = [ v π ∗ 1 ( s ) , … , v π ∗ N ( s ) ] v^{Nash}(s)=[v_{\pi*}^1(s),\ldots,v_{\pi*}^N(s)] vNash(s)=[vπ1(s),,vπN(s)]

2.Correlated Q-Learning

适用范围:一般和博弈的随机博弈过程
条件:目前无已知的限制条件
优势(相比Nash Q-learning):更大的解空间,能够带来更高的收益;通过线性规划高效计算标准博弈,二次规划计算纳什均衡
修改:相关均衡中的联合策略不能分解成每个智能体的单独策略,也就不能根据每个智能体的策略采用相应的动作,相反,相关均衡直接从策略中采用联合动作,每个智能体根据联合动作采取对应的动作,为了保证智能体动作之间的相关性,添加中心机制用于采用联合动作以及发送给每个智能体对于的动作

三、JAL的限制

问题:是否在任何的一般和博弈过程中构建一个联合动作函数都能收敛到均衡策略
两种性质:
1. Q j Q_j Qj是状态s决定的,与历史状态以及联合动作无关,并且联合策略是 Q j Q_j Qj决定的,因此也是由此刻的状态决定的,这样的均衡称为稳定的
2.给定一种情况,在一个状态s下,只有一个智能体具有多个动作能选择,而其他智能体只有一个动作能选择,那么在任何均衡的情况下,都会促使这一个智能体选择回报最大的动作
例子:在turn-taking过程中,根据上面的两个性质,JAL算法会学习一个稳定的确定性联合策略(“Stationary Deterministic Equilibrium”),而turn-taking并不存在此策略,其具有特定的稳定性概率策略

总结

记录MARL基础算法中的JAL-GT算法

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

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

相关文章

uniapp瀑布流实现

1. 图片瀑布流&#xff1a; 不依赖任何插件&#xff0c;复制即可见效&#xff1a; <template><view class"page"><view class"left" ref"left"><image class"image" v-for"(item,i) in leftList" :k…

运动编辑学习笔记

目录 跳舞重建&#xff1a; 深度运动重定向 Motion Preprocessing Tool anim_utils MotionBuilder 跳舞重建&#xff1a; https://github.com/Shimingyi/MotioNet 深度运动重定向 https://github.com/DeepMotionEditing/deep-motion-editin 游锋生/deep-motion-editin…

红队打靶练习:INFOSEC PREP: OSCP

目录 信息收集 1、arp 2、nmap WEB 信息收集 wpscan dirsearch ssh登录 提权 信息收集 1、arp ┌──(root㉿ru)-[~/kali] └─# arp-scan -l Interface: eth0, type: EN10MB, MAC: 00:0c:29:69:c7:bf, IPv4: 192.168.110.128 Starting arp-scan 1.10.0 with 256 ho…

Ajax入门与使用

目录 ◆ AJAX 概念和 axios 使用 什么是 AJAX&#xff1f; 怎么发送 AJAX 请求&#xff1f; 如何使用axios axios 函数的基本结构 axios 函数的使用场景 1 没有参数的情况 2 使用params参数传参的情况 3 使用data参数来处理请求体的数据 4 上传图片等二进制的情况…

【Python基础 机器学习】Python环境搭建(适合新手阅读的超详细教程)

&#x1f680;个人主页&#xff1a;为梦而生~ 关注我一起学习吧&#xff01; &#x1f4a1;重要专栏&#xff1a; 机器学习 &#xff1a;相对完整的机器学习基础教学&#xff01; 机器学习python实战&#xff1a;用python带你感受真实的机器学习 深度学习&#xff1a;现代人工智…

【leetcode】20. 有效的括号

有效的括号 题目链接 // 栈结构 typedef char valuetype; typedef struct {valuetype* arr;int top;int capacity; } Stack;void Init(Stack* stack);void Push(Stack* stack, valuetype value); void Pop(Stack* stack);valuetype Top(Stack* stack); int Size(Stack* stack…

Elasticsearch:构建自定义分析器指南

在本博客中&#xff0c;我们将介绍不同的内置字符过滤器、分词器和分词过滤器&#xff0c;以及如何创建适合我们需求的自定义分析器。更多关于分析器的知识&#xff0c;请详细阅读文章&#xff1a; 开始使用 Elasticsearch &#xff08;3&#xff09; Elasticsearch: analyzer…

jenkins部署(docker)

docker部署&#xff0c;避免安装tomcat 1.拉镜像 docker pull jenkins/jenkins2.宿主机创建文件夹 mkdir -p /lzp/jenkins_home chmod 777 /lzp/jenkins_home/3.启动容器 docker run -d -p 49001:8080 -p 49000:50000 --privilegedtrue -v /lzp/jenkins_home:/var/jenkins_…

【HarmonyOS应用开发】ArkUI 开发框架-进阶篇-管理组件状态(九)

管理组件状态 一、概述 在应用中&#xff0c;界面通常都是动态的。下图所示&#xff0c;在子目标列表中&#xff0c;当用户点击目标一&#xff0c;目标一会呈现展开状态&#xff0c;再次点击目标一&#xff0c;目标一呈现收起状态。界面会根据不同的状态展示不一样的效果。 Ar…

CapCut - 剪映国际版11.0.0

【应用名称】&#xff1a;CapCut - 剪映国际版 【适用平台】&#xff1a;#Android 【软件标签】&#xff1a;#CapCut #剪映国际版 【应用版本】&#xff1a;11.0.0 【应用大小】&#xff1a;231MB 【软件说明】&#xff1a;软件升级更新。目前大家广泛使用的最令人惊叹、最专业…

NoSQL数据库简介

NoSQL数据库简介 Brief Introduction to NoSQL Databases By JacksonML 1. 什么是SQL&#xff1f; 在了解NoSQL之前&#xff0c;先简要介绍一下SQL。 SQL是 Structured Query Language&#xff08;结构化查询语言&#xff09;的缩写。 SQL在关系型数据中广泛使用&#xf…

shell - 免交互

一.Here Document 免交互 1. 交互的概念 交互&#xff1a;当计算机播放某多媒体程序的时候&#xff0c;编程人员可以发出指令控制该程序的运行&#xff0c;而不是程序单方面执行下去&#xff0c;程序在接受到编程人员相应的指令后而相应地做出反应。 对于Linux操作系统中&…

Prometheus+grafana配置监控系统

使用docker compose安装 方便拓展, 配置信息都放在在 /docker/prometheus 目录下 1.目录结构如下 . ├── conf │ └── prometheus.yml ├── grafana_data ├── prometheus_data └── prometheus_grafana.yaml2.创建目录文件 mkdir /docker/prometheus &&am…

2024 springboot Mybatis-flex 打包出错

Mybatis-flex官网&#xff1a;快速开始 - MyBatis-Flex 官方网站 从 Mybatis-flex官网获取模板后&#xff0c;加入自己的项目内容想打包确保错&#xff0c;先试试一下方法 这里改成skip的默认是true改成false&#xff0c;再次打包就可以了

Unix环境高级编程-学习-04-匿名管道PIPE

目录 一、环境 二、介绍 三、C标准函数介绍 1、pipe 2、popen 3、pclose 4、注意 四、宏 五、常见的管道用法 1、一对一&#xff08;父进程读子进程写一条管道&#xff09; 2、一对一&#xff08;父进程写子进程读一条管道&#xff09; 3、一对多&#xff08;父进程…

Windows Qt C++ VTK 绘制三维曲线

Qt 自带数据可视化从文档上看&#xff0c;只能实现三维曲面。 QwtPlot3D在Qt6.6.0上没编译通过。 QCustomPlot 只能搞二维。 VTK~搞起。抄官网demo。 后续需求&#xff1a; 1、对数轴 2、Y轴逆序 3、Z轴值给色带&#xff0c;类似等高线图的色带 期待各位大佬多多指导。…

vue前端页面时间显示问题解决方法

解决方法&#xff0c; <template slot-scope"scope"><span>{{ parseTime(scope.row.boxClosingOnlineTime, {y}-{m}-{d} {h}:{i}:{s}) }}</span> </template> 刷新页面&#xff1a; 此外&#xff0c;使用JsonFormat(pattern "yyyy-M…

C++ 哈希 开放定址法

哈希算法 哈希&#xff0c;是一种算法思想吗&#xff0c;它的核心是映射&#xff0c;哈希方法中使用的转换函数称为哈希(散列)函数&#xff0c;构造出来的结构称为哈希表(Hash Table)(或者称散列表) 在STL 中&#xff0c;提供了两个使用哈希底层实现的容器 unordered_set 和 …

【C++干货铺】哈希结构在C++中的应用

目录 unordered系列关联式容器 unordered_map unordered_map的接口说明 1.unordered_map的构造 2. unordered_map的容量 3. unordered_map的迭代器 4. unordered_map的元素访问 5. unordered_map的查询 6. unordered_map的修改操作 7. unordered_map的桶操作 底层结构 …

【unity小技巧】FPS简单的射击换挡瞄准动画控制

文章目录 射击动画控制换弹动画瞄准动画完结 射击动画控制 换弹动画 调用 瞄准动画 问题&#xff1a;瞄准时&#xff0c;但是动画会卡住&#xff0c;不会播放瞄准的待机动画 修改 调用 动画如果太快可以去修改播放速度 播放速度变慢了&#xff0c;可能导致切换待机动画也…