《Multi-Agent Actor-Critic for Mixed Cooperative-Competitive Environments》论文解读

一.摘要

  文章探索了多智能体(multi-agent)领域的强化学习方法。
  由于多智能体的环境状态由多个agent的行为共同决定,本身具有不稳定性(non-stationarity),Q-learning算法很难训练,policy gradient算法的方差会随着智能体数目的增加变得更大。
  作者提出了一种actor-critic方法的变体MADDPG,对每个agent的强化学习都考虑其他agent的动作策略,进行中心化训练和非中心化执行,取得了显著效果。此外在此基础上,还提出了一种策略集成的训练方法,可以取得更稳健的效果(Additionally, we introduce a training regimen utilizing an ensemble of policies for each agent that leads to more robust multi-agent policies.)。

二.效果展示

  • 追捕环境
      四个红色的agent追捕两个绿色的agent获得回报。绿色的agent躲避追捕,到达蓝色点(表示水源)处获得回报。黑色点表示障碍物。


      在上述环境中,MADDPG分别训练了图中四个红色的agent和两个绿色的agent。可以看到,红色agent已经学会了组队追捕绿色agent,同时绿色agent也学会了分散躲避追捕并跑向蓝色点。
  • MADDPG与DDPG效果比较
      该环境也是追捕环境,其中浅绿色大圆表示森林,其他含义同上。其中一个红色agent貌似负责总体指挥(含义不明)。



      其中红色agent分别用MADDPG和DDPG训练得到,其中MADDPG训练得到的agent捕获了更多的绿色agent,也更会合作。

三.方法细节

  • 问题分析
      传统强化学习方法很难用在multi-agent环境上,一个主要的原因是每个agent的策略在训练的过程中都是不断变化的,这导致对每个agent个体来说,环境都是不稳定的,即有P(s′|s,a,π1,...,πN)≠P(s′|s,a,π′1,...,π′N)P(s′|s,a,π1,...,πN)≠P(s′|s,a,π1′,...,πN′)对任意的πi≠π′iπi≠πi′。某种程度上来说,一个agent根据这种不稳定的环境状态来优化策略是毫无意义的,在当前状态优化的策略在下一个变化的环境状态中可能又无效了。这就导致不能直接使用经验回放(experience replay)的方法进行训练,这也是Q-learning失效的原因。对于policy gradient方法来说,随着agent数量增加,环境复杂度也增加,这就导致通过采样来估计梯度的优化方式,方差急剧增加。作者还证明了在一个包含NN个agent的二值动作空间上,假设P(ai=1)=θi, where  R(a1,...,aN)=1a1=...=aNP(ai=1)=θi, where  R(a1,...,aN)=1a1=...=aN,取θi=0.5θi=0.5,那么梯度估计方向的正确性正比于0.5N0.5N,即P(〈∇^J,∇J〉>0)∝(0.5)NP(〈∇^J,∇J〉>0)∝(0.5)N。其中∇^J∇^J是估计梯度,∇J∇J是真实梯度。(PS:我仔细看了这个证明,表述有一点瑕疵,但结论是对的,我写在最后帮助大家理解。)
      这些问题归根到底,是因为agent之间没有交互,不知道队友或者对手会采取什么策略,导致只根据自己的情况来选择动作,而忽略了整体。作者提出的解决方法也很简单:采用中心化的训练和非中心化的执行。即在训练的时候,引入可以观察全局的critic来指导actor训练,而测试的时候只使用有局部观测的actor采取行动。
      此外作者还采取了两种改进方式,个人感觉不是重点。1. 不假设训练的时候知道其他agent的策略,而是通过预测的方式获得。2. 采用策略集成的方法提升稳定性。
  • 具体方法
      该方法和DDPG方法其实很类似,这里先画一个简图来说明DDPG结构的输入输出:

      当策略训练好后,只需要actor与环境交互,即只需要绿色的循环,其中actor的输入为环境状态SS,输出为具体动作aa。而在训练过程中,需要critic获得当前的环境状态和actor采取的动作,组成状态动作对(S,a)(S,a)作为输入,输出状态动作对的价值vv来评估当前动作的好坏,并帮助actor改进策略。这里首先假设对DDPG有了解,不细说更新方法。具体推荐博客:
        Deep Reinforcement Learning - 1. DDPG原理和算法
        深度强化学习——连续动作控制DDPG、NAF
      说清楚了DDPG的输入输出,MADDPG就很清楚了。以两个agent为例,同样画出输入输出的简图如下:

      当模型训练好后,只需要两个actor与环境交互,即只需要绿色的循环。这里区别于单个agent的情况,每个agent的输入状态是不一样的。环境输出下一个全信息状态SallSall后,actor1和actor2只能获取自己能够观测到的部分状态信息S1,S2S1,S2。而在训练过程中,critic1和critic2可以获得全信息状态,同时还能获得两个agent采取的策略动作a1,a2a1,a2。也就是说,actor虽然不能看到全部信息,也不知道其他actor的策略,但是每个actor有一个上帝视角的导师,这个导师可以观测到所有信息,并指导对应的actor优化策略。

      整个过程为中心化的训练和去中心化的执行。这种改进,理论上将之前环境不稳定的问题得以缓解。即P(s′|s,a,π1,...,πN)≠P(s′|s,a,π′1,...,π′N)P(s′|s,a,π1,...,πN)≠P(s′|s,a,π1′,...,πN′)对任意的πi≠π′iπi≠πi′。转变为P(s′|s,a1,...,aN,π1,...,πN)=P(s′|s,a1,...,aN)=P(s′|s,a1,...,aN,π′1,...,π′N)  for any πi≠π′iP(s′|s,a1,...,aN,π1,...,πN)=P(s′|s,a1,...,aN)=P(s′|s,a1,...,aN,π1′,...,πN′)  for any πi≠πi′。
  • 伪代码
      我们放上MADDPG和DDPG的伪代码进行比较。



      可以很明显的看到,从actor网络的初始化和噪声扰动方法,到critic网络的更新方法,以及actor网络的梯度提升方法,最后target网络的更新,几乎一模一样。唯一的区别就在于QQ函数的输入从单个的动作aa变成了所有agent的动作a1,a2,...,aNa1,a2,...,aN。
  • 网络结构
      作者使用了最简单的两层全连接和relu激活函数,每层64个神经元。对于离散动作的场景使用了Gumbel-Softmax进行估计。优化器Adam,学习率0.01,τ=0.01,γ=0.95τ=0.01,γ=0.95,replay buffer 106106,batch size 1024。
      到此,方法介绍完毕。

四.实验结果

  • 其他环境效果展示
    • Physical deception
      两个紫色agent合作到达一个地方(只要一个agent到达即可),同时掩饰他们的真正目的地以迷惑对手。
    • Cooperative communication
      灰色agent告诉agent需要到达的目标,另一个agent执行。
    • Cooperative navigation
      三个agent分别到达不同目标获得最大回报。
  • MADDPG、DDPG效果比较
      在多个环境中分别用MADDPG的agent对抗DDPG的agent,得分如下图。
  • 策略预测效果
      作者尝试了通过训练的方式去预测其他agent的动作,再用来计算Q值,而不是直接给critic真正的动作值。发现可以达到同样的合作效果,但是另一方面动作预测的效果其实很不理想。这就有点让人费解了,到底是什么原因使得agent之间学会合作的?
  • 其他
    其他实验结果具体参考原论文。

五.总结

  这篇文章效果显著,思想也顺理成章,文章还证明了policy gradient方法失效的原因。
  但我个人从另一方面YY,这个方法思想浅显且效果显著,其他学者应该也想到了类似方法,最终却没有做出效果,可见这其中的trick应该不少。另外上述的策略预测效果的实验结果图,也间接说明了其他agent的策略信息对训练有多少实质性的帮助并不清楚。

附录

  • Proposition 1
    先把证明原文打出,再解释其中一些问题




      前面部分只是一些小瑕疵,最费解的是最后一步,这里依次列一下。
    • (10)中第二个等式少了一个括号,应该为R(a1,...,aN)∂∂θi∑i(ailogθi+(1−ai)log(1−θi))R(a1,...,aN)∂∂θi∑i(ailog⁡θi+(1−ai)log⁡(1−θi))
    • For θi=0.5θi=0.5 we have:∂^∂θiJ=R(a1,...,aN)(2ai−1)∂^∂θiJ=R(a1,...,aN)(2ai−1) 应为∂^∂θiJ=R(a1,...,aN)(4ai−2)∂^∂θiJ=R(a1,...,aN)(4ai−2),只有当后面的假设R(a1,...,aN)=1a1=...=aN=1R(a1,...,aN)=1a1=...=aN=1成立时,才有前面的式子。
    • 求期望的式子中,E(R)E(R)是关于动作aa的期望,而之后E(∂^∂θiJ)E(∂^∂θiJ)是关于参数θθ的期望
    • 最后一步 
      We have:〈∇J,∇J^〉=∑i∂^∂θiJ×(0.5)N=(0.5)N∑i∂^∂θiJ〈∇J,∇J^〉=∑i∂^∂θiJ×(0.5)N=(0.5)N∑i∂^∂θiJ,so P(〈∇^J,∇J〉>0)=(0.5)NP(〈∇^J,∇J〉>0)=(0.5)N.
        这里是最让人迷惑的地方,最开始我一直以为这里的因果关系so是因为前面的系数(0.5)N(0.5)N。但是转念一想这个〈∇^J,∇J〉>0〈∇^J,∇J〉>0的概率和系数(0.5)N(0.5)N是无关的,不管NN是多少(0.5)N(0.5)N只是乘在前面的一个大于0的常数,不影响两个梯度内积的正负。后来终于明白,这个概率的关系来自第二项∑i∂^∂θiJ∑i∂^∂θiJ。
        由前面可知,当R(a1,...,aN)=1a1=...=aN=1R(a1,...,aN)=1a1=...=aN=1时,有∂^∂θiJ=R(a1,...,aN)(2ai−1)∂^∂θiJ=R(a1,...,aN)(2ai−1),则∑i∂^∂θiJ=∑iR(a1,...,aN)(2ai−1)∑i∂^∂θiJ=∑iR(a1,...,aN)(2ai−1)。注意看这个式子,虽然是NN个回报的和,但是要想这个求和大于0的唯一解只有当a1=a2=...=aNa1=a2=...=aN时,其他时候回报都为0。也就是说这个求和其实只有两个值,要么为0要么为NN。
        而每个aiai是一个伯努利分布且独立,所以a1=a2=...=aN=1a1=a2=...=aN=1的概率即相当于求二项分布X=∑iaiX=∑iai使得X=NX=N的概率。又二项分布概率公式为P(X=k)=(Nk)pk(1−p)N−k,  where  (p=0.5,k=0,...,N)P(X=k)=(Nk)pk(1−p)N−k,  where  (p=0.5,k=0,...,N)。则有P(X=N)=(0.5)NP(X=N)=(0.5)N,这才得到前面的so,P(〈∇^J,∇J〉>0)=(0.5)NP(〈∇^J,∇J〉>0)=(0.5)N。

猜你喜欢

转载自blog.csdn.net/WASEFADG/article/details/89644587