在多智能体强化学习算法中,两个主要的技术指标为合理性与收敛性。
合理性(rationality):在对手使用一个恒定策略的情况下,当前智能体能够学习并收敛到一个相对于对手策略的最优策略。
收敛性(convergence):在其他智能体也使用学习算法时,当前智能体能够学习并收敛到一个稳定的策略。通常情况下,收敛性针对系统中的所有的智能体使用相同的学习算法。
Q:为什么不能直接将单智能体强化学习算法直接移植到多智能体环境中?
A: 在多智能体环境中,每个 agent 的策略在训练的过程中都是不断变化的,这导致对每个 agent 来说,环境都是不稳定的,而在这种不稳定的环境中学习到的策略是毫无意义的。所以对于 Q-learning 这类方法,经验回放的方法(experience replay)是完全失效的。而对于 policy gradient 方法来说,随着 agent 数量增加,环境复杂度也增加,这就导致通过采样来估计梯度的优化方式,方差急剧增加。
Minimax-Q 主要应用于 二人零和随机博弈 中。
Minimax 算法
求解二人零和博弈的公式如下:
max π i min a − i ∈ A − i ∑ a i ∈ A i Q i ∗ ( a i , a − 1 ) π i ( a i ) \max _{\pi_{i}} \min _{a_{-i} \in A_{-i}} \sum_{a_{i} \in A_{i}} Q_{i}^{*}\left(a_{i}, a_{-1}\right) \pi_{i}\left(a_{i}\right) πimaxa−i∈A−iminai∈Ai∑Qi∗(ai,a−1)πi(ai)
即,每个智能体最大化在与对手博弈中最差情况下的期望奖励值。可构建线性规划来求解每个特定状态的阶段博弈的纳什均衡策略。
所以这里 Minimax-Q 的 Minimax 指的是 Minimax 算法,而 Q 指的是借用 Q-learning 中的 TD 来迭代学习状态值函数或动作-状态值函数。
Minimax-Q 的优化目标:
V
i
∗
(
s
)
=
max
π
i
(
s
,
⋅
)
min
a
−
i
∈
A
−
i
∑
a
i
∈
A
i
Q
i
∗
(
s
,
a
i
,
a
−
i
)
π
i
(
s
,
a
i
)
,
i
=
1
,
2
V_{i}^{*}(s)=\max _{\pi_{i}(s, \cdot)} \min _{a_{-i} \in A_{-i}} \sum_{a_{i} \in A_{i}} Q_{i}^{*}\left(s, a_{i}, a_{-i}\right) \pi_{i}\left(s, a_{i}\right), \ \ \ \ \ i=1,2
Vi∗(s)=πi(s,⋅)maxa−i∈A−iminai∈Ai∑Qi∗(s,ai,a−i)πi(s,ai), i=1,2
缺点:
The Surprising Effectiveness of PPO in Cooperative, Multi-Agent Games
https://arxiv.org/pdf/2103.01955.pdf
MAPPO 算法的基本思想是 中心式训练,分散式执行(Centealized Training and Decentralized Execution, CTDE)。
先回顾一下 PPO 算法。PPO 是一个经典的 on-policy 算法,从 TRPO 改进而来。从实现上来讲,它采用的是经典的 actor-critic 架构,actor 负责接收局部观测,并输出动作,critic 负责评估在当前状态下做出该动作的好坏。MAPPO 同样也采用 actor-critic 架构,不同之处在于这里的 critic 学的是一个 中心价值函数(Centralized Value Function),即此时 critic 能够观测到全局信息,包括其他 agent 的信息和环境的信息。

Counterfactual Multi-Agent Policy Gradients
https://arxiv.org/pdf/1705.08926v1.pdf
COMA 算法的基本思想是 中心式训练,分散式执行(Centealized Training and Decentralized Execution, CTDE)。
作者提出集中训练的方法大致可以分为 在智能体之间传递梯度 以及 参数共享,这两种方法均没有在训练过程中利用额外的信息,相反,COMA在训练过程中会使用一个集中式的 critic 网络,但依然可以实现分布式执行。同时本文提出大多多智能体的工作都假设智能体之间完全协作,共用同一奖励,导致单个智能体难以推断自己对于团队成功的贡献,这就是所谓的多智能体 信用分配(credit assignment) 问题,为此,本文通过利用一个 反事实基准(counter-factual baseline) 来区分不同智能体对系统奖励的贡献。

COMA 的三个主要创新点:
Value-Decomposition Networks For Cooperative Multi-Agent Learning
https://arxiv.org/pdf/1706.05296.pdf
智能体共享团队奖励会带来“credit assignment (信用分配)” 问题,即利用该团队奖励拟合出的值函数不能评价每个智能体的策略对整体的贡献。在这篇文章中,同样存在这样的问题。同时,由于每个智能体都是局部观测,那么对其中一个智能体来说,其获得的团队奖励很有可能是其队友的行为导致的。也就是说该奖励值对该智能体来说,是“虚假奖励 (spurious reward signals)”。因此,每个智能体独立使用强化学习算法学习 (即 Independent RL) 往往效果很差。这种虚假奖励还会伴随一种现象,作者称作 “lazy agent (惰性智能体)”。当团队中的部分智能体学习到了比较好的策略并且能够完成任务时,其它智能体不需要做什么也能获得不错的团队奖励,这些智能体就被称作“惰性智能体”。
为了能够解决上述问题,作者提出了 “值函数分解(Value-Decomposition)” 的研究思路,将团队整体的值函数分解成 N 个子值函数,分别作为各智能体执行动作的依据。

QMIX: Monotonic Value Function Factorisation for Deep Multi-Agent Reinforcement Learning
https://arxiv.org/pdf/1803.11485.pdf
和 VDN 类似,QMIX 也是一种基于价值的方法,可以以集中的端到端方式训练分散策略。QMIX 采用了一个网络,将联合动作值估计为每个智能体值的复杂非线性组合(VDN是线性加和),且仅基于局部观测。并且在结构上施加约束,使联合动作值函数与每个智能体动作值函数之间是单调的,保证集中策略和分散策略之间的一致性。

Multi-Agent Actor-Critic for Mixed Cooperative-Competitive Environments
https://arxiv.org/pdf/1706.02275.pdf
MADDPG 算法的基本思想是 中心式训练,分散式执行(Centealized Training and Decentralized Execution, CTDE)。
在 MADDPG 中,一个重要的前提是:当我们知道所有 agent 的动作时,无论策略如何变化,我们的环境都是稳定的。

MADDPG 算法具有以下三点特征:
MADDPG 本质上还是一个 DPG 算法,针对每个智能体训练一个需要全局信息的 Critic 以及一个需要局部信息的 Actor,并且允许每个智能体有自己的奖励函数(reward function),因此可以用于合作任务或对抗任务。并且由于脱胎于DPG算法,因此动作空间可以是连续的。
Nash Q-Learning 是将 Minimax-Q 从 二人零和博弈 扩展到 多人一般和博弈 的算法。
Nash Q-Learning 在 合作性均衡 或 对抗性均衡 的环境中能够收敛到纳什均衡点,其收敛性条件是,在每一个状态的阶段博弈中,都能够找到一个全局最优点或者鞍点,只有满足这个条件,Nash Q-Learning 算法才能够收敛。
Multi-Agent Cooperation and Competition with Deep Reinforcement Learning
https://arxiv.org/pdf/1511.08779.pdf
IQL(Independent Q-learning)的思想简单粗暴,不用全局价值,仅使用单个 agent 的价值学习。
IQL 将其余智能体直接看作环境的一部分,也就是对于每个智能体都是在解决一个单智能体任务,很显然,由于环境中存在智能体,因此环境是一个非稳态的,这样就无法保证收敛性了,并且智能体会很容易陷入无止境的探索中,但是在工程实践上,效果还是比较可以的。
https://zhuanlan.zhihu.com/p/53811876
https://blog.csdn.net/qq_37395293/article/details/115402486
https://blog.csdn.net/qq_39388410/article/details/102767534?utm_medium=distribute.pc_relevant.none-task-blog-2defaultbaidujs_title~default-1.pc_relevant_paycolumn_v3&spm=1001.2101.3001.4242.2&utm_relevant_index=4
https://zhuanlan.zhihu.com/p/53563792
目录一.加解密算法数字签名对称加密DES(DataEncryptionStandard)3DES(TripleDES)AES(AdvancedEncryptionStandard)RSA加密法DSA(DigitalSignatureAlgorithm)ECC(EllipticCurvesCryptography)非对称加密签名与加密过程非对称加密的应用对称加密与非对称加密的结合二.数字证书图解一.加解密算法加密简单而言就是通过一种算法将明文信息转换成密文信息,信息的的接收方能够通过密钥对密文信息进行解密获得明文信息的过程。根据加解密的密钥是否相同,算法可以分为对称加密、非对称加密、对称加密和非
目录前言滤波电路科普主要分类实际情况单位的概念常用评价参数函数型滤波器简单分析滤波电路构成低通滤波器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模型,求出其滞
1.问题描述使用Python的turtle(海龟绘图)模块提供的函数绘制直线。2.问题分析一幅复杂的图形通常都可以由点、直线、三角形、矩形、平行四边形、圆、椭圆和圆弧等基本图形组成。其中的三角形、矩形、平行四边形又可以由直线组成,而直线又是由两个点确定的。我们使用Python的turtle模块所提供的函数来绘制直线。在使用之前我们先介绍一下turtle模块的相关知识点。turtle模块提供面向对象和面向过程两种形式的海龟绘图基本组件。面向对象的接口类如下:1)TurtleScreen类:定义图形窗口作为绘图海龟的运动场。它的构造器需要一个tkinter.Canvas或ScrolledCanva
前面一篇关于智能合约翻译文讲到了,是一种计算机程序,既然是程序,那就可以使用程序语言去编写智能合约了。而若想玩区块链上的项目,大部分区块链项目都是开源的,能看得懂智能合约代码,或找出其中的漏洞,那么,学习Solidity这门高级的智能合约语言是有必要的,当然,这都得在公链``````以太坊上,毕竟国内的联盟链有些是不兼容Solidity。Solidity是一种面向对象的高级语言,用于实现智能合约。智能合约是管理以太坊状态下的账户行为的程序。Solidity是运行在以太坊(Ethereum)虚拟机(EVM)上,其语法受到了c++、python、javascript影响。Solidity是静态类型