RODE学习框架
本文的核心思想是学习将多智能体协作任务分解为一组子任务,每个子任务的动作空间要小得多。每个子任务都与特定的角色相关联,扮演相同角色的代理通过共享他们的学习实验共同学习解决子任务的角色策略。他们进一步定义子任务和角色如下:
基于这个定义,一组给定的角色不仅指定了任务的分解,还指定了子任务的策略。这种基于角色的公式实际上是一种动态分组机制,其中代理按角色分组。好处是它可以学习角色而不是代理的策略,提供代理数量的可扩展性并减少目标策略的搜索空间。
通过学习动作表示来确定角色动作空间
限制每个角色的动作空间可以显着减少策略搜索空间。该方法的关键是根据动作的属性来分解动作空间,从而让角色专注于具有相似效果的动作,例如攻击 SMAC 中相同类型的敌方单位。
为了实现动作空间分解,他们引入了上图(a)所示的动作编码器。该模块首先将单热动作输入映射到 d 维表示空间。该表示用于根据当前观察和其他代理的单热动作来预测下一次观察和全局奖励。该模块可以理解为正向模型,通过最小化以下损失函数进行训练:
在初始化阶段,他们首先定义 K 个具有完整动作空间的角色。然后根据潜在表示对动作进行聚类,并在收集样本和训练后将每个角色的动作空间设置为包含其中一个聚类。
学习角色选择器和角色策略
根据动作的效果学习动作表示以聚类动作会导致动作空间的分解,其中动作的每个子集都可以实现特定的功能。为了充分利用这种分解,RODE 使用双层层次结构来协调角色和原始动作的选择。在顶层,角色选择器每 c 个时间步为每个代理分配一个角色。分配角色后,代理在相应的受限角色操作空间中进行探索以学习角色策略。
在上图(b)中,它们显示了角色选择器的实现细节。他们简单地使用循环神经网络对轨迹进行编码,并通过角色选择器将隐藏状态映射到角色表示,这是一个 MLP。RODE 估计代理 i 选择角色 j 的预期回报为:
然后最小化以下 TD 错误以更新角色选择器:
分配角色后,代理将跟随它进行接下来的 c 个时间步长,在此期间它只能在相应的角色动作空间中采取动作。与角色选择器类似,学习角色策略最直接的方法是使用传统的深度 Q 网络直接估计每个动作的 Q 值。然而,基于动作表示的 Q 值充分利用了动作的效果信息,并且可以更好地泛化动作。
因此,RODE使用上图(c)所示的框架来学习角色策略。具体来说,代理再次使用共享线性层和 GRU,它们一起编码本地动作观察历史。为了使用全局奖励学习个体 Q 值,RODE 再次将局部 Q 值输入 QMIX 风格的混合网络以估计全局动作值。混合网络的参数用 ξρ 表示。这个公式给出了学习角色策略的 TD 损失:
此外,用于训练角色选择器和角色策略的两个混合网络仅在训练期间使用。凭借基于效果的动作表示,我们的框架是轻量级的——在实践中,RODE 使用没有激活函数的单个线性层作为角色策略,并使用两层全连接网络作为角色选择器。将角色选择器和角色策略基于动作表示还可以使 RODE 策略快速转移到具有不同数量代理和动作的新任务。
实验
在本文中,他们设计实验来回答以下问题:
- 所提出的预测模型能否学习反映动作效果的动作表示?
- RODE能提高学习效率吗?如果是这样,哪个组件对性能提升的贡献最大?
- RODE 能否支持快速迁移到不同数量的 action 和 agent 的环境?
- 角色选择器能否学习可解释的高级合作行为?
动作表示
对于学习动作表示,他们在两个地图3s5z vs 3s6z和corridor上显示了学习到的动作表示。
我们可以在潜在动作表示空间中观察到三个清晰的集群,分别对应于上述三种类型的动作
与基线的性能比较
进一步的实验结果和消融研究,请参考原论文查看更多!!!