2017 Fall CS294 Lecture 4: Policy gradients introduction
看完CS294 Lecture 4,感觉收获好多,满满的都是干货啊。太多精华和亮点了,以至于我些笔记都很有压力,我觉得最好的方法就是对照Lecture 4的PPT一页一页地看并理解。
我先前有一篇博客My Roadmap in Reinforcement Learning ,Karpathy从直觉的角度阐述了Poliy Gradient的思想,如果从严格的数学形式来理解证明,可以看CS294的lecture 4。我截取了三张PPT如下,涵盖了PG的推导,其中的符号含义应该也可以猜到,表示的是一条马尔科夫链的trajectory。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
policy gradient存在的两大问题:
- high variance
- slow convergence
high variance主要指的是用reward调制之后的用于反传的gradient存在很大的variance,注意这里的high variance指的是gradient,而不是别的。举一个简单的例子,比如下面会提到的,其中trajectory是一维的(这样比较好画图),如果把reward函数整个加一个constant,理论上最优解应该不变,但是实际中每一次trajectory更新的梯度都会有很大的差别,详细的解释参考CS294视频 (这一讲主要探讨high variance的解决办法)
slow convergence,如果上面的high variance的问题值得是,很难得到很好的反传梯度的话,那么slow convergence指的就是,即便得到了很好的梯度,PG还是收敛很慢。(这一个问题下一讲再讲)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
下面PPT上半部分是PG的high variance 问题。除了图中用的例子来理解,还有一种理解(来自CS321n)就是片面的使用来调制gradient,这样难以关照到不同action的重要性;PPT的下半部分则是PG的slow convergence问题,被Jan Peters和Stefan Schaal在2008年提出的一个natural grading解决。
Two tricks for high variance:
- Causality,也就是利用reward的因果性,不再盲目的累加所有的reward,而是让每一个reward只对当前以及历史的action的gradient进行调制
- Baseline,baseline的话一般可以减掉平均就好了,但也可以推导出optimal baseline,不过效果和直接减掉平均差别不大。
然后就是PG是一个on-policy,而且每个trajectory才能更新一下,换作是NN,每次更新又比较小,那么这样一来几乎就没有efficiency。对此,可以使用importance sampling(IS)来将PG改写成off-policy,具体就不解释了,可以看PPT。。
更新:
PG是一个on-policy算法的原因是,每次更新之后,都要重新generate samples,这和Q-learning不同(可以重复利用以前旧的生成的样本进行训练)。这里要谨记的是:on-policy和off-policy的本质区别在于,generate samples的policy和update的policy是不是同一个。比如说,Q-learning,它使用的是 greedy ()的policy去generate samples,但是被更新的policy却是 ()的greedy policy,因此是off-policy。
正因为PG是一个on-policy算法,因此它每次更新之后都要重新generate samples,所以它永远不能跳过下图的step 1:
这样非常的sample-inefficient。
下面的推导,通过Importance Sampling,使PG成为off-policy,让它能够利用旧的对应的policy所generate的samples。
下图中的是旧的policy的参数,而则是我们想要更新的,最新的policy的参数,可以看到,通过利用IS,求期望已经与 policy生成的samples无关了(是在对应policy生成的trajectory samples上求的期望)。至此,PG被转化成了off-policy
但是,单纯地按照上面推出的式子去算,会有问题,如下。给出的解决办法下面的这个ppt也列出来了,这里就不讲了,在以后讲到natural gradient时会讲到。