强化学习算法(DDPG)
深度强化学习的连续控制
摘要
本文将深度Q学习的思想扩展至 连续动作领域,提出一种 基于确定性策略梯度的无模型演员-评论家算法,可在连续动作空间上运行。依托统一的 学习算法/网络架构/超参数,算法稳健解决 20+ 模拟物理任务,并找到可与 完全访问动力学的规划器 相媲美的策略。同时验证了多类任务可实现 端到端像素输入学习。🚀
核心改进 🔑:通过 经验回放 + 软目标网络 稳定训练,结合 OU 探索噪声、批归一化 与统一超参/架构,在高维连续控制与像素输入上均保持鲁棒。
0 阅读指引与要点
文档目标:本文档详细介绍了 DDPG(Deep Deterministic Policy Gradient)算法,这是第一个成功将深度强化学习扩展到连续动作空间的算法。
- 🔑 核心目标:解释 DDPG 如何结合 确定性策略梯度(DPG) 与 DQN 稳定化技巧(经验回放缓冲、目标网络),解决高维连续控制问题。
- 🧩 关键组件:
- 离策略演员-评论家:Actor(策略网络)+ Critic(Q 网络),支持离策略学习
- 经验回放:存储历史经验,随机采样打破时间相关性
- 软更新目标网络:目标网络缓慢跟踪在线网络,提供稳定的 TD 目标
- OU 探索噪声:时间相关的探索噪声,适合物理系统
- 批归一化:归一化网络输入,提高训练稳定性
- 🧭 推荐阅读路径:
- 第 1 节(引言):了解问题背景和 DDPG 的动机
- 第 2 节(背景):理解强化学习基础(Q 学习、贝尔曼方程、确定性策略梯度)
- 第 3 节(算法):重点阅读,理解 DDPG 的核心算法和关键技巧
- 第 4 节(结果):了解实验设置和性能表现
- 第 7 节(实验详情):了解超参数设置和网络架构细节
与项目代码的对应:
- Actor/Critic 网络 →
src/ddpg.py中的Actor和Critic类 - 经验回放 →
DDPGAgent.memory(deque) - 软更新 →
DDPGAgent._soft_update方法 - 探索噪声 →
DDPGAgent.act方法中的高斯噪声
1 引言
人工智能的长期目标之一是从未经处理的高维感官输入中解决复杂任务。近期,将深度表征学习与强化学习结合,产生了 深度Q网络(DQN),可用原始像素在雅达利上达到 人类水平;其依赖深度神经网络来估计动作价值函数。
然而,DQN 仅适用于 离散/低维动作空间。许多物理控制任务拥有 连续(实值)且高维的动作空间。在连续域中贪心最大化QQQ需每步迭代优化,代价过高,无法直接沿用DQN。
将DQN等深度强化学习方法应用于连续领域的一个明显方法是简单地离散化动作空间。然而,这存在许多局限性,最显著的是维度灾难:动作数量随自由度数量呈指数增长。例如,一个7自由度系统(如人类手臂),每个关节采用最粗的离散化ai∈{−k,0,k}{a}_{i} \in \{ - k,0,k\}ai∈{−k,0,k},会导致动作空间维度为:37=2187{3}^{7} = {2187}37=2187。对于需要精细控制动作的任务,情况更糟,因为它们需要相应更精细的离散化,导致离散动作数量激增。如此大的动作空间难以有效探索,因此在此背景下成功训练类DQN网络可能难以实现。此外,动作空间的朴素离散化不必要地丢弃了关于动作领域结构的信息,这可能对解决许多问题至关重要。
为什么不能简单离散化连续动作空间?
- 维度灾难:动作数量随自由度呈指数增长
- 7 自由度系统,每关节 3 个离散值 → 37=21873^7 = 218737=2187 个动作
- 需要精细控制时,离散值更多 → 动作空间爆炸
- 探索困难:如此大的动作空间难以有效探索
- 信息丢失:离散化丢弃了动作的连续结构信息
- 连续动作空间有自然的距离概念(相近动作效果相似)
- 离散化后这种结构信息丢失
- 解决方案:使用确定性策略梯度,直接处理连续动作空间
在这项工作中,我们提出一种使用深度函数逼近器的无模型、离策略演员-评论家算法,能够在高维连续动作空间中学习策略。我们的工作基于确定性策略梯度(DPG)算法(Silver et al. 2014)(其本身类似于NFQCA(Hafner & Riedmiller, 2011),类似思想也可见于(Prokhorov et al., 1997))。然而,如下所示,将这种演员-评论家方法与神经函数逼近器简单结合,在挑战性问题上是不稳定的。
*这些作者贡献相同。
在这里,我们将演员-评论家方法与 DQN 的稳定化见解结合(Mnih et al. 2013, 2015)。在DQN之前,使用大型非线性逼近器学习价值函数被认为不稳定;DQN 依靠两项关键使之可行:(1) 经验回放缓冲(离策略训练、打破相关、提效);(2) 目标Q网络(为TD备份提供平滑目标)。本工作沿用二者并加入 批归一化,形成 深度确定性策略梯度(DDPG),在连续控制中保持稳定。🎯
为了评估我们的方法,我们构建了多种具有挑战性的物理控制问题,这些问题涉及复杂的多关节运动、不稳定且丰富的接触动力学以及步态行为。其中包括经典问题(如倒立摆起摆问题)以及许多新领域。机器人控制的一个长期挑战是直接从原始感官输入(如视频)中学习动作策略。因此,我们在模拟器中放置了一个固定视角的摄像头,并尝试使用低维观测(如关节角度)和直接从像素中完成所有任务。
我们提出的无模型方法称为 深度确定性策略梯度(DDPG),在统一超参与网络下即可基于低维观测(关节角、笛卡尔坐标等)学习竞争性策略;在多项任务上还可直接从像素端到端学习,仍无需改动超参与结构1
该方法的一个关键特点是其简洁性:它只需要一个简单的演员-评论家架构和学习算法,几乎没有“可动部件”,这使得它易于实现并扩展到更困难的问题和更大的网络。对于物理控制问题,我们将结果与一个规划器(Tassa et al. 2012)计算的基线进行比较,该规划器可以完全访问底层模拟动力学及其导数(见补充信息)。有趣的是,DDPG有时能找到性能超过规划器的策略,在某些情况下甚至是从像素中学习时(规划器始终在底层低维状态空间上进行规划)。
2 背景
我们考虑一个标准的强化学习设置,其中智能体在离散时间步与环境EEE交互。在每个时间步ttt,智能体接收观测xt{x}_{t}xt,执行动作at{a}_{t}at并获得标量奖励rt{r}_{t}rt。在这里考虑的所有环境中,动作都是实值的at∈RN{a}_{t} \in {\mathbb{R}}^{N}at∈RN。一般来说,环境可能是部分可观测的,因此可能需要观测、动作对的整个历史st=(x1,a1,…,at−1,xt){s}_{t} = \left( {{x}_{1},{a}_{1},\ldots ,{a}_{t - 1},{x}_{t}}\right)st=(x1,a1,…,at−1,xt)来描述状态。这里,我们假设环境是完全可观测的,因此st=xt{s}_{t} = {x}_{t}st=xt。
符号说明:
- EEE:环境(Environment),产生状态转移和奖励
- ttt:时间步索引(离散时间步)
- xtx_txt:时刻 ttt 的观测(Observation),环境的原始输出
- sts_tst:时刻 ttt 的状态(State),完全可观测时 st=xts_t = x_tst=xt
- ata_tat:时刻 ttt 执行的动作(Action),在连续动作空间中为实值向量 at∈RNa_t \in \mathbb{R}^Nat∈RN
- rtr_trt:时刻 ttt 获得的标量奖励(Reward)
- NNN:动作空间的维度(连续动作向量的长度)
智能体的行为由策略π\piπ定义,该策略将状态映射到动作上的概率分布π:S→P(A)\pi : \mathcal{S} \rightarrow \mathcal{P}\left( \mathcal{A}\right)π:S→P(A)。环境EEE也可能是随机的。我们将其建模为马尔可夫决策过程,具有状态空间S\mathcal{S}S、动作空间A=RN\mathcal{A} = {\mathbb{R}}^{N}A=RN、初始状态分布p(s1)p\left( {s}_{1}\right)p(s1)、转移动力学p(st+1∣st,at)p\left( {{s}_{t + 1} \mid {s}_{t},{a}_{t}}\right)p(st+1∣st,at)和奖励函数r(st,at)r\left( {{s}_{t},{a}_{t}}\right)r(st,at)。
MDP 符号说明:
- π\piπ:策略(Policy),从状态到动作分布的映射
- S\mathcal{S}S:状态空间(State Space)
- A\mathcal{A}A:动作空间(Action Space),A=RN\mathcal{A} = \mathbb{R}^NA=RN(连续动作空间)
- p(s1)p(s_1)p(s1):初始状态分布
- p(st+1∣st,at)p(s_{t+1} | s_t, a_t)p(st+1∣st,at):状态转移概率(转移动力学)
- r(st,at)r(s_t, a_t)r(st,at):奖励函数,在状态 sts_tst 执行动作 ata_tat 获得的奖励
从某个状态开始的回报定义为未来折扣奖励的总和Rt=∑i=tTγ(i−t)r(si,ai){R}_{t} = \mathop{\sum }\limits_{{i = t}}^{T}{\gamma }^{\left( i - t\right) }r\left( {{s}_{i},{a}_{i}}\right)Rt=i=t∑Tγ(i−t)r(si,ai),其中折扣因子为γ∈[0,1]\gamma \in \left\lbrack {0,1}\right\rbrackγ∈[0,1]。注意,回报取决于所选择的动作,因此也取决于策略π\piπ,并且可能是随机的。强化学习的目标是学习一个策略,以最大化从起始分布J=Eri,si∼E,ai∼π[R1]J = {\mathbb{E}}_{{r}_{i},{s}_{i} \sim E,{a}_{i} \sim \pi }\left\lbrack {R}_{1}\right\rbrackJ=Eri,si∼E,ai∼π[R1]开始的期望回报。我们将策略π\piπ的折扣状态访问分布表示为ρπ{\rho }^{\pi }ρπ。
回报和目标函数符号说明:
- RtR_tRt:从时刻 ttt 开始的累积回报(Return),Rt=∑i=tTγ(i−t)r(si,ai)R_t = \sum_{i=t}^{T} \gamma^{(i-t)} r(s_i, a_i)Rt=∑i=tTγ(i−t)r(si,ai)
- TTT:episode 的终止时刻(或无穷大,对于无限 horizon)
- γ\gammaγ:折扣因子(Discount Factor),范围 [0,1][0, 1][0,1],控制未来奖励的重要性
- r(si,ai)r(s_i, a_i)r(si,ai):时刻 iii 的即时奖励
- JJJ:期望回报(Expected Return),强化学习的目标函数
- J=Eri,si∼E,ai∼π[R1]J = \mathbb{E}_{r_i, s_i \sim E, a_i \sim \pi}[R_1]J=Eri,si∼E,ai∼π[R1]:从起始状态开始的期望累积奖励
- 目标:最大化 JJJ,找到最优策略
- ρπ\rho^{\pi}ρπ:策略 π\piπ 的折扣状态访问分布(Discounted State Visitation Distribution)
- 描述在策略 π\piπ 下,各个状态被访问的频率(考虑折扣因子)
动作价值函数(Q 函数)在许多强化学习算法中都有应用。它描述了在状态st{s}_{t}st中采取动作at{a}_{t}at并随后遵循策略π\piπ的期望回报:
Qπ(st,at)=Eri≥t,si>t∼E,ai>t∼π[Rt∣st,at](1) {Q}^{\pi }\left( {{s}_{t},{a}_{t}}\right) = {\mathbb{E}}_{{r}_{i \geq t},{s}_{i > t} \sim E,{a}_{i > t} \sim \pi }\left\lbrack {{R}_{t} \mid {s}_{t},{a}_{t}}\right\rbrack \tag{1} Qπ(st,at)=Eri≥t,si>t∼E,ai>t∼π[Rt∣st,at](1)
Q 函数公式 (1) 详解:
- 变量含义:
- Qπ(st,at)Q^{\pi}(s_t, a_t)Qπ(st,at):在状态 sts_tst 下执行动作 ata_tat,之后遵循策略 π\piπ 的动作价值函数(期望累积奖励)
- sts_tst:时刻 ttt 的状态(状态向量)
- ata_tat:时刻 ttt 执行的动作(动作向量,在连续动作空间中为实值向量)
- π\piπ:策略,从状态到动作分布的映射
- RtR_tRt:从时刻 ttt 开始的累积回报(折扣奖励总和)
- E[⋅]\mathbb{E}[\cdot]E[⋅]:期望算子,对所有可能的未来轨迹取平均
- ri≥tr_{i \geq t}ri≥t:时刻 ttt 及之后的所有奖励
- si>ts_{i > t}si>t:时刻 ttt 之后的所有状态
- ai>t∼πa_{i > t} \sim \piai>t∼π:时刻 ttt 之后的动作从策略 π\piπ 中采样
- EEE:环境,产生状态转移和奖励
- 物理意义:Q 函数衡量在给定状态下执行某个动作的长期价值,是评估动作好坏的核心指标
- 用途:用于动作选择(选择 Q 值最大的动作)和策略优化(更新策略以最大化 Q 值)
1{}^{1}1 您可以在 https://goo.gl/J4PIAz 查看一些学习到的策略的视频
强化学习中的许多方法都利用了被称为贝尔曼方程的递归关系:
Qπ(st,at)=Ert,st+1∼E[r(st,at)+γEat+1∼π[Qπ(st+1,at+1)]](2) {Q}^{\pi }\left( {{s}_{t},{a}_{t}}\right) = {\mathbb{E}}_{{r}_{t},{s}_{t + 1} \sim E}\left\lbrack {r\left( {{s}_{t},{a}_{t}}\right) + \gamma {\mathbb{E}}_{{a}_{t + 1} \sim \pi }\left\lbrack {{Q}^{\pi }\left( {{s}_{t + 1},{a}_{t + 1}}\right) }\right\rbrack }\right\rbrack \tag{2} Qπ(st,at)=Ert,st+1∼E[r(st,at)+γEat+1∼π[Qπ(st+1,at+1)]](2)
随机策略的贝尔曼方程 (2) 详解:
- 变量含义:
- Qπ(st,at)Q^{\pi}(s_t, a_t)Qπ(st,at):在状态 sts_tst 下执行动作 ata_tat 的动作价值函数
- r(st,at)r(s_t, a_t)r(st,at):在状态 sts_tst 执行动作 ata_tat 获得的即时奖励(标量)
- γ\gammaγ:折扣因子,范围 [0,1][0, 1][0,1],控制未来奖励的重要性(γ\gammaγ 接近 1 时更重视长期奖励)
- st+1s_{t+1}st+1:执行动作 ata_tat 后的下一状态
- at+1∼πa_{t+1} \sim \piat+1∼π:下一时刻的动作从策略 π\piπ 中采样
- Qπ(st+1,at+1)Q^{\pi}(s_{t+1}, a_{t+1})Qπ(st+1,at+1):下一状态-动作对的动作价值
- Ert,st+1∼E\mathbb{E}_{r_t, s_{t+1} \sim E}Ert,st+1∼E:对环境随机性(状态转移和奖励)取期望
- Eat+1∼π\mathbb{E}_{a_{t+1} \sim \pi}Eat+1∼π:对策略随机性(动作选择)取期望
- 物理意义:当前状态-动作对的价值 = 即时奖励 + 折扣后的未来期望价值
- 问题:在连续动作空间中,内部期望 Eat+1∼π\mathbb{E}_{a_{t+1} \sim \pi}Eat+1∼π 需要对所有动作积分,计算复杂
如果目标策略是确定性的,我们可以将其描述为函数μ:S←A\mu : \mathcal{S} \leftarrow \mathcal{A}μ:S←A,从而避免内部期望:
Qμ(st,at)=Ert,st+1∼E[r(st,at)+γQμ(st+1,μ(st+1))](3) {Q}^{\mu }\left( {{s}_{t},{a}_{t}}\right) = {\mathbb{E}}_{{r}_{t},{s}_{t + 1} \sim E}\left\lbrack {r\left( {{s}_{t},{a}_{t}}\right) + \gamma {Q}^{\mu }\left( {{s}_{t + 1},\mu \left( {s}_{t + 1}\right) }\right) }\right\rbrack \tag{3} Qμ(st,at)=Ert,st+1∼E[r(st,at)+γQμ(st+1,μ(st+1))](3)
确定性策略的贝尔曼方程 (3) 详解:
- 变量含义:
- Qμ(st,at)Q^{\mu}(s_t, a_t)Qμ(st,at):在状态 sts_tst 下执行动作 ata_tat 的动作价值函数(确定性策略 μ\muμ)
- μ(s)\mu(s)μ(s):确定性策略函数,将状态 sss 映射到动作 aaa(直接输出动作,而非动作分布)
- r(st,at)r(s_t, a_t)r(st,at):即时奖励
- γ\gammaγ:折扣因子
- st+1s_{t+1}st+1:下一状态
- μ(st+1)\mu(s_{t+1})μ(st+1):确定性策略在下一状态输出的动作(无需采样)
- Qμ(st+1,μ(st+1))Q^{\mu}(s_{t+1}, \mu(s_{t+1}))Qμ(st+1,μ(st+1)):下一状态-动作对的动作价值
- Ert,st+1∼E\mathbb{E}_{r_t, s_{t+1} \sim E}Ert,st+1∼E:仅对环境随机性取期望(消除了对策略的期望)
- 关键优势:消除了公式 (2) 中的内部期望 Eat+1∼π\mathbb{E}_{a_{t+1} \sim \pi}Eat+1∼π,只需对环境随机性取平均,计算更简单
- 问题:随机策略的贝尔曼方程包含对策略的期望,在连续动作空间中难以计算
- 随机策略:Qπ(s,a)=E[r+γEa′∼πQπ(s′,a′)]Q^\pi(s,a) = \mathbb{E}[r + \gamma \mathbb{E}_{a' \sim \pi} Q^\pi(s', a')]Qπ(s,a)=E[r+γEa′∼πQπ(s′,a′)]
- 问题:内部期望 Ea′∼π\mathbb{E}_{a' \sim \pi}Ea′∼π 需要对所有动作积分,计算复杂
- 解决方案:使用确定性策略 μ(s)\mu(s)μ(s),直接输出动作,消除内部期望
- 确定性策略:μ(s)\mu(s)μ(s) 直接输出动作,而非动作分布
- 优势:消除了公式 (2) 中的内部期望(对策略的期望),只需对环境随机性取平均
- 简化后的公式:Qμ(s,a)=E[r+γQμ(s′,μ(s′))]Q^\mu(s,a) = \mathbb{E}[r + \gamma Q^\mu(s', \mu(s'))]Qμ(s,a)=E[r+γQμ(s′,μ(s′))]
- 离策略学习:
- 该期望仅取决于环境,可以使用由不同随机行为策略β\betaβ生成的转移来进行离策略学习Qμ{Q}^{\mu }Qμ
- 行为策略 β\betaβ 用于探索,目标策略 μ\muμ 用于学习
- 这是 DDPG 的理论基础:确定性策略使得 Q 学习在连续动作空间中可行
- 项目对应:
src/ddpg.py中的 Actor 网络输出确定性动作,Critic 网络使用此公式计算 TD 目标
Q学习(Watkins & Dayan 1992)是一种常用的离策略算法,它使用贪婪策略μ(s)=argmaxaQ(s,a)\mu \left( s\right) = \arg \mathop{\max }\limits_{a}Q\left( {s,a}\right)μ(s)=argamaxQ(s,a)。我们考虑由θQ{\theta }^{Q}θQ参数化的函数逼近器,通过最小化以下损失来优化它:
L(θQ)=Est∼ρβ,at∼β,rt∼E[(Q(st,at∣θQ)−yt)2](4) L\left( {\theta }^{Q}\right) = {\mathbb{E}}_{{s}_{t} \sim {\rho }^{\beta },{a}_{t} \sim \beta ,{r}_{t} \sim E}\left\lbrack {\left( Q\left( {s}_{t},{a}_{t} \mid {\theta }^{Q}\right) - {y}_{t}\right) }^{2}\right\rbrack \tag{4} L(θQ)=Est∼ρβ,at∼β,rt∼E[(Q(st,at∣θQ)−yt)2](4)
其中
yt=r(st,at)+γQ(st+1,μ(st+1)∣θQ).(5) {y}_{t} = r\left( {{s}_{t},{a}_{t}}\right) + {\gamma Q}\left( {{s}_{t + 1},\mu \left( {s}_{t + 1}\right) \mid {\theta }^{Q}}\right) . \tag{5} yt=r(st,at)+γQ(st+1,μ(st+1)∣θQ).(5)
Q 学习损失函数 (4) 和 TD 目标 (5) 详解:
- 公式 (4) 变量含义:
- L(θQ)L(\theta^Q)L(θQ):Critic 网络的损失函数(均方误差)
- θQ\theta^QθQ:Critic 网络(Q 网络)的参数
- Q(st,at∣θQ)Q(s_t, a_t | \theta^Q)Q(st,at∣θQ):Critic 网络对状态-动作对的 Q 值预测
- yty_tyt:TD 目标值(标签,固定值,不参与梯度计算)
- st∼ρβs_t \sim \rho^{\beta}st∼ρβ:状态从行为策略 β\betaβ 的状态访问分布中采样
- at∼βa_t \sim \betaat∼β:动作从行为策略 β\betaβ 中采样(用于探索)
- rt∼Er_t \sim Ert∼E:奖励由环境 EEE 产生
- ρβ\rho^{\beta}ρβ:行为策略 β\betaβ 的折扣状态访问分布
- 公式 (5) 变量含义:
- yty_tyt:TD(时序差分)目标值,用于训练 Critic 网络
- r(st,at)r(s_t, a_t)r(st,at):即时奖励
- γ\gammaγ:折扣因子
- st+1s_{t+1}st+1:下一状态
- μ(st+1)\mu(s_{t+1})μ(st+1):确定性策略在下一状态输出的动作
- Q(st+1,μ(st+1)∣θQ)Q(s_{t+1}, \mu(s_{t+1}) | \theta^Q)Q(st+1,μ(st+1)∣θQ):使用当前 Critic 网络参数计算的下一状态-动作对的 Q 值
- 物理意义:
- 公式 (4):最小化 Q 值预测与 TD 目标之间的均方误差
- 公式 (5):TD 目标 = 即时奖励 + 折扣后的未来 Q 值
- 注意:虽然 yty_tyt 依赖于 θQ\theta^QθQ,但在计算梯度时通常将其视为固定值(忽略其对 θQ\theta^QθQ 的依赖),这是 Q 学习的一个近似
过去,人们常常避免使用大型非线性函数逼近器来学习价值函数或动作价值函数,因为无法提供理论性能保证,且实际学习往往不稳定。最近,Mnih等人(2013,2015)对Q学习算法进行了改进,以便有效地将大型神经网络用作函数逼近器。他们的算法能够仅从像素输入学习玩雅达利游戏。为了扩展Q学习,他们引入了两项主要改进:经验回放缓冲区的使用,以及用于计算yt{y}_{t}yt的独立目标网络。我们在DDPG中采用了这些改进,并将在下一节解释其实现。
3 算法
无法将Q学习直接应用于连续动作空间,因为在连续空间中,找到贪婪策略需要在每个时间步对at{a}_{t}at进行优化;对于大型无约束函数逼近器和非平凡动作空间,这种优化在实践中速度太慢。相反,我们使用了基于DPG算法(Silver等人,2014)的 actor-critic 方法。
DPG算法维护一个参数化的actor函数μ(s∣θμ)\mu \left( {s \mid {\theta }^{\mu }}\right)μ(s∣θμ),该函数通过将状态确定性地映射到特定动作来指定当前策略。criticQ(s,a)Q\left( {s,a}\right)Q(s,a)使用Q学习中的贝尔曼方程进行学习。通过对起始分布JJJ的期望回报关于actor参数应用链式法则来更新actor:
∇θμJ≈Est∼ρβ[∇θμQ(s,a∣θQ)∣s=st,a=μ(st∣θμ)] {\nabla }_{{\theta }^{\mu }}J \approx {\mathbb{E}}_{{s}_{t} \sim {\rho }^{\beta }}\left\lbrack {{\nabla }_{{\theta }^{\mu }}Q\left( {s,a \mid {\theta }^{Q}}\right) {\left. \right| }_{s = {s}_{t},a = \mu \left( {{s}_{t} \mid {\theta }^{\mu }}\right) }}\right\rbrack ∇θμJ≈Est∼ρβ[∇θμQ(s,a∣θQ)∣s=st,a=μ(st∣θμ)]
=Est∼ρβ[∇aQ(s,a∣θQ)∣s=st,a=μ(st)∇θμμ(s∣θμ)∣s=st] = {\mathbb{E}}_{{s}_{t} \sim {\rho }^{\beta }}\left\lbrack {{\left. {\nabla }_{a}Q\left( s,a \mid {\theta }^{Q}\right) \right| }_{s = {s}_{t},a = \mu \left( {s}_{t}\right) }{\left. {\nabla }_{{\theta }_{\mu }}\mu \left( s \mid {\theta }^{\mu }\right) \right| }_{s = {s}_{t}}}\right\rbrack =Est∼ρβ[∇aQ(s,a∣θQ) s=st,a=μ(st)∇θμμ(s∣θμ) s=st]
确定性策略梯度公式详解:
- 变量含义:
- ∇θμJ\nabla_{\theta^{\mu}} J∇θμJ:期望回报 JJJ 对 Actor 参数 θμ\theta^{\mu}θμ 的梯度
- JJJ:期望回报,J=E[Q(s,μ(s∣θμ))]J = \mathbb{E}[Q(s, \mu(s|\theta^{\mu}))]J=E[Q(s,μ(s∣θμ))]
- θμ\theta^{\mu}θμ:Actor 网络(策略网络)的参数
- θQ\theta^QθQ:Critic 网络(Q 网络)的参数
- μ(s∣θμ)\mu(s | \theta^{\mu})μ(s∣θμ):Actor 网络,将状态 sss 映射到动作 aaa
- Q(s,a∣θQ)Q(s, a | \theta^Q)Q(s,a∣θQ):Critic 网络,估计状态-动作对的 Q 值
- ∇aQ(s,a∣θQ)\nabla_a Q(s, a | \theta^Q)∇aQ(s,a∣θQ):Q 函数对动作 aaa 的梯度(指示哪个方向的动作能提高 Q 值)
- ∇θμμ(s∣θμ)\nabla_{\theta^{\mu}} \mu(s | \theta^{\mu})∇θμμ(s∣θμ):策略对参数 θμ\theta^{\mu}θμ 的梯度(指示如何调整参数使输出动作朝提高 Q 值的方向移动)
- st∼ρβs_t \sim \rho^{\beta}st∼ρβ:状态从行为策略 β\betaβ 的状态访问分布中采样
- ∣s=st,a=μ(st)|_{s=s_t, a=\mu(s_t)}∣s=st,a=μ(st):在 s=sts=s_ts=st 和 a=μ(st)a=\mu(s_t)a=μ(st) 处求值
- 链式法则:∂Q∂θμ=∂Q∂a⋅∂a∂θμ\frac{\partial Q}{\partial \theta^{\mu}} = \frac{\partial Q}{\partial a} \cdot \frac{\partial a}{\partial \theta^{\mu}}∂θμ∂Q=∂a∂Q⋅∂θμ∂a
- 第一部分:Q 函数对动作的梯度(方向指导)
- 第二部分:策略对参数的梯度(参数调整)
- 问题:如何更新确定性策略 μ(s∣θμ)\mu(s|\theta^\mu)μ(s∣θμ) 以最大化期望回报?
- 需要计算 ∇θμJ\nabla_{\theta^\mu} J∇θμJ,其中 J=E[Q(s,μ(s∣θμ))]J = \mathbb{E}[Q(s, \mu(s|\theta^\mu))]J=E[Q(s,μ(s∣θμ))]
- 直接计算需要对状态分布积分,难以处理
- 解决方案:使用链式法则,将策略梯度分解为两部分
- 目标:最大化期望回报 JJJ,对 actor 参数 θμ\theta^{\mu}θμ 求梯度
- 链式法则:∂Q∂θμ=∂Q∂a⋅∂a∂θμ\frac{\partial Q}{\partial \theta^{\mu}} = \frac{\partial Q}{\partial a} \cdot \frac{\partial a}{\partial \theta^{\mu}}∂θμ∂Q=∂a∂Q⋅∂θμ∂a
- ∇aQ(s,a)\nabla_a Q(s,a)∇aQ(s,a):Q 函数对动作的梯度(指示哪个方向的动作能提高 Q 值)
- ∇θμμ(s)\nabla_{\theta^{\mu}} \mu(s)∇θμμ(s):策略对参数的梯度(指示如何调整参数使输出动作朝提高 Q 值的方向移动)
- 最终公式:∇θμJ=E[∇aQ(s,a)∣a=μ(s)⋅∇θμμ(s)]\nabla_{\theta^\mu} J = \mathbb{E}[\nabla_a Q(s,a)|_{a=\mu(s)} \cdot \nabla_{\theta^\mu} \mu(s)]∇θμJ=E[∇aQ(s,a)∣a=μ(s)⋅∇θμμ(s)]
- 物理意义:
- 通过调整策略参数,使输出动作朝提高 Q 值的方向移动,从而最大化期望回报
- Q 函数提供"方向指导",策略网络提供"参数调整"
- 离策略学习:
- 使用行为策略 β\betaβ 的状态分布 ρβ\rho^{\beta}ρβ,而非当前策略 μ\muμ 的分布
- 可以使用历史经验,提高数据效率
- 项目对应:
src/ddpg.py中的DDPGAgent.update()方法使用此公式更新 Actor 网络
Silver等人(2014)证明,这就是策略梯度,即策略性能的梯度。这是 DDPG 的理论基础。
与Q学习一样,引入非线性函数逼近器意味着不再保证收敛。然而,对于在大型状态空间中进行学习和泛化,此类逼近器似乎必不可少。NFQCA(Hafner & Riedmiller 2011)使用与DPG相同的更新规则,但采用神经网络函数逼近器,它依靠批处理学习来保证稳定性,这对于大型网络而言是难以处理的。NFQCA的小批量版本(为扩展到大型网络而无需在每次更新时重置策略)与原始DPG等效,我们在此将其作为对比。我们的贡献是对DPG进行改进(受DQN成功的启发),使其能够使用神经网络函数逼近器在大型状态和动作空间中进行在线学习。我们将此算法称为深度DPG(DDPG,算法1)。
2{}^{2}2在实践中,如同在策略梯度实现中通常所做的那样,我们忽略了状态访问分布ρβ{\rho }^{\beta }ρβ中的折扣。
将神经网络用于强化学习时面临的一个挑战是,大多数优化算法假设样本是独立同分布的。显然,当样本是通过在环境中顺序探索生成时,这一假设不再成立。此外,为了有效利用硬件优化,必须使用小批量学习而非在线学习。
与DQN一样,我们使用经验回放缓冲区来解决这些问题。经验回放缓冲区是一个有限大小的缓存R\mathcal{R}R。根据探索策略从环境中采样转移,并将元组(st,at,rt,st+1)\left( {{s}_{t},{a}_{t},{r}_{t},{s}_{t + 1}}\right)(st,at,rt,st+1)存储在经验回放缓冲区中。当缓冲区满时,丢弃最早的样本。在每个时间步,通过从缓冲区中均匀采样小批量数据来更新actor和critic。由于DDPG是一种离策略算法,经验回放缓冲区可以很大,使算法能够从一组不相关的转移中学习。
经验回放详解:
- 问题:神经网络训练需要独立同分布(i.i.d.)样本,但强化学习中的样本是时序相关的
- 连续的状态转移 (st,at,rt,st+1)(s_t, a_t, r_t, s_{t+1})(st,at,rt,st+1) 高度相关
- 直接使用这些样本训练会导致梯度估计方差大,训练不稳定
- 样本分布会随策略变化而变化,违反 i.i.d. 假设
- 解决方案:经验回放缓冲区
- 存储:将转移 (st,at,rt,st+1)(s_t, a_t, r_t, s_{t+1})(st,at,rt,st+1) 存储到缓冲区 D\mathcal{D}D
- 采样:随机采样小批量数据,打破时间相关性
- 更新:使用采样的数据更新网络
- 缓冲区管理:
- 大小:通常 10610^6106,平衡存储成本和样本多样性
- 策略:FIFO(先进先出),满时自动丢弃最旧样本
- 采样:均匀随机采样,简单有效(可扩展为优先经验回放)
- 优势:
- 打破时间相关性:随机采样使样本近似独立
- 重复利用历史经验:每个经验可用于多次更新,提高数据效率
- 支持离策略学习:支持使用旧策略生成的经验,适合 DDPG 等离策略算法
- 与在线学习的对比:
- 在线学习:每步只使用当前经验,数据效率低
- 经验回放:重复利用历史经验,数据效率高
- 项目对应:
src/ddpg.py中的memory = deque(maxlen=DDPG_MEMORY_SIZE)
使用神经网络直接实现Q学习(公式4)在许多环境中被证明是不稳定的。由于正在更新的网络Q(s,a∣θQ)Q\left( {s,a \mid {\theta }^{Q}}\right)Q(s,a∣θQ)也用于计算目标值(公式5),Q更新容易发散。我们的解决方案类似于(Mnih等人,2013)中使用的目标网络,但针对演员-评论家进行了修改,并使用"软"目标更新,而非直接复制权重。我们创建了演员网络和评论家网络的副本,分别为Q′(s,a∣θQ′){Q}^{\prime }\left( {s,a \mid {\theta }^{{Q}^{\prime }}}\right)Q′(s,a∣θQ′)和μ′(s∣θμ′){\mu }^{\prime }\left( {s \mid {\theta }^{{\mu }^{\prime }}}\right)μ′(s∣θμ′),用于计算目标值。然后,通过让这些目标网络缓慢跟踪学习网络来更新其权重:θ′←τθ+(1− τ)θ′{\theta }^{\prime } \leftarrow {\tau \theta } + (1 - \; \tau ){\theta }^{\prime }θ′←τθ+(1−τ)θ′,其中τ≪1\tau \ll 1τ≪1。
软更新公式详解:
- 变量含义:
- θ′\theta'θ′:目标网络的参数(θQ′\theta^{Q'}θQ′ 或 θμ′\theta^{\mu'}θμ′)
- θ\thetaθ:在线网络的参数(θQ\theta^QθQ 或 θμ\theta^{\mu}θμ)
- τ\tauτ:软更新系数(混合比例),通常 τ=0.001\tau = 0.001τ=0.001(≪1\ll 1≪1)
- 更新公式:
- 目标 Critic:θQ′←τθQ+(1−τ)θQ′\theta^{Q'} \leftarrow \tau \theta^Q + (1-\tau) \theta^{Q'}θQ′←τθQ+(1−τ)θQ′
- 目标 Actor:θμ′←τθμ+(1−τ)θμ′\theta^{\mu'} \leftarrow \tau \theta^{\mu} + (1-\tau) \theta^{\mu'}θμ′←τθμ+(1−τ)θμ′
- 物理意义:每步只更新目标网络的一小部分(τ\tauτ 比例),使其缓慢跟踪在线网络
- 优势:目标值平滑变化,避免"移动目标"问题,提高训练稳定性
- 与硬更新对比:
- 硬更新(DQN):θ′←θ\theta' \leftarrow \thetaθ′←θ(每隔 CCC 步直接复制)
- 软更新(DDPG):每步都更新,但只更新一小部分,更平滑这意味着目标值被限制为缓慢变化,从而极大地提高了学习的稳定性。这一简单改动将学习动作值函数这一相对不稳定的问题,转变为更接近监督学习的情况,而监督学习存在稳健的解决方案。我们发现,为了获得稳定的目标yi{y}_{i}yi,以便在不发散的情况下持续训练评论家,同时需要目标μ′{\mu }^{\prime }μ′和Q′{Q}^{\prime }Q′。这可能会减慢学习速度,因为目标网络延迟了价值估计的传播。然而,在实践中我们发现,学习的稳定性带来的好处远远超过了这一缺点。
软更新目标网络详解:
- 问题:直接使用在线网络计算 TD 目标会导致训练不稳定
- 目标值随网络更新快速变化,形成"移动目标"问题
- 在线网络 Q(s,a∣θ)Q(s,a|\theta)Q(s,a∣θ) 不断更新,同时用于计算目标
- 目标值快速变化导致训练发散
- 解决方案:使用目标网络计算稳定的目标值
- 目标网络:Q′(s,a∣θQ′){Q}^{\prime}(s,a|\theta^{Q'})Q′(s,a∣θQ′) 和 μ′(s∣θμ′){\mu}^{\prime}(s|\theta^{\mu'})μ′(s∣θμ′)
- 目标值:yt=rt+γQ′(st+1,μ′(st+1)∣θQ′)y_t = r_t + \gamma Q'(s_{t+1}, \mu'(s_{t+1})|\theta^{Q'})yt=rt+γQ′(st+1,μ′(st+1)∣θQ′)
- 软更新:θ′←τθ+(1−τ)θ′{\theta }^{\prime } \leftarrow {\tau \theta } + (1 - \tau ){\theta }^{\prime }θ′←τθ+(1−τ)θ′,其中 τ≪1\tau \ll 1τ≪1(通常 τ=0.001\tau = 0.001τ=0.001)
- 软更新 vs 硬更新:
- 硬更新(DQN):每隔 CCC 步,直接复制 θ′←θ\theta' \leftarrow \thetaθ′←θ
- 软更新(DDPG):每步都更新,但只更新一小部分:θ′←0.001⋅θ+0.999⋅θ′\theta' \leftarrow 0.001 \cdot \theta + 0.999 \cdot \theta'θ′←0.001⋅θ+0.999⋅θ′
- 优势:目标值平滑变化,训练更稳定
- 为什么需要两个目标网络:
- 目标 Critic 计算稳定的 Q 目标值
- 目标 Actor 计算稳定的动作
- 两者缺一不可,共同保证目标值的稳定性
- 权衡:稳定性带来的好处远大于速度损失
- 项目对应:
src/ddpg.py中的target_actor、target_critic和_soft_update方法
当从低维特征向量观测中学习时,观测的不同分量可能具有不同的物理单位(例如位置与速度),且其范围可能因环境而异。这会使网络难以有效学习,并可能难以找到能在具有不同状态值尺度的环境中泛化的超参数。
解决此问题的一种方法是手动缩放特征,使其在不同环境和单位间处于相似范围。我们通过采用深度学习中的最新技术——批归一化(Ioffe & Szegedy,2015)来解决此问题。该技术将小批量样本中每个维度归一化,使其具有单位均值和方差。此外,它还维护均值和方差的移动平均值,用于测试期间(在我们的情况下为探索或评估期间)的归一化。在深度网络中,通过确保每一层接收白化输入,批归一化用于最小化训练期间的协变量偏移。在低维情况下,我们在状态输入以及μ\muμ网络的所有层和QQQ网络中动作输入之前的所有层上使用了批归一化(网络详情见补充材料)。借助批归一化,我们能够在具有不同单位类型的许多不同任务上有效学习,而无需手动确保单位在设定范围内。
批归一化详解:
- 问题:不同状态分量可能有不同的物理单位和范围
- 例如:位置(米,范围 0-10)vs 速度(米/秒,范围 -5 到 5)vs 角度(度,范围 -180 到 180)
- 不同单位和范围导致网络难以学习,梯度可能在不同维度上差异很大
- 需要手动缩放特征,费时费力且容易出错
- 解决方案:批归一化(Batch Normalization)
- 归一化公式:x^=x−μσ2+ϵ\hat{x} = \frac{x - \mu}{\sqrt{\sigma^2 + \epsilon}}x^=σ2+ϵx−μ
- 变量含义:
- x^\hat{x}x^:归一化后的特征值
- xxx:原始特征值(输入)
- μ\muμ:批次中该维度的均值,μ=1B∑i=1Bxi\mu = \frac{1}{B} \sum_{i=1}^{B} x_iμ=B1∑i=1Bxi(BBB 为批次大小)
- σ2\sigma^2σ2:批次中该维度的方差,σ2=1B∑i=1B(xi−μ)2\sigma^2 = \frac{1}{B} \sum_{i=1}^{B} (x_i - \mu)^2σ2=B1∑i=1B(xi−μ)2
- ϵ\epsilonϵ:小的常数(如 10−510^{-5}10−5),防止除零
- 结果:归一化后的特征均值为 0,方差为 1
- 移动平均:维护均值和方差的移动平均值,用于测试时的归一化
- 训练时:使用当前批次的统计量
- 测试时:使用移动平均统计量,保证一致性
- 可学习参数:引入可学习的缩放 γ\gammaγ 和平移 β\betaβ 参数
- 完整公式:y=γx^+βy = \gamma \hat{x} + \betay=γx^+β,增加表达能力,允许网络学习不归一化
- 应用位置:
- 状态输入:归一化状态特征,确保不同单位在相似范围
- Actor 网络的所有层:确保每层输入归一化,减少内部协变量偏移
- Critic 网络中动作输入之前的所有层:归一化状态特征(动作输入后不归一化)
- 优势:
- 无需手动缩放:自动处理不同单位和范围
- 提高训练稳定性:减少内部协变量偏移,梯度更稳定
- 提高泛化能力:使网络对不同尺度的输入更鲁棒
- 允许更大的学习率:归一化后支持更大的学习率,加速训练
- 与层归一化的对比:
- 批归一化:基于批次统计,需要批次大小足够大
- 层归一化:基于单个样本,更适合小批次或在线学习
- 项目实现:可在网络中添加 BatchNorm 层(当前实现未使用,但可扩展)
在连续动作空间中学习的一个主要挑战是探索。DDPG等离策略算法的一个优势是,我们可以将探索问题与学习算法独立处理。我们通过向演员策略添加从噪声过程N\mathcal{N}N采样的噪声,构建了探索策略μ′{\mu }^{\prime }μ′。
μ′(st)=μ(st∣θtμ)+N(7) {\mu }^{\prime }\left( {s}_{t}\right) = \mu \left( {{s}_{t} \mid {\theta }_{t}^{\mu }}\right) + \mathcal{N} \tag{7} μ′(st)=μ(st∣θtμ)+N(7)
探索策略公式 (7) 详解:
- 变量含义:
- μ′(st)\mu'(s_t)μ′(st):探索策略,在状态 sts_tst 下执行的动作(带噪声)
- μ(st∣θtμ)\mu(s_t | \theta_t^{\mu})μ(st∣θtμ):确定性策略(Actor 网络)在状态 sts_tst 下输出的动作
- θtμ\theta_t^{\mu}θtμ:时刻 ttt 的 Actor 网络参数
- N\mathcal{N}N:探索噪声,从噪声过程采样(可以是高斯噪声或 OU 噪声)
- 物理意义:在确定性动作基础上添加噪声,平衡探索和利用
- 噪声类型:
- 高斯噪声:N∼N(0,σ2)\mathcal{N} \sim \mathcal{N}(0, \sigma^2)N∼N(0,σ2),每步独立采样,简单有效
- OU 噪声:时间相关的噪声过程,适合有惯性的物理系统
- OU 过程:dxt=θ(μ−xt)dt+σdWtdx_t = \theta(\mu - x_t)dt + \sigma dW_tdxt=θ(μ−xt)dt+σdWt
- 参数:θ=0.15\theta = 0.15θ=0.15(回归系数),σ=0.2\sigma = 0.2σ=0.2(扩散系数)
- 特点:均值回归,产生更平滑的探索轨迹
N\mathcal{N}N可以根据环境进行选择。如补充材料中所述,我们使用奥恩斯坦-乌伦贝克过程(Uhlenbeck & Ornstein,1930)生成时间相关的探索噪声,以提高具有惯性的物理控制问题中的探索效率(类似的自相关噪声应用在(Wawrzyński,2015)中被提出)。
连续动作空间的探索策略:
- 问题:确定性策略输出固定动作,缺乏探索
- 如果策略总是输出相同动作,无法探索新的状态-动作对
- 需要添加噪声来探索
- 解决方案:在确定性动作基础上添加噪声
- 探索策略:μ′(st)=μ(st)+N\mu'(s_t) = \mu(s_t) + \mathcal{N}μ′(st)=μ(st)+N
- μ(st)\mu(s_t)μ(st):确定性策略输出
- N\mathcal{N}N:探索噪声(高斯噪声或 OU 噪声)
- 噪声类型:
- 高斯噪声:简单,每步独立采样,适合大多数情况
- OU 噪声:时间相关,均值回归,适合有惯性的物理系统
- 离策略优势:探索策略与学习策略可以不同,更灵活
- 项目实现:
src/ddpg.py中的act方法使用高斯噪声,可扩展为 OU 噪声
4 结果
我们构建了不同难度级别的模拟物理环境来测试算法,涵盖经典控制(cartpole)、接触与操作(抓取、击球)、以及 locomotion(猎豹、双足行走)等场景。
DDPG 实验环境详解:
- 经典控制:倒立摆、小车杆等简单控制任务
- 状态空间维度低(通常 < 10)
- 动作空间维度低(通常 1-2)
- 适合验证算法基本功能
- 接触与操作:抓取、击球等需要精确控制的任务
- 涉及接触动力学,非光滑
- 需要精确的动作控制
- 测试算法的精确控制能力
- Locomotion:猎豹、双足行走等复杂运动任务
- 高维状态和动作空间
- 欠驱动系统,难以控制
- 需要学习复杂的运动模式
- 项目对应:车辆路径跟踪任务属于连续控制问题,适合使用 DDPG
- 状态:横向误差、航向误差等(低维)
- 动作:转向角(连续,1 维)
- 奖励:基于跟踪误差和控制平滑性
算法1 DDPG算法(排版版)
算法流程详解:
-
初始化
- 初始化评论家网络 Q(s,a∣θQ)Q(s,a\mid\theta^{Q})Q(s,a∣θQ) 和演员网络 μ(s∣θμ)\mu(s\mid\theta^{\mu})μ(s∣θμ) 的权重(随机初始化)
- 初始化目标网络:Q′,μ′{Q}^{\prime},{\mu }^{\prime}Q′,μ′,权重从在线网络复制:θQ′ ← θQ{\theta }^{{Q}^{\prime }}\!\leftarrow\!{\theta }^{Q}θQ′←θQ,θμ′ ← θμ{\theta }^{{\mu }^{\prime }}\!\leftarrow\!{\theta }^{\mu}θμ′←θμ
- 初始化经验回放缓冲区 RRR(空队列,最大容量通常为 10610^6106)
-
每个回合 1…M1\ldots M1…M(训练 MMM 个回合):
-
初始化探索噪声过程N\mathcal{N}N(如 OU 噪声,参数 θ=0.15,σ=0.2\theta=0.15, \sigma=0.2θ=0.15,σ=0.2);接收初始状态s1{s}_{1}s1(从环境重置获得)
-
对每个时间步 t=1…Tt=1\ldots Tt=1…T(每个回合最多 TTT 步):
步骤 1:选择动作(带探索)
- 选动作:at=μ(st∣θμ)+Nt{a}_{t}=\mu(s_{t}\mid\theta^{\mu})+{\mathcal{N}}_{t}at=μ(st∣θμ)+Nt
- 使用在线 Actor 网络输出确定性动作
- 添加探索噪声(OU 噪声或高斯噪声)
- 在项目实现中,通常使用高斯噪声,噪声标准差随训练衰减
步骤 2:执行动作并存储经验
- 执行动作 at{a}_tat,环境返回奖励 rt{r}_{t}rt 和下一状态 st+1{s}_{t+1}st+1
- 将转移元组 (st,at,rt,st+1)\left(s_{t},a_{t},r_{t},s_{t+1}\right)(st,at,rt,st+1) 存入经验回放缓冲区 RRR
- 如果缓冲区已满,自动丢弃最旧的样本(FIFO)
步骤 3:从经验回放采样并计算目标值
- 从缓冲区 RRR 中均匀随机采样小批量数据 (si,ai,ri,si+1)\left(s_{i},a_{i},r_{i},s_{i+1}\right)(si,ai,ri,si+1)(批量大小通常为 64 或 256)
- 计算 TD 目标值:
yi=ri+γ Q′ (si+1,μ′ (si+1∣θμ′)∣θQ′) y_{i}=r_{i}+\gamma\,{Q}^{\prime}\!\left(s_{i+1},{\mu }^{\prime}\!\left(s_{i+1}\mid{\theta }^{{\mu }^{\prime }}\right)\mid{\theta }^{{Q}^{\prime }}\right) yi=ri+γQ′(si+1,μ′(si+1∣θμ′)∣θQ′)- 使用目标网络计算稳定的目标值
- γ\gammaγ 是折扣因子(通常 0.99)
- 注意:使用目标 Actor 计算下一状态的动作,使用目标 Critic 计算 Q 值
步骤 4:更新 Critic(评论家)网络
- 最小化均方误差损失:1N∑i(yi−Q(si,ai∣θQ))2\frac{1}{N}\sum_{i}(y_{i}-Q(s_{i},a_{i}\mid\theta^{Q}))^{2}N1∑i(yi−Q(si,ai∣θQ))2
- yiy_iyi 是目标值(固定,不参与梯度计算)
- Q(si,ai∣θQ)Q(s_i, a_i|\theta^Q)Q(si,ai∣θQ) 是在线 Critic 网络的预测值
- 使用梯度下降更新 θQ\theta^QθQ(学习率通常为 10−310^{-3}10−3)
步骤 5:更新 Actor(演员)网络
- 使用确定性策略梯度更新:
∇θμJ≈1N∑i∇aQ(s,a∣θQ)∣s=si,a=μ(si) ∇θμμ(s∣θμ)∣si {\nabla }_{{\theta }^{\mu }}J \approx \frac{1}{N}\sum_{i}{\nabla }_{a}Q(s,a\mid\theta^{Q})\big|_{s=s_{i},a=\mu(s_{i})}\,{\nabla }_{{\theta }^{\mu }}\mu(s\mid\theta^{\mu})\big|_{s_{i}} ∇θμJ≈N1i∑∇aQ(s,a∣θQ) s=si,a=μ(si)∇θμμ(s∣θμ) si- 计算 Q 函数对动作的梯度(在 a=μ(si)a=\mu(s_i)a=μ(si) 处)
- 计算策略对参数的梯度
- 两者相乘,得到策略参数的梯度
- 使用梯度上升更新 θμ\theta^{\mu}θμ(学习率通常为 10−410^{-4}10−4,比 Critic 小)
步骤 6:软更新目标网络
- 缓慢更新目标网络权重:
θQ′←τθQ+(1−τ)θQ′,θμ′←τθμ+(1−τ)θμ′ {\theta }^{{Q}^{\prime }} \leftarrow \tau {\theta }^{Q} + (1-\tau){\theta }^{{Q}^{\prime }},\quad {\theta }^{{\mu }^{\prime }} \leftarrow \tau {\theta }^{\mu } + (1-\tau){\theta }^{{\mu }^{\prime }} θQ′←τθQ+(1−τ)θQ′,θμ′←τθμ+(1−τ)θμ′- τ≪1\tau \ll 1τ≪1(通常 τ=0.001\tau = 0.001τ=0.001)
- 每步都更新,但只更新一小部分
- 使目标值平滑变化,提高训练稳定性
- 选动作:at=μ(st∣θμ)+Nt{a}_{t}=\mu(s_{t}\mid\theta^{\mu})+{\mathcal{N}}_{t}at=μ(st∣θμ)+Nt
-
-
重复步骤 2,直到达到最大回合数或收敛
关键要点:
- 离策略学习:可以使用历史经验,提高数据效率
- 双网络架构:在线网络用于学习和探索,目标网络用于计算稳定目标
- 软更新:目标网络缓慢跟踪在线网络,避免训练不稳定
- 探索策略:在确定性动作基础上添加噪声,平衡探索和利用
高维任务(抓取器)、接触任务(冰球击打)、locomotion 任务(猎豹等)均使用 MuJoCo 进行模拟,动作多为关节扭矩。图1展示部分环境;补充材料含详情与策略视频。🖼️
在所有任务中,实验同时覆盖低维状态描述(如关节角度和位置)与高维渲染图。为使高维环境近似完全可观测,引入动作重复机制:每个时间步推进模拟3帧,重复执行同一动作并渲染,从而获得包含3帧RGB的9通道特征,用于估计速度信息。帧下采样至64×64,8位RGB转换为浮点并缩放至[0,1]\left\lbrack {0,1}\right\rbrack[0,1]。网络结构与超参数细节见补充材料。即便在像素输入下,配合 批归一化 + 软目标网络,策略仍保持稳定收敛。
我们在训练期间定期评估策略,测试时不加入探索噪声。图2展示了部分环境的性能曲线。我们还报告了移除算法组件(即 目标网络 或 批归一化)后的结果。为了在所有任务中表现良好,这两项改进都是必要的。特别是,移除目标网络会显著退化性能,凸显 软更新 的关键作用。
令人惊讶的是,在一些较简单的任务中,从像素学习策略的速度与使用低维状态描述符学习的速度一样快。这可能是由于动作重复简化了问题。也可能是卷积层提供了易于分离的状态空间表示,使高层网络能够快速学习。
表1总结了DDPG在所有环境中的性能(结果为5次重复实验的平均值)。我们使用两个基线对分数进行归一化。第一个基线是朴素策略的平均回报,该策略从有效动作空间的均匀分布中采样动作。第二个基线是iLQG(Todorov和Li,2005),这是一种基于规划的求解器,可完全访问底层物理模型及其导数。我们将分数归一化,使朴素策略的平均得分为0,iLQG的平均得分为1。DDPG能够在许多任务上学习到良好的策略,并且在许多情况下,即使直接从像素学习,部分重复实验学习到的策略也优于iLQG找到的策略。
学习准确的价值估计可能具有挑战性。例如,Q学习容易高估价值(Hasselt,2010)。我们通过比较训练后QQQ估计的价值与测试回合中观察到的真实回报,实证检验了DDPG的估计。图3显示,在简单任务中,DDPG能准确估计回报,没有系统性偏差。对于较难的任务,Q估计较差,但DDPG仍然能够学习到良好的策略。
为了证明我们方法的通用性,我们还纳入了Torcs(一款赛车游戏),其动作包括加速、刹车和转向。Torcs先前已被用作其他策略学习方法的测试平台(Koutník等人,2014b)。我们对物理任务使用了相同的网络架构和学习算法超参数,但由于涉及的时间尺度差异很大,修改了用于探索的噪声过程。在低维和像素输入下,部分重复实验能够学习到合理的策略,能够完成赛道循环,尽管其他重复实验未能学习到有意义的策略。
5 相关工作
原始DPG论文使用瓦片编码和线性函数逼近器在玩具问题上评估了该算法。它证明了离策略DPG在数据效率上优于在策略和离策略随机演员评论家算法。它还解决了一个更具挑战性的任务,即多关节章鱼臂必须用肢体的任何部分击中目标。然而,该论文并未像我们这里所做的那样,证明将该方法扩展到大型高维观测空间的能力。
人们通常认为,标准的策略搜索方法(如本研究中探索的那些方法)过于脆弱,无法扩展到复杂问题(Levine et al. 2015)。标准策略搜索
表1要点:训练≤250万步,DDPG(回放+软目标) 在多数任务超越随机基线,且若干场景下 像素端到端版本也优于规划器,验证核心稳定化组件对高维连续控制的有效性。📊
| 环境 | Rav,lowd{R}_{av,lowd}Rav,lowd | Rbest,lowd{R}_{best,lowd}Rbest,lowd | Rav,pix{R}_{av,pix}Rav,pix | Rbest,pix{R}_{best,pix}Rbest,pix | Rav,cntrl{R}_{av,cntrl}Rav,cntrl | Rbest,cntrl{R}_{best,cntrl}Rbest,cntrl |
|---|---|---|---|---|---|---|
| 方块世界1 | 1.156 | 1.511 | 0.466 | 1.299 | -0.080 | 1.260 |
| 三维方块世界 | 0.340 | 0.705 | 0.889 | 2.225 | -0.139 | 0.658 |
| 加拿大 | 0.303 | 1.735 | 0.176 | 0.688 | 0.125 | 1.157 |
| 二维加拿大 | 0.400 | 0.978 | -0.285 | 0.119 | -0.045 | 0.701 |
| 购物车 | 0.938 | 1.336 | 1.096 | 1.258 | 0.343 | 1.216 |
| 倒立摆 | 0.844 | 1.115 | 0.482 | 1.138 | 0.244 | 0.755 |
| 倒立摆平衡 | 0.951 | 1.000 | 0.335 | 0.996 | -0.468 | 0.528 |
| 平行双摆倒立摆 | 0.549 | 0.900 | 0.188 | 0.323 | 0.197 | 0.572 |
| 串联双摆倒立摆 | 0.272 | 0.719 | 0.195 | 0.642 | 0.143 | 0.701 |
| 串联三摆倒立摆 | 0.736 | 0.946 | 0.412 | 0.427 | 0.583 | 0.942 |
| 猎豹 | 0.903 | 1.206 | 0.457 | 0.792 | -0.008 | 0.425 |
| 固定机械臂 | 0.849 | 1.021 | 0.693 | 0.981 | 0.259 | 0.927 |
| 双固定机械臂 | 0.924 | 0.996 | 0.872 | 0.943 | 0.290 | 0.995 |
| 单固定机械臂 | 0.954 | 1.000 | 0.827 | 0.995 | 0.620 | 0.999 |
| gripper | 0.655 | 0.972 | 0.406 | 0.790 | 0.461 | 0.816 |
| 随机 gripper | 0.618 | 0.937 | 0.082 | 0.791 | 0.557 | 0.808 |
| 困难猎豹 | 1.311 | 1.990 | 1.204 | 1.431 | -0.031 | 1.411 |
| 跳行者 | 0.676 | 0.936 | 0.112 | 0.924 | 0.078 | 0.917 |
| hyq | 0.416 | 0.722 | 0.234 | 0.672 | 0.198 | 0.618 |
| 移动 gripper | 0.474 | 0.936 | 0.480 | 0.644 | 0.416 | 0.805 |
| 钟摆 | 0.946 | 1.021 | 0.663 | 1.055 | 0.099 | 0.951 |
| 机械臂 | 0.720 | 0.987 | 0.194 | 0.878 | 0.231 | 0.953 |
| 三维固定目标机械臂 | 0.585 | 0.943 | 0.453 | 0.922 | 0.204 | 0.631 |
| 三维随机目标机械臂 | 0.467 | 0.739 | 0.374 | 0.735 | -0.046 | 0.158 |
| 单机械臂 | 0.981 | 1.102 | 1.000 | 1.083 | 1.010 | 1.083 |
| 二维步行者 | 0.705 | 1.573 | 0.944 | 1.476 | 0.393 | 1.397 |
| torcs | -393.385 | 1840.036 | -401.911 | 1876.284 | -911.034 | 1961.600 |
最近关于无模型策略搜索的研究表明,其可能并不像之前认为的那样脆弱。Wawrzyński(2009)、Wawrzyński和Tanwani(2013)在带有经验回放缓冲区的演员-评论家框架中训练了随机策略。与我们的研究同时,Balduzzi和Ghifary(2015)扩展了DPG算法,引入了一个“偏差器”网络,该网络显式学习∂Q/∂a\partial Q/\partial a∂Q/∂a。然而,他们仅在两个低维领域进行了训练。Heess等人(2015)提出了SVG(0),它也使用Q评论家但学习随机策略。DPG可被视为SVG(0)的确定性极限。我们在此描述的用于扩展DPG的技术,通过使用重参数化技巧(Heess等人2015,Schulman等人2015a),同样适用于随机策略。
另一种方法是信任区域策略优化(TRPO)(Schulman等人2015b),它直接构建随机神经网络策略,无需将问题分解为最优控制和监督阶段。该方法通过对策略参数进行精心选择的更新,限制更新以防止新策略与现有策略偏离过远,从而使回报产生近乎单调的改进。这种方法不需要学习动作价值函数,并且(可能因此)数据效率显著较低。
为应对演员-评论家方法的挑战,最近的引导式策略搜索(GPS)算法研究(例如Levine等人2015)将问题分解为三个相对容易解决的阶段:首先,利用全状态观测在一条或多条标称轨迹周围创建动力学的局部线性近似;然后,使用最优控制沿这些轨迹找到局部线性最优策略;最后,通过监督学习训练一个复杂的非线性策略(如深度神经网络)来复现优化轨迹的状态-动作映射。
这种方法具有包括数据效率在内的多项优势,并已成功应用于多种使用视觉的真实世界机器人操作任务。在这些任务中,GPS使用与我们类似的卷积策略网络,但有两个显著例外:1. 它使用空间softmax将视觉特征的维度降低为每个特征图的单个(x,y)\left( {x,y}\right)(x,y)坐标;2. 策略在网络的第一个全连接层还接收关于机器人配置的直接低维状态信息。这两者都可能提高算法的能力和数据效率,并且可以很容易地在DDPG框架中加以利用。
PILCO(Deisenroth和Rasmussen 2011)使用高斯过程学习非参数化的概率动力学模型。利用这个学习到的模型,PILCO计算解析策略梯度,并在多个控制问题中实现了令人印象深刻的数据效率。然而,由于计算需求高,PILCO“对于高维问题不切实际”(Wahlström等人2015)。看来深度函数近似器是将强化学习扩展到大型高维领域的最有前景的方法。
Wahlström等人(2015)使用深度动态模型网络结合模型预测控制,从像素输入解决了钟摆摆起任务。他们训练了一个可微分的前向模型,并将目标状态编码到学习到的 latent 空间中。他们通过对学习到的模型使用模型预测控制来找到到达目标的策略。然而,这种方法仅适用于可以向算法展示目标状态的领域。
最近,进化方法已被用于通过压缩权重参数化(Koutník等人2014a)或无监督学习(Koutník等人2014b)来降低进化权重的维度,从而从像素中学习Torcs的竞争策略。目前尚不清楚这些方法对其他问题的泛化能力如何。
6 结论
这项工作结合了深度学习和强化学习的最新进展,形成了一种算法,该算法能稳健地解决各种具有连续动作空间领域的挑战性问题,即使使用原始像素作为观测输入。与大多数强化学习算法一样,非线性函数近似器的使用使任何收敛保证无效;然而,我们的实验结果表明,无需在环境之间进行任何修改即可实现稳定学习。
有趣的是,我们所有的实验使用的经验步数都远少于DQN在Atari领域学习找到解决方案所需的步数。我们研究的几乎所有问题都在250万步经验内得到解决(通常远少于此),这比
DQN获得良好Atari解决方案所需的步数少20倍。这表明,给定更多的模拟时间,DDPG可能会解决比这里考虑的更困难的问题。
我们的方法仍存在一些局限性。最值得注意的是,与大多数无模型强化学习方法一样,DDPG需要大量的训练回合才能找到解决方案。然而,我们认为,稳健的无模型方法可能是更大系统的重要组成部分,这些系统可能会解决这些局限性(Gläscher et al. 2010)。
补充信息:深度强化学习的连续控制
7 实验详情
7.1 优化器和学习率
我们使用 Adam(Kingma & Ba 2014)来学习神经网络参数,演员和评论家的学习率分别为10−4{10}^{-4}10−4和10−3{10}^{-3}10−3。
学习率设置说明:
- Actor 学习率:10−410^{-4}10−4(较小)- Actor 负责策略优化,需要稳定更新,避免策略变化过快
- Critic 学习率:10−310^{-3}10−3(较大)- Critic 负责价值估计,需要快速适应,通常 Critic 学习率是 Actor 的 10 倍
- 其他超参数:
- 权重衰减:L2L_2L2 权重衰减 10−2{10}^{-2}10−2(仅用于 QQQ 网络,防止过拟合)
- 折扣因子:γ=0.99\gamma = 0.99γ=0.99(平衡即时奖励和未来奖励)
- 软更新系数:τ=0.001\tau = 0.001τ=0.001(目标网络每步只更新 0.1%)
7.2 网络架构
激活函数:神经网络的所有隐藏层均采用整流非线性(ReLU,Glorot et al. 2011)
低维输入网络(用于关节角度、位置等低维状态):
- Actor 网络:2 个隐藏层(400 和 300 个单元),最终输出层为 tanh 层(约束动作到 [−1,1][-1, 1][−1,1]),总参数约 130,000
- Critic 网络:2 个隐藏层(400 和 300 个单元),关键设计:在第二个隐藏层之前才将动作 aaa 作为输入(第一层仅处理状态 sss),总参数约 130,000
像素输入网络(用于原始图像输入):
- Actor 网络:3 个卷积层(无池化,每层 32 个滤波器)+ 2 个全连接层(每层 200 个单元)+ tanh 输出层,总参数约 430,000
- Critic 网络:3 个卷积层 + 2 个全连接层,动作在全连接层之前输入,总参数约 430,000
权重初始化:
- 最终层(输出层):权重 [−3×10−3,3×10−3][-3 \times 10^{-3}, 3 \times 10^{-3}][−3×10−3,3×10−3],偏置 [3×10−4,3×10−4][3 \times 10^{-4}, 3 \times 10^{-4}][3×10−4,3×10−4](确保初始输出接近零)
- 其他层:均匀分布 [−1f,1f][-\frac{1}{\sqrt{f}}, \frac{1}{\sqrt{f}}][−f1,f1],其中 fff 为层的输入扇入(Xavier/Glorot 初始化)
7.3 训练超参数
- 小批量大小:低维问题 64,像素问题 16(图像数据更大,需要更小的批量)
- 经验回放缓冲区大小:106{10}^{6}106(100 万条经验)
7.4 探索噪声
对于探索噪声过程,我们使用时间相关噪声,以便在具有动量的物理环境中更好地探索。我们使用 Ornstein-Uhlenbeck 过程(Uhlenbeck & Ornstein, 1930),参数为θ=0.15\theta = {0.15}θ=0.15和σ=0.2\sigma = {0.2}σ=0.2。该过程模拟带摩擦的布朗粒子速度,产生以 0 为中心的时间相关值。
OU 噪声详解:
- OU 过程:dxt=θ(μ−xt)dt+σdWtdx_t = \theta(\mu - x_t)dt + \sigma dW_tdxt=θ(μ−xt)dt+σdWt
- θ=0.15\theta = 0.15θ=0.15:回归系数,控制回归到均值 μ=0\mu=0μ=0 的速度
- σ=0.2\sigma = 0.2σ=0.2:扩散系数,控制噪声强度
- 特点:时间相关、均值回归,适合有惯性的物理系统,产生更平滑的探索轨迹
- 与独立高斯噪声的对比:OU 噪声时间相关,产生更平滑的探索轨迹,在物理控制任务中通常效果更好
- 项目实现:当前项目使用简化的高斯噪声(可扩展为 OU 噪声),噪声标准差随训练衰减
8 规划算法
我们的规划器实现为模型预测控制器(Tassa et al. 2012):在每个时间步,从系统真实状态开始,运行单次轨迹优化迭代(使用 iLQG,Todorov & Li, 2005)。每次轨迹优化的规划 horizon 介于250ms{250}\mathrm{{ms}}250ms和600ms{600}\mathrm{{ms}}600ms之间,且随着世界模拟的展开而滚动,这符合模型预测控制的特点。
iLQG 迭代从先前策略的初始滚动开始,确定标称轨迹。我们使用模拟动力学的重复样本,近似轨迹每一步周围动力学的线性展开以及成本函数的二次展开。利用这一系列局部线性二次模型,沿标称轨迹反向积分价值函数。反向传播得到动作序列的修正方向以降低总成本。通过正向积分动力学(正向传播),在动作序列空间中对该方向执行无导数线搜索,并选择最优轨迹。存储该动作序列以热启动下一次 iLQG 迭代,并在模拟器中执行第一个动作。这产生新状态,作为下一次轨迹优化迭代的初始状态。
10 总结与理解要点
10.1 DDPG 核心思想总结
DDPG 的核心创新:
- 确定性策略梯度:将 DPG 扩展到深度神经网络
- 经验回放:从 DQN 借鉴,打破时间相关性,提高数据效率
- 软更新目标网络:从 DQN 借鉴但改进,使用软更新而非硬更新
- 批归一化:提高训练稳定性,使算法能在不同环境间泛化
- 探索噪声:使用 OU 噪声或高斯噪声,平衡探索和利用
为什么 DDPG 能工作:
- 确定性策略:避免了在连续动作空间中搜索最优动作的困难
- 离策略学习:可以使用历史经验,提高数据效率
- 稳定化技巧:经验回放和目标网络使训练稳定
- 端到端学习:可以直接从原始观测(如像素)学习
10.2 与项目实现的对应关系
算法组件对应:
- Actor 网络 →
src/ddpg.py中的Actor类 - Critic 网络 →
src/ddpg.py中的Critic类 - 经验回放 →
DDPGAgent.memory(deque) - 软更新 →
DDPGAgent._soft_update方法 - 探索噪声 →
DDPGAgent.act方法中的高斯噪声(可扩展为 OU 噪声) - 目标网络 →
DDPGAgent.target_actor和DDPGAgent.target_critic
超参数对应:
- Actor 学习率 →
config.py中的DDPG_ACTOR_LR(默认 10−410^{-4}10−4) - Critic 学习率 →
config.py中的DDPG_CRITIC_LR(默认 10−310^{-3}10−3) - 软更新系数 →
config.py中的DDPG_TAU(默认 5×10−35 \times 10^{-3}5×10−3) - 经验回放大小 →
config.py中的DDPG_MEMORY_SIZE(默认 10610^6106) - 批量大小 →
config.py中的DDPG_BATCH_SIZE(默认 256) - 噪声标准差 →
config.py中的DDPG_NOISE_STD(默认 0.1) - 噪声衰减 →
config.py中的DDPG_NOISE_DECAY(默认 0.9995)
10.3 DDPG vs DQN vs TRPO vs PPO 综合对比
| 特性 | DQN | DDPG | TRPO | PPO |
|---|---|---|---|---|
| 动作空间 | 离散 | 连续 | 离散/连续 | 离散/连续 |
| 策略类型 | ϵ\epsilonϵ-贪婪 | 确定性策略 + 噪声 | 随机策略 | 随机策略 |
| 学习方式 | 离策略 | 离策略 | 在策略 | 在策略 |
| 网络架构 | 单一 Q 网络 | Actor + Critic | Actor + Critic | Actor + Critic |
| 目标更新 | 硬更新 | 软更新 | 无目标网络 | 无目标网络 |
| 稳定性保证 | 目标网络 | 软更新 | KL 约束 | 裁剪机制 |
| 实现复杂度 | 简单 | 中等 | 复杂 | 简单 |
| 样本效率 | 中等 | 中等 | 高 | 高 |
| 计算成本 | 低 | 中等 | 高 | 中等 |
| 控制平滑性 | 中等(离散动作) | 高(连续动作) | 高(随机策略) | 高(随机策略) |
| 适用场景 | 离散动作任务 | 连续控制任务 | 需要稳定训练 | 通用 RL 任务 |
10.4 关键设计决策的理解
为什么使用确定性策略?
- 连续动作空间中,随机策略需要积分,计算复杂
- 确定性策略直接输出动作,计算简单
- 对于许多控制任务,确定性策略已经足够
为什么需要两个网络(在线 + 目标)?
- 在线网络用于学习和探索
- 目标网络用于计算稳定的 TD 目标
- 避免目标值快速变化导致的训练不稳定
为什么使用软更新而非硬更新?
- 硬更新(DQN):每隔 CCC 步复制一次,目标值可能突然变化
- 软更新(DDPG):每步都更新一小部分,目标值平滑变化
- 软更新通常更稳定,但可能稍慢
为什么需要经验回放?
- 打破时间相关性:强化学习中的样本是时序相关的,但神经网络训练需要 i.i.d. 样本
- 提高数据效率:重复利用历史经验
- 离策略学习:可以使用旧策略生成的经验
为什么需要批归一化?
- 不同状态分量可能有不同的物理单位和范围
- 批归一化自动归一化输入,使网络更容易学习
- 减少协变量偏移,提高训练稳定性
10.5 常见问题与解答
Q1: DDPG 与 DQN 的主要区别是什么?
- 动作空间:DQN 离散,DDPG 连续
- 策略类型:DQN 使用 epsilon-greedy,DDPG 使用确定性策略 + 噪声
- 网络架构:DQN 只有 Q 网络,DDPG 有 Actor 和 Critic 两个网络
- 目标更新:DQN 使用硬更新,DDPG 使用软更新
Q2: DDPG 与 TRPO/PPO 的主要区别是什么?
- 策略类型:DDPG 确定性策略,TRPO/PPO 随机策略
- 动作空间:DDPG 连续,TRPO/PPO 可以是离散或连续
- 学习方式:DDPG 离策略,TRPO/PPO 在策略
- 稳定性:DDPG 依赖经验回放和目标网络,TRPO/PPO 依赖 KL 约束
Q3: 为什么 Actor 学习率比 Critic 小?
- Actor 负责策略优化,需要稳定更新,避免策略变化过快
- Critic 负责价值估计,需要快速适应,可以更快更新
- 通常 Critic 学习率是 Actor 的 10 倍
Q4: 如何选择探索噪声?
- 高斯噪声:简单,适合大多数情况
- OU 噪声:时间相关,适合有惯性的物理系统
- 噪声衰减:随训练进行逐渐减小,从探索转向利用
Q5: 如何判断训练是否收敛?
- 观察训练曲线:奖励应该逐渐上升并趋于稳定
- 观察 Q 值:应该逐渐稳定,不再大幅波动
- 测试性能:在测试环境中评估策略性能
Q6: DDPG 训练时 Actor 和 Critic 的学习率如何选择?
- 一般原则:Critic 学习率通常大于 Actor 学习率
- Critic 学习率:通常 10−310^{-3}10−3(需要快速学习 Q 值)
- Actor 学习率:通常 10−410^{-4}10−4(策略更新需要更谨慎)
- 原因:
- Critic 需要准确估计 Q 值,才能指导 Actor 更新
- Actor 更新过快可能导致策略不稳定
- 调整建议:
- 如果 Q 值估计不准确,增大 Critic 学习率
- 如果策略更新不稳定,减小 Actor 学习率
- 如果训练缓慢,可以适当增大两个学习率
Q7: DDPG 中探索噪声如何设置?
- 高斯噪声:
- 标准差通常从 0.1-0.5 开始
- 随训练衰减(如线性衰减到 0.01)
- 适合大多数连续控制任务
- OU 噪声:
- 参数 θ=0.15,σ=0.2\theta=0.15, \sigma=0.2θ=0.15,σ=0.2(论文推荐)
- 适合有惯性的物理系统
- 时间相关,探索更平滑
- 选择建议:
- 简单任务:高斯噪声即可
- 复杂物理系统:考虑 OU 噪声
- 噪声过大:可能导致动作超出范围,需要裁剪
10.6 实践建议
训练技巧:
- 从简单开始:先在简单环境(如倒立摆)上验证实现
- 监控训练:观察训练曲线、Q 值、探索噪声等
- 调整超参数:根据任务特点调整学习率、噪声等
- 保存检查点:定期保存模型,避免训练中断丢失
调参建议:
- 学习率:从默认值开始,如果训练不稳定则减小
- 噪声:初始噪声应该足够大以探索,但不要太大导致性能下降
- 软更新系数:τ\tauτ 越小,训练越稳定但可能越慢
- 批量大小:越大越稳定,但需要更多内存
常见问题:
- 训练不稳定:减小学习率、增大软更新系数、检查网络初始化
- 不收敛:检查奖励函数、增加探索、调整网络结构
- 性能不佳:检查超参数、增加训练回合数、尝试不同网络结构
调试技巧:
- 监控关键指标:
- Q 值:应该逐渐增大并稳定,不应爆炸
- Actor 和 Critic 损失:应该逐渐减小
- 动作范围:确保动作在合理范围内
- 探索噪声:确保噪声大小合适
- Actor-Critic 平衡:
- 如果 Critic 损失很大:增大 Critic 学习率或网络容量
- 如果 Actor 更新不稳定:减小 Actor 学习率
- 确保 Critic 先于 Actor 收敛
- 软更新参数:
- τ\tauτ 太小:目标网络更新太慢,训练慢
- τ\tauτ 太大:目标网络更新太快,不稳定
- 通常 τ=0.001\tau = 0.001τ=0.001 是好的起点
10.7 进一步阅读
相关论文:
- Silver et al. (2014): “Deterministic Policy Gradient Algorithms”(DPG 原始论文)
- Lillicrap et al. (2015): “Continuous control with deep reinforcement learning”(DDPG 原始论文)
- Fujimoto et al. (2018): “Addressing Function Approximation Error in Actor-Critic Methods”(TD3 改进 DDPG)
扩展算法:
- TD3 (Twin Delayed DDPG):改进 DDPG,使用双 Critic 和延迟更新
- 使用两个 Critic 网络,取较小值减少高估
- Actor 更新延迟,提高稳定性
- 目标策略平滑,减少 Q 值估计误差
- 通常比 DDPG 性能更好
- SAC (Soft Actor-Critic):使用随机策略和熵正则化
- 使用随机策略而非确定性策略
- 熵正则化鼓励探索
- 自动调整温度参数
- 在连续控制任务上表现优异
- A3C/PPO:在策略算法,适合需要高样本效率的场景
- A3C:异步并行训练,提高样本效率
- PPO:使用裁剪机制,提高训练稳定性
- 在策略学习,需要当前策略生成的经验
应用领域:
- 机器人控制:机械臂、四足机器人、无人机
- 自动驾驶:车辆横向控制、路径跟踪
- 游戏 AI:连续控制游戏
- 金融交易:投资组合优化
10.8 算法选择指南
何时选择 DDPG?
- ✅ 适用场景:
- 连续动作空间(动作是连续值)
- 需要平滑控制的场景(如机器人、自动驾驶)
- 离策略学习场景(可以使用历史经验)
- 中等复杂度的连续控制任务
- ❌ 不适用场景:
- 离散动作空间(应使用 DQN)
- 需要高样本效率的场景(可考虑 PPO/TRPO)
- 动作空间维度很高的场景(可考虑 SAC)
- 项目对应:车辆路径跟踪任务使用连续转向角,适合 DDPG
- 动作空间:连续转向角(1 维,范围通常 [−30°,30°][-30°, 30°][−30°,30°])
- 状态空间:横向误差、航向误差(低维)
- 奖励函数:基于跟踪误差和控制平滑性
- 优势:控制平滑,无抖动,适合实际应用
- 建议:可以尝试 TD3 或 SAC 提升性能
与其他算法的选择建议:
- DDPG vs DQN:动作空间连续用 DDPG,离散用 DQN
- DDPG vs PPO/TRPO:需要高样本效率用 PPO/TRPO,需要平滑控制用 DDPG
- DDPG vs TD3:TD3 通常性能更好,建议优先使用 TD3
- DDPG vs SAC:需要随机策略用 SAC,需要确定性策略用 DDPG
10.9 性能优化技巧
提高训练速度:
- 使用 GPU:Actor 和 Critic 网络可以在 GPU 上加速
- 批量大小:增大批量大小可以提高 GPU 利用率
- 经验回放采样:使用多线程或异步采样提高效率
- 软更新频率:每步更新即可,无需调整
提高样本效率:
- 优先经验回放:优先采样 TD 误差大的经验
- TD3 改进:使用双 Critic 和延迟更新
- 网络容量:适当增加网络容量,提高表达能力
- 探索策略:使用 OU 噪声或自适应噪声
提高稳定性:
- 软更新:确保软更新系数 τ\tauτ 合适
- 梯度裁剪:防止梯度爆炸
- 批归一化:归一化网络输入,提高稳定性
- 网络初始化:使用合适的初始化方法
提高控制平滑性:
- OU 噪声:使用时间相关的 OU 噪声
- 动作平滑:在动作输出后添加平滑滤波器
- 奖励设计:在奖励中加入平滑性惩罚项
- 网络结构:使用更深的网络提高表达能力
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐

所有评论(0)