深度强化学习(DRL)算法 4 —— Deep Deterministic Policy Gradient (DDPG)

回顾

之前我们在 深度强化学习(DRL)算法 3 ------ Deep Q-learning(DQN) - 掘金 (juejin.cn)定义了 DQN 的 Loss 函数:

L o s s = ( r + γ m a x a N N t a r g e t ( s t + 1 , w ) − N N ( s t , w ′ ) ) 2 Loss = (r + \gamma max_{a}NN_{target}(s_{t+1},w) - NN(s_{t}, w'))^{2} Loss=(r+γmaxaNNtarget(st+1,w)−NN(st,w′))2

算法描述

因为 NN 的输出是 Q(s, a) ,输入是 s,所以不能处理连续的动作空间(因为输出不能无限多)。那么直觉上,可以构建一个新的 NN,输入是 s 和 a,就可以处理连续的动作空间。但是 a 怎么来,显然还需要一个新的神经网络NN_action 用来模拟 a。 那么类似 DQN,我们对 NN 有一个新的 Loss 表示,max 去掉因为是确定性策略(输入只有一个 a)。

l o s s q = ( r + γ N N t a r g e t ( s t + 1 , N N a c t i o n _ t a r g e t ( s t + 1 , θ ) , w ) ⏟ t d − t a r g e t − N N ( s t , N N a c t i o n ( s t + 1 , θ ′ ) + ϵ , w ′ ) ) 2 loss_q = (\underbrace{r + \gamma NN_{target}(s_{t+1}, NN_{action\target}(s{t+1}, \theta), w)}{td-target} - NN(s{t}, NN_{action}(s_{t+1}, \theta') + \epsilon , w'))^{2} lossq=(td−target r+γNNtarget(st+1,NNaction_target(st+1,θ),w)−NN(st,NNaction(st+1,θ′)+ϵ,w′))2 (1) 但是 td-target 有一个真实的采样 r,所以 td-target 仍就是较为准确的那个,可以固定 td-target,让 NN 趋近 td-target。

经验回放

我们注意到原始的 DQN是通过 π ← ε \pi \leftarrow \varepsilon π←ε - greedy(Q) (行动策略),通过控制 ε \varepsilon ε 来决定探索行为,但是根据公式(1),我们的输入是确定性行为,怎么进行探索呢?所以就有了后面的 N N a c t i o n ( s t + 1 , θ ′ ) + ϵ NN_{action}(s_{t+1}, \theta') + \epsilon NNaction(st+1,θ′)+ϵ ,给 action 引入了随机扰动( ϵ ∼ N ( 0 , σ ) \epsilon \sim \mathcal{N}({0, \sigma}) ϵ∼N(0,σ) ),那么就增加了探索性。所以 DDPG 的 行动策略

N N a c t i o n ( s t + 1 , θ ′ ) + ϵ NN_{action}(s_{t+1}, \theta') + \epsilon NNaction(st+1,θ′)+ϵ

目标策略

N N a c t i o n _ t a r g e t ( s t + 1 , θ ) NN_{action\target}(s{t+1}, \theta) NNaction_target(st+1,θ)

是不同的,所以 DDPG 也是天然 off-policy 的。那么和 DQN 类似,我们可以直接采样一系列的 (s, N N a c t i o n ( s t + 1 , θ ′ ) + ϵ NN_{action}(s_{t+1}, \theta') + \epsilon NNaction(st+1,θ′)+ϵ, r' , s'),用于神经网络的训练,这就是 DDPG 的经验回放。

NN_action Loss

我们现在可以通过 L o s s q Loss_q Lossq 来更新 NN,我们还需要一个新的 Loss 来更新 N N a c t i o n NN_{action} NNaction 。更新 N N a c t i o n NN_{action} NNaction 后,让 Q 值变大,那么 Loss 可以用 Q * -1,用梯度下降的方法 Q 自然会增大。所以:

l o s s a = − N N ( s t + 1 , N N a c t i o n ( s t , θ ′ ) ) loss_a = - NN(s_{t+1}, NN_{action}(s_{t}, \theta')) lossa=−NN(st+1,NNaction(st,θ′))

有了对应的 loss,我们通过降低 lossq 和 lossa 来获得越来越好的 Q 值。

软更新

如果按之前 DQN target 参数的更新方式,我们直接复制过去: ω ← ω ′ \omega \leftarrow \omega' ω←ω′ θ ← θ ′ \theta \leftarrow\theta' θ←θ′

DDPG 的作者提出了一种通过控制参数 τ \tau τ的软更新方式: ω ← τ ω ′ + ( 1 − τ ) ω \omega \leftarrow \tau\omega' + (1-\tau)\omega ω←τω′+(1−τ)ω θ ← τ θ ′ + ( 1 − τ ) θ \theta \leftarrow \tau\theta' + (1-\tau)\theta θ←τθ′+(1−τ)θ

使得目标网络更稳定的融入得到训练的 NN 网络的参数,类似降低学习率,获得更稳定训练效果的操作。 到这里 DDPG 算法的核心内容就介绍完了。

缺点

就像 q-learning 的 td-target 使用的 max 操作使得模型的偏差更大,因为 q 的值被高估了(实际上这也是 double DQN 的改进),高估问题会影响模型的探索性,DDPG 虽然没有 max 操作,但是仍旧有高估问题的可能。lossq 和 lossa 同时更新不合理,下篇文章提出改进DQN 使用的是深度学习版本的 q-learning,我们都知道期望 Sarsa 是比 Q-learning 更稳定的算法,我们也可以从这个角度出发提出改进。

改进

我们针对这些缺点,下篇文章对 DDPG 的改进版本 TD3 进行介绍,感谢阅读。

参考

  1. arxiv.org/pdf/1509.02...
  2. 第10课-Actor-Critic方法(Part4-Deterministic Actor-Critic (DPG))【强化学习的数学原理】_哔哩哔哩_bilibili
  3. Deep Deterministic Policy Gradient (DDPG)
相关推荐
指掀涛澜天下惊11 天前
AI 基础知识十九 强化学习前言
人工智能·机器学习·强化学习
劈星斩月11 天前
机器学习之 定义与三大范式
人工智能·机器学习·监督学习·强化学习·无监督学习
文艺倾年11 天前
【强化学习】数学推导专题,20W字总结(十五)
人工智能·分布式·大模型·强化学习·vibecoding
盼小辉丶11 天前
PyTorch强化学习实战(14)——优先经验回放机制
pytorch·python·深度学习·强化学习
文艺倾年13 天前
【强化学习】MDP、贝尔曼方程与CartPole 编程,20W字总结(二)
人工智能·软件工程·强化学习
happyprince13 天前
07_verl-Trainer模块详解
人工智能·架构·wpf·强化学习
chen_zn9514 天前
RLinf复现RECAP(一):从轨迹回报到优势标签
人工智能·强化学习·具身智能·vla
happyprince14 天前
08_verl-Workers模块详解
人工智能·架构·强化学习
happyprince14 天前
02_verl-代码目录结构详解
人工智能·架构·强化学习
happyprince14 天前
10_verl-Rollout模块详解
人工智能·架构·强化学习