我正在通过以下链接学习 DDPG 算法:Open AI Spinning Up on DDPG 文档,它是在哪里写的
为了使算法具有稳定的行为,重放缓冲区应该足够大以包含广泛的体验,但保留所有内容可能并不总是好的。
这是什么意思?是不是和算法中batch size参数的调优有关?
我正在通过以下链接学习 DDPG 算法:Open AI Spinning Up on DDPG 文档,它是在哪里写的
为了使算法具有稳定的行为,重放缓冲区应该足够大以包含广泛的体验,但保留所有内容可能并不总是好的。
这是什么意思?是不是和算法中batch size参数的调优有关?
为了使算法具有稳定的行为,重放缓冲区应该足够大以包含广泛的体验,但保留所有内容可能并不总是好的。
经验回放越大,您对相关元素进行采样的可能性就越小,因此 NN 的训练就越稳定。但是,大型经验回放也需要大量内存,并且可能会减慢训练速度。因此,在(NN 的)训练稳定性和内存需求之间存在权衡。
链接文章的作者状态(就在上面的句子之后)
如果你只使用最近的数据,你会过度拟合,事情就会崩溃;如果你使用太多的经验,你可能会减慢你的学习速度。这可能需要一些调整才能正确。
你需要阅读 Deepmind 2020 年的这篇论文: “Revisiting Fundamentals of Experience Replay”
另外,要添加@nbro的答案
假设您将体验重放实现为存储最新内存而不是最旧内存的缓冲区。然后,如果您的缓冲区包含 100k 个条目,则任何内存都将保留在那里恰好 100k 次迭代。
这样的缓冲区只是一种“查看”多达 100k 次迭代前的内容的方法。在前 100k 次迭代之后,您填充缓冲区并开始“移动”它,就像滑动窗口一样,通过插入新内存而不是最旧的内存。
缓冲区的大小(相对于您计划训练的迭代总数)取决于“您认为您的网络架构在多大程度上容易受到灾难性遗忘的影响”。
一个很小的缓冲区可能会迫使您的网络只关心它最近看到的内容。
但是一个过大的缓冲区可能需要很长时间才能以良好的轨迹“刷新”,当它们最终开始被发现时。所以这个网络就像一个大学生,他的书架上堆满了一年级的课本。
学生可能已经决定他/她希望成为一名程序员,因此重新阅读那些小学书籍几乎没有什么好处(时间本可以更有效地花在编程文献上)+需要很长时间才能替换那些相关的大学书籍。