如何判断 Q-learning 在实践中是否收敛?

人工智能 强化学习 q学习 收敛 时差法 萨尔萨
2021-11-07 16:33:35

我正在使用 Q-learning 和 SARSA 来解决问题。智能体学习从起点到目标而不会陷入困境。

在每个状态下,我可以选择对应于该状态最大 Q 值的动作(代理将采取的贪婪动作)。所有的动作都将一些状态连接在一起。我认为这将向我展示一条从开始到目标的道路,这意味着结果会收敛。

但也有人认为,只要智能体学会如何达到目标,结果就会收敛。有时成功率非常高,但我们无法从 Q 表中获取路径。我不知道哪一个意味着代理完全训练,收敛结果意味着什么。

1个回答

衡量任何数值迭代算法(例如 RL 算法)的某个解(因此不一定是最优解!)的收敛性的一种典型且实用的方法是检查当前解相对于前一个解是否没有(很大)变化一。在您的情况下,解决方案是价值函数,因此您可以检查您的算法是否已收敛到某个价值函数,例如如下

(1)C(q,q-1,ε)={1,如果 |q(s,一个)-q-1(s,一个)|<ε,s小号,一个一个0,否则,
在哪里

  • C是返回的“收敛”函数(又称终止条件)1(true) 如果你的 RL 算法已经收敛到一些足够小的价值函数邻域(这些价值函数是“无法区分的”),并且0否则
  • q是迭代时的价值函数
  • ε是一个阈值(又名精度或容差)值,它是一个超参数,您可以根据您的“容差”(因此得名)进行设置;这个值通常类似于10-6

当然,这需要您跟踪两个值函数。

您还可以定义“收敛”功能C1不同。例如,您可以使用相对误差,而不是使用绝对值,即|q(s,一个)-q-1(s,一个)q(s,一个)|. 此外,鉴于 RL 算法是探索性(即随机)算法,价值函数可能不会(很大)从一次迭代到另一次迭代,但在下一次迭代中,由于您的探索/行为行为,它可能会发生显着变化,所以您可能还想考虑更多的迭代,即在例如之后ñ>1迭代,如果值函数没有太大变化,那么您可以说(可能是概率地)您的 RL 算法已经收敛到值函数空间中的一些小的值函数邻域。

请注意,这些方法并不能保证您的 RL 算法已经收敛到全局最优值函数,而是收敛到一些局部最优值函数(或者更准确地说,值函数的小邻域)。Q-learning 保证收敛到表格设置(您的设置)中的最优值函数,但这是有限度的;在实践中,更难知道 Q-learning 是否收敛到最优或接近最优的价值函数。

也许您还可以查看从您的最终价值函数派生的策略的阶段性收益,但是如果没有最佳收益的上限和下限,您对策略/价值函数的全局最优性知之甚少。

是的,您可以检查策略是否使代理达到目标,但是许多策略可以完成这项工作,也就是说,这并不是说策略是最好的(或最优的)策略,即这是必要的(前提是目标是可以达到的)并且奖励函数模拟您的实际目标)但不是充分条件(最优)。这里的最优性通常是回报的函数(鉴于这是您通常试图优化的)。