深度强化学习实验室
官网:http://www.neurondance.com/
论坛:http://deeprl.neurondance.com/
来源:https://zhuanlan.zhihu.com/p/98506549
作者: 风清云
很多论文的工作都专注于减少policy gradient的方差,以得到更加优质且稳定的policy。其中一项最经典的工作就是对policy gradient的累积奖励减去一个baseline,但为什么减去一个baseline就可以达到减小方差,同时又不引入偏差的效果呢?
关于这个问题,Daniel Seita大佬在他的博客中有详细的讲解(链接给在最后),但笔者水平不够,仍然有部分未看明白的地方,强作此文说说自己的理解,希望有大佬看到并给出指导。
写在前面:符号约定
在强化学习的policy gradient中,通常会通过环境仿真出一系列的trajectories,以起到类似于对某种概率分布进行采样的作用,某个以时刻T为结束时刻的trajectory可以约定如下:
其中
分别代表状态,动作和奖励。接下来,本文将按照简单的结论->证明->结论的结构来探讨减小方差这个问题。
结论
对policy gradient的表达式中的累积奖励项减去一个baseline项,可以起到减小policy gradient的方差且同时不引入偏差的效果。如下式:
在实际工作中,通常把baseline取为状态
的状态-值函数,即
。
证明
首先需要写明两个技巧:
(1)log-derivative
此技巧是介绍如何将对数塞入对某个函数发f(x)的期望的梯度中去的。过程如下
这个过程看起来似乎十分简单直接,相当于乘了一项
,再把分母移动到微分项下 面,利用简单的复合函数求导:
就在积分里增加了对数项,最后根据期望的定义得到了最终的表达式。
但这里是有一个疑问的,那就是在第二个等式中,直接把微分号放入了积分号里面,这种直接交换微分和积分次序的变换应满足什么条件才成立?在这里是否成立?,笔者不甚理解,希望理解的朋友给予指导。
第二个等式就是简单的取对数运算。
第三个等式就是关于参数
的求微分运算,因为与参数
有关的项仅有
, 因此其他项对 参数
的导数为0。
接下来,应用这两个技巧看看期望奖励关于参数
的导数,即policy gradient的表达式。
这里第一个等式即期望的定义式;
第二个等式即log-derivative技巧;
第三个等式即对trajectory
的对率求导的技巧;
第四个等式即写回期望。
在正式引入baseline之前,还需要对上式做一些变换:
等式 (i) 是简单的替换
, 这里令折扣因子
; 等式 (ii) 是个难点。首先定义这个新冒出来的符号
, 这个代表以时刻
为最终时刻的
上式成立是因为在时刻
, trajectory就已经结束,因此后续的状态和奖励的取值对 并无影 响, 从而期望相等。等式 (i) 想要得到等式 (ii),关键在于以下等式的成立:
这个等式的左边仍然是policy gradient的定义,右边却变成了以不同的时刻
为最终时刻的trajectories的奖励 的求和运算。为什么这个等式成立呢? 这里说说我的理解,不一定正确。直观上来看,等式右边就是的期望内容 是把以下trajectories的最后一个奖励求和了:
理解了这一步转换,就可以开始下一步推导了。
第一个等式上面已经说明;
第二个等式,Daniel Seita的博客里提到了“Assume we can exchange the sum with the gradient,”也就是说,假设求和符号和微分符号位置可以互换,笔者不太明白为啥可以这样假设,但还是先假设下去吧。
第三个等式,这里就很直观了。再使用前面的两个技巧,就把微分符号变换进去咯;
第四个等式,这里需要注意,期望的下标已经发生变化了,相当于把trajectories变回了one trajectory,这里前面已有说明。
等式 (ii) 到这里就扯完了。现在来看等式 (iii) 。等式 (iii) 是个简单的将等式 (ii) 加和项进行 重组。把等式 (ii) 单项都拆开写,以符号
可以得到:
将上面这个形似下三角的累加项逐列累加,则每一列的累加结果为:
, 再把每一列的 结果累加起来,就得到了等式 (iii) 的结果啦。
扯了这么多。终于可以开始减去baseline项了。基于上面最后一个等式给出的结果,对累加的期望减去baseline可以得到:
首先看引入了baseline以后,为什么不会引入偏差:
根据期望的线性性质,直接看baseline的期望:
第一个等式是简单的split,即把序列trajectory 拆分成两个互不交叠的部分,这个split成立的本 质还是积分/求和具有线性性质,这两部分的变量不一样当然可以写成这样; 第二个等式值得注意:这里的baseline 仅仅是关于状态 的函数,和后续的状态以及动 作无关。这和 是不一样的, 因为 是后续状态累积奖励的期望。所以此处可以把 作为常量提出; 第三个等式又是个难点。展开过程如下:
再次结论
参考文献
【1】Going Deeper Into Reinforcement Learning: Fundamentals of Policy Gradients
【2】Notes on Exact Inference in Graphical Models
本文来源自知乎博客:作者风清云
https://zhuanlan.zhihu.com/p/98506549