在这篇文章中通过基于所有代理的观测和动作学习一个集中的critic,指导每个代理的actor进行更新的方式,将DDPG方法推广到了多代理强化学习环境中得到了MADDPG算法。主要创新点有(1)将其它代理的观测信息和决策信息用于集中critic的更新,使代理能够根据价值函数学习到合作或竞争策略,(2)通过最大似然估计的方法,近似其它代理的策略,从而可以在更新集中价值函数的过程中不需要再假设已知其它代理的策略。(3)通过采用策略集合优化的方法,每个代理优化一个策略集合,使代理在面对竞争代理策略改变时具有鲁棒性。
We explore deep reinforcement learning methods for multi-agent domains. We begin by analyzing the difficulty of traditional algorithms in the multi-agent case: Q-learning is challenged by an inherent non-stationarity of the environment, while policy gradient suffers from a variance that increases as the number of agents grows. We then present an adaptation of actor-critic methods that considers action policies of other agents and is able to successfully learn policies that require complex multiagent coordination. Additionally, we introduce a training regimen utilizing an ensemble of policies for each agent that leads to more robust multi-agent policies. We show the strength of our approach compared to existing methods in cooperative as well as competitive scenarios, where agent populations are able to discover various physical and informational coordination strategies.
我们探索了深度强化学习在多代理领域的应用。我们首先分析了在多代理问题中传统算法的问题:Q-learning需要面对一个不稳定的环境,策略梯度方法会随着代理数量的增多方差会变大。我们展示了actor-critic方法的改进算法,使算法考虑到其它代理的动作。在需要代理间复杂协作的问题中,算法具有很好的表现。除此之外,我们介绍了每个代理使用全部代理的策略进行训练的方法,这提高了多代理策略的鲁棒性。我们通过与已有算法在协作和竞争场景下的比较展示了我们算法的优势——多代理能够发现多种物理和信息协作策略。
传统RL算法面临的一个主要问题是由于每个智能体都是在不断学习改进其策略,因此从每一个智能体的角度看,环境是一个动态不稳定的,这不符合传统RL收敛条件。并且在一定程度上,无法通过仅仅改变智能体自身的策略来适应动态不稳定的环境。由于环境的不稳定,将无法直接使用之前的经验回放等DQN的关键技巧。策略梯度算法会由于智能体数量的变多使得本就有的方差大的问题加剧。除此之外,还可以使用基于模型的策略优化方法,这个方法可以通过反向传播的方法学习到最优策略,但是需要知道环境的可微分动态模型以及代理之间的交互假设。从优化的视角看,应为对抗训练方法的不稳定性,将这些方法用于竞争环境也是非常具有挑战性的。
本文的方法与《Counterfactual multi-agent policy gradients》的方法相似。但本文的方法在四方面与之不同:(1)后者为每个代理学习了一个集中的critic,本文为每个代理集中学习了一个代理,使代理能够使用不同的奖励函数包括竞争场景,(2)本文考虑代理之间具有显式通信的环境,(3)后者将循环策略和前馈critic结合,本文使用的是前馈策略(也可以使用循环策略),(4)本文学习的是连续策略,后者学习的离散策略。
本文的算法具有以下三点特征:(1)通过学习得到的最优策略,在应用时只利用局部信息就能给出最优动作。(2)不需要知道环境的动力学模型以及特殊的通信需求。(3)该算法不仅能用于合作环境,也能用于竞争环境。
算法采用了集中培训和分散执行的框架,允许策略使用额外的信息来简化训练,在测试的时候不使用这些信息。如果不对环境的结构做额外的假设,Q-learning无法实现这一点,因为Q函数在训练和测试时通常不能包含不同的信息。因此,本文的算法是基于actor-critic策略梯度方法扩展得到的,critic通过使用与其它代理测率相关的信息来获得增强,actor的输入为代理的本地信息。完全集中训练的方式不再需要开发代理间离散的通信协议。
完全集中和完全分散的方式都会面临各种在实际应用中的问题。
目前的工作主要集中在学习代理间协同通信协议来解决各种任务。但是这些方法通过需要在代理之间的通信能够在一个专用的、可微的通信信道中完成。
策略梯度的方法用在多代理学习中会增大本来就很大的方差。通过减去基线(状态价值函数)来减小方差的方法在多代理环境中也会出现问题,因为代理面对的环境是一个不稳定的环境。
多代理深度确定性策略梯度(multi-agent deep deterministic policy gradient, MADDPG)算法所应用的环境具有的特点有:(1)所学习的策略在执行期间只能使用本地信息(如它们自己的观测),(2)不假设环境的动态模型是可微的,(3)不假设代理间的通信架构(换而言之,不假设通信信道可微)。满足上述需求将能够实现一种通用的多代理学习算法,不仅可以应用于具有明确通信信道的合作游戏,还可以应用于竞争游戏和只涉及代理间物理交互的游戏。
MADDPG算法使用的集中训练、分散决策的框架。这使得代理能够在训练期间使用额外的信息来简化训练。而这种方式无法用于Q-leanring中,因为在Q-learning中训练和执行的输入不能包含不同的信息。因此本文在actor-critic方法上进行扩展,使critic能够使用与其它代理策略相关的额外信息来获得加强。
代理数量为 N N N,代理策略的参数为 θ = { θ 1 , … , θ N } \theta=\left\{\theta_{1}, \ldots, \theta_{N}\right\} θ={θ1,…,θN}, π = { π 1 , … , π N } \pi=\left\{\pi_{1}, \ldots, \pi_{N}\right\} π={π1,…,πN}为所有代理的策略。代理 i i i期望回报的梯度 J ( θ i ) = E [ R i ] J\left(\theta_{i}\right)=\mathbb{E}\left[R_{i}\right] J(θi)=E[Ri]为:
∇ θ i J ( θ i ) = E s ∼ p μ , a i ∼ π i [ ∇ θ i log π i ( a i ∣ o i ) Q i π ( x , a 1 , … , a N ) ] ( 1 ) \nabla_{\theta_{i}} J\left(\theta_{i}\right)=\mathbb{E}_{s \sim p^{\mu}, a_{i} \sim \pi_{i}}\left[\nabla_{\theta_{i}} \log \pi_{i}\left(a_{i} | o_{i}\right) Q_{i}^{\pi}\left(\mathbf{x}, a_{1}, \ldots, a_{N}\right)\right](1) ∇θiJ(θi)=Es∼pμ,ai∼πi[∇θilogπi(ai∣oi)Qiπ(x,a1,…,aN)](1)
Q i π ( x , a 1 , … , a N ) Q_{i}^{\pi}\left(\mathrm{x}, a_{1}, \ldots, a_{N}\right) Qiπ(x,a1,…,aN)为以所有代理动作 a 1 , … , a N a_{1}, \ldots, a_{N} a1,…,aN和状态信息 x \mathbf{x} x为输入的集中动作价值函数,输出为代理 i i i的Q值。 x x x可以包括所有代理的观测 x = ( o 1 , … , o N ) x=\left(o_{1}, \ldots, o_{N}\right) x=(o1,…,oN),如果能够获得附加状态信息,可以加入附加的状态信息。因为每一个 Q i π Q_{i}^{\pi} Qiπ是单独学习的,所有每个代理都可以有不同的奖励函数,可以在竞争环境中使用冲突奖励函数。
我们可以把以上方法扩展到确定策略中。如果我们考虑 N N N个连续策略 μ θ i \mu_{\theta_{i}} μθi参数为 θ i \theta_{i} θi (简记为 μ i \mu_{i} μi ),梯度为:
∇ θ i J ( μ i ) = E x , a ∼ D [ ∇ θ i μ i ( a i ∣ o i ) ∇ a i Q i μ ( x , a 1 , … , a N ) ∣ a i = μ i ( o i ) ] ( 2 ) \nabla_{\theta_{i}} J\left(\boldsymbol{\mu}_{i}\right)=\mathbb{E}_{\mathbf{x}, a \sim \mathcal{D}}\left[\left.\nabla_{\theta_{i}} \boldsymbol{\mu}_{i}\left(a_{i} | o_{i}\right) \nabla_{a_{i}} Q_{i}^{\boldsymbol{\mu}}\left(\mathbf{x}, a_{1}, \ldots, a_{N}\right)\right|_{a_{i}=\boldsymbol{\mu}_{i}\left(o_{i}\right)}\right](2) ∇θiJ(μi)=Ex,a∼D[∇θiμi(ai∣oi)∇aiQiμ(x,a1,…,aN)∣ai=μi(oi)](2)
回放内存 D \mathcal{D} D中包含 ( x , x ′ , a 1 , … , a N , r 1 , … , r N ) \left(\mathrm{x}, \mathrm{x}^{\prime}, a_{1}, \ldots, a_{N}, r_{1}, \ldots, r_{N}\right) (x,x′,a1,…,aN,r1,…,rN)即所有代理的经验。集中价值函数 Q i μ Q_{i}^{\mu} Qiμ通过下式更新:
L ( θ i ) = E x , a , r , x ′ [ ( Q i μ ( x , a 1 , … , a N ) − y ) 2 ] , y = r i + γ Q i μ ′ ( x ′ , a 1 ′ , … , a N ′ ) ∣ a j ′ = μ j ′ ( o j ) ( 3 ) \mathcal{L}\left(\theta_{i}\right)=\mathbb{E}_{\mathbf{x}, a, r, \mathbf{x}^{\prime}}\left[\left(Q_{i}^{\mu}\left(\mathbf{x}, a_{1}, \ldots, a_{N}\right)-y\right)^{2}\right], \quad y=r_{i}+\left.\gamma Q_{i}^{\mu^{\prime}}\left(\mathbf{x}^{\prime}, a_{1}^{\prime}, \ldots, a_{N}^{\prime}\right)\right|_{a_{j}^{\prime}=\boldsymbol{\mu}_{j}^{\prime}\left(o_{j}\right)}(3) L(θi)=Ex,a,r,x′[(Qiμ(x,a1,…,aN)−y)2],y=ri+γQiμ′(x′,a1′,…,aN′)∣∣∣aj′=μj′(oj)(3)
μ ′ = { μ θ ′ , … , μ θ ′ } \mu^{\prime}=\left\{\mu_{\theta^{\prime}}, \ldots, \mu_{\theta^{\prime}}\right\} μ′={μθ′,…,μθ′} 为一组目标策略的延迟参数 θ i ′ \theta_{i}^{\prime} θi′。
MADDPG的初始动机在于,如果我知道所有代理的动作,那么即使策略在改变环境也是稳定的。因为对于任何 π i ≠ π i ′ \pi_{i} \neq \pi_{i}^{\prime} πi=πi′来说: P ( s ′ ∣ s , a 1 , … , a N , π 1 , … , π N ) = P ( s ′ ∣ s , a 1 , … , a N ) = P ( s ′ ∣ s , a 1 , … , a N , π 1 ′ , … , π N ′ ) P\left(s^{\prime} | s, a_{1}, \ldots, a_{N}, \pi_{1}, \ldots, \pi_{N}\right)=P\left(s^{\prime} | s, a_{1}, \ldots, a_{N}\right)=P\left(s^{\prime} | s, a_{1}, \ldots, a_{N}, \pi_{1}^{\prime}, \ldots, \pi_{N}^{\prime}\right) P(s′∣s,a1,…,aN,π1,…,πN)=P(s′∣s,a1,…,aN)=P(s′∣s,a1,…,aN,π1′,…,πN′),这个性质是因为在算法中考虑了其它代理的动作。
下面介绍MADDPG的两个特点。
近似其它代理的策略
为了使集中价值函数(3)更新的过程中不需要再假设知道其它代理的策略,每个代理 i i i可以维护一个代理 j , μ j j, \boldsymbol{\mu}_{j} j,μj的近似策略 μ ^ ϕ i j \hat{\boldsymbol{\mu}}_{\phi_{i}^{j}} μ^ϕij( ϕ \phi ϕ是其参数,在之后记为 μ ^ i j \hat{\boldsymbol{\mu}}_{i}^{j} μ^ij ),这个近似策略通过最大化代理 j j j动作的log概率,以及一个熵正则项:
L ( ϕ i j ) = − E o j , a j [ log μ ^ i j ( a j ∣ o j ) + λ H ( μ ^ i j ) ] ( 4 ) \mathcal{L}\left(\phi_{i}^{j}\right)=-\mathbb{E}_{o_{j}, a_{j}}\left[\log \hat{\boldsymbol{\mu}}_{i}^{j}\left(a_{j} | o_{j}\right)+\lambda H\left(\hat{\boldsymbol{\mu}}_{i}^{j}\right)\right](4) L(ϕij)=−Eoj,aj[logμ^ij(aj∣oj)+λH(μ^ij)](4)
H H H是策略分布的熵。因此集中价值函数更新公式(3)中的 y y y可以被换为:
y ^ = r i + γ Q i μ ′ ( x ′ , μ ^ i ′ 1 ( o 1 ) , … , μ i ′ ( o i ) , … , μ ^ i ′ N ( o N ) ) ( 5 ) \hat{y}=r_{i}+\gamma Q_{i}^{\mu^{\prime}}\left(\mathrm{x}^{\prime}, \hat{\mu}_{i}^{\prime 1}\left(o_{1}\right), \ldots, \mu_{i}^{\prime}\left(o_{i}\right), \ldots, \hat{\mu}_{i}^{\prime N}\left(o_{N}\right)\right)(5) y^=ri+γQiμ′(x′,μ^i′1(o1),…,μi′(oi),…,μ^i′N(oN))(5)
μ ^ i ′ j \hat{\boldsymbol{\mu}}_{i}^{\prime j} μ^i′j为估计策略 μ ^ i j \hat{\boldsymbol{\mu}}_{i}^{j} μ^ij的目标网络。等式(4)的更新可以在线进行,在更新集中价值函数 Q i μ Q_{i}^{\mu} Qiμ前,我们对代理 j j j采取回放内存中最近的一批样本,基于样本对 ϕ i j \phi_{i}^{j} ϕij进行一步梯度更新。并且,每个代理的动作log概率直接输入到 Q Q Q中,不再采样。
策略集合优化
多代理强化学习所面对的一个问题是由于代理会改变策略,所以环境是不稳定的。这种情况在竞争任务下尤其严重,经常会出现一个智能体针对其竞争对手过拟合出一个强策略。但是这个强策略是非常脆弱的,因为随着竞争对手策略的更新改变,这个强策略很难去适应新的对手策略。
为了使代理在面对竞争代理策略改变时具有鲁棒性,MADDPG采用了训练一个包含 K K K个子策略的策略集的方法。在每个回合,MADDPG会随机选择一个策略执行。令 μ i \mu_{i} μi是一个 K K K个不同子策略的几何,子策略 k k k为 μ θ ( k ) \mu_{\theta}(k) μθ(k) (表示为 μ i ( k ) \mu_{i}^{(k)} μi(k) )。代理 i i i的优化目标为: J e ( μ i ) = E k ∼ unif ( 1 , K ) , s ∼ p μ , a ∼ μ i ( k ) [ R i ( s , a ) ] J_{e}\left(\boldsymbol{\mu}_{i}\right)=\mathbb{E}_{k \sim \operatorname{unif}(1, K), s \sim p^{\mu}, a \sim \mu_{i}^{(k)}}\left[R_{i}(s, a)\right] Je(μi)=Ek∼unif(1,K),s∼pμ,a∼μi(k)[Ri(s,a)]
因为在不同的回合中会有不同的策略被执行,所以MADDPG为代理 i i i的每一个子策略 μ i ( k ) \mu_{i}^{(k)} μi(k)维护了一个回放内存 D i ( k ) \mathcal{D}_{i}^{(k)} Di(k)。对 θ i ( k ) \theta_{i}^{(k)} θi(k)求梯度的结果为:
∇ θ i ( k ) J e ( μ i ) = 1 K E x , a ∼ D i ( k ) [ ∇ θ i ( k ) μ i ( k ) ( a i ∣ o i ) ∇ a i Q μ i ( x , a 1 , … , a N ) ∣ a i = μ i ( k ) ( o i ) ] ( 6 ) \nabla_{\theta_{i}^{(k)}} J_{e}\left(\boldsymbol{\mu}_{i}\right)=\frac{1}{K} \mathbb{E}_{\mathbf{x}, a \sim \mathcal{D}_{i}^{(k)}}\left[\left.\nabla_{\theta_{i}^{(k)}} \boldsymbol{\mu}_{i}^{(k)}\left(a_{i} | o_{i}\right) \nabla_{a_{i}} Q^{\mu_{i}}\left(\mathbf{x}, a_{1}, \ldots, a_{N}\right)\right|_{a_{i}=\boldsymbol{\mu}_{i}^{(k)}\left(o_{i}\right)}\right](6) ∇θi(k)Je(μi)=K1Ex,a∼Di(k)[∇θi(k)μi(k)(ai∣oi)∇aiQμi(x,a1,…,aN)∣∣∣ai=μi(k)(oi)](6)