RL 基础 | Policy Gradient 的推导


Update:发现了 lilian weng 的 blog(Policy Gradient Algorithms),应该比我讲得好()


去听了 hzxu 老师的 DRL 课,感觉终于听懂了,记录一下…

相关链接:


0 我们想做什么

我们想最大化的东西: J(θ)=Eτ[R(τ)] ,其中 R 是轨迹的 reward 求和(或 discount 求和)。

我们希望,期望下的轨迹的 reward 求和(reward discounted 求和)最大。

1 三个数学 trick

①: θlogz=1zθz

②: Exp(x)[f(x)]=p(x)f(x)dx

③: a/b=[ap(x)]/[bp(x)]

2 对单个 transition 的 policy gradient

θEap(a|s;θ)[r(a)]=θap(as;θ)r(a)=ar(a)θp(as;θ)=ar(a)p(as;θ)θp(as;θ)p(as;θ)=aar(a)p(as;θ)θlogp(as;θ)=Eap(a|s;θ)[r(a)θlogp(as;θ)]

其中,
第一行 把单个 (s,a) 的 reward 期望写为 Σπ(a|s)r(s,a) 的形式;
第二行 认为 r(a) 是不可微分的,去微分 π(a|s);
第三行 在分数线上下 同时塞了一个 π(a|s) (即 p(a|s;θ) );
第四行 因为 d log z = dz/z,原式变成 p(a|s)p(a|s) 了;
第五行 把 p(a|s) 塞回去,变成了 期望下的 r(s,a) log π(a|s)。

结论:如果想最大化期望下的 r(s,a),可以把 r(s,a) 放 外面,去对 log π(a|s) 求梯度。

3 对整个 trajectory 的 policy gradient

先计算 trajectory 的概率:

p(τθ)=μ(s0)initial state distributiont=0T1[π(atst,θ)policyp(st+1,rtst,at)transition fn.]

然后,对单个 transition,我们有

θExp(x|s;θ)[r(x)]=Exp(x|s;θ)[r(x)θlogp(xs;θ)]

对于整个 trajectory 的 total reward 的梯度,应用跟 2 相同的方法(分数线上下同乘 p(τ|theta) ),可以得到

θEτ[R(τ)]=Eτ[θlogp(τθ)What is this?R(τ)Reward of a trajectory]

现在,让我们来看 θlogp(τθ)

logp(τθ)=logμ(s0)+logt=0T1[π(atst,θ)p(st+1,rtst,at)]=logμ(s0)+t=0T1log[π(atst,θ)p(st+1,rtst,at)]=logμ(s0)+t=0T1[logπ(atst,θ)+logp(st+1,rtst,at)]

其中,
第一行 是把 trajectory 的概率展开;
第二行 第三行 都是把 log(A×B) 变成 logA + logB;
然后发现,只有中间这一项 t=0T1logπ(atst,θ) 带 θ,因此,前后两项都不用跟 θ 求梯度了。

由此,我们得到:

θEτ[R(τ)]=Eτ[R(τ)θt=0T1logπ(atst,θ)]

结论:如果想最大化期望下的 R(τ),可以把 R(τ) 放 外面,去求 Σ log π(a|s) ,即 log [action 概率] 的梯度。

4 REINFORCE 算法

  • 使用策略 π(a|s;θ),生成一个 trajectory:(s0,a0,r1,...,sT1,aT1,rT)
  • 对每个时间步 t,计算回报:Rt=k=t+1Tγkt1rk
  • 更新策略参数:θ=θ+αγtRtθlogπ(at|st;θ)

(算法是 GPT 生成的,看起来好像没问题)



本文作者:MoonOut

本文链接:https://www.cnblogs.com/moonout/p/18086974

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   MoonOut  阅读(231)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起
  1. 1 Sibelius: Violin Concerto in D Minor, Op. 47:III. Allegro, ma non tanto Jascha Heifetz / Chicago Symphony Orchestra
Sibelius: Violin Concerto in D Minor, Op. 47:III. Allegro, ma non tanto - Jascha Heifetz / Chicago Symphony Orchestra
00:00 / 00:00
An audio error has occurred.