我想澄清一下,我已经了解 SARSA 如何在细微差别中发挥作用。考虑取自 ON-LINE Q-LEARNING USING CONNECTIONIST SYSTEMS 的原始定义。GA Rummery 和 M. Niranjan。CUED/F-INFENG/TR 166. 1994 年 9 月(根据维基百科的一篇文章,这是第一个提到 SARSA wss 的出版物)。
作者提出了一个更新规则,“......与普通 Q-learning 的不同之处在于使用与所选动作相关的 Qt+1,而不是 Q-learning 中使用的贪婪 max(Qt+1 | a)。” (引自第 6 页。)
请注意,这对于算法的策略性质至关重要。此定义的脚注中提到的术语 SARSA。
以及后来在许多阅读中使用的 SARSA 更新伪代码:
开始
initialize Q[S,A] arbitrarily
observe current state s
select action using a policy based on Q
永远重复:
carry out an action a
observe reward r and state s'
select action a' using a poicy based on Q
Q[s,a] <- Q[s,a] + alpha * (r + gamma * Q[s', a'] - Q[s, a])
s <- s'
a <- a'
结束重复
结尾
来源:http ://www.cse.unsw.edu.au/~cs9417ml/RL1/algorithms.html
我想了解我是否必须使用完全相同的 Q 函数(和策略)来获得 A 和 A'。如果我在每次迭代中更新 Q 函数,那么后续迭代中的下一个动作将使用最新更新的 Q 导出,而前一个动作是使用前一个 Q 获得的。\另一方面,我真的可以让 A和 A' 具有完全相同的 Q,并且仅在更新 Q 之后。所以我将始终考虑使用相同的函数派生的 A 和 A'。
哪个更正统/正确?