使用体验回放时,我们是为 mini-batch 的所有样本更新参数,还是为 mini-batch 中的每个样本单独更新参数?

人工智能 强化学习 深度学习 dqn 经验回放 小批量梯度下降
2021-11-07 16:20:00

我一直在阅读 Google 的 DeepMind Atari论文,并试图了解如何实现体验回放。

我们是否更新参数θ功能的Q对 minibatch 的所有样本执行一次,还是对 minibatch 的每个样本分别执行一次?

根据本文的以下代码,它对损失项执行梯度下降j-th 样本。但是,我看到其他论文(参考这篇论文)说我们首先计算 minibatch 的所有样本的损失项总和,然后对这个损失总和执行梯度下降。

在此处输入图像描述

1个回答

梯度下降应该使用小批量中损失的总和(或平均值)来执行。

这实际上也是我在您的问题中阅读伪代码的方式,尽管我知道它可能会令人困惑。请注意,在伪代码中,j没有详细说明。例如,他们没有j范围从0到小批量的大小。

当他们说:

随机小批量转换样本(ϕj,aj,rj,ϕj+1)D

它们意味着小批量中的多个转换(小批量大小为1是一个特例),他们使用索引j统称为随机抽样小批量中的整个索引集。这不是一个特定的数字/索引,j是一组索引。当更多的代码行对索引做一些事情时j, 他们实际上对所有索引做了一些事情 j.