所有基于采用均值(sample-average)方法都有两种实现方式:一种是先得到所有的采样值,最后一次性的估计值函数,我们称之为批方法或者off-line的方法。另一种是得到一条采样轨迹就更新一次,称为增量式方法或者online的方法。在2.4中我们讲了他们的利弊以及如何实现增量式方法。本节继续探讨这个话题,只是这里考虑的是离策略方法。由于离策略采用了重要性采样的技巧,形式上有所不同,因此增量实现更新的时候,也有所不同。上一节我们说到离策略的有两种不同的采样比,常规的和加权的。对应的增量实现也分两种情况考虑。
常规重要性采样的增量式实现
对于off-policy的方法,需要重要性采样来纠正行为策略采样带来的偏差。对于常规重要性采样,就是在正常回报的基础上乘以放缩因子
。然后求均值。对比2.4节,可以发现他们求均值的方式完全相同,区别只是回报经过了放缩。因此增量式版本中,他们的更新公式也类似,即:
具体推导参考2.4节。
加权重要性采样的增量式实现
当值函数的估计是采用加权重要性采样比的时候,即
.
表示一个序列的回报,
是相应的权重,比如
。当我们得到一个新的
的时候,如何更新
呢?为了实现这个目的,我们需要引入一个新的变量
,它表示对于每个状态截止当前时刻权重的累计和,即
,递推公式就是:
。有了这个变量,可以证明值函数的更新表达式如下:
我们可以简单验证下这个表达式:
虽然我们推到过程都是基于离策略的,但是这些结论同样适用于在策略的情况。此时只需要让行为策略和目标策略一样就行,对应的权重
始终等于1.
增量式离策略MC预测算法
学习了MC算法,学习了对于离策略的重要性采样技术,在加上增量更新机制,我们就可以得到一个完整的离策略MC预测算法,伪代码如下:
主要有两个大循环,一个是在每个episode之间循环,一个是在episode里面循环。在每个episode里面的时候,我们会对每个访问到的状态动作对进行一系列更新操作,主要有:
- 计算折扣累积回报
- 计算累积权重和
和权重更新
- 增量式值函数更新,公式5.8
注意:我们的计算是倒着来的,这是一个小的trick,这样有利于我们编程实现,而且计算量小。