论文原文: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网络的优化目标是这个:
但是公式后面这项在每次episode中变化很大,于是actor-critic方法把这一项用一个函数去拟合(也就是critic网络):
所以critic网络的更新的loss就是估计的值和“实际”的
值之间的差距,所谓“实际”其实是用另一个target-critic网络(网络结构相同,其参数定期更新)去计算出来的:
为了鼓励探索,并防止陷入局部最优动作,又有了Soft Actor Critic,该方法在损失函数中加入熵,actor的更新公式为:
其中是一个只与状态
有关的baseline,与此同时critic网络的
也变成了:
MAAC算法
MAAC算法也是中心化训练critic,分布式训练actor
为了计算每一个agent的值
,critic网络接受输入为所有agent的观测
以及他们的动作
,我们令除智能体
之外的所有智能体为“\i”,并以
为序号,于是
可以表示为这样:
这里面是一个"two-layer multi-layer perceptron(MLP)",
是一个" one-layer MLP embedding function",
是所有其他agent的value的加权之和(这里的加权应该就是注意力机制):
其中,是一个固定的矩阵,
是leaky Relu,注意力权重
利用双线性映射(即query-key系统)将embedding
与
进行比较,并将这两个嵌入之间的相似度值传入一个softmax,其中
将
转化为query,
将
转化为key,然后通过这两个矩阵的维度对匹配进行缩放,以防止消失的梯度
在有了上文的基础之后,critic网络的loss变为了:
actor网络的更新公式变成了:
Multi-Agent Advantage Function
通过对比一个特定动作和平均动作带来的value上的差别来判断这个特定动作是否有益(解决cridit assignment问题):
所以作者觉得不如只输入,然后输出每个
对应的
,也就是下面这样:
附录中的算法伪码: