为什么我们需要在 RL(Q-Learning)中进行开发以实现收敛?

Why do we need exploitation in RL(Q-Learning) for convergence?

我正在实施 Q 学习算法,我观察到我的 Q 值没有收敛到最佳 Q 值,即使策略似乎收敛了。我将动作选择策略定义为 epsilon-greedy 并且 epsilon 从 1 开始递减 1/N(N 是迭代总数)。这样,在较早的迭代中,算法会探索随机状态,然后该速率逐渐降低,从而导致利用。此外,我将学习率定义为 1/N_t(s,a) 其中 N_t(s,a) 是访问 (s,a) 的总次数。

一切似乎都是正确的,但由于我无法获得最佳 Q 值,我开始研究不同的策略,同时变得非常困惑。我知道当无限频繁地访问所有 (s,a) 对时,就会实现收敛。这不等于说所有 (s,a) 对都被探索了很多次吗?换句话说,为什么我们需要开发收敛?如果我们不开发而只专注于探索呢?如果我们这样做,我们会搜索所有解决方案 space,因此这是否足以找到最佳策略?

此外,当它说 Q 值收敛到最优值时,是只有 max_a[Q(s,a)] 收敛到其最优值还是所有 Q(s,a) 值收敛到他们的最佳价值?

可能所有这些都有一个简单的答案,但是即使我检查了很多资源和类似的线程,我仍然无法弄清楚利用背后的逻辑。非常感谢您提前抽出时间!

开发确实不是收敛所必需的理论上。在实践中,由于以下两个原因中的一个或两个原因,它通常被证明是重要的/必要的:

  1. 有时候我们不是为了学习而学习,而是在learning/training过程中就已经很在意自己的表现了。这意味着我们需要在利用(表现良好)和探索(继续学习)之间取得平衡。

  2. 更重要的是,如果我们纯粹探索,根本不去探索,这也可能会限制我们在实践中学习的能力,因为有很多状态,如果我们总是去探索,我们可能根本达不到随机行动。

为了澄清第二点,例如,考虑我们在一个大的二维网格的一个角落,而我们的目标位置在对面的角落。假设每当我们接近目标时,我们已经获得了小的奖励,而当我们远离目标时,我们已经获得了小的负奖励。如果我们在探索和利用之间取得平衡,我们很可能会很快学会沿着从起点到目标的路径行走,但也会由于探索而随机地在这条路径上反弹。换句话说,我们将开始学习在该路径周围的所有状态下该做什么。

现在,假设您尝试在相同情况下仅通过随机行动(例如,没有剥削)来学习。如果我们只是在一个足够大的二维网格中随机行动,并且我们总是从一个角落开始,那么我们就不太可能设法到达网格的另一边。我们将只是随机地在起始位置周围的区域中移动,并且永远不会学习在远离该起始位置的状态下该做什么。在实践中不太可能通过纯粹的随机行为接触到他们。显然我们会在无限长的时间内到达每一个状态,但在实践中我们很少有无限长的时间。

正如您已经说过的,从理论上讲,RL 方法总是要求所有 (s,a) 对都被无限频繁地访问。然而,开发阶段只是必要的,这取决于 RL 算法的类型。与您的问题相关的一个关键概念是区分 on-policyoff-policy 算法。

on-policy 算法(例如 SARSA)中,代理应该使用正在学习的相同策略与环境交互。因此,这种方法需要使用学习策略(又名开发)以实现收敛。

相反,在 off-policy 算法(例如 Q-learning)中,代理可以在收敛到最优策略时遵循任何策略。

Off-policy 方法在预先收集 agent-environment 之间交互数据的问题中非常有用。例如,在存储医生 treatment-patient 反应之间的相互作用的医疗问题中,您可以应用 off-policy 算法来学习最佳治疗。在这种情况下,显然您没有使用漏洞利用,因为代理在学习开始后没有与环境交互。

但是,请注意 off-policy 方法也可以使用 explotation 来使用,尽管应该清楚这不是必需的。在大多数典型的 RL 问题中,目标是代理尽快选择正确的动作。在这种情况下,在学习开始后就开始在 exploration-explotation 之间进行平衡是有意义的,独立于算法是 on-policy 还是 off-policy.