通过反向传播学习多智能体通信
Introduction
在任何部分可见的环境中,智能体之间的通信对于合作至关重要。虽然模型控制每个智能体实际上是通过强化学习得到的,但是通信的信息和格式通常是预定义的。比如在机器足球中,机器人在每个时间步通信它们的位置以及到球的距离。
本文提出的智能体之间学习通信的模型。每个智能体由一个DNN控制,这个网络接入了一个communication channel获得一个连续向量。通过这个channel,智能体收到了其他智能体传递信息的综合。然而,每个智能体在channel中传递的信息不是预先指定的,而是学习出来的。因为communication是连续的,因此模型可以通过反向传播训练得到。这样就可以结合标准的单智能体RL算法或者监督学习。
我们研究的场景如下: J J J个智能体,合作来最大化收益 R R R。我们对智能体之间的合作进行了简化的假设,每个智能体获得的收益都是 R R R,不管它们贡献如何。在这种情况下,每个智能体有各自的策略网络或者将它们视作一个大的策略网络没有区别。考虑后者,我们的模型是一个大的前向神经网络,将每个智能体的输入映射到动作,每个智能体占领单元的一个子集。在层与层之间有一个特别的连通性结构(1)实例化代理之间的广播通信通道。(2)反向传播智能体状态。
Communication Model
网络的输入是将各个智能体观测的信息concate起来:
s
=
s
1
,
.
.
.
,
s
j
s = {s_1,...,s_j}
s=s1,...,sj
输出是各个智能体会做出的动作:
a
=
a
1
,
.
.
.
,
a
j
a = {a_1,...,a_j}
a=a1,...,aj
controller Structure
![](https://i-blog.csdnimg.cn/blog_migrate/585cf923642e8659a1c244eb1ebce754.png)
整体来看,整个模型架构由一个个灰色块 f i f^i fi组成。每一层中的灰色块由智能体的个数决定,并且同一层的灰色块的参数一样。
- i ∈ ( 0 , . . , K ) i\in (0,..,K) i∈(0,..,K): K代表网络中communication steps的数量,上图中的K=2。
-
f
i
f^i
fi的输入分别是hidden state
h
j
i
h_j^i
hji和communication
c
j
i
c_j^i
cji,输出是
h
j
i
+
1
h_j^{i+1}
hji+1。
h j i + 1 = f i ( h j i , c j i ) = σ ( H i h j i + C i c j i ) h_j^{i+1} = f^i(h_j^i, c_j^i)=\sigma(H^ih_j^i + C^ic_j^i) hji+1=fi(hji,cji)=σ(Hihji+Cicji) c j i + 1 = 1 J − 1 ∑ j ′ ≠ j h j ′ i + 1 c_j^{i+1} = \frac{1}{J-1}\sum_{j' \neq j}h_{j'}^{i+1} cji+1=J−11j′̸=j∑hj′i+1 - 进一步简化上面的式子:
h
i
+
1
=
σ
(
T
i
h
i
)
h^{i+1} = \sigma(T^ih^i)
hi+1=σ(Tihi)
C
^
i
=
C
i
/
(
J
−
1
)
\hat C^i = C^i/(J - 1)
C^i=Ci/(J−1)
- 随着智能体数量的改变, T T T是可以动态变化。
- 模型的第一层是将状态进行编码 h j 0 = r ( s j ) h_j^0 = r(s_j) hj0=r(sj),这一层不需要计算communication信息。
- 模型的输出层是一层神经网络 q ( h j K ) q(h_j^K) q(hjK),跟着softmax操作,来产生离散动作的概率分布。
Local Connectivity
上面的框架的另一个方案是,允许智能体与在自己通信范围内的其他智能体通信。用
N
(
j
)
N(j)
N(j)表示位于智能体j通信范围内的智能体集合。那么通信消息式子变为:
c
j
i
+
1
=
1
∣
N
(
j
)
∣
∑
j
′
∈
N
(
j
)
h
j
′
i
+
1
c_j^{i+1} = \frac{1}{|N(j)|}\sum_{j' \in N(j)}h_{j'}^{i+1}
cji+1=∣N(j)∣1j′∈N(j)∑hj′i+1
随着智能体移动,
N
(
j
)
N(j)
N(j)一直发生变化。在这种情况下,我们的模型就变成了一个动态图。这使得我们的模型挺像GGSNN1。
Skip Connections
在其他的任务中,我们可以用
Temporal Recurrence
我们也尝试RNN网络。这个实现是通过将上式中的communication step i i i用时间步 t t t替代。然后对于所有的时间步 t t t,用相同的模块 f t f^t ft。如果 f t f^t ft是单层网络,那么我们获得平坦的RNN,可以互相communicate。
实验
Baselines
Independent controller:训练一个大的shared parameter的网络,但是不包括任何的通信。这个模型的好处是智能体可以自由加入或者离开队伍,但是很难将智能体学会合作。
Fully-connected:整个模型是多层全连接网络,输出是多个softmax heads。这个模型运行智能体之间互相通信,但是这个模型不够灵活,也就是说智能体的数目必须固定。
Discrete communication:另一种通信的方式是discrete symbols,这些symbols的含义在训练的过程中学习到。这样的话模型包含了discrete operations并且不可微了,在这种情况使用强化学习来训练。
Simple Demonstration with a Lever Pulling Task
一共有
m
m
m个杆子,
N
N
N个智能体。在每个回合,
m
m
m个智能体从N个智能体中随机取出,然后他们要选择拉动的杆子。他们的目标是尽可能的拉动不同的杆子,他们的奖励正比于拉动的不同杆子的数量。
Multi-turn Games
- Traffic Junction
控制车辆通过交通枢纽,使得流量最大,但是不会发生碰撞。 - Combat Task
多个智能体对打其他的多个敌方机器人。
reviewer给出的意见
Reviewer 1
优点:不同智能体间学习到通信的语言这一点很有意思。这个工作和之前工作的不同在于将deep nets并入了多智能体强化学习框架。
concern:这个方法需要通信过程中的同步。也就是说为了计算出下一层的hidden activations,这需要所有智能体都收到了其他智能体发来的信号。这个在实际中可能是一个很大的限制。
Reviewer 2
优点:本文探讨了如果训练一系列智能体合作完成任务?从本文结果看来引入连续communication channel和反向传播对于这个结果非常重要。
concern:除了bAbI这个实验,其他实验作者都没有给出除了自己算法的其他baseline效果,这很奇怪。reviewer建议加入一个中心话控制器,它可以输入所有智能体的信息,然后为每个人做出action。这是否会更好?如果这个中心化的控制器更好,那么为什么我们还要设计这么多的智能体?这可能有许多原因,但是似乎它们依赖于新的智能体(随机初始化)—然后加入到当前的队伍中,然后和队伍中的其他人一起训练。这个操作在现有的框架中能否做到?(智能体以及加入了,但是他们可以重新训练吗?)在所有情况下,中心化控制器应该作为一个baseline加入到合作任务中。
Reviewer 4
通过sharing parameter来减少需要学习的参数数量,同时引入其他模块的输出来建造一个communication channel,似乎达到了这个结果。但是这个想法不够创新,因为本身是一个很经典的神经网络架构。实验应该将这个想法和经典的参数共享比较来突出,communication channel的作用。同时,中心化的控制器(获得所有观测信息)应该会获得更好的结果。相反如果中心化的控制器没有获得更好的结果,我反而会差异为什么没有获得更好的结果。因为获得了所有信息以后,这个baseline应该比只能沟通部分信息的communication方法要好。
文中主要陈述了包括一个动态结构的好处,所以应该给出一些应该例子来说明这个的好处。
实验的背景描述不够。非常重要的一点是每个智能体的输入放在了supplementary material中。这位分析结果带来了困难。
没有足够的解释,在不同的任务中,智能体communicate了什么消息。应该给出一个小例子来说明沟通过程中,交换的消息是什么。
思考
如何定义通信的损失函数。
Y. Li, D. Tarlow, M. Brockschmidt, and R. Zemel. Gated graph sequence neural networks. In ICLR, 2015. ↩︎