js 某一列减去固定值_强化学习:为什么对累积奖励减去baseline项能起到减小方差的作用?...

bd3fecea0d708ee5abffa841fc89ebc6.png

笔者看过有关RL的论文里,很多论文的工作都专注于减少policy gradient的方差,以得到更加优质且稳定的policy。其中一项最经典的工作就是对policy gradient的累积奖励减去一个baseline,但为什么减去一个baseline就可以达到减小方差,同时又不引入偏差的效果呢?

关于这个问题,Daniel Seita大佬在他的博客中有详细的讲解(链接给在最后),但笔者水平不够,仍然有部分未看明白的地方,强作此文说说自己的理解,希望有大佬看到并给出指导。


写在前面:符号约定

在强化学习的policy gradient中,通常会通过环境仿真出一系列的trajectories,以起到类似于对某种概率分布进行采样的作用,某个以时刻T为结束时刻的trajectory可以约定如下:

aaaaeae52108a2298a40fc5be1208cb6.png
来源:[1]

其中

分别代表状态,动作和奖励。

接下来,本文将按照简单的结论->证明->结论的结构来探讨减小方差这个问题。

一、结论

对policy gradient的表达式中的累积奖励项减去一个baseline项,可以起到减小policy gradient的方差且同时不引入偏差的效果。如下式:

927653e35483d6ee14b8b66a74448e80.png
来源:[1]

在实际工作中,通常把baseline取为状态

的状态-值函数,即

二、证明

首先需要写明两个技巧:

(1)log-derivative

此技巧是介绍如何将对数塞入对某个函数

的期望的梯度中去的。过程如下:

75d0342e3b60e626737a3f4a19480f1a.png
来源:[1]

这个过程看起来似乎十分简单直接,相当于乘了一项

,再把分母移动到微分项下面,利用简单的复合函数求导:

4ee2bb2847a17c23ee5350d6431a04f0.png

就在积分里增加了对数项,最后根据期望的定义得到了最终的表达式。

但这里是有一个疑问的,那就是在第二个等式中,直接把微分号放入了积分号里面,这种直接交换微分和积分次序的变换应满足什么条件才成立?在这里是否成立?,笔者不甚理解,希望理解的朋友给予指导。

(2)对trajectory

的对率求导

假设trajectory

的出现概率为
,那么关于该trajectory的对数概率关于参数
的导数为:

1e8f16710f4132eca94e04501ce0d60b.png

其中

表示初始状态的概率分布,
表示policy,
表示状态转移概率。

第一个等式是根据乘法原理,把生成trajectory

的概率
拆开写成了在已知初始状态概率分布
的情况下,所有时刻的policy和状态转移概率的乘积;注意这里默认假设了时刻
所采取的动作
仅依赖于状态
,状态
也仅依赖于前一时刻的状态
和动作
(一阶马尔科夫性)。

第二个等式就是简单的取对数运算。

第三个等式就是关于参数

的求微分运算,因为与参数
有关的项仅有
,因此其他项对参数
的导数为0。

接下来,应用这两个技巧看看期望奖励关于参数

的导数,即policy gradient的表达式。

c4e589bf5f62a5246a7b4bfab171b3ae.png

这里第一个等式即期望的定义式;

第二个等式即log-derivative技巧;

第三个等式即对trajectory

的对率求导的技巧;

第四个等式即写回期望。

在正式引入baseline之前,还需要对上式做一些变换:

666bca95f7caecce7194156859cc35a2.png
来源: [1]

等式(i)是简单的替换

,这里令折扣因子

等式(ii)是个难点。首先定义这个新冒出来的符号

,这个
代表以时刻
为最终时刻的trajectory在时刻
得到的奖励。由于时刻
,就有:

7fe58ad4746678826de44cf919c3f7fc.png

上式成立是因为在时刻

,trajectory就已经结束,因此后续的状态和奖励的取值对
并无影响,从而期望相等。

等式(i)想要得到等式(ii),关键在于以下等式的成立:

1b87c0d2c95aefeba6983bb28b5b693e.png

这个等式的左边仍然是policy gradient的定义,右边却变成了以不同的时刻

为最终时刻的trajectories的奖励
的求和运算。

为什么这个等式成立呢?这里说说我的理解,不一定正确。直观上来看,等式右边就是的期望内容是把以下trajectories的最后一个奖励求和了:

a930f585a697c39b7e719525249be248.png
来源: 笔者。双击可放大

如果考虑对以时刻

为终止时刻的某一个trajectory求期望累积奖励的话,那么
必然需要对时刻0到时刻
的所有状态
的可能取值进行遍历(因为积分),并将所有时刻的奖励取关于概率
的加权和
;同样地, 也可以考虑以不同时刻
的多条trajectories,遍历时刻0到时刻
的所有时刻,并分开将每一条trajectory的最后时刻的
累加起来。
公式表达如下:

8bde8c68eb80f6d46ab4a8655db0e164.png
来源: 笔者。双击可放大

理解了这一步转换,就可以开始下一步推导了。

3ae700167a3f89adc66d4847a436492a.png
来源: [1]

第一个等式上面已经说明;

第二个等式,Daniel Seita的博客里提到了“Assume we can exchange the sum with the gradient,”也就是说,假设求和符号和微分符号位置可以互换,笔者不太明白为啥可以这样假设,但还是先假设下去吧。

第三个等式,这里就很直观了。再使用前面的两个技巧,就把微分符号变换进去咯;

第四个等式,这里需要注意,期望的下标已经发生变化了,相当于把trajectories变回了one trajectory,这里前面已有说明。

等式(ii)到这里就扯完了。现在来看等式(iii)。等式(iii)是个简单的将等式(ii)加和项进行重组。把等式(ii)单项都拆开写,以符号

替换
可以得到:

9ba59c56de276476a2987d3142aaec01.png
来源: [1]

将上面这个形似下三角的累加项逐列累加,则每一列的累加结果为:

,再把每一列的结果累加起来,就得到了等式(iii)的结果啦。

扯了这么多。终于可以开始减去baseline项了。基于上面最后一个等式给出的结果,对累加的期望减去baseline可以得到:

046be7f6d963b811b3ae4340ab704401.png

首先看引入了baseline以后,为什么不会引入偏差:

根据期望的线性性质,直接看baseline的期望:

290a434078aeaac8295344f4f9c48b5e.png
baseline的期望,来源: [1]

第一个等式是简单的split,即把序列trajectory

拆分成两个互不交叠的部分,这个split成立的本质还是积分/求和具有线性性质,这两部分的变量不一样当然可以写成这样;

第二个等式值得注意:这里的baseline

仅仅是关于状态
的函数,和后续的状态以及动作无关。这和
是不一样的,因为
是后续状态累积奖励的期望。
所以此处可以把
作为常量提出;

第三个等式又是个难点。展开过程如下:

d23958ac4f64989188d7e1c17c2e6243.png
期望的变换,来源: [1]

这里期望的变换的第一个等式即将期望按定义式展开;

期望的变换第二个等式应该是乘法分配律,即:

53413cdcfa763e05dddcb174d844213e.png

根据

的性质,
把一些求和项等于1的概率往后置,以达到变量消去的作用,这和概率图模型中的变量消去(见【2】)是同理的。

期望的变换的第三个等式就是简单的把后面的和式用1替换,替换后再按期望的定义式写回期望的形式,就得到了baseline的期望中的第三个等式

再看到baseline的期望中的第四个等式。直接按期望的定义展开即可证明其等于0:

057a3f793ba29fddf017a1dabdc6e05a.png

至此,证明了baseline项的加入,是不会对policy gradient引入额外偏差的。

接下来再看baseline项为什么可以减小方差。

根据方差的定义式

7971e083c7427eb17eda024c0932d19b.png
方差的定义展开式,来源: [1]

方差的定义展开式的等式(i)代表我们只需要看

项即可,
因为引入baseline没有带来偏差,因此对于
而言,有无baseline项都是相同的。

等式(ii)做了变量独立性的假设,将乘积拆开了。我们仔细观察乘积第二项就会发现,这其实就是Mean Square Error啊,什么时候才能使MSE最小呢,当然是

的时候啊。

所以说,当我们把baseline取成是

的某个估计的时候,方差是小于没有baseline的时候的,写得再明白点,就是(
小于号右边就是无baseline的情况):

2c8de1814d16746f80ba188d0971bd2d.png

至此,就证明了当baseline取对期望奖励的某个估计时,可以达到减小方差的效果。


三、再次结论

证明过程较长,再理一理步骤:

(1),两个技巧,log-derivative和对率求导,用于将policy gradient的表达式进行变换,得到:

117642505053a15396e2ae0dd05db9d2.png

(2),对(1)中的表达式使用多个trajectories和加法重组的技巧,得到可以引入baseline的表达式:

0bf3201be41d9162ecddad93a1eef2c0.png

(3),加入baseline,并证明它没有给policy gradient带来偏差,并且能够减少方差。

可能的不严谨之处也再强调一遍:

(1),log-derivative中有微分和积分次序的变换,是否严谨未知;

(2),证明过程中有求和符号和微分符号次序的变换的假设;

(3),有变量独立的假设。

最后,我们就探索出了添加baseline为什么可以在不给policy gradient带来的偏差的情况下起到减少其方差的原因啦。

心血之作,本文转载请注明出处!×3

参考链接:

【1】Going Deeper Into Reinforcement Learning: Fundamentals of Policy Gradients

【2】Notes on Exact Inference in Graphical Models

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值