一、前言:连续动作空间的算法困境与DDPG的诞生
强化学习算法在离散动作空间(如Atari游戏)取得了巨大成功,但现实世界中绝大多数控制任务都属于连续动作空间:机器人关节角度、车辆速度与转向、机械臂抓取力度等,这些动作都是连续取值的实数向量,无法用传统DQN算法直接处理。
1.1 传统算法的三大核心局限
1.2 DDPG的历史地位与学术背景
DDPG(Deep Deterministic Policy Gradient,深度确定性策略梯度)是连续动作空间强化学习的开山之作,它成功解决了上述所有问题,首次将深度神经网络应用于高维连续控制任务,取得了比肩传统规划方法的效果。
DDPG的理论与实现源自两篇里程碑式论文:
- 理论基础:2014年David Silver等人,ICML《Deterministic Policy Gradient Algorithms》,DPG定理理论奠基;
- 工程落地:2015年Lillicrap等人,ICLR2016《Continuous Control with Deep Reinforcement Learning》,提出完整DDPG。
二、理论基石:确定性策略梯度(DPG)定理
DPG定理是DDPG算法的核心,它证明了确定性策略也可以计算梯度,并且梯度形式比随机策略梯度更简单、采样效率更高。
2.1 符号定义与基础概念
- S\\mathcal{S}S:状态空间;A\\mathcal{A}A:连续动作空间 A∈Rn\\mathcal{A}\\in\\mathbb{R}^nA∈Rn
- 确定性策略:μθ:S→A, a=μθ(s)\\mu_\\theta: \\mathcal{S}\\rightarrow\\mathcal{A},\\ a=\\mu_\\theta(s)μθ:S→A, a=μθ(s),θ\\thetaθ为策略网络参数
- Vμ(s)V^\\mu(s)Vμ(s):状态价值;Qμ(s,a)Q^\\mu(s,a)Qμ(s,a):动作价值;ρμ(s)\\rho^\\mu(s)ρμ(s):策略μ\\muμ诱导的稳态状态分布
2.2 随机策略梯度(SPG)回顾
∇θJ(πθ)=Es∼ρπ,a∼πθ[∇θlogπθ(a∣s)⋅Qπ(s,a)]
\\nabla_\\theta J(\\pi_\\theta) = \\mathbb{E}_{s \\sim \\rho^\\pi, a \\sim \\pi_\\theta} \\left[ \\nabla_\\theta \\log \\pi_\\theta(a|s) \\cdot Q^\\pi(s,a) \\right]
∇θJ(πθ)=Es∼ρπ,a∼πθ[∇θlogπθ(a∣s)⋅Qπ(s,a)]
缺点:期望包含状态+动作双重采样,采样量大、梯度方差高。
2.3 确定性策略梯度(DPG)定理
∇θJ(μθ)=Es∼ρμ[∇θμθ(s)⋅∇aQμ(s,a)∣a=μθ(s)]
\\nabla_\\theta J(\\mu_\\theta) = \\mathbb{E}_{s \\sim \\rho^\\mu} \\left[ \\nabla_\\theta \\mu_\\theta(s) \\cdot \\nabla_a Q^\\mu(s,a) \\bigg|_{a=\\mu_\\theta(s)} \\right]
∇θJ(μθ)=Es∼ρμ[∇θμθ(s)⋅∇aQμ(s,a)a=μθ(s)]
推导链式法则:
∇θJ=Es[∇θQ(s,μθ(s))]=Es[∇aQ∣a=μ(s)⋅∇θμ(s)]
\\nabla_\\theta J = \\mathbb{E}_s\\left[\\nabla_\\theta Q(s,\\mu_\\theta(s))\\right]
=\\mathbb{E}_s\\left[\\nabla_a Q|_{a=\\mu(s)} \\cdot \\nabla_\\theta \\mu(s)\\right]
∇θJ=Es[∇θQ(s,μθ(s))]=Es[∇aQ∣a=μ(s)⋅∇θμ(s)]
2.4 DPG与SPG对比
| 策略输出 | 动作概率分布 | 单一确定动作 |
| 期望积分 | 状态+动作双空间 | 仅状态单空间 |
| 采样效率 | 低 | 高 |
| 梯度方差 | 偏大 | 更小 |
| 探索来源 | 策略内部随机 | 外部添加动作噪声 |
三、DDPG算法核心架构:DPG+DQN工程技巧融合
DDPG在DPG理论之上引入经验回放、双目标网络、软更新,经典Actor-Critic四网络结构。
3.1 Actor-Critic双主网络
- Actor(θμ\\theta^\\muθμ):策略网络 a=μ(s)a=\\mu(s)a=μ(s),优化目标:最大化Q(s,μ(s))Q(s,\\mu(s))Q(s,μ(s));
- Critic(θQ\\theta^QθQ):价值网络 Q(s,a)Q(s,a)Q(s,a),拟合真实动作价值,用TD损失训练。
作用:真正在学习、不断更新的网络
Actor 主网络:输出动作,并不断被策略梯度更新,学得越来越好。
Critic 主网络:评估动作好坏,并不断被 TD 误差更新,学得越来越准。
3.2 双目标网络+软更新
目标网络:θμ′,θQ′\\theta^{\\mu'},\\theta^{Q'}θμ′,θQ′,用于稳定目标Q值计算,软更新而非周期硬拷贝:
θμ′←τθμ+(1−τ)θμ′θQ′←τθQ+(1−τ)θQ′
\\theta^{\\mu'}\\leftarrow \\tau \\theta^\\mu + (1-\\tau)\\theta^{\\mu'} \\\\
\\theta^{Q'} \\leftarrow \\tau \\theta^Q + (1-\\tau)\\theta^{Q'}
θμ′←τθμ+(1−τ)θμ′θQ′←τθQ+(1−τ)θQ′
τ≪1\\tau\\ll1τ≪1(常用0.0010.0010.001),目标参数平滑缓慢变化。
作用:有一个 “不动” 的网络来计算目标 Q 值
目标 Actor网络 计算下一状态动作:a′=μ′(s′)a' = \\mu'(s')a′=μ′(s′)
目标 Critic 网络计算目标 Q 值:y=r+γQ′(s′,a′)y = r + \\gamma Q'(s',a')y=r+γQ′(s′,a′)
3.3 经验回放池ReplayBuffer
存储(s,a,r,s′)(s,a,r,s')(s,a,r,s′)离线样本,随机批次采样,打破时序相关性,DDPG为Off-Policy离线算法。
3.4 动作噪声实现探索
确定性策略本身无随机性,需外加噪声实现探索:
OU奥恩斯坦-乌伦贝克噪声(时序相关噪声,适配连续物理控制)
dxt=θ(μ−xt)dt+σdWtdx_t = \\theta(\\mu – x_t)dt + \\sigma dW_tdxt=θ(μ−xt)dt+σdWt
公式符号详解
- xtx_txt:表示t时刻的噪声值,是最终输出的噪声信号,会直接叠加到Actor网络输出的动作上。
- θ\\thetaθ:均值回复速度,典型取值为0.15,控制噪声回到长期均值的快慢,数值越大,噪声的波动越剧烈。
- μ\\muμ:长期均值,DDPG中固定为0,是噪声围绕其波动的中心值。
- σ\\sigmaσ:噪声幅度,典型取值为0.2,控制噪声的整体大小,直接决定了探索的强度。
- dWtdW_tdWt:维纳过程(布朗运动)增量,是公式中的随机源,满足dWt∼N(0,dt)dW_t \\sim \\mathcal{N}(0, dt)dWt∼N(0,dt),即服从均值为0、方差为dt的正态分布。
公式两项的本质含义
这是OU噪声与普通高斯噪声最核心的区别。当当前噪声值xtx_txt大于长期均值μ\\muμ时,该项为负值,会推动噪声向均值方向减小;当xtx_txt小于μ\\muμ时,该项为正值,会推动噪声向均值方向增大。最终效果是噪声不会像高斯噪声那样随机跳变,而是围绕均值平滑、连续地变化,完美模拟了物理系统的惯性特性,比如机器人关节不会突然从0°跳到90°。
这一项引入了高斯白噪声作为随机扰动源,噪声的整体幅度由参数σ\\sigmaσ控制,直接决定了智能体探索行为的剧烈程度。
四、DDPG完整数学损失与训练流程
4.1 损失函数
(一)Critic损失(MSE TD-loss)
L(θQ)=1N∑i=1N[yi−Q(si,ai;θQ)]2
L(\\theta^Q)=\\frac1N\\sum_{i=1}^N \\big[y_i – Q(s_i,a_i;\\theta^Q)\\big]^2
L(θQ)=N1i=1∑N[yi−Q(si,ai;θQ)]2
yiy_iyi 不是直接来自经验回放池,它是一个计算生成的目标值,但它的基础数据确实来自经验回放池。
经验回放池存储的原始数据:
经验池 RRR 中只存储四元组 (si,ai,ri,si+1)(s_i, a_i, r_i, s_{i+1})(si,ai,ri,si+1),即:
- 当前状态 sis_isi
- 执行的动作 aia_iai
- 获得的即时奖励 rir_iri
- 转移到的下一状态 si+1s_{i+1}si+1
目标Q值 yiy_iyi 的计算过程:
yi=ri+γ⋅Q′(si+1,μ′(si+1;θμ′);θQ′)y_i=r_i+\\gamma\\cdot Q'\\big(s_{i+1},\\mu'(s_{i+1};\\theta^{\\mu'});\\theta^{Q'}\\big)yi=ri+γ⋅Q′(si+1,μ′(si+1;θμ′);θQ′)
其中:
- rir_iri 和 si+1s_{i+1}si+1:直接从经验回放池采样得到
- μ′(si+1)\\mu'(s_{i+1})μ′(si+1):目标Actor网络根据下一状态 si+1s_{i+1}si+1 计算出的最优动作
- Q′(si+1,a′)Q'(s_{i+1}, a')Q′(si+1,a′):目标Critic网络对"下一状态+目标动作"的价值估计
- γ\\gammaγ:折扣因子,衡量未来奖励的重要性
损失函数的本质含义:
- Q(si,ai;θQ)Q(s_i,a_i;\\theta^Q)Q(si,ai;θQ):主Critic网络对当前状态动作对的价值估计
- yiy_iyi:我们希望主Critic网络学习到的"真实"价值目标
- 损失函数就是让主网络的估计值尽可能接近这个计算出来的目标值
(二)Actor策略梯度损失(最大化Q等价最小化负期望)
L(θμ)=−1N∑i=1NQ(si,μ(si;θμ);θQ)
L(\\theta^\\mu)=-\\frac1N\\sum_{i=1}^N Q\\big(s_i,\\mu(s_i;\\theta^\\mu);\\theta^Q\\big)
L(θμ)=−N1i=1∑NQ(si,μ(si;θμ);θQ)
- L(θμ)L(\\theta^\\mu)L(θμ):Actor网络的损失函数,仅用于更新Actor参数 θμ\\theta^\\muθμ
- −1N∑i=1N-\\frac1N\\sum_{i=1}^N−N1∑i=1N:对批量样本求平均后取负,负号实现"最大化转最小化"的工程转换
- sis_isi:从经验回放池采样的第i个状态,来自真实环境交互数据
- μ(si;θμ)\\mu(s_i;\\theta^\\mu)μ(si;θμ):Actor网络根据状态sis_isi输出的动作,由当前Actor参数决定
- Q(⋅;θQ)Q(\\cdot;\\theta^Q)Q(⋅;θQ):主Critic网络对状态动作对的价值评估。计算Actor损失时,Critic网络参数θQ\\theta^QθQ完全固定,不参与梯度更新
梯度:
∇θμJ≈1N∑i=1N∇aQ∣a=μ(si)⋅∇θμμ(si)
\\nabla_{\\theta^\\mu}J\\approx \\frac1N\\sum_{i=1}^N \\nabla_a Q\\big|_{a=\\mu(s_i)}\\cdot \\nabla_{\\theta^\\mu}\\mu(s_i)
∇θμJ≈N1i=1∑N∇aQa=μ(si)⋅∇θμμ(si)
∇θμJ=Es[∂Q(s,a)∂a⋅∂a∂θμ]
\\nabla_{\\theta^\\mu} J = \\mathbb{E}_s \\left[ \\frac{\\partial Q(s,a)}{\\partial a} \\cdot \\frac{\\partial a}{\\partial \\theta^\\mu} \\right]
∇θμJ=Es[∂a∂Q(s,a)⋅∂θμ∂a]
其中 a=μ(s;θμ)a = \\mu(s;\\theta^\\mu)a=μ(s;θμ)。
∇θμJ≈1N∑i=1N[∇aQ(si,a)∣a=μ(si)⋅∇θμμ(si;θμ)]
\\nabla_{\\theta^\\mu} J \\approx \\frac1N \\sum_{i=1}^N \\left[ \\nabla_a Q(s_i,a) \\bigg|_{a=\\mu(s_i)} \\cdot \\nabla_{\\theta^\\mu} \\mu(s_i;\\theta^\\mu) \\right]
∇θμJ≈N1i=1∑N[∇aQ(si,a)a=μ(si)⋅∇θμμ(si;θμ)]
梯度公式由两个部分相乘组成,各自有非常直观的物理意义:
第一部分:∇aQ∣a=μ(si)\\boldsymbol{\\nabla_a Q\\big|_{a=\\mu(s_i)}}∇aQa=μ(si)
- 含义:Q值对动作的梯度
- 通俗解释:告诉我们"动作往哪个方向调整,Q值会增加"
- 例如:如果这个梯度是正的,说明增大当前动作的值,能获得更高的回报
第二部分:∇θμμ(si)\\boldsymbol{\\nabla_{\\theta^\\mu}\\mu(s_i)}∇θμμ(si)
- 含义:动作对Actor参数的梯度
- 通俗解释:告诉我们"参数怎么调整,动作会往我们想要的方向变化"
两者相乘的结果:就是Actor参数的更新方向,让动作朝着"能获得更高Q值"的方向调整,最终实现最大化期望回报的目标。
4.2 DDPG算法训练步骤
- a. 初始化本轮探索噪声过程NNN;
- b. 获取环境初始状态s1s_1s1;
- c. 逐时间步循环,t=1∼Tt=1 \\sim Tt=1∼T:
i. 结合策略与探索噪声选取动作:at=μ(st∣θμ)+Nta_t = \\mu(s_t|\\theta^\\mu) + N_tat=μ(st∣θμ)+Nt;
ii. 在环境中执行动作ata_tat,获取即时奖励rtr_trt与下一状态st+1s_{t+1}st+1;
iii. 将样本元组(st,at,rt,st+1)(s_t,a_t,r_t,s_{t+1})(st,at,rt,st+1)存入经验回放池RRR;
iv. 从回放池RRR中随机采样小批量样本(si,ai,ri,si+1)(s_i,a_i,r_i,s_{i+1})(si,ai,ri,si+1);
v. 计算目标Q值:yi=ri+γQ′(si+1,μ′(si+1∣θμ′)∣θQ′)y_i = r_i + \\gamma Q'(s_{i+1}, \\mu'(s_{i+1}|\\theta^{\\mu'})|\\theta^{Q'})yi=ri+γQ′(si+1,μ′(si+1∣θμ′)∣θQ′);
vi. 最小化Critic损失 L=1N∑(yi−Q(si,ai∣θQ))2L=\\frac{1}{N}\\sum(y_i-Q(s_i,a_i|\\theta^Q))^2L=N1∑(yi−Q(si,ai∣θQ))2,更新参数θQ\\theta^QθQ;
vii. 利用确定性策略梯度更新Actor:
∇θμJ≈1N∑∇aQ(s,a∣θQ)∣s=si,a=μ(si)⋅∇θμμ(s∣θμ)∣si\\nabla_{\\theta^\\mu}J \\approx \\frac{1}{N}\\sum \\nabla_a Q(s,a|\\theta^Q)\\big|_{s=s_i,a=\\mu(s_i)} \\cdot \\nabla_{\\theta^\\mu}\\mu(s|\\theta^\\mu)\\big|_{s_i}∇θμJ≈N1∑∇aQ(s,a∣θQ)s=si,a=μ(si)⋅∇θμμ(s∣θμ)si;
viii. 软更新两组目标网络参数:
θμ′←τθμ+(1−τ)θμ′θQ′←τθQ+(1−τ)θQ′
\\theta^{\\mu'}\\leftarrow \\tau \\theta^\\mu + (1-\\tau)\\theta^{\\mu'} \\\\
\\theta^{Q'} \\leftarrow \\tau \\theta^Q + (1-\\tau)\\theta^{Q'}
θμ′←τθμ+(1−τ)θμ′θQ′←τθQ+(1−τ)θQ′
ix. 若st+1s_{t+1}st+1为终止状态,结束当前时间步循环。
五、超参数推荐与训练排错
5.1 通用超参
| γ\\gammaγ折扣 | 0.99 |
| 软更新τ\\tauτ | 0.001 |
| Actor学习率 | 1e-4 |
| Critic学习率 | 1e-3 |
| batch_size | 64~256 |
| 回放池容量 | 1e5~1e6 |
| OU噪声σ | 0.2 |
5.2 常见问题
六、DDPG优缺点与适用场景
6.1 优点
6.2 缺点
6.3 适用场景
机械臂控制、小车倒立摆、自动驾驶转向调速、连续型赛车游戏等中低维连续控制。
七、后续衍生算法演进
- TD3:双Critic抑制过估计、Actor延迟更新,DDPG工业优化版;
- SAC:最大熵+随机策略,鲁棒性更强、少调参;
- D4PG:分布式+分布价值+N步回报,面向大规模复杂控制。
八、总结
DDPG依托DPG确定性策略梯度理论,结合DQN经验回放与目标网络,奠定现代连续动作强化学习的基准架构。虽原生缺陷较多,但仍是学习TD3、SAC等进阶算法必不可少的前置基础。


