首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么重放记忆存储旧状态和动作而不是Q值(深度Q学习)

为什么重放记忆存储旧状态和动作而不是Q值(深度Q学习)
EN

Data Science用户
提问于 2020-01-02 18:22:09
回答 1查看 247关注 0票数 3

以下是谷歌的DeepMind Atari 中使用的算法

重放内存D存储转换(old_state,动作执行,奖励,new_state)

在这种状态下,需要old_state和执行的动作a来计算这个动作的Q值。但是既然我们已经计算了动作a的Q值,为了选择a作为最佳动作,我们为什么不直接存储Q值呢?

EN

回答 1

Data Science用户

回答已采纳

发布于 2020-01-03 08:58:40

但是既然我们已经计算了动作a的Q值,为了选择a作为最佳动作,我们为什么不直接存储Q值呢?

这是因为计算相关的TD目标(例如,R + \gamma \text{max}_{a'}Q(S', a') )需要当前目标策略对操作值Q的估计。在执行该步骤时的操作值可能因以下两个原因而过时:

  1. 由于存储了经验,由于其他更新,估计数发生了变化。
  2. 由于存储了经验,目标策略由于其他更新而发生了更改。

在创建体验时存储Q值在某种程度上仍然有效,前提是您不会将体验保存得太久,使其值完全不同。但是,它通常效率要低得多,因为更新会偏向较旧的、不太准确的值。

即使使用Q重新计算,经验重放表也有类似的但破坏性较小的影响。这是因为经验的分布可能与当前的政策不匹配--大多数函数逼近器(例如DQN中使用的神经网络)都对此很敏感。然而,这里也有其他因素在发挥作用,就故意不同的经验分配进行培训也是有益的--例如,以更大的更新步骤对经验进行优先排序可以加快学习速度,而保持较老的经验可以减少灾难性遗忘的情况。

请注意,如果您使用的是非策略蒙特卡罗方法,则可以将蒙特卡罗返回存储在经验回放表中,因为它不使用当前值估计来引导。然而,如果目标政策在学习过程中发生了重大变化,则旧的、不太相关的轨迹的早期部分将不再对更新作出贡献。

票数 2
EN
页面原文内容由Data Science提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://datascience.stackexchange.com/questions/65751

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档