今天,DeepMind开源了一个新的高效的构建模块库,用于在TensorFlow中编写强化学习(RL)智能体。这个库名为TRFL(发音为’truffle’),代表了DeepMind内部用于大量非常成功的agent的关键算法组件集合,如DQN,DDPG和IMPALA(Importance Weighted Actor Learner Architecture)。
一个典型的深度强化学习agent由大量的交互组件组成:至少包括环境(environment)和一些表示价值(value)或策略(policy)的深层网络,但它们通常也包括组件,例如环境的学习模型,伪奖励函数或replay系统。
这些组件通常以微妙的方式相互作用(通常没有在论文中详细记录),因此很难在如此庞大的计算图中识别错误。OpenAI最近发表的一篇博客文章通过分析强化学习智能体的一些最流行的开源实现,凸显了这个问题,他们发现10个实现中有6个“具有社区成员发现并被作者确认的小bug”。
解决这个问题的一种方法是通过开源的完整agent实现,帮助研究社区复现论文的结果。例如,我们最近发布了一种高度可扩展的分布式训练架构IMPALA,使用V-trace agent探索在单个智能体上完成多种任务的挑战。
这些大型agent代码库对于再现研究非常有用,但也很难修改和扩展。一种不同的、互补的方法是提供可靠的、经过良好测试的通用构建块实现,可以在各种不同的RL智能体中使用。此外,通过将这些核心组件抽象到单个库中,使用一致的API,可以更轻松地组合来自许多不同论文的创新想法。
TRFL库包含实现经典RL算法以及更前沿技术的许多函数。这里提供的损失函数和其他操作是在纯TensorFlow中实现的。它们不是完整的算法,而是在构建功能齐全的RL智能体时所需的特定于RL的数学运算实现。
对于value-based的强化学习,我们提供TensorFlow ops 用于在离散动作空间中学习,例如TD-learning,Sarsa, Q-learning及其变体,以及用于实现连续控制算法的操作,例如DPG。
TRFL库还包含用于学习分配价值函数的ops。这些ops支持批处理,并通过将其输入到TensorFlow Optimiser来返回可以最小化的损失。一些损失函数在批转换运行(例如Sarsa,Q-learning......),其他一些损失在多批轨迹上运行(例如Q lambda,Retrace,......)。
对于基于策略的方法,TRFL提供实用程序,可以轻松实现A2C等在线方法,以及支持off-policy纠正技术,如v-trace。TRFL还支持连续动作空间中的策略梯度计算。
最后,TRFL还提供了UNREAL使用的辅助伪奖励函数(pseudo-reward functions)的实现,我们发现它可以提高各个领域的数据效率。
这不是一次性的发布。由于TRFL库在DeepMind内部广泛使用,因此我们将继续维护它,并随着时间的推移添加新功能。我们也渴望得到更广泛的RL社区对这个库的贡献。
TRFL库由DeepMind研究工程团队创建。
开源获取地址: https://github.com/deepmind/trfl
开源代码
安装
可以使用以下命令从github直接从pip安装TRFL:pip install git+git://github.com/deepmind/trfl.git
TRFL同时适用于TensorFlow的CPU和GPU版本,但它没有将Tensorflow列为一个requirement,因此你需要单独安装Tensorflow和Tensorflow-probability。
用例
loss是代表损失的张量。对于Q-learning,它是预测的Q-values和TD targets之间的平方差的一半。
额外信息位于q_learning命名元组中,包括q_learning.td_error和q_learning.target。
大多数情况下,你可能只对loss感兴趣:
该模块中的所有损失函数使用上述约定返回损失张量和额外信息。
不同的函数可能有不同的额外字段。有关更多信息,请查看每个函数的文档。
原文: https://deepmind.com/blog/trfl/
|