强化学习论文(3)CommNet

less than 1 minute read

Published:

标签: CommNet; policy-based; on-policy; model-free; communication; continuous communication channel; discrete action space; continuous state space; cooperative task; centralized approach; multi-agent;

论文链接

创新点及贡献

1、通过一个大型的网络架构来学习多智能体之间的通信协议,其中所有智能体模块共享网络参数。

2、通信信息在网络中间层进行传递,并且在每一个时刻智能体可以进行多步通信。

3、网络架构的大小是可以动态改变的,意味着智能体的数量可以随时变化。

研究痛点

1、目前大多数研究通过假设所有智能体和环境之间都是完全可观察的来避免对通信的需要,哪怕有一些使用到通信也是通过预定义通信协议实现的。

算法流程

框架图如下

主要思路

1、该模型主要是由所有的智能体模块组合成一个大型的网络架构来实现的,在每个时刻输入当前时刻所有智能体的观察,输出所有智能体的动作,其中在网络架构内部可进行多步通信,网络架构的层数由通信步数决定。

2、注意所有的智能体模块网络会进行参数共享,在每一层每个智能体模块会输出当前通信步的隐藏状态,而其输入由两部分组成:

  • 自己上一个通信步输出的隐藏状态
  • 通信信息:其他智能体上一个通信步输出的隐藏状态的平均值

3、第一层和最后一层分别是一个编码和解码的过程,其具体定义如下

  • $h_j^0 = r(s_j)$:其中 $r$ 是一个将原始观察编码为隐藏状态的编码器,其设计与具体问题相关,通常采用单层神经网络实现。
  • $a_j \sim q(h_j^K)$:其中 $q$ 是一个将隐藏状态解码为动作分布的解码器,通常采用单层神经网络与 softmax 实现。

辅助技巧

1、Local Connectivity:相比于智能体可以在所有智能体之间进行通信,我们可以限制其只在某个领域内进行通信,由于智能体的数量还能动态变化,所以这种设计与动态图类似。

其中 $N(j)$ 是智能体 $j$ 的领域智能体集合。

2、Skip Connections:将首层的隐藏状态作为每一层的智能体模块的输入。

3、Temporal Recurrence:采用 RNN 网络,其主要方法是使用时间步 $t$ 替换通信步 $i$,即将 $f^i$ 修改为 $f^t$,在一个时刻我们从 $q(h^t_j)$ 中采样当前的动作。

实验

1、采用了四个实验环境

  • Lever Pulling Task:每次从 $N$ 个智能体中随机选取 $m$ 个去拉 $m$ 根杆。

  • Traffic junction task (图左)和 combat task(图中)

  • bAbI Task:小型故事问答数据集,每个智能体观察故事中的一个句子,然后给出答案。

2、论文还通过 PCA 可视化了通信信息(图左)与隐藏状态(图右)

  • 通信信息的可视化中大部分在零附近,意味着没有进行通信,而小部分各自聚成一类传递了有效的信息。
  • 在隐藏状态的可视化中发现虽然其对应的通信信息为零,但是隐藏状态大多不为零,这意味着虽然隐藏状态携带着有效信息但是智能体之间如无必要通常不进行通信,从另一个角度解释可能是如果所有智能体都在同一时间说话,那么没有一个智能体能理解其含义。

其他补充

1、论文的缺点在于无法处理异构的智能体类型。

参考资料及致谢

所有参考资料在《强化学习思考(1)前言》中已列出,再次向强化学习的大佬前辈们表达衷心的感谢!