深度确定性策略梯度(Deep Deterministic Policy Gradient, DDPG)算法的原理与训练过程
题目描述
深度确定性策略梯度(DDPG)是一种结合了深度Q网络(DQN)和确定性策略梯度(DPG)思想的强化学习算法。它专为解决连续动作空间中的控制问题而设计。题目要求我们理解DDPG如何通过“演员-评论家”(Actor-Critic)架构,使用经验回放和目标网络来稳定训练,并输出连续动作值。请详细阐述其核心思想、算法框架及训练中的每一步细节。
解题过程
我们将循序渐进地拆解DDPG,从它要解决的问题开始,到其核心组件的构建,最后是完整的训练流程。
第一步:理解问题背景——连续动作空间的挑战
- 核心问题:在强化学习中,当智能体(Agent)需要决策的动作是连续值时(如机器人的关节扭矩、汽车的转向角度),传统的基于值函数的方法(如DQN)会遇到困难。
- DQN的局限:DQN通过Q网络评估每个离散动作的价值,并选择价值最大的动作。但在连续空间中,动作是无限的,无法遍历所有动作来求最大值。
- 解决方案思路:我们不再通过最大化Q值来“选择”动作,而是训练一个策略网络(Actor),它可以直接将状态(State)映射到一个具体的、连续的动作(Action)。这个策略网络的优化目标,是使另一个值函数网络(Critic)评估的Q值最大化。这就是“演员-评论家”架构。
第二步:算法基石——确定性策略梯度定理
- 策略表示:我们用参数化的函数 \(\mu_{\theta}(s)\) 表示策略(Actor)。给定状态 \(s\),它直接输出一个确定的动作 \(a\),即 \(a = \mu_{\theta}(s)\)。这里 \(\theta\) 是策略网络的参数。
- 性能目标:我们希望策略能最大化期望累积回报,即最大化状态价值函数。在折扣累积回报设定下,性能目标 \(J\) 是初始状态价值的期望:\(J(\theta) = \mathbb{E}_{s \sim \rho^{\mu}}[V^{\mu}(s)]\),其中 \(\rho^{\mu}\) 是状态访问分布。
- 梯度公式:确定性策略梯度定理给出了目标 \(J\) 关于策略参数 \(\theta\) 的梯度:
\[\nabla_{\theta} J(\theta) \approx \mathbb{E}_{s \sim \rho^{\mu}}[\nabla_{\theta} \mu_{\theta}(s) \nabla_{a} Q^{\mu}(s, a) |_{a=\mu_{\theta}(s)}] \]
- 这个公式是DDPG的核心。它告诉我们如何更新Actor。
- $\nabla_{\theta} \mu_{\theta}(s)$: 是策略网络输出关于其参数 $\theta$ 的梯度,由神经网络反向传播计算。
- $\nabla_{a} Q^{\mu}(s, a)$: 是**评论家网络(Critic)** $Q^{\phi}(s, a)$ 对输入动作 $a$ 的梯度,在 $a=\mu_{\theta}(s)$ 处取值。它指出了在当前状态下,微小改变动作会如何影响Q值(即未来收益的预测)。
- 直观理解:Actor参数的更新方向,是朝着能使得Critic认为Q值增加的方向,轻微调整Actor输出的动作。Actor“听从”Critic的“建议”来改进自己。
第三步:构建DDPG的四大核心组件
DDPG巧妙地将DPG与DQN的稳定化技术结合。
- 演员网络(Actor Network) \(\mu_{\theta}\):
- 输入: 状态 \(s\)。
- 输出: 一个确定的、连续的动作向量 \(a\)。
- 作用: 执行策略。
- 评论家网络(Critic Network) \(Q_{\phi}\):
- 输入: 状态 \(s\) 和动作 \(a\)。
- 输出: 一个标量,代表状态-动作对 \((s, a)\) 的Q值(预期累积回报)。
- 作用: 评估Actor选择的动作有多好。
- 目标网络(Target Networks): 为了稳定训练,DDPG为Actor和Critic分别创建了结构相同但参数不同的“目标网络” \(\mu_{\theta’}\) 和 \(Q_{\phi’}\)。目标网络的参数 \((\theta‘, \phi’)\) 更新缓慢,用于计算稳定的目标Q值。
- 经验回放缓冲区(Replay Buffer) \(R\):
- 智能体与环境交互的每一步经验(转移元组 \((s_t, a_t, r_t, s_{t+1})\))都被存储起来。
- 训练时,从缓冲区中随机采样一小批(mini-batch)经验,打破数据间的时间相关性,使训练数据更独立同分布。
第四步:详述训练迭代过程
训练是一个与环境交互、采样、学习的循环。假设我们已初始化四个网络和回放缓冲区。
-
交互与数据收集:
- 对于当前状态 \(s_t\),Actor网络输出动作 \(a_t = \mu_{\theta}(s_t)\)。
- 为了鼓励探索,在实际执行时会在动作上添加一个噪声过程 \(\mathcal{N}\)(如Ornstein-Uhlenbeck过程),即执行 \(a_t = \mu_{\theta}(s_t) + \mathcal{N}_t\)。
- 执行动作 \(a_t\),环境返回奖励 \(r_t\) 和下一个状态 \(s_{t+1}\)。
- 将经验 \((s_t, a_t, r_t, s_{t+1})\) 存入回放缓冲区 \(R\)。
-
从缓冲区采样:
- 当缓冲区数据足够时,随机采样一个小批量的 \(N\) 条经验:\(\{(s^i, a^i, r^i, s^{i+1})\}_{i=1}^{N}\)。
-
更新评论家网络(Critic - 最小化时序差分误差):
- 计算目标Q值: 对于每条采样经验,利用缓慢更新的目标网络计算:
\[y^i = r^i + \gamma \cdot Q_{\phi’}(s^{i+1}, \mu_{\theta’}(s^{i+1})) \]
其中 $\gamma$ 是折扣因子。这里,下一个动作由目标Actor网络 $\mu_{\theta’}$ 产生,其价值由目标Critic网络 $Q_{\phi’}$ 评估。这借鉴了DQN的“固定目标”思想,使学习目标更稳定。
- **定义损失函数**: Critic的损失函数是预测Q值与目标Q值之间的均方误差:
\[L(\phi) = \frac{1}{N} \sum_i (Q_{\phi}(s^i, a^i) - y^i)^2 \]
- **梯度下降**: 计算损失 $L$ 关于当前Critic网络参数 $\phi$ 的梯度 $\nabla_{\phi} L$,并使用优化器(如Adam)更新 $\phi$。这使Critic的预测更准确。
- 更新演员网络(Actor - 沿着策略梯度方向):
- 使用确定性策略梯度定理。利用刚刚更新过的Critic网络 \(Q_{\phi}\)。
- 计算策略梯度: Actor的更新目标是最大化Critic给出的Q值。根据定理,其梯度近似为:
\[\nabla_{\theta} J \approx \frac{1}{N} \sum_i [\nabla_a Q_{\phi}(s^i, a) |_{a=\mu_{\theta}(s^i)} \cdot \nabla_{\theta} \mu_{\theta}(s^i)] \]
注意这里求和是批量平均,$a$ 是Actor网络输出的动作,**没有**加探索噪声。
- **梯度上升**: 沿着这个梯度方向,更新Actor网络参数 $\theta$。这使Actor输出的动作能获得Critic评估的更高Q值,即更好的长期回报。
- 软更新目标网络:
- 为了使目标网络参数缓慢跟踪当前网络,采用“软更新”(Soft Update)策略,而不是每隔固定步数直接复制:
\[\theta’ \leftarrow \tau \theta + (1 - \tau) \theta’ \]
\[\phi’ \leftarrow \tau \phi + (1 - \tau) \phi’ \]
其中 $\tau$ 是一个接近于0的系数(如0.001)。这意味着目标网络每次只变化一点点,从而极大地稳定了学习过程。
第五步:总结与回顾
DDPG算法通过上述步骤不断循环:
- Actor 负责根据状态产生连续动作。
- Critic 负责评估这个动作的好坏(Q值)。
- 训练时,Critic通过最小化时序差分误差来学习准确的Q函数。
- Actor则利用Critic提供的梯度信息(动作如何影响Q值)来调整自己,以输出能获得更高Q值的动作。
- 经验回放和目标网络是确保深度强化学习稳定训练的关键技术。
整个流程将策略优化问题转化为一个端到端的、可通过随机梯度下降优化的监督学习问题,从而成功解决了高维连续动作空间的控制难题。