【多智能体】MADDPG算法

简介

PG -> DPG -> DDPG->MADDPG

算法的特点是:

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

Policy Gradient

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

Deterministic Policy Gradient

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

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

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

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

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

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

DDPG

原理

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

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

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

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

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

算法流程

算法步骤如下:

  1. 随机初始化 $\theta$(即 $\theta^{\mu}$)和 $w$(即 $\theta^Q$),并且使得 $\theta’=\theta,w’=w$ ,初始化经验回放池

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

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

    1)根据当前的策略网络参数 $ \theta$ 和状态 $s_t$ 得到动作 $a_t=\pi_\theta(s_t|\theta) +N_t$

    2)执行动作 $a_t$,得到环境奖励 $r_t$ 和新状态 $s_{t+1}$

    3)将四元组 $\{s_t,a_t,r_t,s_{t+1}\}$ 存入经验回放池

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

    5)计算当前目标 Q 值 $y_i=r_i+\gamma Q’(s_{i+1},\pi_{\theta’}(s_{i+1}),w’)$ ,注意此处的 $\pi_{\theta’}(s_{i+1})$ 是通过Actor目标网络得到,$Q’(s_{i+1},\pi_{\theta’}(s_{i+1}),w’)$ 是通过Critic目标网络得到

    6)使用均方差损失函数 $L=\frac{1}{m}\sum_{j=1}^m(y_j-Q(s_{i+1},a_j,w))^2$ ,通过神经网络的梯度反向传播来更新 Critic 当前网络的参数 $w$ (最小化损失函数 L)

    7)使用 $J(\theta)=-\frac{1}{m}\sum^m_{j=1}Q(s_i,a_i,\theta)$ 通过神经网络的梯度反向传播来更新 Actor 当前网络的参数 $\theta$ (在实际运用中,不使用图中的梯度公式?)

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

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.