尽管我知道SARSA是策略性的,而Q学习是策略性的,但当查看它们的公式时,(对我而言)很难看出这两种算法之间的区别。
根据《强化学习:入门》一书(萨顿和巴托撰写)。在SARSA算法中,在给定策略的情况下,可以按以下方式更新对应的动作值函数Q(在时间步t处于状态s和动作a),即Q(s t,a t)。
Q(s t,a t)= Q(s t,a t)+α*(r t +γ* Q(s t + 1,a t + 1)-Q(s t,a t))
另一方面,Q学习算法的更新步骤如下
Q(s t,a t)= Q(s t,a t)+α*(r t +γ* max a Q(s t + 1,a)-Q(s t,a t))
也可以写成
Q(s t,a t)=(1-α)* Q(s t,a t)+α*(r t +γ* max a Q(s t + 1,a))
其中γ(伽玛)是折现因子,而r t是在时间步长t从环境中获得的报酬。
这两种算法之间的区别是否是SARSA仅查找下一个策略值而Q学习查找下一个最大策略值的事实?
TLDR(和我自己的答案)
自从我第一次提出这个问题以来,感谢所有回答这个问题的人。我制作了一个Q-Learning的github存储库,从经验上了解了区别。这一切都取决于您如何选择下一个最佳操作,从算法的角度来看,这取决于您选择实施的方式是平均,最大或最佳操作。
另一个主要区别是,当这种选择正在发生(例如,在线VS离线),以及如何/为什么会影响学习。如果您在2019年阅读此书,并且更喜欢动手,那么玩RL玩具问题可能是理解差异的最佳方法。
最后一个重要说明是,关于下一个状态的最佳/最大动作和奖励,Suton&Barto以及Wikipedia经常使用混合,混淆或错误的公式表示形式:
r(t + 1)
实际上是
(
希望这可以帮助任何陷入困境的人。