DQN 实现重放内存。根据我的研究,我相信一旦内存缓冲区中有足够的经验,重放内存就会开始用于训练。这意味着神经网络在游戏进行时得到训练。
我的问题是,如果我要玩 10000 个 epoch 的游戏,存储所有的经验,然后从这些经验中进行训练,这与训练和运行 10000 个 epoch 的效果相同吗?这样做是否令人不悦?有什么优势吗?
DQN 实现重放内存。根据我的研究,我相信一旦内存缓冲区中有足够的经验,重放内存就会开始用于训练。这意味着神经网络在游戏进行时得到训练。
我的问题是,如果我要玩 10000 个 epoch 的游戏,存储所有的经验,然后从这些经验中进行训练,这与训练和运行 10000 个 epoch 的效果相同吗?这样做是否令人不悦?有什么优势吗?
我的问题是,如果我要玩 10000 个 epoch 的游戏,存储所有的经验,然后从这些经验中进行训练,这与训练和运行 10000 个 epoch 的效果相同吗?
不,它不会。通常,对于简单环境以外的任何环境,这都会产生更糟糕的结果。问题在于,在这 10,000 个 epoch 中,您将一直使用初始行为策略来收集经验,这不会接近最优。离策略学习对此进行调整,并尝试学习当前最佳猜测最优策略的价值函数。然而,这并不完美,你的行为策略越接近目标策略,它就会学得越好。在许多情况下,初始随机策略与目标策略差异太大,学习效果不佳。
离策略学习不完善的主要原因有两个:
方差。行为和目标策略之间的差异越大,采样值的方差就越大,并且需要更多的样本才能获得相同的准确度。
抽样偏差。观察到的状态和动作的分布将影响函数逼近器,例如神经网络,它会针对输入/输出对上的假设总体减少损失函数。除非以某种方式进行调整(并且 DQN 中的基本 Q 学习不会对此进行调整),否则您训练的人群将来自行为策略。
有什么优势吗?
将数据收集和学习组件分开可能会更快,并导致更简洁的设计。如果您有一个分布式架构,您可以将一些机器用于生成体验,而将其他机器用于分析它。然而,这仍然受益于基于迄今为止的学习对用于收集经验的行为策略进行例行更新。