【发布时间】:2018-01-17 23:02:34
【问题描述】:
我想在我的本地机器(1 个 CPU,1 个与 cuda 兼容的 GPU)中实现用于强化学习的 Asynchronous Advantage Actor Critic (A3C) 模型。在该算法中,多个“学习者”网络与环境副本交互并定期更新中心模型。
我见过在同一个图中创建 n 个“工作”网络和一个“全局”网络并使用线程来运行它们的实现。在这些方法中,通过对具有“全局”范围的可训练参数应用梯度来更新全局网络。
但是,我最近阅读了一些关于分布式张量流的信息,现在我有点困惑。使用分布式 tensorflow API 实现它会更容易/更快/更好吗?在文档和谈话中,他们总是明确提到在多设备环境中使用它。我不知道在本地异步算法中使用它是否有点过头了。
我也想问一下,有没有办法将每个worker计算的梯度批量化,在n步后一起应用?
【问题讨论】:
-
Tensorforce 似乎有一个实现:github.com/reinforceio/tensorforce/blob/master/examples/…