虽然我知道SARSA是在政策上,而Q-learning是不合时宜的,但在查看他们的公式时,很难(对我而言)看到这两种算法之间存在任何差异.
根据" 强化学习:引言"(Sutton和Barto)一书.在SARSA算法中,给定策略,相应的动作值函数Q(在状态s和动作a,在时间步t),即Q(s t,a t),可以更新如下
Q(s t,a t)= Q(s t,a t)+α*(r t +γ*Q(s t + 1,a t + 1) - Q(s t,a t))
另一方面,Q学习算法的更新步骤如下
Q(s t,a t)= Q(s t,a t)+α*(r t +γ*max a Q(s t + 1,a) - Q(s t,a t))
也可以写成
Q(s t,a t)=(1 - α)*Q(s t,a t)+α*(r t +γ*max a …
artificial-intelligence reinforcement-learning q-learning sarsa
我正在研究这个SARSA-Lambda实现(即:具有资格跟踪的SARSA),还有一个我仍然没有得到的细节.

(图片来自http://webdocs.cs.ualberta.ca/~sutton/book/ebook/node77.html)
所以我理解所有Q(s,a)都是更新的,而不仅仅是代理为给定时间步长选择的Q(s,a).我也理解E矩阵在每集开头都没有重置.
让我们假设一分钟图7.12的面板3是第1集的结束状态.
在第2集开始时,代理人向北而不是向东移动,让我们假设这给它奖励-500.这不会影响前一集中访问过的所有州吗?
如果想要奖励那些在当前剧集中被访问过的状态,那么为什么在每集开头都没有重置包含所有e(s,a)值的矩阵?看起来在这个实现中,在上一集中访问过的状态对于代理在这一新剧集中所做的动作是"惩罚"或"奖励".
Q学习和SARSA之间的区别在于Q学习比较当前状态和最佳可能的下一状态,而SARSA将当前状态与实际下一状态进行比较.
如果使用贪婪的选择策略,即100%的时间选择具有最高动作值的动作,那么SARSA和Q学习是否相同?
在尝试实现Episodic Semi-gradient Sarsa with神经网络作为逼近器时,我想知道如何根据当前学习的网络权重选择最佳动作。如果动作空间是离散的,我可以计算当前状态下不同动作的估计值,并选择给出最大值的那个。但这似乎并不是解决问题的最好办法。此外,如果动作空间是连续的(例如自动驾驶汽车的加速),它就不起作用。
所以,基本上我想知道如何解决Choose A' as a function of q(S', , w)Sutton 伪代码中的第 10 行:

这些问题通常是如何解决的?有人可以推荐一个使用该算法的好例子吗Keras?
编辑:使用网络作为逼近器时是否需要修改伪代码?那么,我是否可以简单地最小化MSE网络的预测和奖励R?
我想我把事情搞砸了。
我一直认为:
- 1-step TD on-policy = Sarsa
- 1-step TD off-policy = Q-learning
因此我得出结论: - n-step TD on-policy = n-step Sarsa
- n-step TD off-policy = n-step Q-learning
然而,在 Sutton 的书中,他从未介绍过 n-step Q-Learning,但他确实介绍了 n-step off-policy Sarsa。现在我感到很困惑。
有人可以帮我命名吗?
链接到 Sutton 的书(第 149 页的 Off-Policy n-step Sarsa)
我正在学习SARSA算法的实现,并有一个问题.我理解一般的"学习"步骤采取以下形式:
机器人(r)处于状态s.有四种可用的动作:
North (n), East (e), West (w) and South (s)
Run Code Online (Sandbox Code Playgroud)
这样的行动清单,
a = {n,w,e,s}
Run Code Online (Sandbox Code Playgroud)
机器人随机选择一个动作,并按如下方式更新:
Q(a,s) = Q(a,s) + L[r + DQ(a',s1) - Q(a,s)]
Run Code Online (Sandbox Code Playgroud)
哪里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比另一种先呼吸或深度优先搜索算法更好?