【强化学习】策略梯度 Policy Gradient

Policy Gradient

设trajectory为 T r a j e c t o r y τ = { s 1 , a 1 , s 2 , a 2 , . . . , s t , a t } Trajectory \quad τ= \{ s_1, a_1, s_2, a_2,...,s_t,a_t\} Trajectoryτ={s1,a1,s2,a2,...,st,at}
设actor的参数为 θ \theta θ,根据 θ \theta θ可以计算某一个轨迹 τ τ τ的发生的概率
p θ ( τ ) = p ( s 1 ) ∏ t = 1 T p θ ( a t ∣ s t ) p ( s t + 1 ∣ s t , a t ) p_\theta(τ)= p(s_1)\prod_{t=1}^Tp_\theta(a_t|s_t)p(s_{t+1}|s_t,a_t) pθ(τ)=p(s1)t=1Tpθ(atst)p(st+1st,at)
设轨迹 τ τ τ的总奖励为
R ( τ ) = ∑ t = 0 T r t R(τ)=\sum_{t=0}^Tr_t R(τ)=t=0Trt
则在参数 θ \theta θ下总奖励 R R R的期望值为
E ( R ) = ∑ τ p θ ( τ ) R ( τ ) = E τ ∼ p θ ( R ( τ ) ) \mathbb{E}(R)=\sum_τp_\theta(τ)R(τ)=\mathbb{E}_{τ\sim p_\theta}(R(τ)) E(R)=τpθ(τ)R(τ)=Eτpθ(R(τ))
其梯度为
∇ E τ ∼ p θ ( R ( τ ) ) = ∑ τ R ( τ ) ∇ p θ ( τ ) = ∑ τ R ( τ ) p θ ( τ ) ∇ log ⁡ p θ ( τ ) = E τ ∼ p θ ( τ ) ( R ( τ ) ∇ log ⁡ p θ ( τ ) ) ≈ 1 N ∑ n = 1 N R ( τ n ) ∇ log ⁡ p θ ( τ n ) , n 是 轨 迹 个 数 = 1 N ∑ n = 1 N R ( τ n ) ∇ log ⁡ [ p ( s 1 n ) ∏ t = 1 T p θ ( a t n ∣ s t n ) p ( s t + 1 n ∣ s t n , a t n ) ] = 1 N ∑ n = 1 N R ( τ n ) ∑ t = 1 T ∇ log ⁡ p θ ( a t n ∣ s t n ) = 1 N ∑ n = 1 N ∑ t = 1 T R ( τ n ) ∇ log ⁡ p θ ( a t n ∣ s t n ) \begin{aligned} \nabla\mathbb{E}_{τ\sim p_\theta}(R(τ))&=\sum_τR(τ)\nabla p_\theta(τ)\\ &=\sum_τR(τ)p_\theta(τ)\nabla \log p_\theta(τ)\\ &=\mathbb{E}_{τ\sim p_\theta(τ)}(R(τ)\nabla \log p_\theta(τ))\\ &\approx \frac{1}{N}\sum_{n=1}^NR(τ^n)\nabla \log p_\theta(τ^n),\quad n是轨迹个数 \\ &=\frac{1}{N}\sum_{n=1}^NR(τ^n)\nabla \log [p(s_1^n)\prod_{t=1}^Tp_\theta(a_t^n|s_t^n)p(s_{t+1}^n|s_t^n,a_t^n)]\\ &=\frac{1}{N}\sum_{n=1}^NR(τ^n) \sum_{t=1}^T\nabla \log p_\theta(a_t^n|s_t^n)\\ &=\frac{1}{N}\sum_{n=1}^N\sum_{t=1}^TR(τ^n) \nabla \log p_\theta(a_t^n|s_t^n) \end{aligned} Eτpθ(R(τ))=τR(τ)pθ(τ)=τR(τ)pθ(τ)logpθ(τ)=Eτpθ(τ)(R(τ)logpθ(τ))N1n=1NR(τn)logpθ(τn),n=N1n=1NR(τn)log[p(s1n)t=1Tpθ(atnstn)p(st+1nstn,atn)]=N1n=1NR(τn)t=1Tlogpθ(atnstn)=N1n=1Nt=1TR(τn)logpθ(atnstn)

Tip 1: Baseline

我们想让导致 R ( τ n ) > 0 R(τ^n)>0 R(τn)>0的动作的概率变大,让导致 R ( τ n ) < 0 R(τ^n)<0 R(τn)<0的动作的概率变小,这体现在上式的正负上。然而有时候 R ( τ n ) R(τ^n) R(τn)可能一直大于0,这时候采样到的动作的概率都会提升,只是有的提升大,有的提升小,这时候该怎么办呢,可以减去一个baseline。
∇ E τ ∼ p θ ( R ( τ ) ) = 1 N ∑ n = 1 N ∑ t = 1 T [ R ( τ n ) − b ] ∇ log ⁡ p θ ( a t n ∣ s t n ) \nabla\mathbb{E}_{τ\sim p_\theta}(R(τ))=\frac{1}{N}\sum_{n=1}^N\sum_{t=1}^T[R(τ^n)-b] \nabla \log p_\theta(a_t^n|s_t^n) Eτpθ(R(τ))=N1n=1Nt=1T[R(τn)b]logpθ(atnstn)
可以取 b = 1 N ∑ R ( τ n ) b=\frac{1}{N}\sum R(τ^n) b=N1R(τn)即平均Return,
R ( τ n ) > b R(τ^n)>b R(τn)>b时,让它的概率上升;当 R ( τ n ) < b R(τ^n)<b R(τn)<b时,让它的概率下降。
这个b可以随着训练不断更新。

Tip 2: Assign suitable credit

我们不能根据Return R ( τ n ) R(τ^n) R(τn)来判断某一个动作的好坏,因为它只能衡量这一串动作整体的好坏。更好的衡量标准是:用 a t a_t at这个动作之后各步的reward来衡量,即
∇ θ E τ ∼ p θ ( R ( τ ) ) = 1 N ∑ n = 1 N ∑ t = 1 T [ ∑ t ′ = t T γ t ′ − t r t ′ n − b ] ∇ log ⁡ p θ ( a t n ∣ s t n ) \nabla_\theta \mathbb{E}_{τ\sim p_\theta}(R(τ))=\frac{1}{N}\sum_{n=1}^N\sum_{t=1}^T[\sum_{t'=t}^Tγ^{t'-t}r_{t'}^n-b] \nabla \log p_\theta(a_t^n|s_t^n) θEτpθ(R(τ))=N1n=1Nt=1T[t=tTγttrtnb]logpθ(atnstn)
此时的b可以是state-value function V ( s ) V(s) V(s)

References:
EasyRL( https://datawhalechina.github.io/easy-rl )

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值