Policy Gradients 算法更新
学习资料:
- 全部代码
- 什么是 Policy Gradient 短视频
- 模拟视频效果Youtube, Youku
- 强化学习实战
- 论文 Policy gradient methods for reinforcement learning with function approximation.
要点¶
Policy gradient 是 RL 中另外一个大家族, 他不像 Value-based 方法 (Q learning, Sarsa), 但他也要接受环境信息 (observation), 不同的是他要输出不是 action 的 value, 而是具体的那一个 action, 这样 policy gradient 就跳过了 value 这个阶段. 而且个人认为 Policy gradient 最大的一个优势是: 输出的这个 action 可以是一个连续的值, 之前我们说到的 value-based 方法输出的都是不连续的值, 然后再选择值最大的 action. 而 policy gradient 可以在一个连续分布上选取 action.
算法¶
我们介绍的 policy gradient 的第一个算法是一种基于 整条回合数据 的更新, 也叫 REINFORCE 方法. 这种方法是 policy gradient 的最基本方法, 有了这个的基础, 我们再来做更高级的.
delta(log(Policy(s,a))*V)
表示在 状态 s
对所选动作 a
的吃惊度, 如果 Policy(s,a)
概率越小, 反向的 log(Policy(s,a))
(即 -log(P)
) 反而越大. 如果在 Policy(s,a)
很小的情况下, 拿到了一个 大的 R
, 也就是 大的 V
, 那 -delta(log(Policy(s, a))*V)
就更大, 表示更吃惊, (我选了一个不常选的动作, 却发现原来它能得到了一个好的 reward, 那我就得对我这次的参数进行一个大幅修改). 这就是吃惊度的物理意义啦.
算法代码形式¶
和以前类似, 我们先定义主更新的循环, 然后下节内容讲如何用 Tensorflow 定义 PolicyGradient()
的算法:
主循环在这, 这节介绍的内容是让计算机跑完一整个回合才更新一次. 之前的 Qleanring 等在回合中每一步都可以更新参数.
另外一个 'Mountain Car' 模拟代码在我的 Github 中, 和上面那些代码类似, 只改动了一些大写的参数.