【发布时间】:2011-10-14 11:57:11
【问题描述】:
虽然我知道SARSA 是on-policy 而Q-learning 是off-policy,但在查看他们的公式时(对我来说)很难看出这两种算法之间有什么区别。
根据书Reinforcement Learning: An Introduction(萨顿和巴托)。在SARSA算法中,给定一个策略,对应的动作值函数Q(在状态s和动作a,时间步长t),即Q(st, at sub>),可以更新如下
Q(st, at) = Q(st, at) + α *(rt + γ*Q(st+1, at+1) - Q(st sub>, 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 并凭经验理解了其中的区别。这一切都取决于您如何选择下一个最佳操作,从算法的角度来看,这可以是 mean、max 或 最佳 操作,具体取决于您选择实施的方式。
另一个主要区别是何时发生这种选择(例如,在线 vs 离线)以及如何/为什么会影响学习。如果您在 2019 年阅读这篇文章并且更喜欢动手实践,那么玩 RL 玩具问题可能是了解这些差异的最佳方式。
最后一个重要注意事项是,Suton 和 Barto 以及 Wikipedia 在关于下一个状态最佳/最大动作和奖励:
r(t+1)
事实上
r(t)
希望这可以帮助任何人陷入困境。
【问题讨论】:
标签: artificial-intelligence reinforcement-learning q-learning sarsa