尽管我知道 SARSA是在策略上的,而 Q 学习是非策略的,但是当查看它们的公式时(对我来说)很难看出这两种算法之间的任何区别。
根据莎顿和巴托的书 强化学习: 简介。在 SARSA 算法中,给定一个策略,相应的操作值函数 Q (在时间步骤 t 中的状态 s 和操作 a 中) ,即 Q (sT,aT) ,可以按照以下方式更新
Q (sT,aT) = Q (sT,aT) + α * (rT + γ * Q (sT + 1,aT + 1)-Q (sT,aT))
另一方面,Q 学习算法的更新步骤如下
Q (sT,aT) = Q (sT,aT) + α * (rT + γ * max一Q (sT + 1,a)-Q (sT,aT))
也可以写成
Q (sT,aT) = (1-α) * Q (sT,aT) + α * (rT + γ * max一Q (sT + 1,a))
其中 γ (γ)是折现因子 rT是在时间步骤 t 时从环境中获得的奖励。
这两种算法之间的区别是否在于 SARSA 只查找下一个策略值,而 Q 学习查找下一个 最大值策略值?
TLDR (和我自己的答案)
感谢从我第一次问这个问题以来所有回答这个问题的人。我做了一个 Github Repo的 Q-Learning 游戏,从经验上理解了它们之间的区别。这些都相当于 你选择你的下一个最佳动作如何运行,从算法的角度来看,你选择你的下一个最佳动作可以是 刻薄、 Max或 最好的动作,这取决于您选择如何实现它。
另一个主要区别是 什么时候,这种选择正在发生(例如,在线对 离线) ,以及它如何/为什么影响学习。如果你正在2019年阅读这篇文章,并且更喜欢亲自动手,那么玩 RL 玩具问题可能是理解这些差异的最好方法。
很重要的最后一个注意事项是,Suton & Barto 和 Wikipedia 通常都有 混杂,令人困惑或 错了关于 下州最佳/最大行动和奖励的公式化表示:
R (t + 1)
事实上
R (t)
希望这能帮助任何一个困在这里的人。