Q-learning 和 SARSA 之间的区别在于 Q-learning 比较当前状态和可能的最佳下一个状态,而 SARSA 比较当前状态和实际下一个状态。
如果使用贪心选择策略,即 100% 的时间选择具有最高动作值的动作,那么 SARSA 和 Q-learning 是否相同?
Q-learning 和 SARSA 之间的区别在于 Q-learning 比较当前状态和可能的最佳下一个状态,而 SARSA 比较当前状态和实际下一个状态。
如果使用贪心选择策略,即 100% 的时间选择具有最高动作值的动作,那么 SARSA 和 Q-learning 是否相同?
好吧,实际上不是。SARSA 和 Q-learning 之间的一个关键区别在于 SARSA 是一种 on-policy 算法(它遵循正在学习的策略),而 Q-learning 是一种 off-policy 算法(它可以遵循任何策略(满足一些收敛要求) .
请注意,在以下两种算法的伪代码中,SARSA 选择 a' 和 s' 然后更新 Q 函数;而Q-learning首先更新Q-function,并且在下一次迭代中选择下一个要执行的动作,从更新后的Q-function导出,不一定等于选择更新Q的a'。
在任何情况下,这两种算法都需要探索(即采取不同于贪婪动作的动作)才能收敛。
SARSA 和 Q-learning 的伪代码摘自 Sutton 和 Barto 的书:Reinforcement Learning: An Introduction(HTML 版)
如果我们只使用贪心策略,那么将没有探索,因此学习将不起作用。在 epsilon 变为 0 的极限情况下(例如 1/t),那么 SARSA 和 Q-Learning 将收敛到最优策略 q*。然而,当 epsilon 固定时,SARSA 将收敛到最优epsilon-greedy策略,而 Q-Learning 将收敛到最优策略 q*。
我在这里写一个小笔记来解释两者之间的区别,希望对您有所帮助:
https://tcnguyen.github.io/reinforcement_learning/sarsa_vs_q_learning.html