简介
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$ 的表达式为:
算法流程
算法步骤如下:
随机初始化 $\theta$(即 $\theta^{\mu}$)和 $w$(即 $\theta^Q$),并且使得 $\theta’=\theta,w’=w$ ,初始化经验回放池
共有M轮训练,每轮训练初始化一个动作噪声N,一个初始状态 $s_1$
每轮训练中有 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网络根据局部信息(即智能体自己的动作和状态)做出决策
算法的伪代码: