关于“强化学习 策略梯度方法 方差大 的原因与解决方法”问题的思考

目录

1 阅前需知

2 为什么方差大?

3 如何解决方差大问题?

3.1 Add a baseline

3.2 TD 代替 MC (即Actor-Critic方法)

4 阅后须知


1 阅前需知

策略梯度方法(Policy-Based)方法直接学习参数化的策略来进行动作的选择。本文所用符号的习惯与下书一致

                                                 关于“强化学习 策略梯度方法 方差大 的原因与解决方法”问题的思考_第1张图片

此书中将所有符合以下条件的均称为Policy-Based方法,不论这种方法是否学习值函数:

①直接学习参数化的策略

②梯度上升法更新参数  

考虑到这么多方法统称为Policy-Based方法,本文在此特意说明,本文所指的方差大问题,是就最开始的Policy-Based方法而言的,即REINFORCE方法,伪代码如下图(相信学过的人一定对这图很熟悉,就不多说了)

                         关于“强化学习 策略梯度方法 方差大 的原因与解决方法”问题的思考_第2张图片

                                                               图1 REINFORCE伪代码

2 为什么方差大?

为了方便说明,本文假设状态空间中有s1,s2两个状态,动作空间有a1,a2,a3三个动作。假设不同状态下采取不同动作得到的即时奖励如下表所示(在状态s1时采取动作a1,得到奖励200)

                                   关于“强化学习 策略梯度方法 方差大 的原因与解决方法”问题的思考_第3张图片

根据图1,我们会在当前策略下进行MC采样来得到一条episode,进而用于更新,假设采样结果如下所示,纵向是可能的trajectory,横线是某trajectory在不同时刻的采样结果。Rt+1之所以没写,是因为现在在计算Q(s,a),st,at固定之后,Rt+1是个定值,而后面的st+1等不是定值。

                 关于“强化学习 策略梯度方法 方差大 的原因与解决方法”问题的思考_第4张图片

为了更简单直观的表达,我们令折扣因子\gamma=1,根据图1,策略梯度是G_t\bigtriangledown ln\pi (A_{t}|S_{t},\theta ),其中G_t=R_{t+1}+R_{t+2}+\cdot \cdot \cdot

因为Gt是Q(s,a)的无偏估计,所以这样采样得到的结果就是策略梯度的无偏估计,那么其方差呢?请听我慢慢道来...

\bigtriangledown ln\pi (A_{t}|S_{t},\theta )是对数概率的梯度,只与策略有关,因为是在当前策略下采样,所以不妨将其看做G的一个系数或者说权重,如此一来,方差的来源就是G,\bigtriangledown ln\pi (A_{t}|S_{t},\theta )只不过是对G的方差起一个放缩的作用。(根据公式Var(aX)=a^{2}Var(X)),下面我们来分析G的方差。

Var(G_t)=Var(R_{t+1})+Var(R_{t+2})+\cdots

由此可以看出,方差大来源于2个原因:

①若不同s对应的R范围相差较大,再加上MC的随机性,那么每一步的R都会有较大的方差。

②因为采样轨迹长度的原因,出现方差累积。

3 如何解决方差大问题?

①针对第一个原因,提出Add a Baseline

②用TD方法代替MC(即Actor-Critic方法)

下面详细解说...

3.1 Add a baseline

我们可以设计一个与状态s有关的函数b(s),作为这个状态下奖励的baseline,只有超过这个baseline,我们才会给出正的奖励,否则给出负的奖励。看下面这个简单的例子,对某个时间步,R的取值有200,210,220,105,110,115共6种可能,这时候的方差是不是很大呢?R的方差大,Gt的方差自然也小不了,方差大的话就会减慢学习的速度(可以类比下SGD和GD的关系,SGD就是因为随机选择一个样本,所以与真实的梯度相比方差比较大,导致学习曲线震荡,收敛较慢,所以就有了小批量梯度下降来降低SGD的方差(原理是var(\bar{X})=var(x)/n))

关于“强化学习 策略梯度方法 方差大 的原因与解决方法”问题的思考_第5张图片

-10,0,10,-5,0,5这个序列是不是比200,210,220,105,110,115的方差小呢?当然小咯。那就果断安排上啊,可以加快学习效率!

当然了,也不是说所有baseline都能降低方差咯,要好好设计一番。上图中b(s)用的是均值,这是最常用的baseline方法,却不是最优的baseline。那为什么不是最优还要用呢?因为简单。如果有人想知道推导的话,可以留言哦(原理与argmin_aE(x-a)^2相似,只不过是x-a带权重)。

 

3.2 TD 代替 MC (即Actor-Critic方法)

TD只用了一个时刻的即时奖励r,所以相比MC而言可以避免方差累积的问题。

关于“强化学习 策略梯度方法 方差大 的原因与解决方法”问题的思考_第6张图片

 

4 阅后须知

以上皆为我个人理解,若有不同意见,还请大家不吝留言探讨。

另外附上我在组会上讲的关于策略梯度的PPT,请点击策略梯度PPT获取。

你可能感兴趣的:(机器学习&深度学习)