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

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

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