我正在学习 SARSA 算法的实现并且有一个问题。我了解一般的“学习”步骤采取以下形式:
机器人 (r) 处于状态 s。有四种可用的操作:
North (n), East (e), West (w) and South (s)
这样的动作列表,
a = {n,w,e,s}
机器人随机选择一个动作,并更新如下:
Q(a,s) = Q(a,s) + L[r + DQ(a',s1) - Q(a,s)]
其中L
是学习率,r
是与 相关的奖励(a,s)
,是新状态下Q(s',a')
动作的预期奖励,是折扣因子。a'
s'
D
首先,我不理解这个术语的作用 - Q(a,s)
,为什么我们要重新减去当前的 Q 值?
其次,在选择动作时a
,a'
为什么这些必须是随机的?我知道在某些实现或 SARSA 中,所有可能Q(s', a')
的因素都被考虑在内,并选择了最高值。(我相信这是 Epsilon-Greedy?)为什么不为此也选择Q(a,s)
要更新的值?或者为什么不更新所有Q(a,s)
的当前s
?
最后,为什么 SARSA 仅限于一步前瞻?为什么,说,不也研究一个假设Q(s'',a'')
?
我想总的来说,我的问题归结为是什么让 SARSA 比另一种呼吸优先或深度优先搜索算法更好?