强化学习笔记:连续控制与 MADDPG

多智能体强化学习:合作关系设定下的多智能体强化学习_UQI-LIUWJ的博客-CSDN博客

非合作关系设定下的多智能体强化学习_UQI-LIUWJ的博客-CSDN博客

都是对A2C的多智能体改进,仅限于离散控制。

我们现在研究连续控制问题:也就是动作空间\mathcal{A}^1,\cdots,\mathcal{A}^m都是连续集合,动作a^i \in A^i是向量。

多智能体深度确定策略梯度 (Multi-Agent Deep Deterministic Policy Gradient,缩写 MADDPG) 是一种很有名的 MARL 方法,它的架构是“中心化训练 + 去中心化决策”。

1 策略网络 和价值网络

设系统里有 m 个智能体。每个智能体对应一个策略网络和一个价值网络

  •  策略网络是确定性的:对于确定的输入o^i,输出的动作a^i=\mu(o^i;\theta^i)是确定的。
  • 价值网络的输入是全局状态s=[o^1,\cdots,o^m]与所有智能体的动作a=[a^1,\cdots,a^m],输出是一 个实数,表示“基于状态 s 执行动作 a”的好坏程度。
  • i 号策略网络\mu(o^i;\theta^i)用于控制 第 i 号智能体,
  • 价值网络 q(s,a;w^i)则用于评价所有动作 a ,给出的分数可以指导第 i 号策略网络做出改进

 2 算法推导

        训练策略网络和价值网络的算法与单智能体 DPG 非常类似:用确定策略梯度更新策略网络,用 TD 算法更新价值网络。
        MADDPG 是异策略 (Off-policy),我们可以使用经验回放,重复利用过去的经验。用一个经验回放数组存储收集到的经验,每一条经验都是 (s_t,a_t,r_t,s_{t+1})这样一个四元组,其中
                

2.1 训练策略网络

训练第 i 号策略网络 \mu(o^i;\theta^i)的目标是改进 \theta^i ,增大第 i 号价值网络的平均打分。
所以目标函数是:

 这里的期望是关于状态S求的。我们可以使用蒙特卡洛近似,从经验回放数组中随机抽取一个状态

 它可以看做是随机变量 S 的一个观测值。用所有 m 个策略网络计算动作

那么目标函数的梯度 可以近似成为:

这里\hat{a}_t^i=\mu(o_t^i;\theta^i) ,于是用链式法则有:

进而我们可以用梯度上升更新参数

 这里注意一点:

在更新第 i 号智能体的策略网络的时候,除了用到 全局状态 ,还需要用到 所有智能体的策略网络 ,以及 i 号智能体的价值网络

2.2 训练价值网络

可以用 TD 算法训练第 i 号价值网络q(s,a;w^i),让价值网络更好拟 合价值函数Q_\pi^i(s,a)
给定四元组 (s_t,a_t,r_t,s_{t+1}),用所有m个策略网络计算动作

\hat{a}_{t+1}=[\hat{a}_{t+1}^1,\cdots,\hat{a}_{t+1}^m],我们计算TD目标

再计算 TD 误差:

 

最后做梯度下降更新参数 w^i

3 中心化训练 

为了训练第 i 号智能体的策略网络和 价值网络,我们需要用到如下信息:
  • 从经验回放数组中取出的s_t,a_t,s_{t+1},r_t^i
  • m个智能体的策略网络
  • i 号智能体的价值网络

有一个中央控制器,上面部署所有的策略网络和价值网络。
训练过程中,策略网络部署到中央控制器上,所以智能体不能自主做决策,智能体只是执行中央控制器发来的指令。
由于训练使用异策略,可以把收集经验和更新神经网络参数分开做。

3.1 用行为策略收集经验

智能体把其观测 o^i 发送给中央控制器。
中央控制器往第 i 号策略网络 输出的动作\mu(o^i;\theta^i) 中加入随机噪声 ε  , 把引入噪声之后的动作 a^i
发送给给第 i 号智能体,智能体执行 a^i
然后智能体观测到奖励r^i,发送给控制器。
控制器把每一轮所有智能体的 o^ia^ir^i依次存入经验回放组

3.2 中央控制器更新策略网络和价值网络

 实际实现的时候,中央控制器上还需要有如下目标网络

 设第 i 号智能体当前的参数为:

 

中央控制器每次从经验回放数组中随机抽取一个四元组(s_t,a_t,r_t,s_{t+1}),然后按照下面
的步骤更新所有策略网络和所有价值网络:

和DPG一样,注意一下经验回放的at只有更新价值网络的使用用到过一次

 

3.3 和MAN-A2C的异同

我们横向看一下这两个模型

 不难发现,虽然都是中心化训练+去中心化决策,但是MAN-A2C是策略函数直接内嵌在智能体上;MADDPG是先放在中央控制器上,训练好了再挪下来。

为什么会这样呢?我个人觉得是通信要传输的量不同导致的:

假如MADDPG的策略网络一直在agent上的话:

没有经验回放的话,智能体需要多传一个a到价值网络中去(价值网络中同时需要s_t,s_{t+1},r_t^i,a_t,a_{t+1} 才能进行更新)——>传输的参数量比MAN-A2C大,这样会影响运行效率

如果有经验回放的话,中央控制器得添加两次传输:将经验回放的o传给每个agent,每个agent将策略传回中央控制器。这样的话运行时间就更没有保障了

综上,这可能是MADDPG在训练的时候将策略网络放在中央控制器的原因 

3.4 改进方法

和改进TD3 一样:

强化学习笔记:双延时确定策略梯度 (TD3)_UQI-LIUWJ的博客-CSDN博客

还可以在策略网络和价值网络中使用RNN,记忆历史观测

强化学习笔记:不完全观测问题_UQI-LIUWJ的博客-CSDN博客

4 去中心化决策

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

UQI-LIUWJ

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值