[深度强化学习] [1] Vanilla Policy Gradient

文章目录1 目标函数与前置知识2 优势函数(Advantage function)3 折扣系数γ\gammaγ4 GAE(Generalized Advantage function Estimation)5 Vanilla Policy Gradient6 代码部分6.1 神经网络搭建6.1.1 策略网络6.1.2 价值网络6.1.3 Actor-Critic6.2 GAE Buffer6.3 VPG算法部分7 跑一下代码测试一下1 目标函数与前置知识Policy Gradient方法体现在用神经网络
摘要由CSDN通过智能技术生成

1 目标函数与前置知识

Policy Gradient方法体现在用神经网络学习策略和价值,基于对强化学习的概念认识,定义策略(Policy)价值(Value)
Policy:  π ( s ∣ θ ) = P { ( a , p a ) ∣ s , θ } Value:  V ( s ) = E [ Σ from s to terminal r ] \text{Policy: } \pi(s|\theta)=\mathbb{P}\{(a,p_a)|s,\theta\} \\ \text{Value: } V(s)=\mathbb E[\Sigma_{\text{from s to terminal}}r] Policy: π(sθ)=P{ (a,pa)s,θ}Value: V(s)=E[Σfrom s to terminalr]
策略 π \pi π将给定的状态 s s s映射成动作 a a a的概率分布 P \mathbb{P} P,价值 V V V将状态 s s s映射成累积回报的期望。
为了避免繁杂的书写,一般将从初始状态 s t = 0 s_{t=0} st=0到终点 s t = T s_{t=T} st=T的马尔科夫过程记作一个轨迹(trajectory)

这两个映射在后续推导中都会用上,这里仅仅把它们表述成抽象的映射是非常方便的,因为它不需要有确定的结构,因此可以用任何可能的方式拟合这两个映射。在深度强化学习中就是使用神经网络完成对映射的学习。
π θ 1 ( s ) = N e t w o r k θ 1 ( s ) = d i s t r i b u t i o n ( a ) V θ 2 ( s ) = N e t w o r k θ 2 ( s ) = s t a t e   v a l u e ∈ R \pi_{\theta1}(s)=Network_{\theta1}(s)=distribution(a) \\ V_{\theta2}(s)=Network_{\theta2}(s)=state\ value\in\R πθ1(s)=Networkθ1(s)=distribution(a)Vθ2(s)=Networkθ2(s)=state valueR
τ = ( s 0 , a 0 , r 0 , s 1 , ⋯   , s T ) \tau=(s_0,a_0,r_0,s_1,\cdots,s_T) τ=(s0,a0,r0,s1,,sT)
由于 τ \tau τ服从的概率分布显然只依赖于 θ \theta θ,不妨设 τ ∼ p ( τ ∣ θ ) \tau\sim p(\tau|\theta) τp(τθ)
强化学习的任务可以描述成,提高轨迹的累积回报期望,所以需要被提高的目标函数为
J ( θ ) = E [ R ( τ ) ] J(\theta)=\mathbb{E}[R(\tau)] J(θ)=E[R(τ)]
其中 R ( τ ) R(\tau) R(τ)为轨迹 τ \tau τ产生的累积回报,可以看做关于 τ \tau τ的标量函数。
求解目标函数梯度的时候,使用一点小trick,如下
∇ θ E [ R ( τ ) ] = ∇ θ ∫ p ( τ ∣ θ ) R ( τ ) d τ = ∫ ∇ θ p ( τ ∣ θ ) R ( τ ) d τ = ∫ p ( τ ∣ θ ) ∇ θ l n p ( τ ∣ θ ) ⋅ R ( τ ) d τ = E [ ∇ θ l n p ( τ ∣ θ ) ⋅ R ( τ ) ] \nabla_\theta\mathbb{E}[R(\tau)]=\nabla_\theta\int p(\tau|\theta)R(\tau)d\tau \\ = \int\nabla_\theta p(\tau|\theta)R(\tau)d \tau \\ = \int p(\tau|\theta)\nabla_\theta lnp(\tau|\theta)\cdot R(\tau) d \tau \\ = \mathbb{E}[\nabla_\theta lnp(\tau|\theta)\cdot R(\tau)] θE[R(τ)]=θp(τθ)R(τ)dτ=θp(τθ)R(τ)dτ=p(τθ)θlnp(τθ)R(τ)dτ=E[θlnp(τθ)R(τ)]
得到梯度式
∇ θ E [ R ( τ ) ] = E [ ∇ θ l n p ( τ ∣ θ ) ⋅ R ( τ ) ] \nabla_\theta\mathbb{E}[R(\tau)]=\mathbb{E}[\nabla_\theta lnp(\tau|\theta)\cdot R(\tau)] θE[R(τ)]=E[θlnp(τθ)R(τ)]

继续对轨迹 τ \tau τ做化简,显然这个量在数学上没有办法进行直接运算。
p ( τ ∣ θ ) = μ ( s 0 ) π ( a 0 ∣ s 0 , θ ) p ( s 1 , r 0 ∣ s 0 , a 0 ) ⋯ π ( a T − 1 ∣ s T − 1 , θ ) p ( s T , r T − 1 ∣ s T − 1 , a T − 1 ) p(\tau|\theta)=\mu(s_0)\pi(a_0|s_0,\theta)p(s_1,r_0|s_0,a_0)\cdots\pi(a_{T-1}|s_{T-1},\theta)p(s_{T},r_{T-1}|s_{T-1},a_{T-1}) p(τθ)=μ(s0)π(a0s0,θ)p(s1,r0s0,a0)π(aT1sT1,θ)p(sT,rT1sT1,aT1)
注意到展开式中只有策略项是和 θ \theta θ有关的,其他项因为log作用变成求和后,都被梯度算子作用成0,所以显然有
∇ θ l n p ( τ ∣ θ ) = Σ t = 0 T − 1 ∇ θ l n π ( a t ∣ s t , θ ) \nabla_\theta lnp(\tau|\theta)=\Sigma_{t=0}^{T-1}\nabla_\theta ln\pi(a_t|s_t,\theta) θlnp(τθ)

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值