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

数据挖掘 强化学习
2022-02-11 12:09:42

这是 Google 的 DeepMind Atari论文中使用的算法

重放内存 D 存储转换(old_state,执行的操作,reward,new_state)

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

在此处输入图像描述

1个回答

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

这是因为计算相关的 TD 目标,例如R+γmaxaQ(S,a)需要当前目标策略估计的动作值Q. 执行步骤时的操作值可能由于两个原因而过时:

  1. 由于其他更新,估计已更改,因为已存储经验

  2. 由于其他更新,目标策略已更改,因为已存储经验

存储Q创造体验时的价值应该在一定程度上仍然有效,前提是您不会将体验保留太久以致价值完全不同。但是,它的效率通常会低很多,因为更新将偏向于较旧的不太准确的值。

经验重播表也有类似但破坏性较小的效果,即使Q重新计算。这是因为经验的分布可能与当前策略生成的不匹配——这是大多数函数逼近器(例如 DQN 中使用的神经网络)都敏感的东西。然而,这里也有其他因素在起作用,对故意不同的经验分布进行训练可能是有益的——例如,优先考虑具有较大更新步骤的经验可以加快学习速度,保持旧经验可用可以减少灾难性遗忘的情况。

请注意,如果您使用的是非策略蒙特卡洛方法,您可以将蒙特卡洛收益存储在体验重放表中,因为它不会通过使用当前值估计来引导。然而,一旦目标策略在学习过程中发生显着变化,旧的不太相关轨迹的早期部分将停止对更新的贡献。