前两章(9、10 章)已经讲了on-policy 情形下对于函数近似的拓展,本章继续讲解 off-policy 下对函数近似的拓展,但是这个拓展比on-policy时更难更不同。
在第六第七章中讲到的 off-policy 方法可以拓展到函数近似的情况下,但是这些方法在半梯度法下不能像在 on-policy 下一样良好地收敛。
Off-policy 在函数逼近时有两大难点:update target 发生变化。这个问题之前已通过 importance sampling 解决。
update distribution 发生变化,已不再是原先的 on-policy distribution。
要解决上述的第二个难点,有两种方法:通过之前讲的 importance sampling 将 update distribution 转变为 on-policy distribution 。
提出一种不依赖任何特定分布的 true gradient 方法。
11.1 Semi-gradient Methods
这一节主要目的是将 off-policy 下的查表法改造为梯度 / 半梯度法,主要针对第一个难点(变化的 update target)。大多数情况下,这个方法表现良好,少数情况存在发散的情况。
这些算法大多数采用了『单步重要性比例』:
semi-gradient off-policy TD(0)
其中episodic and discounted problem:
continuing and undiscounted problem:
semi-gradient Expected Sarsa
其中episodic and discounted problem:
continuing and undiscounted problem:
这里梯度更新并未使用 importance sampling ,后面会解释。
上面都是针对单步算法,而对于多步算法,无论是 state value 还是 action value ,都需要做 importance sampling 。
n-step semi-gradient Expected Sarsa
其中episodic and discounted problem:
continuing and undiscounted problem:
n-step semi-gradient tree-backup
第七章还讲过一种不需要 importance sampling 的算法:tree-backup 算法,其半梯度法如下:
11.2 Examples of Off-policy Divergence
从本节开始讨论第二类难点,也就是 update distribution 不再是 on-policy distribution 。本节主要是讲了 off-policy 下使用半梯度法导致不稳定或不收敛的反例。
例子的具体情况略过,其结论是,参数
更新的稳定性与步长参数
无关,只需大于 0 即可,而其值的大小只影响参数
发散的速度,而非是否发散。
本例的一个特殊点是,它一直在重复一个状态转移来更新
(这也是实际中可能发生的情况),因为 behavior policy 可能会选择 target policy 永远不会选择的那些 action(此时
,权重得不到更新)。
还有一个反例——Baird's counterexmaple ,这个例子主要是在说,bootstrapping 和 semi gradient 在非 on-policy 下结合时,会导致发散。
Q-learning 往往是收敛性最好的算法,但仍有使用 Q-learning 也发散的反例,一个解决方案是使 behavior policy 与 target policy 尽量接近(比如将 behavior policy 设为 target policy 的
-greedy policy )。
11.3 The Deadly Triad
上一节对存在不稳定性的情况举了例子,本节再来做一个归纳总结。
导致不稳定性有三个主要因素,称其为『致命三因素(The Deadly Triad)』:Function Approximation
Bootstrapping
Off-policy training
结论:『当三者同时出现,会导致系统不稳定;只出现两个时则可避免不稳定性。』
关于三者的取舍情况,首先 function approximation 最需要保留,他能够使我们的算法得到足够的扩展和延伸,变得更有泛化能力。
而 bootstrapping 是可以考虑放弃掉的,但代价是牺牲计算效率和数据利用率(bootstrapping 可以利用终止状态之前的数据来进行中途学习,所以效率高)。
最后, off-policy 能够将行为从目标函数分隔开,能够带来一定程度上的便利,但并非是必须的。不过若想要『并行学习』,则一定要使用 off-policy 。
11.4 Linear Value-function Geometry
为了更好理解 off-policy learning 的一些问题,考虑对函数逼近做一些抽象的分析。
设状态空间中的 state-value function 为映射
(大部分的 v 函数并没有具体意义,即不对应任何具体的 policy ) 。
记状态空间为