强化学习的学习之路(五十四) 2021-02-23 DDPG

作为一个新手,写这个强化学习-基础知识专栏是想和大家分享一下自己学习强化学习的学习历程,希望对大家能有所帮助。这个系列后面会不断更新,希望自己在2021年能保证平均每日一更的更新速度,主要是介绍强化学习的基础知识,后面也会更新强化学习的论文阅读专栏。本来是想每一篇多更新一点内容的,后面发现大家上CSDN主要是来提问的,就把很多拆分开来了(而且这样每天任务量也小一点哈哈哈哈偷懒大法)。但是我还是希望知识点能成系统,所以我在目录里面都好按章节系统地写的,而且在github上写成了书籍的形式,如果大家觉得有帮助,希望从头看的话欢迎关注我的github啊,谢谢大家!另外我还会分享深度学习-基础知识专栏以及深度学习-论文阅读专栏,很早以前就和小伙伴们花了很多精力写的,如果有对深度学习感兴趣的小伙伴也欢迎大家关注啊。大家一起互相学习啊!可能会有很多错漏,希望大家批评指正!不要高估一年的努力,也不要低估十年的积累,与君共勉!

DDPG

DDPG(Deep DPG)来自ICLR2016的论文Contious control with deep reinforcement learning,是一种model-free、off-policy、actor-critic架构的算法,主要是利用了我们前面讲的DPG结合一些trick在连续的动作空间的环境下取得了比较好的效果,因为之前一年DQN利用深度神经网络做函数近似在离散的、低维的动作空间的任务上取得了很好的效果,因此作者在DDPG中借鉴了很多DQN的一些成功的trick。

我们先来推导一些DDPG的目标函数:

并不包含其他的限定,例如是否为 On-Policy 或者 Off-Policy。对于 On-Policy 的 Deterministic Actor-Critc算法,值函数为 Q w ( s , a ) , Q^{w}(s, a), Qw(s,a), 确定策略为 μ θ ( s ) \mu_{\theta}(s) μθ(s), 我们可以建立如下目标函数:
J ( w ) = minimize ⁡ w E π [ 1 2 ( r t + γ Q w ( s t + 1 , a t + 1 ) − Q w ( s t , a t ) ) 2 ] J ( θ ) = maximize ⁡ θ E π [ Q w ( s t , μ ( s t ) ) ] \begin{aligned} J(w) &=\operatorname{minimize}_{w} E_{\pi}\left[\frac{1}{2}\left(r_{t}+\gamma Q^{w}\left(s_{t+1}, a_{t+1}\right)-Q^{w}\left(s_{t}, a_{t}\right)\right)^{2}\right] \\ J(\theta) &=\operatorname{maximize}_{\theta} E_{\pi}\left[Q^{w}\left(s_{t}, \mu\left(s_{t}\right)\right)\right] \end{aligned} J(w)J(θ)=minimizewEπ[21(rt+γQw(st+1,at+1)Qw(st,at))2]=maximizeθEπ[Qw(st,μ(st))]
对其进行求解,可以得到
Δ w = α E π [ ( r t + γ Q w ( s t + 1 , a t + 1 ) − Q w ( s t , a t ) ) ∇ w Q w ( s t , a t ) ] Δ θ = α E π [ ∇ w Q w ( s t , a t ) ∣ a = μ θ ( s ) ∇ θ μ θ ( s t ) ] \begin{array}{l} \Delta w=\alpha E_{\pi}\left[\left(\boldsymbol{r}_{t}+\gamma Q^{w}\left(s_{t+1}, \boldsymbol{a}_{t+1}\right)-Q^{w}\left(s_{t}, \boldsymbol{a}_{t}\right)\right) \nabla_{w} Q^{w}\left(\boldsymbol{s}_{t}, \boldsymbol{a}_{t}\right)\right] \\ \Delta \theta=\alpha E_{\pi}\left[\left.\nabla_{w} Q^{w}\left(\boldsymbol{s}_{t}, \boldsymbol{a}_{t}\right)\right|_{\boldsymbol{a}=\mu_{\theta}(\boldsymbol{s})} \nabla_{\theta} \mu_{\theta}\left(s_{t}\right)\right] \end{array} Δw=αEπ[(rt+γQw(st+1,at+1)Qw(st,at))wQw(st,at)]Δθ=αEπ[wQw(st,at)a=μθ(s)θμθ(st)]
对于 Off-Policy 的算法,我们同样可以建立目标函数。由于我们使用了确定的策略, 同时值函数不依赖任何策略,那么在计算时我们就不需要向随机策略那样进行重要性采样计算。假设样本来自策略 β \beta β ,我们的目标函数为
J ( w ) = minimize ⁡ w E β [ 1 2 ( r t + γ Q w ( s t + 1 , a t + 1 ) − Q w ( s t , a t ) ) 2 ] J ( θ ) = maximize ⁡ θ E β [ Q w ( s t , μ ( s t ) ) ] \begin{aligned} J(w) &=\operatorname{minimize}_{w} E_{\beta}\left[\frac{1}{2}\left(\boldsymbol{r}_{t}+\gamma Q^{w}\left(s_{t+1}, \boldsymbol{a}_{t+1}\right)-Q^{w}\left(s_{t}, \boldsymbol{a}_{t}\right)\right)^{2}\right] \\ J(\theta) &=\operatorname{maximize}_{\theta} E_{\beta}\left[Q^{w}\left(s_{t}, \mu\left(s_{t}\right)\right)\right] \end{aligned} J(w)J(θ)=minimizewEβ[21(rt+γQw(st+1,at+1)Qw(st,at))2]=maximizeθEβ[Qw(st,μ(st))]
对其进行求解,可以得到类似的结果:
Δ w = α E β [ ( r t + γ Q w ( s t + 1 , a t + 1 ) − Q w ( s t , a t ) ) ∇ w Q w ( s t , a t ) ] Δ θ = α E β [ ∇ w Q w ( s t , a t ) ∣ a = μ θ ( s ) ∇ θ μ θ ( s t ) ] \begin{array}{l} \Delta w=\alpha E_{\beta}\left[\left(r_{t}+\gamma Q^{w}\left(s_{t+1}, a_{t+1}\right)-Q^{w}\left(s_{t}, a_{t}\right)\right) \nabla_{w} Q^{w}\left(s_{t}, a_{t}\right)\right] \\ \Delta \theta=\alpha E_{\beta}\left[\left.\nabla_{w} Q^{w}\left(s_{t}, a_{t}\right)\right|_{a=\mu_{\theta}(s)} \nabla_{\theta} \mu_{\theta}\left(s_{t}\right)\right] \end{array} Δw=αEβ[(rt+γQw(st+1,at+1)Qw(st,at))wQw(st,at)]Δθ=αEβ[wQw(st,at)a=μθ(s)θμθ(st)]
然后我们总结一下DDPG中的几个关键的trick:

  • DDPG可以看做是Nature DQN, Actor-Critic和DPG三种方法的组合算法

  • Critic部分的输入为states和action

  • Actor部分不再使用自己的Loss函数和Reward进行更新,而是使用DPG的思想, 使用critic部分Q值对action的梯度来对actor进行更新:我们的actor的目的是尽量得到一个高Q值的action,因此actor的损失可以简单的理解为得到的反馈Q值越大损失越小,得到的反馈Q值越小损失越大

  • 使用了Nature DQN的思想,加入了经验池、随机抽样和目标网络, real Q值使用两个target 网络共同计算

  • target网络更新改为软更新, 在每个batch缓慢更新target网络的参数。

其中大部分我们在前面介绍Nature DQN和Actor-Critic的时候就介绍过了,这里我们重点讲一下软更新和Ornstein-Uhlenbeck噪声。

软更新:

在论文中,作者介绍采用滑动平均的方法更新 Target Network: θ t + 1 ← τ θ t + ( 1 − τ ) θ t ′ , τ \theta_{t+1} \leftarrow \tau \theta_{t}+(1-\tau) \theta_{t}^{\prime}, \tau θt+1τθt+(1τ)θt,τ 一般设置为非常接近 1 的数,这样 Target 网络的参数 θ \theta θ 不会发生太大的变化,每次只会受一点训练模型 θ ′ \theta^{\prime} θ 的影响。

Ornstein-Uhlenbeck噪声:

由于 DPG 采用确定策略, 如果它在与环境进行交互时只采用确空的策略,那么必然会导致对环境的探索不够充分。在 DDPG 模型中,作者采用 Ornstein-Uhlenbeck 噪声增加模型的探索能力。Ornstein-Uhlenbeck 噪声是一种基 于 Urnstein-Uhlenbeck 过程的随机变量,已可以被用于模拟与时间有关联的噪声数据。它的公式为
d x t = θ ( μ − x t ) + σ W t \mathrm{d} x_{t}=\theta\left(\mu-x_{t}\right)+\sigma W_{t} dxt=θ(μxt)+σWt
其中 x x x 是要生成的数据, μ \mu μ 是设定的随机变量的期望值, W W W 是一个由 Wiener 过程生成 的随机变量,一般我们用一个简单的随机函数代替就可以, θ \theta θ σ \sigma σ 是随机过程中的参数, d x \mathrm{d} x dx 是每一时刻数据的变化量,真正的采样值等于上一时刻的采样值加上求出的变化量。从公式中中以看出,每一时刻数据的变化量与当前时刻存在关联,公式右边的第公式右边的第一项将为随机数据提供朝向均值μ 的变化,第二项才是常见的随机变化。

这里再总结一下DDPG和DPG、DQN的差别:

1、与DPG的不同之处
(1) 采用卷积神经网络作为策略函数 μ \mu μ 和Q函数的近似, 即策略网络和Q网络; 然后使用深度学习的方法来训练上述神经网络。
(2) 网络结构和个数不同:
从DPG到DDPG的过程,可以类比于DQN到DDQN的过程。除了经验回放之外,还有双网络,即当前网络和目标网络的概念。而由于现在本就有actor和critic两个网络,那么双网络就变成了4个网络,分别是:actor当前网络、actor目标网络、critic当前网络、critic目标网络。

2、与DQN不同

1) DDPG中没有使用硬更新,而是选择了软更新,即每次参数只更新一点点。

(2) 增加随机性操作。

(3) 损失函数:critic当前网络的损失函数还是均方误差, 没有变化,但是actor当前网络的损失函数改变了。

在此重复一下,因为DDPG采用了DQN的很多trick,所以后面针对DQN的一些改进比如优先级采样等也是可以用到DDPG中的,感兴趣的可以关注这篇论文:

Leveraging Demonstrations for Deep Reinforcement Learning on Robotics Problems with Sparse Rewards

上一篇:强化学习的学习之路(五十三)2021-02-22 DPG
下一篇:强化学习的学习之路(五十五)2021-02-24 模仿学习介绍

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值