Sarsa的决策部分与Q-Learning一样,使用Q表形式,挑选值较大的动作施加在环境中来换取奖惩,但sarsa的更新方式不同。其更新准则如下:
同样, 在 时挑选一个带来最大潜在奖励的动作 a2继续写作业状态 s2。
此时, 如果是 Q learning, 首先会观看一下在 s2 上选取哪一个动作会带来最大的奖励, 但是在真正要做决定时, 却不一定会选取到那个带来最大奖励的动作, Q-learning 在这一步只是估计了一下接下来的动作值. 而 Sarsa 在 s2 这一步估算的动作也是接下来要做的动作. 所以 Q(s1, a2) 现实的计算值, 也会稍稍改动, 去掉maxQ, 取而代之的是在 s2 上选取的 a2 的 Q 值. 最后像 Q learning 一样, 求出现实和估计的差距 并更新 Q 表里的 Q(s1, a2).
sarsa与Q-learning的算法对比如下:
Q-learning永远都会选择通往成功最近的道路而不顾危险;sarsa则会离危险远远的而把成功放在第二位。
(图片来源于莫烦python)