DDPG(deep deterministic policy gradient)——连续控制的深度确定性策略梯度

DDPG(deep deterministic policy gradient)——连续控制的深度确定性策略梯度

学习记录,有错误感谢指出

基本概念


       深度确定性策略梯度(DDPG)是当前最常用的连续控制方法. ”深度“表明其使用了深度神经网络,”确定性“表明其输出的是确定的动作。

在这里插入图片描述

DDPG属于一种actor-critic的方法,它有一个策略网络(actor)和一个价值网络(critic).

  • 策略网络控制agent,它基于状态s输出动作a.
  • 价值网络不控制agent,它只是基于状态s对动作a打分,从而指导策略网络做出改进.

相关定义:
  1. 确定性策略网络μ:定义为一个函数,每一步的action可以通过 a t = μ ( s t ) a_{t}=\mu(s_{t}) at=μ(st),其参数为 θ μ \theta^\mu θμ

  2. 行为策略 b e h a v i o r   p o l i c y β behavior\ policy \beta behavior policyβ:在RL训练过程中,为了同时兼顾 exploration和exploitation,采用异策略方法,即行为策略可以不同于目标策略.

    • 目标策略(target policy):确定性策略网络 μ ( s ; θ n e w ) \mu(s;\theta_{new}) μ(s;θnew),其中 θ n e w \theta_{new} θnew是策略网络最新的参数.

    • 行为策略(behavior policy):为行为策略加入随机噪声: a = μ ( s ; θ o l d ) + ϵ a=\mu(s;\theta_{old})+\epsilon a=μ(s;θold)+ϵ.

    • 异策略的好处是可以把收集经验与训练神经网络分开进行;将根据behavior policy收集的经验存放至replay buffer,在训练target policy的时候,重复利用收集到的经验,如下图所示:

在这里插入图片描述

​       利用behavior policy与环境进行交互,将agent的轨迹整理成 ( s t , a t , r t , s t + 1 ) (s_t, a_t, r_t, s_{t+1}) (st,at,rt,st+1)这样的四元组存放在经验回放缓存(replay buffer)中. 在训练的时候,随机从缓存中取出四元组进行训练.

DDPG网络框架


       DDPG是actor-critic的结构,同时引入DQN的思想(online和target 网络)

       如果对actor和critic只使用Q神经网络的话,学习过程不稳定,这是由bootstrapping带来的问题(Q神经的参数在被更新的同时,又用于计算Q网络和策略网络的gradient)

       所以,DDPG分别为策略网络和价值网络各创建了两个神经网络的拷贝,一个叫online,一个叫target:

在这里插入图片描述

       在训练完一个batch后,SGD算法实时更新online网络的参数,随后再通过soft update算法更新target网络的参数.

在这里插入图片描述

  • 优点:target网络参数变化小,用于在训练过程中计算online网络的gradient,比较稳定,训练易于收敛。
  • 缺点:参数变化小,学习过程变慢。

训练流程


下面以四元组$(s_t, a_t, r_t, s_{t+1})$为例,介绍训练流程.
1.更新价值网络(Critic)

       训练价值网络 q ( s , a ; w ) q(s,a;w) q(s,a;w)时,需要用到 四元组的 s t , a t , r t , s t + 1 s_t, a_t, r_t, s_{t+1} st,at,rt,st+1全部四个元素.

​ 1)首先计算TD Target

       ①由 Target 策略网络预测 s t + 1 s_{t+1} st+1对应的下一动作: a ^ t + 1 = μ ( s t + 1 ; θ − ) \hat a_{t+1}=\mu(s_{t+1};\theta^-) a^t+1=μ(st+1;θ)

       ②由 Target 价值网络计算 TD Target: y ^ t = r t + γ ⋅ q ( s t + 1 , a ^ t + 1 ; w − ) \hat y_t=r_t+\gamma·q(s_{t+1},\hat a_{t+1};w^-) y^t=rt+γq(st+1,a^t+1;w)

​ 2)让 online 价值对状态 ( s t , a t ) (s_t,a_t) st,at) 预测action value的值
q ^ t = q ( s t , a t ; w ) \hat q_t=q(s_t,a_t;w) q^t=q(st,at;w)
​ TD Error为: δ t = q ^ t − y ^ t \delta_t=\hat q_t-\hat y_t δt=q^ty^t

​ 3)对N个样本计算误差的平均值,进行梯度下降更新参数

        价值网络的loss定义:类似于监督学习,定义loss为MSE损失( mean squared error):
L o s s = 1 N ∑ i ( q ^ i − y ^ i ) 2 Loss =\frac{1}{N}\sum\limits_i {}(\hat q_i-\hat y_i)^2 Loss=N1i(q^iy^i)2
注意:TD Target y ^ i \hat y_i y^i 的计算使用的是target策略网络 和 target价值网络,这样做是为了使学习更加稳定,易于收敛.

2.更新策略网络(Actor)

       训练策略网络 μ ( s ; θ ) \mu(s;\theta) μ(s;θ)时,只需要用到四元组中的状态 s t s_t st.

       输入状态 s t s_t st,策略网络会输出一个动作 a t = μ ( s t ) a_{t}=\mu(s_{t}) at=μ(st),将这个动作输入价值网络,得到该动作的打分: q ^ = q ( s , a ; w ) {\rm{\hat q = q(s,a;w)}} q^=q(s,a;w). 策略网络的参数 θ \theta θ通过影响 a t a_t at 进而影响 Critic 的打分 q ^ \hat q q^. 因此分数 q ^ \hat q q^可以反映 θ \theta θ的好坏. 所以令分数 q ^ \hat q q^作为目标函数,通过对 θ \theta θ进行梯度上升来改进Actor.

       训练策略网络(Actor)的目的就是让它迎合价值网络(Critic),使其输出的action可以得到更高的分数,即选择更好的动作.

推导过程

       对于状态 s t s_t st,可以经过策略网络和价值网络后,可以得到打分为:
q ( s , μ ( s ; θ ) ; w ) q(s,\mu(s;\theta);w) q(s,μ(s;θ);w)
       我们希望打分的期望值尽量高,故将目标函数定义为打分的期望:
J ( θ ) = E S [ q ( s , μ ( S , θ ) ; w ) ] J(\theta)=E_S[q(s,\mu(S,\theta);w)] J(θ)=ES[q(s,μ(S,θ);w)]
       上式关于状态S求期望,消除了S的影响. 即不管面对什么样的状态S,策略网络Actor都应该输出较好的动作,使得平均分 J ( θ ) J(\theta) J(θ)尽量高. 策略网络的学习可以建模成最大化问题:
max ⁡ θ J ( θ ) \mathop {\max }\limits_\theta J(\theta ) θmaxJ(θ)
注意:这里我们只训练策略网络(Actor),所以在最大化过程中我们优化的变量只是策略网络的参数 θ \theta θ,即价值网络的参数 w w w被固定住了,不会被更新.

       在真实训练过程中,我们用随机梯度上升进行训练. 即每次用随机变量 S 的一个观测值 s j s_j sj来计算 J ( θ ) J(\theta) J(θ)的梯度:
g j = ▽ θ q ( s , μ ( s j , θ ) ; w ) g_j = \bigtriangledown_{\theta}q(s,\mu(s_j,\theta);w) gj=θq(s,μ(sj,θ);w)
g j g_j gj叫做确定性策略梯度(DPG)

​ 下面再用链式法则计算出 g j g_j gj,即:
δ q δ θ = ∂ q ∂ a ⋅ ∂ a ∂ θ \frac{{\delta q}}{{\delta \theta }} = \frac{{\partial {\rm{q}}}}{{\partial a}}{\rm{\cdot}}\frac{{\partial {\rm{a}}}}{{\partial \theta }} δθδq=aqθa

应用链式法则可以求得最终的确定性策略梯度
▽ θ q ( s , μ ( s j , θ ) ; w ) = ▽ θ μ ( s j ; θ ) ⋅ ▽ a q ( s j , a j ^ ; w ) , 其中 a j ^ = μ ( s j ; θ ) \bigtriangledown_{\theta}q(s,\mu(s_j,\theta);w)=\bigtriangledown_{\theta}\mu(s_j;\theta)· \bigtriangledown_{a}q(s_j,\hat {a_j};w), 其中\hat {a_j}=\mu(s_j;\theta) θq(s,μ(sj,θ);w)=θμ(sj;θ)aq(sj,aj^;w),其中aj^=μ(sj;θ)

       由此,我们最终得到更新 θ \theta θ的算法. 即每次从 replay buffer中随机抽取一个状态,记作 s j s_j sj. 计算策略网络做出的动作 a j ^ = μ ( s j ; θ ) \hat {a_j}=\mu(s_j;\theta) aj^=μ(sj;θ). 用梯度上升更新一次 θ \theta θ.
θ ← θ + β ⋅ ▽ θ μ ( s j ; θ ) ⋅ ▽ a q ( s j , a j ^ ; w ) . \theta\leftarrow\theta+\beta·\bigtriangledown_{\theta}\mu(s_j;\theta)· \bigtriangledown_{a}q(s_j,\hat {a_j};w). θθ+βθμ(sj;θ)aq(sj,aj^;w).
此处的 β \beta β是学习率.

总结


1.DDPG使用的是actor-critic的网络结构;

2.使用了target网络 和 online网络,两个结构完全相同的拷贝神经网络,在一定程度上避免了一个网络的bootstrapping带来的高估问题,使收敛更有保障;

3.DDPG使用了experience replay memory:通过behavior policy与环境进行交互时,产生的transition在时间序列上是高度关联的,如果这些数据序列直接用于训练,会导致神经网络的overfit,不易收敛。DDPG的actor将transition数据先存入experience replay buffer, 然后在训练时,从experience replay buffer中随机采样batch的数据,可以消除样本间的关联性.

Reference:

https://blog.csdn.net/kenneth_yu/article/details/78478356

《深度强化学习》——王树森;黎彧君;张志华

  • 6
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Deep Deterministic Policy GradientDDPG)是一种基于深度神经网络的强化学习算法。它是用来解决连续控制问题的,即输出动作的取值是连续的。DDPG是在DPG(Deterministic Policy Gradient)的基础上进行改进得到的,DPG是一种在连续动作空间中的直接求导策略梯度的方法。DDPG和DPG都属于策略梯度算法的一种,与其他策略梯度算法(如REINFORCE)的不同之处在于,DPG和DDPG都是基于偏微分方程的直接求导,而不是蒙特卡罗方法进行计算。DDPG使用一个确定性策略来生成动作,但同时使用一个噪声过程来扰动输出的动作,以产生更多的状态动作样本。这样一来,DDPG就具有了良好的探索能力,使得它在解决复杂的连续动作问题时能取得较好的效果。 ### 回答2: 深度确定性策略梯度Deep Deterministic Policy GradientDDPG)是一种用于解决深度强化学习问题的方法。 DDPG是基于确定性策略梯度Deterministic Policy Gradient,DPG)的算法,可以在连续动作空间下进行强化学习。与传统的策略梯度方法不同,DDPG直接学习确定性策略,在给定状态下选择最优的动作。 DDPG主要由两个网络组成:一个是Actor网络,用于学习确定性策略;另一个是Critic网络,用于估计状态-动作对的Q值。Actor网络根据当前状态选择动作,Critic网络根据当前状态和动作的组合估计其对应的Q值。通过不断地交互环境、收集数据和更新网络参数,DDPG算法逐渐优化确定性策略和Q值估计,以使得智能体在环境中获得更高的累积奖励。 DDPG算法的核心思想是通过使用Experience Replay和目标网络来提高学习的稳定性和收敛性。Experience Replay将智能体与环境的交互经验存储在一个经验回放缓冲区中,然后从中随机采样进行训练;目标网络通过延迟更新目标网络的方式,减小训练中的目标值变动,从而提高算法的稳定性。 DDPG算法在解决连续控制任务中表现出良好的性能和收敛性,可以应用于机器人控制、无人驾驶、金融交易等复杂任务中。然而,DDPG算法也存在一些挑战和问题,如对超参数的敏感性、样本效率较低等,这些问题是DDPG算法持续改进的方向之一。 ### 回答3: Deep Deterministic Policy GradientDDPG)是一种用于连续动作空间的深度强化学习算法。它结合了深度神经网络和确定性策略梯度的优势,可以应用于诸如机器人控制和金融投资等领域。 DDPG算法的核心思想是通过在连续动作空间中学习一个行动者-评论家系统。行动者使用确定性策略,即给定状态输出一个具体的动作,而评论家则评估行动者的动作质量。这两个网络都是用深度神经网络来表示,并通过梯度下降来进行优化。 在训练过程中,DDPG使用了经验回放缓冲区来存储之前的转换并随机采样进行训练。这样做可以解决样本相关性和非稳定性问题。同时,为了保持算法的探索性,DDPG采用了一个目标网络,用于与主网络进行定期的软更新。 DDPG的优点在于能够处理连续动作空间,通过近似价值函数和策略函数,对高维、非线性状态空间进行建模。此外,DDPG还有很好的收敛性和稳定性,可以在复杂任务中取得较好性能。 然而,DDPG也存在一些挑战。由于使用了神经网络近似值函数,对网络结构的选择和超参数的调整都非常重要。此外,训练过程中可能会出现训练不稳定的问题,需要进行合适的技巧和调整。 总结来说,DDPG是一种深度强化学习算法,适用于连续动作空间的问题。通过结合确定性策略梯度深度神经网络的优势,DDPG能够解决高维、非线性状态空间的问题,并在复杂任务中取得好的性能。然而,对网络结构和超参数的选择需要仔细调整,且训练过程中可能存在稳定性问题。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值