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

【强化学习理论】基于策略的强化学习——深度确定性策略梯度算法

【强化学习理论】基于策略的强化学习——深度确定性策略梯度算法

深度确定性策略梯度算法(Deep Deterministic Policy Gradient,DDPG)是一种Actor-Critic框架的算法,该算法常用于连续控制任务(动作空间为连续型),其中Actor网络产生的动作是具体的、确定的动作而非动作的分布,因此被称为“确定性”策略梯度。本文介绍深度确定性策略梯度算法。

注:本文是在观看【王树森】深度强化学习(DRL)P19后的整理。

1. DDPG算法结构

DDPG作为一种Actor-Critic算法,由一个Actor网络(策略网络 μ ( s ; θ ) \mu(s;\theta) μ(s;θ) θ \theta θ表示网络参数)和一个Critic网络(价值网络 q ( s , a ; ω ) q(s,a;\omega) q(s,a;ω) ω \omega ω表示网络参数)组成,如下图所示。

在这里插入图片描述

图源【王树森】深度强化学习(DRL)P19。

  • Actor网络:输入为状态 s s s,输出为具体的动作(实数或者向量) a a a而非动作的概率分布,即 a = μ ( s ; θ ) a = \mu(s;\theta) a=μ(s;θ)这个动作会作为Critic网络的输入之一。

    Actor的目标是输出好的动作(”好“与”不好“由Critic评估),使得Critic输出的动作价值尽量高。因此Actor的优化需要Critic参与,并需要对 θ \theta θ进行梯度上升。

  • Critic网络:输入为状态 s s s和Actor网络的输出 a a a,输出为状态-动作对 ( s , a ) (s,a) (s,a)的价值,即 Q ( s , a ) = q ( s , a ; θ ) Q(s,a) = q(s,a;\theta) Q(s,a)=q(s,a;θ)

    Critic的目标是尽量准确地评估动作的好坏,即准确地估计动作价值(这一点与DQN一致)。因此Critic的优化需要最小化TD error(后面解释什么是TD error),对 ω \omega ω进行梯度下降。

实际训练时,策略网络和价值网络都有对应的目标网络——目标策略网络(target policy network) μ ( s ; θ − ) \mu(s;\theta^-) μ(s;θ)和目标价值网络(target value network) q ( s , a ; ω − ) q(s,a;\omega^-) q(s,a;ω),即DDPG中总共有4个神经网络。

2. 如何训练Critic网络

由于Critic的目标是尽量准确地评估动作的好坏,即准确地估计动作价值,使用TD算法训练Critic网络。此时需要最小化TD error。

对于一个transition元组 ( s t , a t , r t , s t + 1 ] ) (s_t,a_t,r_t,s_{t+1]}) (st,at,rt,st+1]),一般认为当前状态-动作对的动作价值 Q ( s t , a t ) Q(s_t,a_t) Q(st,at)的目标(类似于”ground truth“的概念)为 r t + γ Q ( s t + 1 , a t + 1 ) r_t + \gamma Q(s_{t+1},a_{t+1}) rt+γQ(st+1,at+1),则可定义TD error δ t \delta_t δt为:
δ t = Q ( s t , a t ) − ( r t + γ Q ( s t + 1 , a t + 1 ) ) \delta_t = Q(s_t,a_t) - (r_t + \gamma Q(s_{t+1},a_{t+1})) δt=Q(st,at)(rt+γQ(st+1,at+1))
对于一个transition元组 ( s t , a t , r t , s t + 1 ) (s_t,a_t,r_t,s_{t+1}) (st,at,rt,st+1),当前状态-动作对及未来下一步状态-动作对的动作价值均可以使用Critic网络估计:
Q ( s t , a t ) = q ( s t , a t ; ω ) , Q ( s t + 1 , a ^ t + 1 ) = q ( s t + 1 , a ^ t + 1 ; ω ) Q(s_t,a_t) = q(s_t,a_t;\omega), \quad Q(s_{t+1},\hat{a}_{t+1}) = q(s_{t+1},\hat{a}_{t+1};\omega) Q(st,at)=q(st,at;ω),Q(st+1,a^t+1)=q(st+1,a^t+1;ω)
其中,下一状态的动作由策略网络计算提供, a ^ t + 1 = μ ( s t + 1 ; θ ) \hat{a}_{t+1} = \mu(s_{t+1};\theta) a^t+1=μ(st+1;θ),并非实际发生的动作,因此记为 a ^ t + 1 \hat{a}_{t+1} a^t+1。进一步的,可以计算TD error:
δ t = q ( s t , a t ; ω ) − ( r t + q ( s t + 1 , a ^ t + 1 ; ω ) ) ⏟ t a r g e t \delta_t = q(s_t,a_t;\omega) - \underbrace{(r_t + q(s_{t+1},\hat{a}_{t+1};\omega))}_{target} δt=q(st,at;ω)target (rt+q(st+1,a^t+1;ω))
有了TD error,根据Critic的目标,Critic网络的目标函数可以写成:
J ( ω ) = E ( s t , a t ) ∈ ( S , A ) [ δ t 2 ] = E ( s t , a t ) ∈ ( S , A ) [ ( q ( s t , a t ; ω ) − ( r t + q ( s t + 1 , a ^ t + 1 ; ω ) ) ) 2 ] \mathcal{J}(\omega) = \mathbb{E}_{(s_t,a_t) \in (\mathcal{S},\mathcal{A})} [\delta_t ^2] = \mathbb{E}_{(s_t,a_t) \in (\mathcal{S},\mathcal{A})} [\textcolor{blue}{(q(s_t,a_t;\omega) - (r_t + q(s_{t+1},\hat{a}_{t+1};\omega)))}^2] J(ω)=E(st,at)(S,A)[δt2]=E(st,at)(S,A)[(q(st,at;ω)(rt+q(st+1,a^t+1;ω)))2]
则网络参数更新的梯度为:
∂ J ( ω ) ∂ ω = ∂ E ( s t , a t ) ∈ ( S , A ) [ ( q ( s t , a t ; ω ) − ( r t + q ( s t + 1 , a ^ t + 1 ; ω ) ) ) 2 ] ∂ ω = E ( s t , a t ) ∈ ( S , A ) [ ∂ [ ( q ( s t , a t ; ω ) − ( r t + q ( s t + 1 , a ^ t + 1 ; ω ) ) ) 2 ] ∂ ω ] = E ( s t , a t ) ∈ ( S , A ) [ 2 ⋅ ( q ( s t , a t ; ω ) − ( r t + q ( s t + 1 , a ^ t + 1 ; ω ) ) ) ⋅ ∂ ( q ( s t , a t ; ω ) − ( r t + q ( s t + 1 , a ^ t + 1 ; ω ) ) ) ∂ ω ] = E ( s t , a t ) ∈ ( S , A ) [ 2 ⋅ ( q ( s t , a t ; ω ) − ( r t + q ( s t + 1 , a ^ t + 1 ; ω ) ) ) ⋅ ( ∂ q ( s t , a t ; ω ) ∂ ω − ∂ r t ∂ ω − ∂ q ( s t + 1 , a ^ t + 1 ; ω ) ∂ ω ) ] = E ( s t , a t ) ∈ ( S , A ) [ 2 ⋅ ( q ( s t , a t ; ω ) − ( r t + q ( s t + 1 , a ^ t + 1 ; ω ) ) ) ⋅ ( ∂ q ( s t , a t ; ω ) ∂ ω − 0 − 0 ) ] = E ( s t , a t ) ∈ ( S , A ) [ δ t ⋅ ∂ q ( s t , a t ; ω ) ∂ ω ] \begin{aligned} \frac{\partial \mathcal{J}(\omega)}{\partial \omega} &= \frac{\partial \mathbb{E}_{(s_t,a_t) \in (\mathcal{S},\mathcal{A})} [\textcolor{blue}{(q(s_t,a_t;\omega) - (r_t + q(s_{t+1},\hat{a}_{t+1};\omega)))}^2]}{\partial \omega} \\ &= \mathbb{E}_{(s_t,a_t) \in (\mathcal{S},\mathcal{A})} \left[\frac{\partial [\textcolor{blue}{(q(s_t,a_t;\omega) - (r_t + q(s_{t+1},\hat{a}_{t+1};\omega)))}^2]}{\partial \omega}\right] \\ &= \mathbb{E}_{(s_t,a_t) \in (\mathcal{S},\mathcal{A})} \left[2 \cdot \textcolor{blue}{(q(s_t,a_t;\omega) - (r_t + q(s_{t+1},\hat{a}_{t+1};\omega)))} \cdot \frac{\partial \textcolor{blue}{(q(s_t,a_t;\omega) - (r_t + q(s_{t+1},\hat{a}_{t+1};\omega)))}}{\partial \omega}\right] \\ &= \mathbb{E}_{(s_t,a_t) \in (\mathcal{S},\mathcal{A})} \left[2 \cdot \textcolor{blue}{(q(s_t,a_t;\omega) - (r_t + q(s_{t+1},\hat{a}_{t+1};\omega)))} \cdot \left( \frac{\partial q(s_t,a_t;\omega)}{\partial \omega} - \frac{\partial r_t}{\partial \omega} - \frac{\partial q(s_{t+1},\hat{a}_{t+1};\omega)}{\partial \omega} \right)\right] \\ &= \mathbb{E}_{(s_t,a_t) \in (\mathcal{S},\mathcal{A})} \left[2 \cdot \textcolor{blue}{(q(s_t,a_t;\omega) - (r_t + q(s_{t+1},\hat{a}_{t+1};\omega)))} \cdot \left( \frac{\partial q(s_t,a_t;\omega)}{\partial \omega} - 0 - 0 \right)\right] \\ &= \mathbb{E}_{(s_t,a_t) \in (\mathcal{S},\mathcal{A})} \left[ \delta_t \cdot \frac{\partial q(s_t,a_t;\omega)}{\partial \omega} \right] \end{aligned} ωJ(ω)=ωE(st,at)(S,A)[(q(st,at;ω)(rt+q(st+1,a^t+1;ω)))2]=E(st,at)(S,A)[ω[(q(st,at;ω)(rt+q(st+1,a^t+1;ω)))2]]=E(st,at)(S,A)[2(q(st,at;ω)(rt+q(st+1,a^t+1;ω)))ω(q(st,at;ω)(rt+q(st+1,a^t+1;ω)))]=E(st,at)(S,A)[2(q(st,at;ω)(rt+q(st+1,a^t+1;ω)))(ωq(st,at;ω)ωrtωq(st+1,a^t+1;ω))]=E(st,at)(S,A)[2(q(st,at;ω)(rt+q(st+1,a^t+1;ω)))(ωq(st,at;ω)00)]=E(st,at)(S,A)[δtωq(st,at;ω)]

由于对不同状态-动作对求期望与求偏导对象 ω \omega ω无关,因此可以将求期望运算从求偏导中提取出来,第一行转化为第二行;

根据链式法则,第二行转化为第三行;

在第四行中, r t r_t rt与求偏导对象 ω \omega ω无关,因此 ∂ r t ∂ ω = 0 \frac{\partial r_t}{\partial \omega} = 0 ωrt=0;在后续会提到计算 q ( s t + 1 , a ^ t + 1 ; ω ) q(s_{t+1},\hat{a}_{t+1};\omega) q(st+1,a^t+1;ω)实际使用的是目标价值网络,该网络的参数实际为 ω − \omega^- ω而不是 ω \omega ω,因此 q ( s t + 1 , a ^ t + 1 ; ω ) q(s_{t+1},\hat{a}_{t+1};\omega) q(st+1,a^t+1;ω)与求偏导对象 ω \omega ω也无关, ∂ q ( s t + 1 , a ^ t + 1 ; ω ) ∂ ω = 0 \frac{\partial q(s_{t+1},\hat{a}_{t+1};\omega)}{\partial \omega} = 0 ωq(st+1,a^t+1;ω)=0,第四行转化为第五行;

根据TD error的定义,简化第五行,同时可忽略常数,得到第六行。

在神经网络中计算时,会按当前batch中的样本计算网络参数的梯度,即随机梯度 δ t ⋅ ∂ q ( s t , a t ; ω ) ∂ θ \delta_t \cdot \frac{\partial q(s_t,a_t;\omega)}{\partial \theta} δtθq(st,at;ω)。则Critic网络参数更新的式子为:
ω ← ω − α ⋅ δ t ⋅ ∂ q ( s t , a t ; ω ) ∂ ω \omega \leftarrow \omega - \alpha \cdot \delta_t \cdot \frac{\partial q(s_t,a_t;\omega)}{\partial \omega} ωωαδtωq(st,at;ω)
其中, α \alpha α为Critic网络的学习率。

3. 如何训练Actor网络

Actor的目标是输出好的动作(”好“与”不好“由Critic评估),使得Critic输出的动作价值尽量高。因此Actor的优化需要Critic参与。

根据Actor的目标,Actor网络的目标函数可以写成:
J ( θ ) = E ( s t , a t ) ∼ ( S , A ) [ q ( s t , a t ; ω ) ] = E ( s t , a t ) ∼ ( S , A ) [ q ( s t , μ ( s t ; θ ) ; ω ) ] \mathcal{J}(\theta) = \mathbb{E}_{(s_t,a_t)\sim(\mathcal{S},\mathcal{A})}[q(s_t, \textcolor{blue}{a_t}; \omega)] = \mathbb{E}_{(s_t,a_t)\sim(\mathcal{S},\mathcal{A})}[q(s_t, \textcolor{blue}{\mu(s_t;\theta)};\omega)] J(θ)=E(st,at)(S,A)[q(st,at;ω)]=E(st,at)(S,A)[q(st,μ(st;θ);ω)]
则网络参数更新的梯度(这里直接写成随机梯度,省略期望)为:
∂ J ( θ ) ∂ θ ← ∂ q ( s t , μ ( s t ; θ ) ; ω ) ∂ θ = ∂ q ( s t , μ ( s t ; θ ) ; ω ) ∂ μ ( s t ; θ ) ⋅ ∂ μ ( s t ; θ ) ∂ θ ( 此即为确定策略梯度 ) \begin{aligned} \frac{\partial \mathcal{J}(\theta)}{\partial \theta} &\leftarrow \frac{\partial q(s_t, \textcolor{blue}{\mu(s_t;\theta)};\omega)}{\partial \theta} \\ &= \frac{\partial q(s_t, \mu(s_t;\theta);\omega)}{\partial \mu(s_t;\theta)} \cdot \frac{\partial \mu(s_t;\theta)}{\partial \theta} \quad (此即为确定策略梯度) \end{aligned} θJ(θ)θq(st,μ(st;θ);ω)=μ(st;θ)q(st,μ(st;θ);ω)θμ(st;θ)(此即为确定策略梯度)

根据链式法则,第一行转化为第二行。

g = ∂ q ( s t , μ ( s t ; θ ) ; ω ) ∂ μ ( s t ; θ ) ⋅ ∂ μ ( s t ; θ ) ∂ θ g=\frac{\partial q(s_t, \mu(s_t;\theta);\omega)}{\partial \mu(s_t;\theta)} \cdot \frac{\partial \mu(s_t;\theta)}{\partial \theta} g=μ(st;θ)q(st,μ(st;θ);ω)θμ(st;θ) g g g即为确定策略梯度。由此,Actor网络参数更新的式子为:
θ ← θ + β ⋅ g \theta \leftarrow \theta + \beta \cdot g θθ+βg

4. 目标网络的使用

DQN中提到,前述TD error的计算方式会存在高估或低估动作价值的问题,这是因为TD error的计算中涉及到自举(Bootstrapping),在使用价值网络估计 Q ( s t + 1 , a t + 1 ) Q(s_{t+1},a_{t+1}) Q(st+1,at+1)时,如果此值已经高于或低于真实值,则对 Q ( s t , a t ) Q(s_t,a_t) Q(st,at)的估计也会高于或低于真实值。为了解决过估计的问题,DQN中使用了目标网络,此处也可以应用。

具体而言,记计算 Q ( s t + 1 , a t + 1 ) Q(s_{t+1},a_{t+1}) Q(st+1,at+1)使用的神经网络为目标价值网络 q ( s t + 1 , a t + 1 ; ω − ) q(s_{t+1},a_{t+1};\omega^-) q(st+1,at+1;ω),其中 a t + 1 a_{t+1} at+1的计算也需要引入新的策略网络,即目标策略网络 μ ( s t + 1 ; θ − ) \mu(s_{t+1};\theta^-) μ(st+1;θ)

目标网络更新参数的方式为:
ω − ← τ ω + ( 1 − τ ) ω − , θ − ← τ θ + ( 1 − τ ) θ − \omega^- \leftarrow \tau \omega + (1-\tau)\omega^-, \quad \theta^- \leftarrow \tau \theta + (1-\tau)\theta^- ωτω+(1τ)ω,θτθ+(1τ)θ
其中, τ ∈ ( 0 , 1 ) \tau \in (0,1) τ(0,1),是一个超参数。当 τ = 1 \tau=1 τ=1时,此种目标网络的更新方式与DQN的目标网络的更新方式一致。

5. 深度确定性策略梯度算法的流程

在这里插入图片描述

参考:第 13 章 DDPG 算法

6. 随机性策略和确定性策略的区别

随机性策略确定性策略
策略网络输出动作空间上的概率分布 π ( a ∣ s ; θ ) \pi(a|s;\theta) π(as;θ)具体的动作 μ ( s ; θ ) \mu(s;\theta) μ(s;θ)
使用动作从动作分布中随机采样一个动作直接使用输出的动作
应用场景多用于离散型动作空间的控制任务多用于连续型动作空间的控制任务

参考:【王树森】深度强化学习(DRL)P19


http://www.kler.cn/a/381959.html

相关文章:

  • SharpDX 从入门到精通:全面学习指南
  • shell脚本定义特殊字符导致执行mysql文件错误的问题
  • 用 gdbserver 调试 arm-linux 上的 AWTK 应用程序
  • WebAssembly与WebGL结合:高性能图形处理
  • Redis+注解实现限流机制(IP、自定义等)
  • MVC 发布
  • Python内置模块-Json:轻松处理数据交换的艺术
  • 项目实战使用gitee
  • Golang | Leetcode Golang题解之第538题把二叉搜索树转换为累加树
  • 质数的和与积
  • 什么是ajax,为什么使用ajax?ajax都有哪些优点和缺点?
  • 「Mac畅玩鸿蒙与硬件24」UI互动应用篇1 - 灯光控制小项目
  • 恢复Ubuntu+Windows10双系统安装前状态及分区还原详细步骤
  • L5.【LeetCode笔记】移除链表元素
  • 如何修改远程分支?修改了会影响什么?
  • python中t是什么意思
  • 直播系统搭建教程安装说明
  • IT架构管理
  • SpringBoot在线教育系统:性能监控与优化
  • 项目活动进度计算题
  • arkUI:布局的属性(margin、padding、border、borderRadius)
  • Spring Boot驱动的多维分类知识管理系统
  • 雷池社区版 7.1.0 LTS 发布了
  • U8C表体存货或编码相关的字段赋值不上
  • Pr 视频效果:超级键
  • 文件外发记录监控 | 公司文档外发如何跟踪数据流向?6大策略让文件不再滥发泄密! (2024全面解读)