据我了解,体验重放是通过存储 进行抽样训练。我明白我们为什么要存储,和. 但是,我不明白存储动作的必要性.
我记得,奖励和下一个状态都用于计算目标值。然后,我们可以将这些目标值与我们使用状态进行前向传递时得到的输出进行比较在我看来,存储的动作此过程不需要工作;还是我错过了什么?为什么我们要存储动作如果它不用于培训过程本身?
如果这个问题之前已经回答过,请原谅我。我看了看,但除了关于什么是经验回放以及我们为什么这样做的一般解释之外,找不到任何其他东西。
据我了解,体验重放是通过存储 进行抽样训练。我明白我们为什么要存储,和. 但是,我不明白存储动作的必要性.
我记得,奖励和下一个状态都用于计算目标值。然后,我们可以将这些目标值与我们使用状态进行前向传递时得到的输出进行比较在我看来,存储的动作此过程不需要工作;还是我错过了什么?为什么我们要存储动作如果它不用于培训过程本身?
如果这个问题之前已经回答过,请原谅我。我看了看,但除了关于什么是经验回放以及我们为什么这样做的一般解释之外,找不到任何其他东西。
我们需要存储动作因为它告诉我们在我们正在备份的状态下采取的行动。
假设我们处于状态我们采取行动,那么我们将获得奖励和下一个状态. RL 的目标,尤其是 DQN(我提到 DQN,因为它是我想到重放缓冲区时想到的第一个算法,但它当然不是唯一使用它的算法),是我们试图学习最优状态-动作价值函数. 因此,我们希望我们的价值函数能够预测,即给定和我们希望能够预测. 如您所见,我们需要知道我们在 state 中采取了哪些操作这样我们就可以训练我们的价值函数来近似,并且价值函数显然取决于,因此我们还需要存储在我们的经验元组中。
经验回放的目标最早由Lin (1992)提出,最近由Mnih 等人成功应用于 DQN 算法。(2013)旨在打破更新的时间相关性,并防止忘记以后可能有用的经验。
为了达到这些目标,回放缓冲区应该存储学习步骤中所需的元组。
大多数使用经验回放的作品,包括前面提到的那些,都学习(近似)Q函数,即. 显然,这个函数依赖于采样的动作.
如果在训练过程中根本不使用,那么它就不需要存储在回放缓冲区中。然而,在这种情况下,激发重播缓冲区的问题可能一开始就不存在。