背景及关键idea
abstract
多代理强化学习 (MARL) 最近受到广泛关注,因为它适用于广泛的实际应用。然而,实现代理之间的有效通信一直是 MARL 中的首要问题。在这项工作中,我们提出了基于方差的控制(VBC),这是一种简单而有效的技术,可以提高 MARL 中的通信效率。通过在训练阶段限制代理之间交换的消息的方差,可以有效地消除消息中的噪声成分,同时可以保留有用的部分并供代理使用以获得更好的性能。我们使用多个 MARL 基准进行的评估表明,我们的方法实现了比最先进的 MARL 算法低 2-10 倍的通信开销,同时允许代理实现更好的整体性能。
关键idea
只让有用的、必要的消息在智能体之间传递。本地智能体只有在最优动作不确定时才会发起请求,接收到请求的智能体只有在自身状态信息量比较大时才会回复请求者。
这样做的原因有两个:
- 本地智能体等到收到所有周围的agents回馈的信息后再做决定是一种浪费
- 有很多无效的feedback,因此agent应该抓到重点。
主要贡献
通过在训练阶段限制交换消息的方差,VBC 提高了通信效率,同时实现了代理之间更好的合作。
关键方法
整体网络架构
整体结构是和QMIX、VDN相同的,结构上最大的区别就是加了一个消息编码器 Message Encoder。
VBC的主要思想是通过限制传输消息的方差提高通信的效率。在执行期间,每个代理仅在其本地决策不明确时才与其他代理通信。模糊程度由前两个最大动作值之间的差异来衡量。在收到来自其他代理的通信请求时,代理仅在其反馈信息丰富时才回复,即反馈的方差很大。
Agent Network 工作流程
代理网络由以下三个网络组成:Local Action Generator本地动作生成器、Message Encoder消息编码器和Combiner组合器
本地动作生成器由门控循环单元 (GRU) 和全连接层 (FC) 组成。对于智能体
i
i
i,GRU 将局部观察
o
i
t
o_i^t
oit 和隐藏状态
h
i
t
−
1
h_i^{t-1}
hit−1 作为输入,并生成中间结果
c
i
t
c_i^t
cit。然后
c
i
t
c_i^t
cit 被发送到 FC 层,它为
a
i
t
∈
A
a_i^t\in A
ait∈A 处的每个动作输出局部动作值
Q
i
(
o
i
t
,
h
i
t
−
1
,
a
i
t
)
Q_i(o_i^t,h_i^{t-1},a_i^t)
Qi(oit,hit−1,ait),其中
A
A
A 是可能动作的集合。各个智能体共享本地动作生成器的参数
θ
l
o
c
a
l
i
\theta_{local}^i
θlocali(防止lazy agent问题)。
消息编码器
f
e
n
c
i
,
j
(
⋅
)
f_{enc}^{i,j}(\cdot)
fenci,j(⋅)是一个多层感知器 (MLP),它包含两个 FC 层和一个 Leaky ReLU 层。
代理网络涉及多个独立的消息编码器,每个编码器接受来自另一个代理
j
(
j
≠
i
)
j(j \neq i)
j(j=i) 的
c
j
t
c_j^t
cjt,并输出
f
e
n
c
i
,
j
(
c
j
t
)
f_{enc}^{i,j}(c_j^t)
fenci,j(cjt)。各个消息编码器模块共享参数
θ
e
n
c
i
,
j
\theta_{enc}^{i,j}
θenci,j。
Combiner组合器然后将本地动作生成器和消息编码器的输出发送到组合器,组合器通过考虑全局观察
o
t
\mathbf{o^t}
ot 和全局历史
h
t
−
1
\mathbf{h^{t-1}}
ht−1 生成智能体
i
i
i 的全局动作值函数
Q
i
(
o
i
t
,
h
i
t
−
1
,
a
i
t
)
Q_i(\mathbf{o_i^t},\mathbf{h_i^{t-1}},a_i^t)
Qi(oit,hit−1,ait)。组合器没有额外的参数,
Q
i
(
o
i
t
,
h
i
t
−
1
,
a
i
t
)
Q_i(o_i^t,h_i^{t-1},a_i^t)
Qi(oit,hit−1,ait)和
f
e
n
c
i
,
j
(
c
j
t
)
f_{enc}^{i,j}(c_j^t)
fenci,j(cjt)有相同的维度,相加起来,组合器使用贪心策略选择动作。
通信机制示例
(a)在执行期间,每个代理仅在其本地决策不明确时才与其他代理通信。在图a中,agent1有三个可执行的动作,其中概率最大的两个动作之间差值大于
δ
1
\delta_1
δ1 因此不需要通信。我的理解是因为智能体比较确定第3个动作很好所以无需通信。
(b)如果概率最大的两个动作差值很小,低于
δ
1
\delta_1
δ1,那么发起请求,但是其他智能体是否回应还要计算消息编码器的方差,如果方差比较大,大于
δ
2
\delta_2
δ2那么就把自己的
c
2
t
c_2^t
c2t发给请求者,否则不回应。理由是方差大的可能会引起请求者在决策时发生变动,方差大意味着信息量更大。
算法伪代码
论文资源链接
论文链接
Efficient Communication in Multi-Agent Reinforcement Learning via Variance Based Control