SARSA-Lambda 实施中的情节之间的资格跟踪重新初始化

Posted

技术标签:

【中文标题】SARSA-Lambda 实施中的情节之间的资格跟踪重新初始化【英文标题】:Eligibility trace reinitialization between episodes in SARSA-Lambda implementation 【发布时间】:2015-07-06 09:49:45 【问题描述】:

我正在查看这个 SARSA-Lambda 实现(即:带有资格跟踪的 SARSA),但有一个细节我仍然不明白。

(图片来自http://webdocs.cs.ualberta.ca/~sutton/book/ebook/node77.html

所以我知道所有 Q(s,a) 都会更新,而不仅仅是代理为给定时间步选择的一个。我也知道 E 矩阵不会在每集开始时重置。

让我们假设图 7.12 的面板 3 是第 1 集的结束状态。

在第 2 集开始时,代理向北移动而不是向东移动,我们假设这给了它 -500 的奖励。这不会影响上一集中访问过的所有状态吗?

如果这个想法是为了奖励在当前情节中访问过的那些状态,那么为什么包含所有 e(s,a) 值的矩阵不在每个情节开始时重置?在这个实现中,上一集中访问过的状态似乎会因为代理在新一集中所做的操作而受到“惩罚”或“奖励”。

【问题讨论】:

这在该书的最新版本中得到了纠正。 【参考方案1】:

我 100% 同意你的看法。未能在每集开始时重置电子矩阵正是您所描述的问题。 据我所知,这是伪代码中的错误。您引用的参考文献非常受欢迎,因此该错误已传播到许多其他参考文献。但是,this well-cited paper 非常明确地指出,应该在剧集之间重新初始化 e-matrix:

资格跟踪被初始化为零,并且在情节任务中 在每一集之后,它们都会重新初始化为零。

作为进一步的证据,this paper的方法:

轨迹 e 在每集开始时设置为 0。

和this paper的脚注#3:

...资格跟踪在每次试验开始时重置为零。

建议这是常见的做法,因为两者都指情节之间的重新初始化。我希望还有更多这样的例子。

在实践中,该算法的许多用途不涉及多个情节,或者相对于其衰减率而言具有如此长的情节,这最终不会成为问题。我希望这就是为什么它还没有在互联网上的其他地方更明确地澄清的原因。

【讨论】:

以上是关于SARSA-Lambda 实施中的情节之间的资格跟踪重新初始化的主要内容,如果未能解决你的问题,请参考以下文章

资格跟踪:在线与离线 λ-return 算法

白话强化学习之Sarsa与Sarsa-lambda

58个资格考试研究

具有 ASP 成员资格的 Sql Server 中的安全性和 SQL 注入

如何在情节提要中的 2 个视图控制器之间传递数据?

如何在情节提要 Xcode 11 中的视图之间将边距设置为零