这个策略梯度相关的知识我在 David Silver 的强化学习课程里学习过了已经,再看一遍这个伯克利的,好像还挺重要,marshal学长说的。
推导过程
这个过程也大致看过
首先是使用了一个log函数的性质,见上图,然后就可以转化的简单一点
然后就可以进行下面这样
然后,如果跟maximum likelihood 相比较,就会发现这个策略梯度的变化的值,相比起来每一项都多乘了获得的reward,这样一来,就可以使获得reward多的行为动作更有可能发生,而获得reward少的甚至是负的动作减少发生的可能。
应用到部分观测(partial observability)中时
只要将式子中的 s 换成 o 就可以了,如下图:
So we can use policy gradient in partially observed MDPs without modifications.
policy gradient 的问题
简单来说就是方差很大。
减小方差的方法
第一种:使用了宇宙基本的一个理论——未来发生的事不可能改变过去。
然后,利用这一定理,我们把式子中的一小部分做了变动,如下图:
为什么这样就能减小方差呢?
因当我们把1变成t的时候,我们对于reward的总和也会随之减小,所以就会使方差减小(数越小,方差也就越小)。
第二种:Baseline
这种方法就是,将reward 减去一个b,这个b就是baseline,可以是reward的平均值(这样的话可也很好的工作),也可以是其他一些数值,其实平均值并不是最好的baseline的选择,但是也非常好。
而且,减掉 baseline 并不会影响策略梯度的计算,并且是一致的,因为,b的期望值是无偏估计,从下图中的推导可以看出这一点。
那怎样是最优的baseline呢?
下图中给了最佳baseline的求解方式:
所以,最佳的b就如上图中,但是虽然这样可以获得更小的方差,但是实际中比较麻烦,所以做的时候实际用的还是average。
On-policy Learning
on-policy learning 的问题主要就是在于,每当我们改进了一点点θ,我们就必须重新生成一些样本,因为之前的样本是根据旧的θ生成的,不能再继续使用了。
这样的话,在一些情况下就不是很适合。
所以我们提出Off-policy learning
Off-policy Learning
在离轨策略中,使用到了 importance sampling 的内容。