MAAC算法总结

论文原文:Actor-Attention-Critic for Multi-Agent Reinforcement Learning

参考文章(这篇文章里写的非常详细!):MAAC注意力的演员评论家: Multi-Agent强化学习 - 知乎 (zhihu.com)

首先MAAC这个名字指代的是Multi-Actor-Attention-Critic,有一个Attention在里面,指的是神经网络中的注意力机制。注意力机制就是指,对于一个agent来说,它要关注别的agent的行动,但是对于其他agent关注的程度不同。例如在足球比赛中,一个队的后卫要关注的是对方队伍的前锋,而不是对方队伍的守门员。

论文先从最早的单智能体Policy-Gradient方法说起:

policy-gradient方法的actor网络的优化目标是这个:

policy-gradient的优化目标

但是公式后面这项\sum_{t’=t}^{inf} \gamma ^{t’-t} r_{t’} (s_{t’} ,a_{t’} )在每次episode中变化很大,于是actor-critic方法把这一项用一个函数去拟合(也就是critic网络):

critic网络

所以critic网络的更新的loss就是估计的Q值和“实际”的Q值之间的差距,所谓“实际”其实是用另一个target-critic网络(网络结构相同,其参数定期更新)去计算出来的:

critic网络的更新

为了鼓励探索,并防止陷入局部最优动作,又有了Soft Actor Critic,该方法在损失函数中加入熵,actor的更新公式为:

新的actor更新公式

其中b(s)是一个只与状态s有关的baseline,与此同时critic网络的y也变成了:

公式(2)中新的y值

MAAC算法

MAAC算法也是中心化训练critic,分布式训练actor

MAAC的网络结构

为了计算每一个agent的QQ_{i}^\psi  (o,a),critic网络接受输入为所有agent的观测o=(o_{1} ,...o_{N} )以及他们的动作a=(a_{1} ,...a_{N} ),我们令除智能体i之外的所有智能体为“\i”,并以j为序号,于是Q_{i}^\psi  (o,a)可以表示为这样:

公式(5)

这里面f_{i} 是一个"two-layer multi-layer perceptron(MLP)",g_{i} 是一个" one-layer MLP embedding function",x_{i} 是所有其他agent的value的加权之和(这里的加权应该就是注意力机制):

xi is a weighted sum of each agent’s value

其中,V是一个固定的矩阵,h(\cdot )是leaky Relu,注意力权重\alpha _{j} 利用双线性映射(即query-key系统)将embedding e_{j} e_{i} 进行比较,并将这两个嵌入之间的相似度值传入一个softmax,其中W_{q} e_{i} 转化为query,W_{k} e_{j} 转化为key,然后通过这两个矩阵的维度对匹配进行缩放,以防止消失的梯度

公式(6)

在有了上文的基础之后,critic网络的loss变为了:

公式(7)

actor网络的更新公式变成了:

公式(8)

Multi-Agent Advantage Function

通过对比一个特定动作和平均动作带来的value上的差别来判断这个特定动作是否有益(解决cridit assignment问题):


公式(9)

所以作者觉得不如只输入o,然后输出每个a对应的Q,也就是下面这样:

公式(10)

附录中的算法伪码:

训练过程
更新方法
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容