RL 基础 | Policy Gradient 的推导
Update:发现了 lilian weng 的 blog(Policy Gradient Algorithms),应该比我讲得好()
去听了 hzxu 老师的 DRL 课,感觉终于听懂了,记录一下…
相关链接:
0 我们想做什么
我们想最大化的东西:
我们希望,期望下的轨迹的 reward 求和(reward discounted 求和)最大。
1 三个数学 trick
①:
②:
③:
2 对单个 transition 的 policy gradient
其中,
第一行 把单个 (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) 塞回去,变成了 期望下的 r(s,a)
结论:如果想最大化期望下的 r(s,a),可以把 r(s,a) 放
3 对整个 trajectory 的 policy gradient
先计算 trajectory 的概率:
然后,对单个 transition,我们有
对于整个 trajectory 的 total reward 的梯度,应用跟 2 相同的方法(分数线上下同乘 p(τ|theta) ),可以得到
现在,让我们来看
其中,
第一行 是把 trajectory 的概率展开;
第二行 第三行 都是把 log(A×B) 变成 logA + logB;
然后发现,只有中间这一项
由此,我们得到:
结论:如果想最大化期望下的 R(τ),可以把 R(τ) 放
4 REINFORCE 算法
- 使用策略 π(a|s;θ),生成一个 trajectory:
; - 对每个时间步 t,计算回报:
- 更新策略参数:
(算法是 GPT 生成的,看起来好像没问题)
本文作者:MoonOut
本文链接:https://www.cnblogs.com/moonout/p/18086974
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步