深度强化学习笔记02【DDPG】

DQN不便解决连续动作空间问题,因为其算法中用于critic更新的回归拟合方程存在求解max问题,所以仅适用于离散动作空间。
前面提到的DQN仅用Critic完成训练是不严谨的,只是便于同Actor-Critic等方法区分类比。下图将结合DQN到DDPG进行梳理,但此图可能存在问题,了解框架即可。
在这里插入图片描述

​  DDPG(deep DPG)即DPG(deterministic policy gradient)与DQN(deep Q network)的结合。DDPG所做的事就是用actor得到一个action,去近似critic需要得到的最大Q值的action,也就是critic输入的action是由actor所确定的:
max ⁡ a Q ∗ ( s , a ) ≈ Q θ ( s , π θ ( s ) ) \max_aQ^*(s,a)≈Q_{\theta}(s,{\pi}_{\theta}(s)) amaxQ(s,a)Qθ(s,πθ(s))其中 π θ ( s ) {\pi}_{\theta}(s) πθ(s)​就是由actor所确定的action:1)作为critic的输入能输出最大Q值;2)只输出一个动作(确定性)。此外,DDPG是基于Actor-Critic框架下源自DQN的方法,也有用到DQN中的relay buffer和target network。
​  总而言之,DDPG主要做了两件事:1)学习一个Q function(critic);2)学习一个policy(actor)。并且在此policy下的actor仅输出一个action,作为critic的输入能得到输出近似最大Q值。

1. Q Learning Side of DDPG(critic)

  ​根据贝尔曼最优方程:
Q ∗ ( s , a ) = r s a + γ ∑ s ′ ∈ S P s s ′ a max ⁡ a Q ∗ ( s ′ , a ′ ) Q^*(s,a)=r_s^a+{\gamma}{\sum_{s'∈S}}P_{ss'}^a\max_aQ^*(s',a') Q(s,a)=rsa+γsSPssaamaxQ(s,a)上述方程maxQ前面的累加与概率转移矩阵其实是对maxQ求期望的过程。所以其另一种写法即:
Q ∗ ( s , a ) = E s ′ ~ S [ r s a + γ max ⁡ a ′ Q ∗ ( s ′ , a ′ ) ] Q^*(s,a)=E_{s'~S}[r_s^a+{\gamma}\max_{a'}Q^*(s',a')] Q(s,a)=EsS[rsa+γamaxQ(s,a)]  DQN中的critic通过该方程更新。DDPG要做的是用一个带参数的神经网络 Q ϕ ( s , a ) Q_{\phi}(s,a) Qϕ(s,a)来逼近 Q ∗ ( s , a ) Q^*(s,a) Q(s,a)​。假设buffer中已有足够经验(actor所做的)为 ( s , a , r , s ′ , d ) (s,a,r,s',d) (s,a,r,s,d)且已知 s ′ s' s,则 a ′ = π ϕ ( s ′ ) a'={\pi}_{\phi}(s') a=πϕ(s)。通过TD学习,建立以均方误差为损失的目标函数:
J ( ϕ ) = L ( ϕ ) = E ( s , a , r , s ′ , d ) ~ D [ ( Q ϕ ( s , a ) − ( r + γ ( 1 − d ) Q ϕ ( s ′ , a ′ ) ) ) 2 ] J(\phi)=L(\phi)=E_{(s,a,r,s',d)~D}[(Q_{\phi}(s,a)-(r+{\gamma}(1-d)Q_{\phi}(s',a')))^2] J(ϕ)=L(ϕ)=E(s,a,r,s,d)D[(Qϕ(s,a)(r+γ(1d)Qϕ(s,a)))2]使用gradient descent方法求minimum:
▽ ϕ J ( ϕ ) = ▽ ϕ E ( s , a , r , s ′ , d ) ~ D [ ( Q ϕ ( s , a ) − ( r + γ ( 1 − d ) Q ϕ ( s ′ , a ′ ) ) ) 2 ] ▽_{\phi}J(\phi)=▽_{\phi}E_{(s,a,r,s',d)~D}[(Q_{\phi}(s,a)-(r+{\gamma}(1-d)Q_{\phi}(s',a')))^2] ϕJ(ϕ)=ϕE(s,a,r,s,d)D[(Qϕ(s,a)(r+γ(1d)Qϕ(s,a)))2]实作中利用重要性采样近似该期望,也就是用mini-batch的平均梯度近似目标函数梯度:
▽ ϕ J ( ϕ ) = ▽ ϕ 1 ∣ B ∣ ∑ ( s , a , r , s ′ , d ) ~ B ( Q ϕ ( s , a ) − ( r + γ ( 1 − d ) Q ϕ ( s ′ , a ′ ) ) ) 2 ▽_{\phi}J(\phi)=▽_{\phi}\frac{1}{|B|}{\sum}_{(s,a,r,s',d)~B}(Q_{\phi}(s,a)-(r+{\gamma}(1-d)Q_{\phi}(s',a')))^2 ϕJ(ϕ)=ϕB1(s,a,r,s,d)B(Qϕ(s,a)(r+γ(1d)Qϕ(s,a)))2其中 B B B为mini-batch的大小。利用相邻状态Q进行差分训练的方法即TD法,它的缺点是每次更新后回归拟合方程都会改变,不利于训练的稳定性,解决方法是延用DQN中的target网络,target网络的参数不再随着每次更新后立即更新,而是更新若干次后再与online网络(原网络)同步更新,在此期间的online网络更新依靠target网络。所以目标函数梯度:
▽ ϕ J ( ϕ ) = ▽ ϕ 1 ∣ B ∣ ∑ ( s , a , r , s ′ , d ) ~ B ( Q ϕ ( s , a ) − ( r + γ ( 1 − d ) Q ϕ ^ ( s ′ , π θ ^ ( s ′ ) ) ) ) 2 ▽_{\phi}J(\phi)=▽_{\phi}\frac{1}{|B|}{\sum}_{(s,a,r,s',d)~B}(Q_{\phi}(s,a)-(r+{\gamma}(1-d)Q_{\hat{\phi}}(s',{\pi}_{\hat{\theta}}(s'))))^2 ϕJ(ϕ)=ϕB1(s,a,r,s,d)B(Qϕ(s,a)(r+γ(1d)Qϕ^(s,πθ^(s))))2
其中 ϕ \phi ϕ θ \theta θ分别表示critic和actor网络的参数, ϕ ^ \hat{\phi} ϕ^ θ ^ \hat{\theta} θ^分别表示critic和actor的target网络参数。
  DDPG的target网络更新参数不再像DQN中的一样进行硬更新: ϕ ^ = ϕ \hat{\phi}=\phi ϕ^=ϕ。而是采用软更新: ϕ ^ ′ = τ ϕ + ( 1 − τ ) ϕ ^ \hat{\phi}'={\tau}\phi+(1-\tau)\hat{\phi} ϕ^=τϕ+(1τ)ϕ^。其中 τ \tau τ是一个超参数,表示更新的软硬程度。至此完成了critic的更新。
  正如前面所说,遍历连续动作空间中所有动作的Q值是十分困难的,DDPG则利用了一个target policy网络(actor的target网络)去计算近似critic输出最大Q值的action: π θ ^ ( s ′ ) {\pi}_{\hat{\theta}}(s') πθ^(s)。(为了稳定性,用actor的target网络训练critic,所以是 θ ^ \hat{\theta} θ^


2. Policy Learning Side of DDPG(actor)

  actor的目标就是找到唯一一个action,其作为critic的输入能输出最大Q值。也就是学习训练 a = π θ ( s ) a=\pi_{\theta}(s) a=πθ(s)使得 Q ϕ ( s , a ) Q_{\phi}(s,a) Qϕ(s,a)最大:
m a x θ E s ~ S [ Q ϕ ( s , π θ ( s ) ) ] max_{\theta}E_{s~S}[Q_{\phi}(s,\pi_{\theta}(s))] maxθEsS[Qϕ(s,πθ(s))] J ( θ ) = E s ~ S [ Q ϕ ( s , π θ ( s ) ) ] J(\theta)=E_{s~S}[Q_{\phi}(s,\pi_{\theta}(s))] J(θ)=EsS[Qϕ(s,πθ(s))]使用gradient boosting方法求解,因为是连续动作空间,所以Q对action是可微的:
▽ θ J ( θ ) = ∂ Q ∂ θ = ∂ Q ϕ ( s , π θ ( s ) ) ∂ π θ ( s ) ∗ ∂ π θ ( s ) ∂ θ ▽_{\theta}J(\theta)=\frac{\partial{Q}}{\partial{\theta}}=\frac{\partial{Q_{\phi}(s,{\pi}_{\theta}(s))}}{\partial{{\pi}_{\theta}(s)}}*\frac{\partial{{\pi}_{\theta}(s)}}{\partial{\theta}} θJ(θ)=θQ=πθ(s)Qϕ(s,πθ(s))θπθ(s)
至此完成了actor的更新,与critic一样,actor网络也可以用target网络进行更新。更为详细的DDPG算法如下:
在这里插入图片描述


参考资料为OpenAI Spinning up:DDPG

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值