当前位置: 首页 > 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.lryc.cn/news/589032.html

相关文章:

  • linux网络编程之单reactor模型(二)
  • Web攻防-PHP反序列化字符逃逸增多减少成员变量属性解析不敏感Wakeup绕过
  • 第二章 数据的表示和运算
  • 【每天一个知识点】多模态信息(Multimodal Information)
  • 为何说分布式 AI 推理已成为下一代计算方式
  • AI-Compass LLM训练框架生态:整合ms-swift、Unsloth、Megatron-LM等核心框架,涵盖全参数/PEFT训练与分布式优化
  • 分布式通信框架 - JGroups
  • 第二阶段-第二章—8天Python从入门到精通【itheima】-129节(MySQL的安装)
  • JVM——编译执行于解释执行的区别是什么?JVM使用哪种方式?
  • 从 0 到 1 掌握 自研企业级分布式 ID 发号器
  • 【PTA数据结构 | C语言版】创建哈夫曼树
  • 【c++】c++11新特性(右值引用和移动语义)
  • 安全参綉25暑假第一次作业
  • 如何科学做好企业软件许可优化?
  • 构建 Go 可执行文件镜像 | 探索轻量级 Docker 基础镜像(我应该选择哪个 Docker 镜像?)
  • 波动回升正当时!期权合成多头:震荡市攻守兼备利器
  • 职业院校网络安全攻防对抗实训室解决方案
  • Axios 和Express 区别对比
  • 大模型在1型糖尿病肾病V期预测及治疗方案制定中的应用研究
  • 编写一个简单的riscv模拟器(三)
  • MySQL 备份与恢复指南
  • etcd压缩历史版本
  • Web3 学习路线与面试经验
  • Springboot集成SpringSecurity的介绍及使用
  • AR眼镜颠覆医疗:精准手术零误差
  • 1.1 前端-vue3项目的创建
  • vscode 打开c++文件注释乱码
  • mysql 索引失效的场景
  • 将 Vue 3 + Vite + TS 项目打包为 .exe 文件
  • SpringBoot 实现 Redis读写分离