并发训练DDQN
Training DDQN concurrently
我和我的朋友正在训练 DDQN 来学习 2D 足球。我训练了大约 40.000 集模型,但花了 6 天时间。有没有办法同时训练这个模型?
例如,我有 4 个核心和 4 个线程,每个线程同时训练模型 10.000 次。因此,训练 40.000 集的时间从 6 天减少到 1.5 天,就像 for 循环的并行性。
编辑:如果我们分别在 4 个线程中训练一个模型 10.000 集,是否会形成一个由这些训练模型的平均值组成的新模型产生训练 40.000 集的效果,或者它是一个训练了 10.000 集的模型但更好的?
我认为本文回答了您的问题:
https://arxiv.org/pdf/1507.04296.pdf
这篇论文运行一个中央学习器,带有一个中央重放记忆。此外,还有 n
个工人,它们是中央学习器的复制品,每个工人都有自己的重放记忆。每个 worker 填充自己的重放内存,并且在每个训练步骤中都可以使用自己的重放内存(如果足够大)或使用中央重放内存。在每个动作选择之前,网络的权重与服务器同步,并且在每一步训练之后,梯度被发送回服务器。
还要考虑:
https://arxiv.org/pdf/1602.01783.pdf
其中提出了A3C,后来又提出了A2C,是A3C的简化版。关键是,异步 Q-learning 算法因为 A3C 的性能没有得到太多关注。基本上,使用分布式 DQN 算法效率不高,因为重放内存需要将大量数据从不同的工作人员来回移动到服务器。事实上,A3C 被提出来通过重放内存来解决这个问题,它在每个 worker 中运行模型和环境的一个实例,并且只异步更新权重。
我希望这已经回答了你的问题。
阿夫欣
我和我的朋友正在训练 DDQN 来学习 2D 足球。我训练了大约 40.000 集模型,但花了 6 天时间。有没有办法同时训练这个模型?
例如,我有 4 个核心和 4 个线程,每个线程同时训练模型 10.000 次。因此,训练 40.000 集的时间从 6 天减少到 1.5 天,就像 for 循环的并行性。
编辑:如果我们分别在 4 个线程中训练一个模型 10.000 集,是否会形成一个由这些训练模型的平均值组成的新模型产生训练 40.000 集的效果,或者它是一个训练了 10.000 集的模型但更好的?
我认为本文回答了您的问题: https://arxiv.org/pdf/1507.04296.pdf
这篇论文运行一个中央学习器,带有一个中央重放记忆。此外,还有 n
个工人,它们是中央学习器的复制品,每个工人都有自己的重放记忆。每个 worker 填充自己的重放内存,并且在每个训练步骤中都可以使用自己的重放内存(如果足够大)或使用中央重放内存。在每个动作选择之前,网络的权重与服务器同步,并且在每一步训练之后,梯度被发送回服务器。
还要考虑: https://arxiv.org/pdf/1602.01783.pdf
其中提出了A3C,后来又提出了A2C,是A3C的简化版。关键是,异步 Q-learning 算法因为 A3C 的性能没有得到太多关注。基本上,使用分布式 DQN 算法效率不高,因为重放内存需要将大量数据从不同的工作人员来回移动到服务器。事实上,A3C 被提出来通过重放内存来解决这个问题,它在每个 worker 中运行模型和环境的一个实例,并且只异步更新权重。
我希望这已经回答了你的问题。
阿夫欣