欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

协同智能体强化学习:MADDPG方法详解

最编程 2024-07-29 15:47:32
...

多智能体actor-critic

在这里插入图片描述

算法约束条件:

  • 学习的策略在执行时只能使用智能体自己的观察信息
  • 不去假定环境动力学模型
  • 不去假定任何智能体之间的通信假设
    满足上述要求,将产生一个通用的多智能体学习算法,不仅可以应用具有明确通信方式的合作场景,还可以应用于竞争场景以及只涉及智能体之间的物理交互场景。
    分散执行,集中训练框架:在训练时,允许使用额外的信息进行(包括其他智能体的策略),在测试执行时,这些信息不会被用到。(在Q-learning中训练和测试信息必须一致,因此Q-learning在这不能使用)。本文提出的actor-critic策略梯度方法的简单扩展,critic增加了关于其他智能体策略的额外信息。
    具体方法:policy由 θ = θ 1 , θ 2 , . . . . . . , θ N \theta={\theta_1,\theta_2,......,\theta_N} θ=θ1,θ2,......,θN参数化的具有N个智能体的博弈场景,所有智能体的策略集合为 π = p i 1 , . . . . . . , π N \pi={pi_1,......,\pi_N} π=pi1,......,πN,智能体 i i i的期望收益梯度: J ( θ i ) = E [ R i ] J(\theta_i)=E[R_i] J(θi)=E[Ri]
    ∇ θ i J ( θ i ) = E s ∼ p u , a i ∼ π i [ ∇ θ i l o g π i ( a i ∣ o i ) Q i π ( x , a 1 , . . . . . . , a N ) ] \nabla_{\theta_i}J(\theta_i)=E_{s\sim p^u,a_i \sim \pi_i}[\nabla\theta_ilog\pi_i(a_i|o_i)Q_i^\pi(x,a_1,......,a_N)] θiJ(θi)=Espu,aiπi[θilogπi(aioi)Qiπ(x,a1,......,aN)]
    其中, Q i π ( x , a 1 , . . . . . . , a N ) Q_i^\pi(x,a_1,......,a_N) Qiπ(x,a1,......,aN)是一个集中的动作值函数,它将所有智能体的动作 a 1 , . . . . . . , a N a_1,......,a_N a1,......,aN加上一些状态信息 x x x作为输入,输出智能体 i i i Q Q Q值。最简单的情况下, x x x包含所有智能体的观测值, x = ( o 1 , . . . , o N ) x=(o_1,...,o_N) x=(o1,...,oN),但是如果允许的话,我们也会加入一些附加的状态信息。因为每一个动作值函数 Q i π ( x , a 1 , . . . . . . , a N ) Q_i^\pi(x,a_1,......,a_N) Qiπ(x,a1,......,aN)是分开学习的,智能体可以有任意的奖励形式,包括竞争过程中的冲突奖励。
    将上述想法扩展到确定性策略,考虑 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 ) ] ( 5 ) \nabla_{\theta_i}J(\mu_i)=E_{x,a\sim D}[\nabla\theta_i\mu_i(a_i|o_i)\nabla_{a_i}Q_i^\mu(x,a_1,......,a_N)|a_i=\mu_i(o_i)] (5) θiJ(μi)=Ex,aD[θiμi(aioi)aiQiμ(x,a1,......,aN)ai=μi(oi)]5
    这里,经验重放池(replay buffer D D D)包含元组( x , x ′ , a 1 , . . . . . . , a N , r 1 , . . . . . , r N x,x',a_1,......,a_N,r_1,.....,r_N 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 ′ , . . . , a N ′ ) a j ′ = μ j ′ ( o j ) ( 6 ) \mathcal{L}(\theta_i)=E_{x,a,r,x'}[(Q_i ^\mu(x,a_1,...,a_N)-y)^2], y=r_i+\gamma Q_i^{\mu'}(x',a',...,a'_N)_{a_j'=\mu_j'(o_j)} (6) L(θi)=Ex,a,r,x[(Qiμ(x,a1,...,aN)y)2],y=ri+γQiμ(x,a,...,aN)aj=μj(oj)6
    这里, μ ′ = μ θ 1 ′ , . . . , θ N ′ \mu'={\mu_{\theta_1',...,\theta_N'}} μ=μθ1,...,θN是有延迟参数 θ i ′ \theta_i' θi的目标策略集合。
    MADDPG背后的主要动机是,如果我们知道所有智能体采取的动作,即使策略改变,环境也是稳定的。因为对任意的策略 π i ≠ π i ′ \pi_i\neq\pi_i' πi=πi,有 P ( s ′ ∣ s , a 1 , . . . , a N ) = P ( s ′ ∣ s , a 1 , . . . , a N , π 1 ′ , . . . , π N ′ ) P(s'|s,a_1,...,a_N)=P(s'|s,a_1,...,a_N,\pi_1',...,\pi_N') P(ss,a1,...,aN)=P(ss,a1,...,aN,π1,...,πN)
    在方程6中需要用到其他智能体的策略进行更新。获得其他智能体的观测和策略不是一个特别严苛的假设;如果我们的目的是训练智能体在模拟中表现出复杂的交流通信行为,则这个信息通常是能被所有智能体使用的。但是,如果有必要的话,我们可以放松这个假设,通过从观测中获得其他智能体的策略。