我是靠谱客的博主 优雅西牛,最近开发中收集的这篇文章主要介绍基础算法篇(七),确定性策略的DPG与DDPG确定性策略梯度DPG深度确定性策略梯度DDPG总结,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

我们在前面两章介绍了Policy Based范畴的经典策略梯度方法和基于AC框架的PPO方法,在上述方法中,策略梯度都为如下形式:

  • ∇ J ( θ ) = E τ ∼ P ( τ ; θ ) [ R ( τ ) ∑ t = 1 T ∇ log ⁡ π θ ( a t ∣ s t ) ] nabla Jleft(thetaright)=E_{tausim Pleft(tau;thetaright)}left[Rleft(tauright)sum_{t=1}^Tnablalogpi_thetaleft(a_tleft|s_tright.right)right] J(θ)=EτP(τ;θ)[R(τ)t=1Tlogπθ(atst)]

上面这个式子中包含了需要从状态空间采样的 R ( τ ) Rleft(tauright) R(τ)和需要从行动空间采样的 π θ ( a t ∣ s t ) pi_thetaleft(a_tleft|s_tright.right) πθ(atst)两个部分,因此,需要采样的量比较大。为了解决这一问题,DeepMind的David Silver等人提出了确定性策略梯度算法Deterministic policy gradient algorithms,将原有的概率性策略:

  • π ( a ∣ s ) = P ( a t = a ∣ s t = s ) pileft(aleft|sright.right)=Pleft(a_t=aleft|s_t=sright.right) π(as)=P(at=ast=s)

改为了确定性策略:

  • a = μ ( s ) a=muleft(sright) a=μ(s)

这样从理论上来说,需要采样的数据量就比之前要小。
但个人觉得随机性策略与确定性策略针对的其实是不同场景,例如棋类等某些对抗场景下,随机性策略要比确定性策略更有效,因此,并不存在谁好谁坏的问题。不管怎么说,下面我们开始介绍确定性策略相关内容。

确定性策略梯度DPG

首先我们将带参数 θ theta θ的确定性策略定义为如下形式:

  • μ θ : S → A ; θ ∈ R n mu_theta:Srightarrow A;thetain R^n μθSAθRn

这里与前面不同的就是,策略由原有的概率函数,变为一个确定性函数。同时,定义我们的状态转移概率为如下形式:

  • p ( s → s ′ ,    t ,    μ ) pleft(srightarrow s',;t,;muright) p(ss,t,μ)

这个状态转移函数,其实和前面的时一样的,它是和环境相关,但同时也和策略本身相关。那么,确定性策略的目标函数就可以写成如下形式:

  • J ( μ θ ) = E [ r 1 γ    ∣ μ ]                      = ∫ S ρ μ ( s ) r ( s ,    μ θ ( s ) ) d ⁡ s                      = E s ∼ ρ μ [ r ( s ,    μ θ ( s ) ) ] Jleft(mu_thetaright)=Eleft[r_1^gamma;left|muright.right]\;;;;;;;;;;=int_Srho^muleft(sright)rleft(s,;mu_thetaleft(sright)right)operatorname ds\;;;;;;;;;;=E_{ssimrho^mu}left[rleft(s,;mu_thetaleft(sright)right)right] J(μθ)=E[r1γμ]=Sρμ(s)r(s,μθ(s))ds=Esρμ[r(s,μθ(s))]

由上式可以看出,这里的定义与随机策略其实是一致的,即不同策略下折扣收益的均值,同时可以表示为不同状态分布下的收益。那么,基于这个目标函数,如果要对参数 θ theta θ进行调整,以使目标函数最大,那么其策略梯度就可以表示为如下形式:

  • ∇ θ J ( μ θ )    = ∫ S ρ μ ( s ) ∇ θ μ θ ( s ) ∇ a Q μ ( s , a ) ∣ a = μ θ ( s ) d ⁡ s                                  = E s ∼ ρ μ [ ∇ θ μ θ ( s ) ∇ a Q μ ( s , a ) ∣ a = μ θ ( s ) ] nabla_theta Jleft(mu_thetaright);=int_Srho^muleft(sright)nabla_thetamu_thetaleft(sright)nabla_aQ^muleft(s,aright)vert_{a=mu_thetaleft(sright)}operatorname ds\;;;;;;;;;;;;;;;;=E_{ssimrho^mu}left[nabla_thetamu_thetaleft(sright)nabla_aQ^muleft(s,aright)vert_{a=mu_thetaleft(sright)}right] θJ(μθ)=Sρμ(s)θμθ(s)aQμ(s,a)a=μθ(s)ds=Esρμ[θμθ(s)aQμ(s,a)a=μθ(s)]

在David Silver的论文中,也没有讲具体的推导过程,但好像是在附录中对成立的条件进行了说明。其实具体推导,可以参见我们前面的经典策略梯度方法中相关推导,比较类似,只是在这里利用了链式求导法则。
根据上面的策略梯度,我们就可以得到on-policy Deterministic Actor-Critic的更新公式如下所示:

  • δ t = r t + γ Q ω ( s t + 1 , a t + 1 ) − Q ω ( s t , a t ) delta_t=r_t+gamma Q^omegaleft(s_{t+1},a_{t+1}right)-Q^omegaleft(s_t,a_tright) δt=rt+γQω(st+1,at+1)Qω(st,at) (1)
  • ω t + 1 = ω t + α ω δ t ∇ ω Q ω ( s t , a t ) omega_{t+1}=omega_t+alpha_omegadelta_tnabla_omega Q^omegaleft(s_t,a_tright) ωt+1=ωt+αωδtωQω(st,at) (2)
  • θ t + 1 = θ t + α θ ∇ θ μ θ ( s t ) ∇ a Q μ ( s t , a t ) ∣ a = μ θ ( s ) theta_{t+1}=theta_t+alpha_thetanabla_thetamu_thetaleft(s_tright)nabla_aQ^muleft(s_t,a_tright)vert_{a=mu_thetaleft(sright)} θt+1=θt+αθθμθ(st)aQμ(st,at)a=μθ(s) (3)

同时,off-policy Deterministic Actor-Critic的更新公式如下所示:

  • δ t = r t + γ Q ω ( s t + 1 , μ θ ( s t + 1 ) ) − Q ω ( s t , a t ) delta_t=r_t+gamma Q^omegaleft(s_{t+1},mu_thetaleft(s_{t+1}right)right)-Q^omegaleft(s_t,a_tright) δt=rt+γQω(st+1,μθ(st+1))Qω(st,at) (4)
  • ω t + 1 = ω t + α ω δ t ∇ ω Q ω ( s t , a t ) omega_{t+1}=omega_t+alpha_omegadelta_tnabla_omega Q^omegaleft(s_t,a_tright) ωt+1=ωt+αωδtωQω(st,at) (5)
  • θ t + 1 = θ t + α θ ∇ θ μ θ ( s t ) ∇ a Q μ ( s t , a t ) ∣ a = μ θ ( s ) theta_{t+1}=theta_t+alpha_thetanabla_thetamu_thetaleft(s_tright)nabla_aQ^muleft(s_t,a_tright)vert_{a=mu_thetaleft(sright)} θt+1=θt+αθθμθ(st)aQμ(st,at)a=μθ(s) (6)

上面两组更新式子中,唯一的区别就是(1)式和(4)式的中间项,变成了 μ θ ( s t + 1 ) mu_thetaleft(s_{t+1}right) μθ(st+1),这个可以看作是一个Target Actor,这也是off-policy的特点,即将用来计算更新值的策略与环境互动的策略分开,我理解这个直观的感觉是起一个稳定器的感觉。

深度确定性策略梯度DDPG

其实DDPG和DPG的关系,就好像Q-Learning和DQN的关系一样,用深度神经网络来拟合上面的Critic和Actor,用深度神经网络的权重,来代替前面的 ω omega ω θ theta θ。提出这个算法的文章Continuous Control with Deep Reinforcement Learning的作者还是DeepMind的一票人,其中也包括了DPG的David Silver等。
其思路和DQN对Q-Learning的扩展基本一致,同时也使用了经验回放独⽴的目标网络两个DQN中使用的技巧,同时,为了解决确定性策略的Exploration和策略更新的稳定性问题,还增加了随机量soft-replace。具体算法伪代码如下所示:
在这里插入图片描述

  1. 由上面算法的第一和第二行可以看出,DDPG建立了两个Actor网络,这是前面DPG算法中off-policy的部分;同时,还建立了两个Critic网络,这个就是模仿DQN建立的目标网络部分,用这个目标网络来计算TD目标值;
  2. 算法第八行中的 N t N_t Nt就是为解决策略Exploration所添加的随机量;
  3. 第十行这里就是存储每步的状态,为后面update中使用经验回放作准备。
  4. 算法最后两行,就是soft-replace部分,不是完全更新,而是只更新网络中很小的一部分 τ tau τ,按照算法中的介绍,需要满足条件: τ < < 1 tau<<1 τ<<1

总结

DDPG算法如果按照类别来分,应该为policy based & model-free & off-policy & actor-critic算法,和我们前面讲的PPO不同点很多,其中最重要的有两个:

  • 一是在输出策略方面,DDPG输出的是确定性策略,PPO则是概率分布;
  • 二是在AC结构方面,PPO中的Critic输出是价值函数,输入只有state;而DDPG中的Critic输出是类似于DQN的行为-状态值,所以输入包含action。这也直接导致了DDPG中的Critic在更新计算TD差分值时,使用到了目标策略网络Actor的输出,而PPO中的Critic是自己独立更新的。

最后

以上就是优雅西牛为你收集整理的基础算法篇(七),确定性策略的DPG与DDPG确定性策略梯度DPG深度确定性策略梯度DDPG总结的全部内容,希望文章能够帮你解决基础算法篇(七),确定性策略的DPG与DDPG确定性策略梯度DPG深度确定性策略梯度DDPG总结所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(33)

评论列表共有 0 条评论

立即
投稿
返回
顶部