【发布时间】:2015-04-26 14:54:28
【问题描述】:
我正在学习 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') 是在新状态s' 中来自动作a' 的预期奖励,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 比另一种呼吸优先或深度优先搜索算法更好?
【问题讨论】:
-
Sarsa(lambda) 存在并且超越一步前瞻。