Q-learning 和 SARSA 之间有什么区别?

虽然我知道 SARSA 是一种同策略学习,而 Q-learning 是一种异策略学习,但当查看它们的公式时,我(对我来说)很难看出这两种算法之间的任何区别。

根据 Sutton 和 Barto 的著作 Reinforcement Learning: An Introduction,在 SARSA 算法中,给定一个策略,相应的动作价值函数 Q(在状态 s 和动作 a,在时间步 t),即 Q(st, at),可以按照以下方式更新:

Q(st, at) = Q(st, at) + α*(rt + γ*Q(st+1, at+1) – Q(st, at))

另一方面,Q-learning 算法的更新步骤如下:

Q(st, at) = Q(st, at) + α*(rt + γ*maxa Q(st+1, a) – Q(st, at))

也可以写成:

Q(st, at) = (1 – α) * Q(st, at) + α * (rt + γ*maxa Q(st+1, a))

其中 γ (gamma) 是折扣因子,rt 是在时间步 t 从环境中获得的奖励。

这两种算法之间的区别是否在于 SARSA 只查找下一个策略值,而 Q-learning 查找下一个最大策略值?

TLDR(以及我自己的答案)

感谢所有回答我最初提出的问题的人。我创建了一个 github repo 来使用 Q-Learning,并且凭经验理解了区别。这一切都归结于你如何选择你的下一个最佳行动,从算法的角度来看,这可以是平均最大最佳行动,具体取决于你选择如何实现它。

另一个主要区别在于何时发生这种选择(例如,在线 vs 离线),以及这如何/为什么影响学习。如果你在 2019 年阅读本文,并且更喜欢实践,那么使用 RL 玩具问题可能是理解差异的最佳方法。

最后一条重要说明是,Suton & Barto 以及 Wikipedia 经常在关于下一个状态的最佳/最大动作和奖励方面存在混合、令人困惑错误的公式表示:

r(t+1)

实际上是

r(t)


回答:

是的,这是唯一的区别。同策略 SARSA 学习相对于它遵循的策略的动作价值,而异策略 Q-Learning 学习相对于贪婪策略的动作价值。在一些常见条件下,它们都收敛到真实价值函数,但收敛速度不同。Q-Learning 往往收敛得慢一些,但有能力在改变策略的同时继续学习。此外,当与线性近似结合使用时,不能保证 Q-Learning 收敛。

在实践中,在 ε-贪婪策略下,Q-Learning 计算 Q(s,a) 与最大动作价值之间的差异,而 SARSA 计算 Q(s,a) 与平均动作价值和最大值的加权和之间的差异:

Q-Learning: Q(st+1,at+1) = maxaQ(st+1,a)

SARSA: Q(st+1,at+1) = ε·meanaQ(st+1,a) + (1-ε)·maxaQ(st+1,a)

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注