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

回顾

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

<math xmlns="http://www.w3.org/1998/Math/MathML"> 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} </math>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)。

<math xmlns="http://www.w3.org/1998/Math/MathML"> 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} </math>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是通过 <math xmlns="http://www.w3.org/1998/Math/MathML"> π ← ε \pi \leftarrow \varepsilon </math>π←ε - greedy(Q) (行动策略),通过控制 <math xmlns="http://www.w3.org/1998/Math/MathML"> ε \varepsilon </math>ε 来决定探索行为,但是根据公式(1),我们的输入是确定性行为,怎么进行探索呢?所以就有了后面的 <math xmlns="http://www.w3.org/1998/Math/MathML"> N N a c t i o n ( s t + 1 , θ ′ ) + ϵ NN_{action}(s_{t+1}, \theta') + \epsilon </math>NNaction(st+1,θ′)+ϵ ,给 action 引入了随机扰动( <math xmlns="http://www.w3.org/1998/Math/MathML"> ϵ ∼ N ( 0 , σ ) \epsilon \sim \mathcal{N}({0, \sigma}) </math>ϵ∼N(0,σ) ),那么就增加了探索性。所以 DDPG 的 行动策略

<math xmlns="http://www.w3.org/1998/Math/MathML"> N N a c t i o n ( s t + 1 , θ ′ ) + ϵ NN_{action}(s_{t+1}, \theta') + \epsilon </math>NNaction(st+1,θ′)+ϵ

目标策略

<math xmlns="http://www.w3.org/1998/Math/MathML"> N N a c t i o n _ t a r g e t ( s t + 1 , θ ) NN_{action\target}(s{t+1}, \theta) </math>NNaction_target(st+1,θ)

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

NN_action Loss

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

<math xmlns="http://www.w3.org/1998/Math/MathML"> 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')) </math>lossa=−NN(st+1,NNaction(st,θ′))

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

软更新

如果按之前 DQN target 参数的更新方式,我们直接复制过去: <math xmlns="http://www.w3.org/1998/Math/MathML"> ω ← ω ′ \omega \leftarrow \omega' </math>ω←ω′ <math xmlns="http://www.w3.org/1998/Math/MathML"> θ ← θ ′ \theta \leftarrow\theta' </math>θ←θ′

DDPG 的作者提出了一种通过控制参数 <math xmlns="http://www.w3.org/1998/Math/MathML"> τ \tau </math>τ的软更新方式: <math xmlns="http://www.w3.org/1998/Math/MathML"> ω ← τ ω ′ + ( 1 − τ ) ω \omega \leftarrow \tau\omega' + (1-\tau)\omega </math>ω←τω′+(1−τ)ω <math xmlns="http://www.w3.org/1998/Math/MathML"> θ ← τ θ ′ + ( 1 − τ ) θ \theta \leftarrow \tau\theta' + (1-\tau)\theta </math>θ←τθ′+(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)
相关推荐
IT猿手14 小时前
最新高性能多目标优化算法:多目标麋鹿优化算法(MOEHO)求解GLSMOP1-GLSMOP9及工程应用---盘式制动器设计,提供完整MATLAB代码
开发语言·算法·机器学习·matlab·强化学习
凳子花❀2 天前
强化学习与深度学习以及相关芯片之间的区别
人工智能·深度学习·神经网络·ai·强化学习
我爱C编程2 天前
基于Qlearning强化学习的机器人路线规划matlab仿真
matlab·机器人·强化学习·路线规划·qlearning·机器人路线规划
IT猿手4 天前
基于PWLCM混沌映射的麋鹿群优化算法(Elk herd optimizer,EHO)的多无人机协同路径规划,MATLAB代码
算法·elk·机器学习·matlab·无人机·聚类·强化学习
IT古董10 天前
【机器学习】机器学习的基本分类-强化学习(Reinforcement Learning, RL)
人工智能·机器学习·分类·强化学习
smartcat201012 天前
PPO系列3 - PPO原理
强化学习
IT猿手12 天前
强化学习路径规划:基于SARSA算法的移动机器人路径规划,可以更改地图大小及起始点,可以自定义障碍物,MATLAB代码
android·算法·机器学习·matlab·迁移学习·强化学习·多目标优化
smartcat201012 天前
PPO系列4 - Reward模型训练
强化学习
不去幼儿园13 天前
【强化学习】策略梯度---REINFORCE算法
人工智能·python·算法·机器学习·强化学习
不去幼儿园18 天前
【强化学习】策略梯度(Policy Gradient,PG)算法
人工智能·python·算法·机器学习·强化学习