【多智能体】MADDPG算法

简介

PG -> DPG -> DDPG->MADDPG

算法的特点是:

  • 其基本结构是AC+DDPG
  • 每个智能体独立采样,可以有自己的奖励函数。合作和竞争环境中都可以使用
  • 动作空间可连续

Policy Gradient

在之前的博客中已经对Policy Gradient的算法原理做了总结,包括其算法推导,如何进行梯度下降等等问题。接下来研究随机策略和确定性策略这两种算法

Deterministic Policy Gradient

确定性策略是和随机策略相对而言的,对于某一些动作集合来说,它可能是连续值,或者非常高维的离散值,这样动作的空间维度极大。如果我们使用随机策略,即像DQN一样研究它所有的可能动作的概率,并计算各个可能的动作的价值的话,那需要的样本量是非常大才可行的。于是有人就想出使用确定性策略来简化这个问题。

作为随机策略,在相同的策略,在同一个状态处,采用的动作是基于一个概率分布的,即是不确定的。而确定性策略则决定简单点,虽然在同一个状态处,采用的动作概率不同,但是最大概率只有一个,如果我们只取最大概率的动作,去掉这个概率分布,那么就简单多了。即作为确定性策略,相同的策略,在同一个状态处,动作是唯一确定的,即策略变成以下的公式:

πθ(s)=a

再对比之前Policy Gradient的策略梯度公式:

θJ(θ)=Eτπθ(τ)[θlogπθ(τ)r(τ)]

可以将这里的 r(τ) 写为 Qπ(s,a) 的形式(加上衰减),可以看到这里的 τ 要在整个策略空间中进行采样,其中包括了动作和状态。

DPG基于Q值的确定性策略梯度的梯度计算公式是:

θJ(θ)=Espπ[θπθ(s)aQπ(s,a)|a=πθ(s)]

跟随机策略梯度的式子相比,少了对动作的积分,多了回报Q函数对动作的导数

DDPG

原理

在DDPG中添加了一个经验回放池,用于保存agent与环境交互所产生的历史数据。

DDPG中四个网络的功能如下:

  • Actor当前网络:负责策略网络参数 θ 的迭代更新,负责根据当前状态 S 选择当前动作 A,用于和环境交互生成 SR
  • Actor目标网络:负责根据经验回放池中采样的下一个状态 S 选择最优的下一个动作 A ,网络参数 θ 定期从 θ 复制
  • Critic当前网络:负责价值网络参数w的迭代更新,负责计算当前Q值。目标 Q 值有 yi=R+γQ(S,A,w)
  • Critic目标网络:负责计算目标Q值中的Q(S,A,w)部分。网络参数w定期从w复制。·

在更新策略网络参数 θ 和价值网络参数 w 时,采用软更新的方式(γ 为更新系数)

wγw+(1γ)wθγθ+(1γ)θ

除此之外,为了保证agent对环境的探索,DDPG向动作网络的输出添加了随机噪声 N,因此最终和环境进行交互的动作 A 的表达式为:

A=πθ(S)+N

算法流程

算法步骤如下:

  1. 随机初始化 θ(即 θμ)和 w(即 θQ),并且使得 θ=θ,w=w ,初始化经验回放池

  2. 共有M轮训练,每轮训练初始化一个动作噪声N,一个初始状态 s1

  3. 每轮训练中有 T 个回合,在每回合中:

    1)根据当前的策略网络参数 θ 和状态 st 得到动作 at=πθ(st|θ)+Nt

    2)执行动作 at,得到环境奖励 rt 和新状态 st+1

    3)将四元组 {st,at,rt,st+1} 存入经验回放池

    4)从经验回放池中选择 m 个样本(minibatch的含义:是一个一次训练数据集的一小部分。它可以使内存较小、不能同时训练整个数据集的电脑也可以训练模型,能够提高算法的运行速度,跟之前学习过的在线学习的随机梯度下降可以联系起来)

    5)计算当前目标 Q 值 yi=ri+γQ(si+1,πθ(si+1),w) ,注意此处的 πθ(si+1) 是通过Actor目标网络得到,Q(si+1,πθ(si+1),w) 是通过Critic目标网络得到

    6)使用均方差损失函数 L=1mmj=1(yjQ(si+1,aj,w))2 ,通过神经网络的梯度反向传播来更新 Critic 当前网络的参数 w (最小化损失函数 L)

    7)使用 J(θ)=1mmj=1Q(si,ai,θ) 通过神经网络的梯度反向传播来更新 Actor 当前网络的参数 θ (在实际运用中,不使用图中的梯度公式?)

    8)更新Critic目标网络和Actor目标网络参数

    wγw+(1γ)wθγθ+(1γ)θ

MADDPG

基本思想:

  • 中心化训练:把环境中所有Agent的观测值结合为Critic部分的输入,使得每一个Agent的Critic模块都可以利用所有Agent的观测信息和动作信息来对当前的State做出评价
  • 去中心化执行:每个agent有自己的奖励函数,它们单独决定自己的策略,只由每个智能体的actor网络根据局部信息(即智能体自己的动作和状态)做出决策

算法的伪代码:

Author: iwannaeat
Link: https://iwannaeat.github.io/2021/04/22/【多智能体】MADDPG算法/
Copyright Notice: All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.