off-policy 学习方法是否优于 on-policy 方法?

Are off-policy learning methods better than on-policy methods?

我无法理解 on-policy 方法(如 A3C)和 off-policy 方法(如 DDPG)之间的根本区别是什么。据我所知,不管行为策略如何,off-policy 方法都可以学习到最优策略。它可以通过观察环境中的任何轨迹来学习。因此,我能说off-policy方法比on-policy方法好吗?

我已阅读 cliff-walking example 显示 SARSAQ-learning 之间的区别。它说 Q-learning 会学习沿着悬崖行走的最优策略,而 SARSA 会学习在使用 epsilon-greedy 策略时选择更安全的方式。但是既然Q-learning已经告诉我们最优策略,为什么我们不遵循那个策略而不是继续探索呢?

另外,这两种学习方法有没有一种情况比另一种好?在哪种情况下人们更喜欢基于策略的算法?

正如您已经说过的,off-policy 方法可以学习最优策略而不考虑行为策略(实际上行为策略应该具有一些属性),而 on-policy 方法要求代理按照它正在执行的策略进行操作学习了。

想象一下您之前存储了一组轨迹数据(即元组形式的数据 (s,a,r,s'))的情况。此数据是根据给定策略收集的,您无法更改它。在这种常见于医疗问题的情况下,您只能应用离策略方法。

这意味着离策略方法更好?不一定。我们可以说离策略方法在它们可能面临的问题类型上更加灵活。然而,从理论的角度来看,它们具有有时很方便的不同属性。例如,如果我们比较 Q-learning 和 SARSA 算法,它们之间的一个关键区别是 Q-learning 更新规则中使用的 max 运算符。这个算子是高度非线性的,这使得算法与函数逼近器的结合变得更加困难。

什么时候使用基于策略的方法更好?好吧,如果您面临连续状态 space 的问题,并且您有兴趣使用线性函数逼近器(例如 RFB 网络)。然后使用 on-policy 方法更稳定。您可以在 Sutton 和 Barto 的书 Section off-policy bootstrapping 中找到关于此主题的更多信息。