为什么使用函数逼近时 Q-learning 不收敛?

人工智能 强化学习 q学习 深度学习 证明 函数逼近
2021-10-17 20:14:41

表格 Q 学习算法保证找到最优的Q功能,Q,只要满足以下关于学习率的条件( Robbins-Monro 条件)

  1. tαt(s,a)=
  2. tαt2(s,a)<

在哪里αt(s,a)表示更新时使用的学习率Q与状态相关的值s和行动a在时间时间步t, 在哪里0αt(s,a)<1假定为真,对于所有状态s和行动a.

显然,鉴于0αt(s,a)<1,为了使这两个条件成立,所有状态-动作对都必须被无限频繁地访问:这在《强化学习:简介》一书中也有说明,除了这一点应该广为人知并且这是基本原理在使用的背后ϵ- 训练期间的贪婪策略(或类似策略)。

一个完整的证明表明Q-学习找到最佳的Q函数可以在论文Convergence of Q-learning: A Simple Proof (by Francisco S. Melo) 中找到。他使用收缩映射等概念来定义最优Q函数(另见强化学习中的贝尔曼算子是什么?),它是这个收缩算子的一个不动点。他还使用了一个关于随机过程的定理 (n. 2)0,给出一些假设。(如果你不是数学爱好者,这个证明可能不容易理解。)

如果使用神经网络来表示Q函数,做收敛保证Q-学习还坚持吗?使用函数逼近时,为什么(或不)Q-learning 会收敛?有没有正式的证据证明这种不收敛Q- 使用函数逼近学习?

我正在寻找不同类型的答案,从那些只给出不收敛背后的直觉的答案Q-在对那些提供正式证明(或带有正式证明的论文的链接)的函数逼近时进行学习。

3个回答

这是一个直观的描述答案:

函数逼近可以用任何可参数化的函数来完成。考虑一个问题Q(s,a)空间在哪里s是正实数,a0或者1, 真正的 Q 函数是Q(s,0)=s2, 和Q(s,1)=2s2, 对于所有状态。如果您的函数逼近器是Q(s,a)=ms+na+b, 不存在能准确表示真实的参数Q函数(我们试图将一条线拟合到二次函数)。因此,即使您选择了一个好的学习率,并且无限频繁地访问所有状态,您的逼近函数也永远不会收敛到真实的Q功能。

这里有更多细节:

  1. 神经网络近似函数。通过使用或多或少复杂的多项式来逼近函数,可以将函数逼近或多或少。如果您熟悉泰勒级数近似,这个想法应该看起来很自然。如果不是,请考虑在区间 [0-π/2)。你可以用一条直线来近似它(很糟糕)。您可以使用二次曲线更好地近似它。通过增加我们用来逼近曲线的多项式的次数,我们可以得到越来越接近曲线的东西。
  2. 神经网络是通用函数逼近器。这意味着,如果你有一个函数,你也可以创建一个足够深或足够宽的神经网络,它可以将你创建的函数逼近到任意精确的程度。但是,您选择的任何特定网络拓扑都将无法学习所有功能,除非它是无限宽或无限深的。这类似于如果您选择正确的参数,一条线可以适合任何两个点,但不能适合任何 3 个点。如果你选择一个具有一定宽度或深度的网络,我总是可以构建一个需要更多神经元才能正确拟合的函数。

  3. 只有当 Q 函数的表示是精确的时,Q 学习的界限才成立。要了解原因,假设您选择使用线性插值来近似 Q 函数。如果真正的函数可以采取任何形式,那么显然我们的插值误差可以通过构造一个类似 XOR 的 Q 函数函数变得无限大,而且没有任何额外的时间或数据可以让我们减少这个误差. 如果您使用函数逼近器,并且您尝试拟合的真实函数不是函数可以任意近似的东西,那么即使选择了良好的学习率和探索率,您的模型也不会正确收敛。使用计算学习理论的术语,我们可以说 Q 学习的收敛证明隐含地假设真正的 Q 函数是假设空间的成员,您将从中选择模型。

据我所知,要真正清楚、正式地了解我们缺乏收敛的确切原因/时间 - 或者更糟糕的是,有时还有分歧的危险,这仍然是一个悬而未决的问题。它通常归因于“致命的三合会”(参见 Sutton 和 Barto 的书第二版的 11.3),结合了:

  1. 函数逼近,AND
  2. 自举(使用我们自己的价值估计来计算我们的训练目标,如通过Q-学习),和
  3. 政策外培训(Q-学习确实是脱离政策的)。

这只是为我们提供了(可能不是详尽的)对缺乏收敛和/或存在分歧危险的情况的描述,但仍然没有告诉我们为什么会在这些情况下发生这种情况。


约翰的回答已经提供了一种直觉,即问题的一部分仅仅是使用函数逼近很容易导致您的函数逼近器不足以表示真实的情况Q如果不切换到不同的函数逼近器,则可能总是存在无法消除的逼近误差。

就个人而言,我认为这种直觉确实有助于理解为什么算法不能保证收敛到最优解,但我仍然直观地期望它可能能够“收敛”到一些“稳定”的解,这是给定的最佳近似值所选函数表示中固有的限制。事实上,当我们切换到策略训练(例如 Sarsa)时,这就是我们在实践中观察到的,至少在线性函数逼近器的情况下是这样。


我自己对这个问题的直觉通常是问题的一个重要来源是泛化在表格设置中,我们有完全隔离的条目Q(s,a)对所有人(s,a)对。每当我们更新我们对一个条目的估计时,它会使所有其他条目保持不变(至少在最初 - 由于更新规则中的引导,可能会对未来更新中的其他条目产生一些影响)。更新算法的规则,如Q-learning 和 Sarsa 有时可能会在我们“不走运”时朝着“错误”的方向更新,但在预期中,它们通常会朝着正确的“方向”更新。直观地说,这意味着,在表格设置中,我们会慢慢地、逐步地​​单独修复任何条目中的任何错误,而不会损害其他条目。

使用函数逼近,当我们更新我们的Q(s,a)估计一个(s,a)对,它还可能影响我们对所有其他状态-动作对的所有其他估计。直观地说,这意味着我们不再像在表格设置中那样对条目进行很好的隔离,并且“修复”一个条目中的错误可能会有向其他条目添加新错误的风险。然而,就像约翰的回答一样,这整个直觉也确实适用于策略算法,所以它仍然没有解释什么特别之处Q-学习(和其他非策略方法)。


最近关于这个主题的一篇非常有趣的论文是Non-delusional Q-learning and Value Iteration他们指出了将函数逼近与更新规则相结合的算法中的“妄想偏差”问题max运算符,例如 Q-learning(它可能不是唯一的max运算符,但可能适用于一般的关闭策略?)。

问题如下。假设我们运行这个Q-状态-动作对的学习更新(s,a)

Q(s,a)Q(s,a)+α[maxaQ(s,a)Q(s,a)].

价值估计maxaQ(s,a)这里使用的假设是我们执行的策略对于我们的旧版本是贪婪的Q估计一个 - 可能很长 - 轨迹。正如在之前的一些答案中已经讨论过的,我们的函数逼近器具有有限的表示能力,并且对一个状态-动作对的更新可能会影响其他状态-动作对的值估计。这意味着,在触发我们的更新后Q(s,a)我们的函数逼近器可能不再能够同时表达导致我们的高回报的策略maxaQ(s,a)估计基于这篇论文的作者说该算法是“妄想”。它执行更新的假设是,它仍然可以获得大的回报,但实际上它可能不再足够强大,无法使用新版本的函数逼近器参数获得这些回报。


最后,我怀疑与这个问题相关的另一篇(甚至更新的)论文是Diagnosing Bottlenecks in Deep Q-learning Algorithms,但不幸的是我还没有时间详细阅读并充分总结它。

存在三个问题

  1. 容量有限的神经网络(由 John 解释)
  2. 非静止目标
  3. 非平稳分布

非静止目标

在表格 Q 学习中,当我们更新一个 Q 值时,表中的其他 Q 值不会受到此影响。但是在神经网络中,旨在改变一个 Q 值的权重更新最终会影响其他状态看起来相似的 Q 值(因为神经网络学习的是平滑的连续函数)

这很糟糕,因为当您在玩游戏时,游戏的两个连续状态总是相似的。因此,Q 值更新将同时增加或减少两个状态的 Q 值。因此,当您将一个作为另一个目标时,目标会随着您移动而变得不稳定。这类似于一头驴跑去捕捉附在它头上的胡萝卜。由于目标是非静止的,驴永远不会到达它的目标。而且,在我们的例子中,在试图追逐时,Q 值会爆炸。

通过深度强化学习进行人类级别控制中,通过缓存 DQN 的旧副本以评估目标并每 100,000 个学习步骤更新缓存来解决此问题。这称为目标网络,目标以这种方式保持静止。

非平稳分布

这类似于模仿学习中的“分布漂移”问题,可以通过称为DAgger的数据集聚合技术来解决。

这个想法是,随着我们的训练,我们的 DQN 会变得越来越好,我们的策略也会改进。这会导致我们的抽样分布发生变化,因为我们正在进行在线学习,我们根据以下政策进行抽样ϵ可能性。这是监督学习的一个问题,因为它假设平稳分布或 iid 数据。

打个比方,这就像训练一个神经网络来识别猫和狗,但在前 100 个时期只显示网络,然后在剩余的时期只显示猫。发生的情况是,网络学会识别狗,然后忘记它并学会识别猫。

这就是分布发生变化时发生的情况,我们只关心训练期间的当前分布。因此,为了解决这个问题, 同一篇论文开始在一个大缓冲区中聚合数据,并在每次训练期间对新数据和旧数据的小批量进行采样。这称为经验回放,因为我们不会丢弃过去的经验并继续在训练中重复使用它们。