强化学习基础篇(三十)策略梯度(二)MC策略梯度算法
1、Score Function
假设策略是可微分的,并且在任何时候都不为0,我们可以使用下面的小技巧去转换为从到的求解。
其中也叫作score function。
2、Score Function方式的优势
这种转换为对score function的优势可以通过下面两种策略的形式体现出来:
一是、当策略是softmax函数,其形式是,,则score function则可以有着非常简洁的如下形式:
二是、当策略是高斯函数,,其中均值,方差假设为固定值(也可以对进行参数化),其score function为:
这两个例子可以看到Score Function在某些时候是比原来的形式更加容易进行计算。
3、一步MDP的策略梯度
如果我们考虑一个简单的MDP场景,只需要一个动作步就会结束,初始状态会从一个分布中产生,从初始状态开始只需要经过一个时间步就结束,并得到奖励。这个场景里直接使用最大似然方法计算策略梯度。
然后对目标函数进行梯度计算,计算过程中使用了score function的技巧。
4、多步MDP的策略梯度
将前面简单的one-step的MDP,扩展到多步的MDP的情况:
-
(a) 定义在一个episode中,我们采集的轨迹记为:
-
(b) 定义轨迹的奖励之和为:
-
(c) 策略的目标函数定义为:
这里的表示在执行策略的的时候轨迹的概率。 -
(d) 然后我们目标就是找到最优的参数可以极大化目标函数。
-
(d) 其SGD的优化方法是要计算目标函数的梯度。
在这一步中对的估计可以使用m次采样的方法进行,即:
这里继续对进行分解,分解过程中将消去所有与无关的部分:
这里的结果很感人,将轨迹的概率梯度转换为了求策略的梯度:
最终目标函数的梯度可以转换为:
最终我们优化目标函数的时候就完全不需要了解模型的动态参数。
5、理解Score Function Gradient估计
我们的策略函数优化的目标函数是,其中是参数,轨迹是由采样产生。如果我们将其重新为更加广义的形式,通过函数替换奖励:
其中函数的由参数化的分布采样产生,需要优化参数使得的期望尽可能大。其中与策略函数优化的方式一样使用了score function的技巧,然后对进行采样。这个过程可以通过下面这个图理解下:
图里面每个样本是从采样产生,我希望采样产生出来的能够使得尽量得大,的优化过程即在优化函数的形状,第一张图的每个蓝色箭头表示 ,中间的各种圈是函数,将分布采样出的值给与一定的权重就得到中间图,绿色的点是权重为正的值,红色为权重为负的值。
然后我们需要使得的分布尽量往绿色的区域移动拟合,其拟合后的如最右侧的图,将使得能够在后续采样出的值尽可能有更大的可能性。
Policy Gradient估计 vs 最大似然估计
如果我们将Policy Gradient估计与最大似然估计进行对比:
Policy Gradient估计的形式为:
最大似然估计形式为:
这两者是比较类似的,除了Policy Gradient估计的形式是包含了reward函数,reward函数对likelihood的结果进行加权。即Policy Gradient估计可以看做加权后的极大似然估计。这里目标是在策略优化过程中,鼓励策略能够进入到能够产出尽可能多奖励的区域中。比如下图中,优化过程中希望轨迹的分布向着红色更高奖励的区域移动。
6、策略梯度的问题
我们策略梯度更新为:
其中存在的问题在于其轨迹为相当于MC方法产生出,虽然是unbiased,但是其方差(variance)很大。比如在采样不同的轨迹可能差异特别大,有些时候无奖励,有些时候奖励特别大。
降低方差将是更加高级的强化学习算法的核心,降低方差即可保障学习过程更加稳定。
一般有两种改进办法,一是引入时序的因果关系,二是使用baseline。
7、利用时序的因果关系(Causality)降低方差
我们已经推导得出的Policy gradient形式为:
其由两部分的sum构成,一个是对reward的累加,另一个是对score function的累加。
我们可以引入时序的因果关系(Causality)使得第一个加和的reward更小,我们在时间之前做的似然估计并不会对后续得到奖励造成影响,
对于一个单个奖励的梯度形式是:
若将所有时间步进行累加,经过推导可以得到简化后的Policy gradient形式:
其中。这里是通过因果性去掉没有必要的奖励部分,在时间的策略不会影响部分的奖励。最后得到的采样形式是:
通过这种方式可以得到经典的REINFORCE算法:
网友评论