开源TRFL:强化学习构建模块库

时间:2019-03-10 14:05:52 阅读:40次

  今天,我们正在开发一个新的有用构建模块库,用于在TensorFlow中编写强化学习(RL)代理。命名为TRFL(发音为'truffle'),它代表了我们内部用于大量最成功代理的关键算法组件的集合,如DQN,DDPG和重要性加权演员学习者架构。

  典型的深度强化学习代理由大量交互组件组成:至少,这些组件包括环境和代表值或策略的一些深层网络,但它们通常还包括诸如学习环境模型之类的组件,伪奖励功能或重播系统。

  这些部分倾向于以微妙的方式相互作用(通常没有在论文中详细记录,正如Henderson及其同事所强调的那样),因此很难在如此大的计算图中识别错误。 OpenAI最近的博客文章通过分析强化学习代理的一些最流行的开源实现突出了这个问题,并发现10个中有6个“有社区成员发现并经作者确认的微妙错误”。

  解决这个问题的一种方法是帮助研究界试图从论文中重现结果,这是通过开源的完整代理实现。例如,这是我们最近使用v-trace代理的可扩展分布式实现所做的。这些大型代理代码库对于复制研究非常有用,但也很难修改和扩展。一种不同且互补的方法是提供可靠的,经过良好测试的通用构建块实现,可以在各种不同的RL代理中使用。此外,将这些核心组件抽象到一个库中,并使用一致的API,可以更轻松地组合来自各种不同出版物的创意。

   TRFL库包括实现经典RL算法以及更多尖端技术的功能。此处提供的损失函数和其他操作在纯TensorFlow中实现。它们不是完整的算法,但是在构建功能完备的RL代理时需要实现特定于RL的数学运算。

  对于基于价值的强化学习,我们提供TensorFlow操作用于在离散动作空间中学习,例如TD学习,Sarsa,Q学习及其变体,以及用于实现连续控制算法的操作,例如DPG。我们还包括用于学习分配价值功能的操作。这些操作支持批次,并通过将其提供给TensorFlow Optimiser来返回可以最小化的损失。一些损失在多批转换(例如Sarsa,Q learning,......)上运行,而其他一些损失在多批轨迹上运行(例如Q lambda,Retrace,......)。对于基于策略的方法,我们有实用程序可以轻松实现A2C等在线方法,以及支持非政策纠正技术,如v-trace。还支持连续动作空间中的策略梯度的计算。最后,TRFL还提供了UNREAL使用的辅助伪奖励函数的实现,我们发现它可以提高各个领域的数据效率。

  这不是一次性发布。由于此库在DeepMind中广泛使用,因此我们将继续维护它,并随着时间的推移添加新功能。我们也渴望得到更广泛的RL社区对图书馆的贡献。

  该库由DeepMind的研究工程团队创建。

开源TRFL:强化学习构建模块库所属专题:开源专题 模块专题 《开源TRFL:强化学习构建模块库》链接:http://www.zhouchuanxiong.net/1072