当前位置: 首页 > news >正文

深度强化学习 | 图文详细推导深度确定性策略梯度DDPG算法

目录

  • 0 专栏介绍
  • 1 演员-评论家架构
    • 1.1 Critic网络优化
    • 1.2 Actor网络优化
  • 2 深度确定性策略梯度算法

0 专栏介绍

本专栏以贝尔曼最优方程等数学原理为根基,结合PyTorch框架逐层拆解DRL的核心算法(如DQN、PPO、SAC)逻辑。针对机器人运动规划场景,深入探讨如何将DRL与路径规划、动态避障等任务结合,包含仿真环境搭建、状态空间设计、奖励函数工程化调优等技术细节,旨在帮助读者掌握深度强化学习技术在机器人运动规划中的实战应用

🚀详情:《运动规划实战精讲:深度强化学习篇》


1 演员-评论家架构

在强化学习的探索之路上,智能体始终面临一个核心挑战:如何在动态变化的环境中,通过与状态的交互,找到一组能最大化长期累积奖励的动作序列。早期的强化学习方法要么专注于“值函数”——通过估计状态或状态-动作的长期价值(如基于价值的强化学习DQN算法(附Pytorch实现)中的Q网络)来间接指导动作选择;要么聚焦于“策略”——直接学习状态到动作的映射(如策略梯度方法)。但这些方法各有局限:值函数方法难以处理连续动作空间(因为需要遍历所有可能动作求最大值),而纯策略梯度方法则因仅依赖采样回报的方差较大,训练稳定性不足。于是,​​演员-评论家(Actor-Critic, AC)框架​​应运而生,它像一位“导演”与“评论家”的组合——其中Actor网络负责表征策略,Critic网络负责评判策略的优劣,两者相互配合,共同提升智能体的决策能力

在这里插入图片描述

要理解Actor-Critic架构的运作逻辑,首先需要明确:

  • Actor网络表征策略,通常用神经网络表示为πθ(a∣s)\pi_\theta(a|s)πθ(as)(随机策略,输出动作概率分布)或 μθ(s)\mu_\theta(s)μθ(s)(确定性策略,直接输出动作),其参数θ\thetaθ决定了智能体在不同状态下倾向于选择哪些动作;
  • Critic网络表征策略优劣,通常用神经网络表示为Vϕ(s)V_\phi(s)Vϕ(s)(状态值函数,估计状态sss的长期价值)或Qϕ(s,a)Q_\phi(s,a)Qϕ(s,a)(状态-动作值函数,估计状态 sss 下执行动作 aaa 的长期价值),其参数 ϕ\phiϕ 量化了当前策略下这个状态/动作的回报;

Actor通过与环境交互积累经验,Critic则基于这些经验更新对价值的估计,反过来为Actor的策略优化提供方向。

1.1 Critic网络优化

Critic网络的关键作用在于解决如何评估当前策略的好坏。在强化学习中,策略的优劣最终由长期累积奖励衡量,但直接计算这一期望需要遍历所有可能的未来状态转移,这在现实中不可行。因此,Critic网络需要借助贝尔曼期望方程进行递归地策略评估,具体可以参考经典强化学习 | 策略评估与贝尔曼期望方程详细推导。以状态值函数为例,其贝尔曼方程为:
Vϕ(s)=Ea∼πθ(⋯),s′∼P(⋅s,a)[r(s,a)+γVϕ(s′)]V_\phi(s) = \mathbb{E}_{a \sim \pi_\theta(\cdots), s' \sim P(\cdot s,a)} \left[ r(s,a) + \gamma V_\phi(s') \right] Vϕ(s)=Eaπθ(),sP(s,a)[r(s,a)+γVϕ(s)]

其中 r(s,a)r(s,a)r(s,a) 是状态 sss 下执行动作 aaa 的即时奖励,P(⋅∣s,a)P(\cdot|s,a)P(s,a) 是环境转移概率,γ\gammaγ是折扣因子。这一方程表明,状态 sss 的价值等于当前奖励加上未来所有可能状态价值的折扣期望。Critic的目标是通过优化网络参数 ϕ\phiϕ使 Vϕ(s)V_\phi(s)Vϕ(s) 尽可能接近这一理论值。所以Critic的损失函数通常被定义为预测值与目标值的均方误差:
Lcritic=E{(s,a,r,s′)}∼D[(y−Vϕ(s))2]\mathcal{L}_\text{critic} = \mathbb{E}_{\{(s,a,r,s')\} \sim \mathcal{D}} \left[ \left( y - V_\phi(s) \right)^2 \right] Lcritic=E{(s,a,r,s)}D[(yVϕ(s))2]

其中 D\mathcal{D}D 是经验回放池。通过最小化这个损失,Critic逐渐学会为每个状态赋予合理的价值评分。

1.2 Actor网络优化

Actor网络的优化依赖于策略梯度定理,其核心思想是:策略的改进方向应使智能体更倾向于选择能带来更高长期奖励的动作,详细推导参考:深度强化学习 | 详细推导随机/确定性策略梯度定理。对于随机策略 πθ(a∣s)\pi_\theta(a|s)πθ(as),其策略梯度满足
∇θVπθ(s)∝E[Qπθ(s,a)∇θln⁡πθ(a∣s)]\nabla _{\boldsymbol{\theta }}V^{\pi _{\boldsymbol{\theta }}}\left( \boldsymbol{s} \right) \propto \mathbb{E} \left[ Q^{\pi _{\boldsymbol{\theta }}}\left( \boldsymbol{s},\boldsymbol{a} \right) \nabla _{\boldsymbol{\theta }}\ln \pi _{\boldsymbol{\theta }}\left( \boldsymbol{a}|\boldsymbol{s} \right) \right] θVπθ(s)E[Qπθ(s,a)θlnπθ(as)]
其中状态随机变量s∼Dπθ\boldsymbol{s}\sim D^{\pi _{\boldsymbol{\theta }}}sDπθ,动作随机变量a∼πθ(a∣s)\boldsymbol{a}\sim \pi _{\boldsymbol{\theta }}\left( \boldsymbol{a}|\boldsymbol{s} \right)aπθ(as)DπθD^{\pi _{\boldsymbol{\theta }}}Dπθ是由πθ\pi _{\boldsymbol{\theta }}πθ定义的归一化折扣状态分布。这一梯度的意义在于:如果某个动作 ata_tat 在状态 sts_tst 下的 Qπ(st,at)Q^\pi(s_t,a_t)Qπ(st,at) 较大(即Critic认为该动作能带来更高的长期奖励),且策略πθ\pi_\thetaπθata_tat 的选择概率较低(即 ∇θlog⁡πθ(at,st)\nabla_\theta \log \pi_\theta(a_t, s_t)θlogπθ(at,st) 为负),则策略 πθ\pi_\thetaπθ 应调整参数 θ\thetaθ,增加在 sts_tst 下选择 ata_tat 的概率(对随机策略)或直接增大该动作的输出(对确定性策略)。

对于随机策略梯度算法,可以令损失函数为

J(θ)=−E[Qπθ(s,a)ln⁡πθ(s,a)]J\left( \boldsymbol{\theta } \right) =-\mathbb{E} \left[ Q^{\pi _{\boldsymbol{\theta }}}\left( \boldsymbol{s},\boldsymbol{a} \right) \ln \pi _{\boldsymbol{\theta }}\left( \boldsymbol{s},\boldsymbol{a} \right) \right]J(θ)=E[Qπθ(s,a)lnπθ(s,a)]

进行反向传播;对于确定性策略梯度算法,可以令损失函数为

J(θ)=−E[Qμθ(s,μθ(s))]J\left( \boldsymbol{\theta } \right) =-\mathbb{E} \left[ Q^{\mu _{\boldsymbol{\theta }}}\left( \boldsymbol{s},\mu _{\boldsymbol{\theta }}\left( \boldsymbol{s} \right) \right) \right] J(θ)=E[Qμθ(s,μθ(s))]

进行反向传播

2 深度确定性策略梯度算法

深度确定性策略梯度(Deep Deterministic Policy Gradient, DDPG)可视为用演员-评论家框架对DQN和确定性梯度模型进行结合,弥补了DQN无法应用于连续动作空间的缺陷。事实上,DQN通过

π∗=argmax⁡a∈AQπ(s,a)\pi ^*=\mathrm{arg}\max _{a\in A}Q^{\pi}\left( s,a \right) π=argaAmaxQπ(s,a)

从最优价值获得最优的确定性策略,而传统的argmax⁡\mathrm{arg}\maxargmax操作只适合于离散空间,DDPG算法正是通过Actor网络对argmax⁡\mathrm{arg}\maxargmax操作建模,整体架构如图所示

在这里插入图片描述

值得注意的是,DDPG中的Actor网络对确定性策略而非随机策略建模,体现DPG的功能;Critic网络对动作-价值函数而非价值函数建模,体现DQN的功能。同时DDPG中沿用DQN的经验回放池及目标网络结构,属于离线策略方法。核心算法流程如下所示

在这里插入图片描述


🔥 更多精彩专栏

  • 《ROS从入门到精通》
  • 《Pytorch深度学习实战》
  • 《机器学习强基计划》
  • 《运动规划实战精讲》

👇源码获取 · 技术交流 · 抱团学习 · 咨询分享 请联系👇
http://www.xdnf.cn/news/1124767.html

相关文章:

  • [数据结构]#3 循环链表/双向链表
  • 为什么市场上电池供电的LoRa DTU比较少?
  • FBRT-YOLO: Faster and Better for Real-Time Aerial Image Detection论文精读(逐段解析)
  • 【HarmonyOS】元服务概念详解
  • 16.避免使用裸 except
  • ELK部署与使用详解
  • L1与L2正则化详解:原理、API使用与实践指南
  • Windows下安装nvm管理多个版本的node.js
  • LVS集群技术
  • 网络--OSPF实验
  • 分布式一致性协议
  • 卷积模型的优化--Dropout、批标准化与学习率衰减
  • 每天一个前端小知识 Day 31 - 前端国际化(i18n)与本地化(l10n)实战方案
  • 分支战略论:Git版本森林中的生存法则
  • PHP password_get_info() 函数
  • 时序预测 | Pytorch实现CNN-LSTM-KAN电力负荷时间序列预测模型
  • 深入理解MyBatis延迟加载:原理、配置与实战优化
  • 设备发出、接收数据帧的工作机制
  • B站自动回复工具(破解)
  • Linux连接跟踪Conntrack:原理、应用与内核实现
  • JAVA进阶--JVM
  • 【Linux网络】:HTTP(应用层协议)
  • rk3588平台USB 3.0 -OAK深度相机适配方法
  • 网络编程(TCP连接)
  • 前端同学,你能不能别再往后端传一个巨大的JSON了?
  • 7.14练习案例总结
  • UE5多人MOBA+GAS 22、创建技能图标UI,实现显示蓝耗,冷却,以及数字显示的倒数计时还有雷达显示的倒数计时
  • C语言:20250714笔记
  • OFDM系统中关于信号同步的STO估计与CFO估计的MATLAB仿真
  • 学习笔记——农作物遥感识别与大范围农作物类别制图的若干关键问题