虽然我知道SARSA是on-policy算法,而Q-learning是off-policy算法,但是当我看它们的公式时,很难(对我来说)看出这两个算法之间的任何区别。
根据书籍Reinforcement Learning: An Introduction(作者为Sutton和Barto),在SARSA算法中,给定一个策略,相应的动作值函数Q(在时间步t的状态s和动作a中)即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,并通过实证理解了其中的差异。这主要取决于你如何选择下一步最好的行动,从算法角度来说,它可以是平均值、最大值或最佳行动,具体取决于你选择的实现方式。
另一个主要区别是选择发生的时间(例如,在线与离线)以及如何/为什么影响学习。如果您正在2019年阅读此内容并且更喜欢亲自动手,那么玩强化学习玩具问题可能是理解差异的最佳方式。最后一个重要说明是,Suton&Barto以及维基百科经常涉及“下一个状态最佳/最大操作和奖励”的混合,混淆或错误的公式表示:
实际上是r(t+1)
r(t)