文章目录
本文总结《深度强化学习》中的多智能体强化学习相关章节,如有错误,欢迎指出。
多智能体系统包含有多个智能体,多个智能体共享环境,智能体之间相互影响。一个智能体的动作会改变环境状态,从而影响其他智能体。
多智能体之间存在四种常见的关系
多智能体系统下,需要对强化学习的一些术语进行再定义:
在多智能体系统中,单个智能体的状态价值函数和动作价值函数都受到其余智能体的影响。
在多智能体的设定下,单个智能体未必能观测全局状态。设第
i
i
i个智能体观测到的状态为
O
i
O^i
Oi,则可以假设所有智能体观测到的局部状态总和为全局状态,即
S
=
[
O
1
,
O
2
,
.
.
.
,
O
m
]
S=[O^1,O^2,...,O^m]
S=[O1,O2,...,Om]
在合作关系下,多个智能体从环境中获得奖励是相同的。设第
i
i
i个智能体获得的奖励为
R
i
R^i
Ri,则有
R
1
=
R
2
=
.
.
.
=
R
m
R^1=R^2=...=R^m
R1=R2=...=Rm
此外,每个智能体各自的动作价值函数和状态价值函数都依赖于所有智能体的策略函数
π
(
A
1
∣
S
;
θ
1
)
、
π
(
A
2
∣
S
;
θ
2
)
、
.
.
.
、
π
(
A
m
∣
S
;
θ
m
)
\pi(A^1|S;\theta^1)、\pi(A^2|S;\theta^2)、...、\pi(A^m|S;\theta^m)
π(A1∣S;θ1)、π(A2∣S;θ2)、...、π(Am∣S;θm)。

由于多个智能体的目标相同,从环境中获得的奖励相同,因此多个智能体共享一个价值网络 V ( s ; w ) V(s;w) V(s;w),该价值网络输入的状态为 s = [ o 1 , o 2 , . . . , o m ] s=[o^1,o^2,...,o^m] s=[o1,o2,...,om],其中 o i o^i oi表示第 i i i个智能体观测到的状态。价值网络的输出为对状态 s s s的评分。
每个智能体都有自己的策略网络,第 i i i个智能体的策略网络记为 π ( a i ∣ s ; θ i ) \pi(a^i|s;\theta^i) π(ai∣s;θi)。由于多个智能体之间是合作关系,因此策略网络的输入状态为 s = [ o 1 , o 2 , . . . , o m ] s=[o^1,o^2,...,o^m] s=[o1,o2,...,om],其中 o i o^i oi表示第 i i i个智能体观测到的状态。
具体的训练流程为:

训练完毕后的决策流程为:

上述训练流程,策略网络做一次推断,需要同步一次
m
m
m个智能体观测到的状态,这种同步过程非常耗时。在实际场景中,可以使用中心化训练+去中心化决策的trick。具体而言,每个智能体的策略网络仅依据智能体观测到的当前状态决策,即第
i
i
i个策略网络由
π
(
a
i
∣
s
;
θ
i
)
\pi(a^i|s;\theta^i)
π(ai∣s;θi)变为
π
(
a
i
∣
o
i
;
θ
i
)
\pi(a^i|o^i;\theta^i)
π(ai∣oi;θi)。由于价值网络依然依据总体状态
s
s
s进行计算,因此其余智能体观测到的状态信息会通过策略梯度传递至当前智能体中。中心化训练的具体流程为:

模型训练完毕后,使用去中心化决策,第
i
i
i个智能体依据自身观测到状态
o
i
o^i
oi,利用策略网络
π
(
a
i
∣
o
i
;
θ
i
)
\pi(a^i|o^i;\theta^i)
π(ai∣oi;θi)决定执行的动作。
多个智能体在合作关系下具有共同的目标,因此可以共用一个价值网络。而非合作关系下,多个智能体具有的目标各不相同,因此每个智能体都有与之对应的策略网络和价值网络。设第 i i i个智能体观测到的状态为 o i o^i oi,的策略网络为 π ( a i ∣ s ; θ i ) \pi(a^i|s;\theta^i) π(ai∣s;θi)、价值网络为 v ( s ; w i ) v(s;w^i) v(s;wi),其中 s s s为所有智能体观测到的状态总和,即 s = [ o 1 , o 2 , . . . , o n ] s=[o^1,o^2,...,o^n] s=[o1,o2,...,on]。
MAC-A2C的训练流程如下图,注意与合作关系下的多智能强化学习不同,非合作关系下不同智能体从环境中获得的奖励不同。

训练完毕后的决策过程为

上述训练流程,策略网络做一次推断,需要同步一次 m m m个智能体观测到的状态,这种同步过程非常耗时。在实际场景中,可以使用中心化训练+去中心化决策的trick,这个过程可以浏览上一个章节。
在非合作关系下,智能体之间的利益不同,某个智能体取得较大的状态价值函数值,可能导致另外一个智能体取得较小的状态价值函数值,那么该如何判断算法是否收敛呢?在非合作关系下,判断算法是否收敛的标准为纳什均衡。具体而言,在多智能体系统中,当其余所有智能体都不改变策略的情况下,一个智能体 i i i单独改变策略 θ i \theta_i θi,无法让其期望回报 J i ( θ 1 , . . . , θ m ) J_i(\theta_1,...,\theta_m) Ji(θ1,...,θm)变大(策略梯度为0),即智能体无法找到比当前策略更优的策略(无法通过梯度更新参数),这种平衡状态即纳什均衡。
目录前言滤波电路科普主要分类实际情况单位的概念常用评价参数函数型滤波器简单分析滤波电路构成低通滤波器RC低通滤波器RL低通滤波器高通滤波器RC高通滤波器RL高通滤波器部分摘自《LC滤波器设计与制作》,侵权删。前言最近需要学习放大电路和滤波电路,但是由于只在之前做音乐频谱分析仪的时候简单了解过一点点运放,所以也是相当从零开始学习了。滤波电路科普主要分类滤波器:主要是从不同频率的成分中提取出特定频率的信号。有源滤波器:由RC元件与运算放大器组成的滤波器。可滤除某一次或多次谐波,最普通易于采用的无源滤波器结构是将电感与电容串联,可对主要次谐波(3、5、7)构成低阻抗旁路。无源滤波器:无源滤波器,又称
最近在学习CAN,记录一下,也供大家参考交流。推荐几个我觉得很好的CAN学习,本文也是在看了他们的好文之后做的笔记首先是瑞萨的CAN入门,真的通透;秀!靠这篇我竟然2天理解了CAN协议!实战STM32F4CAN!原文链接:https://blog.csdn.net/XiaoXiaoPengBo/article/details/116206252CAN详解(小白教程)原文链接:https://blog.csdn.net/xwwwj/article/details/105372234一篇易懂的CAN通讯协议指南1一篇易懂的CAN通讯协议指南1-知乎(zhihu.com)视频推荐CAN总线个人知识总
深度学习部署:Windows安装pycocotools报错解决方法1.pycocotools库的简介2.pycocotools安装的坑3.解决办法更多Ai资讯:公主号AiCharm本系列是作者在跑一些深度学习实例时,遇到的各种各样的问题及解决办法,希望能够帮助到大家。ERROR:Commanderroredoutwithexitstatus1:'D:\Anaconda3\python.exe'-u-c'importsys,setuptools,tokenize;sys.argv[0]='"'"'C:\\Users\\46653\\AppData\\Local\\Temp\\pip-instal
我完全不是程序员,正在学习使用Ruby和Rails框架进行编程。我目前正在使用Ruby1.8.7和Rails3.0.3,但我想知道我是否应该升级到Ruby1.9,因为我真的没有任何升级的“遗留”成本。缺点是什么?我是否会遇到与普通gem的兼容性问题,或者甚至其他我不太了解甚至无法预料的问题? 最佳答案 你应该升级。不要坚持从1.8.7开始。如果您发现不支持1.9.2的gem,请避免使用它们(因为它们很可能不被维护)。如果您对gem是否兼容1.9.2有任何疑问,您可以在以下位置查看:http://www.railsplugins.or
如何学习ruby的正则表达式?(对于假人) 最佳答案 http://www.rubular.com/在Ruby中使用正则表达式时是一个很棒的工具,因为它可以立即将结果可视化。 关于ruby-我如何学习ruby的正则表达式?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/1881231/
深度学习12.CNN经典网络VGG16一、简介1.VGG来源2.VGG分类3.不同模型的参数数量4.3x3卷积核的好处5.关于学习率调度6.批归一化二、VGG16层分析1.层划分2.参数展开过程图解3.参数传递示例4.VGG16各层参数数量三、代码分析1.VGG16模型定义2.训练3.测试一、简介1.VGG来源VGG(VisualGeometryGroup)是一个视觉几何组在2014年提出的深度卷积神经网络架构。VGG在2014年ImageNet图像分类竞赛亚军,定位竞赛冠军;VGG网络采用连续的小卷积核(3x3)和池化层构建深度神经网络,网络深度可以达到16层或19层,其中VGG16和VGG
文章目录1、自相关函数ACF2、偏自相关函数PACF3、ARIMA(p,d,q)的阶数判断4、代码实现1、引入所需依赖2、数据读取与处理3、一阶差分与绘图4、ACF5、PACF1、自相关函数ACF自相关函数反映了同一序列在不同时序的取值之间的相关性。公式:ACF(k)=ρk=Cov(yt,yt−k)Var(yt)ACF(k)=\rho_{k}=\frac{Cov(y_{t},y_{t-k})}{Var(y_{t})}ACF(k)=ρk=Var(yt)Cov(yt,yt−k)其中分子用于求协方差矩阵,分母用于计算样本方差。求出的ACF值为[-1,1]。但对于一个平稳的AR模型,求出其滞
前面一篇关于智能合约翻译文讲到了,是一种计算机程序,既然是程序,那就可以使用程序语言去编写智能合约了。而若想玩区块链上的项目,大部分区块链项目都是开源的,能看得懂智能合约代码,或找出其中的漏洞,那么,学习Solidity这门高级的智能合约语言是有必要的,当然,这都得在公链``````以太坊上,毕竟国内的联盟链有些是不兼容Solidity。Solidity是一种面向对象的高级语言,用于实现智能合约。智能合约是管理以太坊状态下的账户行为的程序。Solidity是运行在以太坊(Ethereum)虚拟机(EVM)上,其语法受到了c++、python、javascript影响。Solidity是静态类型
写在之前Shader变体、Shader属性定义技巧、自定义材质面板,这三个知识点任何一个单拿出来都是一套知识体系,不能一概而论,本文章目的在于将学习和实际工作中遇见的问题进行总结,类似于网络笔记之用,方便后续回顾查看,如有以偏概全、不祥不尽之处,还望海涵。1、Shader变体先看一段代码......Properties{ [KeywordEnum(on,off)]USL_USE_COL("IsUseColorMixTex?",int)=0 [Toggle(IS_RED_ON)]_IsRed("IsRed?",int)=0}......//中间省略,后续会有完整代码 #pragmamulti_c
2022年底,OpenAI的预训练模型ChatGPT给人工智能领域的爱好者和研究人员留下了深刻的印象和启发,他展现的惊人能力将人工智能的研究和应用热度推向高潮,网上也充斥着和ChatGPT的各种聊天,他可以作诗、写小说、写代码、讨论疫情问题等。下面就是一些他的神回复:人命关天的坑: 写歌,留给词作者的机会不多了。。。 回答人类怎么样面对人工智能: 什么是ChatGPT?借用网上的一段介绍,ChatGPT是由人工智能研究实验室OpenAI在2022年11月30日发布的全新聊天机器人模型,一款人工智能技术驱动的自然语言处理工具。它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动