目录
1 阅前需知
2 为什么方差大?
3 如何解决方差大问题?
3.1 Add a baseline
3.2 TD 代替 MC (即Actor-Critic方法)
4 阅后须知
策略梯度方法(Policy-Based)方法直接学习参数化的策略来进行动作的选择。本文所用符号的习惯与下书一致
此书中将所有符合以下条件的均称为Policy-Based方法,不论这种方法是否学习值函数:
①直接学习参数化的策略
考虑到这么多方法统称为Policy-Based方法,本文在此特意说明,本文所指的方差大问题,是就最开始的Policy-Based方法而言的,即REINFORCE方法,伪代码如下图(相信学过的人一定对这图很熟悉,就不多说了)
图1 REINFORCE伪代码
为了方便说明,本文假设状态空间中有s1,s2两个状态,动作空间有a1,a2,a3三个动作。假设不同状态下采取不同动作得到的即时奖励如下表所示(在状态s1时采取动作a1,得到奖励200)
根据图1,我们会在当前策略下进行MC采样来得到一条episode,进而用于更新,假设采样结果如下所示,纵向是可能的trajectory,横线是某trajectory在不同时刻的采样结果。Rt+1之所以没写,是因为现在在计算Q(s,a),st,at固定之后,Rt+1是个定值,而后面的st+1等不是定值。
为了更简单直观的表达,我们令折扣因子,根据图1,策略梯度是,其中
因为Gt是Q(s,a)的无偏估计,所以这样采样得到的结果就是策略梯度的无偏估计,那么其方差呢?请听我慢慢道来...
是对数概率的梯度,只与策略有关,因为是在当前策略下采样,所以不妨将其看做G的一个系数或者说权重,如此一来,方差的来源就是G,只不过是对G的方差起一个放缩的作用。(根据公式),下面我们来分析G的方差。
由此可以看出,方差大来源于2个原因:
①若不同s对应的R范围相差较大,再加上MC的随机性,那么每一步的R都会有较大的方差。
②因为采样轨迹长度的原因,出现方差累积。
①针对第一个原因,提出Add a Baseline
②用TD方法代替MC(即Actor-Critic方法)
下面详细解说...
我们可以设计一个与状态s有关的函数b(s),作为这个状态下奖励的baseline,只有超过这个baseline,我们才会给出正的奖励,否则给出负的奖励。看下面这个简单的例子,对某个时间步,R的取值有200,210,220,105,110,115共6种可能,这时候的方差是不是很大呢?R的方差大,Gt的方差自然也小不了,方差大的话就会减慢学习的速度(可以类比下SGD和GD的关系,SGD就是因为随机选择一个样本,所以与真实的梯度相比方差比较大,导致学习曲线震荡,收敛较慢,所以就有了小批量梯度下降来降低SGD的方差(原理是))
-10,0,10,-5,0,5这个序列是不是比200,210,220,105,110,115的方差小呢?当然小咯。那就果断安排上啊,可以加快学习效率!
当然了,也不是说所有baseline都能降低方差咯,要好好设计一番。上图中b(s)用的是均值,这是最常用的baseline方法,却不是最优的baseline。那为什么不是最优还要用呢?因为简单。如果有人想知道推导的话,可以留言哦(原理与相似,只不过是x-a带权重)。
TD只用了一个时刻的即时奖励r,所以相比MC而言可以避免方差累积的问题。
以上皆为我个人理解,若有不同意见,还请大家不吝留言探讨。
另外附上我在组会上讲的关于策略梯度的PPT,请点击策略梯度PPT获取。