蒙特卡洛方法何时优于时间差异方法?

机器算法验证 蒙特卡洛 强化学习 时间差
2022-01-17 21:40:23

最近我一直在做很多关于强化学习的研究。我遵循了 Sutton & Barto 的强化学习:大部分内容的介绍。

我知道马尔可夫决策过程是什么,以及如何使用动态规划 (DP)、蒙特卡洛和时间差分 (DP) 学习来解决它们。我遇到的问题是,我看不到蒙特卡洛何时会是 TD 学习的更好选择。

它们之间的主要区别在于 TD-learning 使用 bootstrapping 来逼近动作值函数,而 Monte Carlo 使用平均值来实现这一点。当这是更好的方法时,我真的想不出一个场景。

我的猜测是它可能与性能有关,但我找不到任何可以证明这一点的来源。

我错过了什么还是 TD-learning 通常是更好的选择?

2个回答

TD 学习和 DP 的主要问题是它们的步长更新偏向于学习参数的初始条件。引导过程通常使用后继值 Q(s',a') 上的任何当前估计值来更新函数或查找 Q(s,a)。显然,在学习的一开始,这些估计不包含来自任何实际奖励或状态转换的信息。

如果学习按预期进行,那么偏差将在多次迭代中逐渐减少。然而,偏差会导致严重的问题,特别是对于离策略方法(例如 Q 学习)和使用函数逼近器时。这种组合很可能无法收敛,以至于Sutton & Barto中被称为致命的三合会

蒙特卡洛控制方法不会受到这种偏差的影响,因为每次更新都是使用 Q(s,a) 应该是什么的真实样本进行的。然而,蒙特卡洛方法可能会受到高方差的影响,这意味着与 TD 相比,需要更多的样本才能实现相同的学习程度。

在实践中,如果可以克服致命三元组的问题,TD 学习似乎会更有效地学习。最近使用经验回放和分阶段“冻结”估计器副本的结果提供了解决问题的变通办法——例如,这就是 Atari 游戏的 DQN 学习器的构建方式。

TD 和蒙特卡洛之间也有一个中间地带。可以构建一种通用方法,将不同长度的轨迹(从单步 TD 到蒙特卡洛中的完整剧集运行)组合起来,并将它们组合起来。最常见的变体是 TD( ) 学习,其中是一个从(实际上是单步 TD 学习)到(实际上是蒙特卡罗学习)的参数,但它有一个很好的特性,它可以用于连续问题)。通常,之间的值是最有效的学习代理 - 尽管与许多超参数一样,使用的最佳值取决于问题。λλ0101

如果你使用的是基于价值的方法(相对于基于策略的方法),那么在实践中一般会更多地使用 TD 学习,或者 TD/MC 组合方法比如 TD(λ) 会更好。

就MC的“实用优势”而言?蒙特卡洛学习在概念上简单、稳健且易于实现,尽管通常比 TD 慢。我通常不会将它用于学习控制器引擎(除非急于为简单的环境实现某些东西),但我会认真考虑将它用于策略评估,以便比较多个代理 - 这是因为它是一个无偏测量,这对于测试很重要。

本质上,这取决于您的环境。

TD利用马尔可夫属性,即进程的未来状态仅依赖于当前状态,因此在马尔可夫环境中使用TD通常更有效。

MC 没有利用马尔可夫属性,因为它基于整个学习过程的奖励,这适用于非马尔可夫环境。