今天,DeepMind 在 TensorFlow 上为写作强化学习智能体开源了一个实用新构件库——TRFL,包含一系列关键算法组件。DeepMind 内部已经在大量最成功的智能体中使用了这些组件,如 DQN、DDPG 和 IMPALA。 典型的深度强化学习智能体由大量的交互组件构成,至少包含环境和一些表示价值或策略的深度网络,但是也通常包含一些组件,如环境的学习模型、伪奖励函数或重放系统(replay system)。 这些组件通常以微妙的方式进行交互,因此很难在如此大的计算图中找出 bug。OpenAI 博客《OpenAI Baselines: DQN》强调了这个问题,这篇博客分析了强化学习智能体一些最流行的开源实现,发现 10 个实现中的 6 个「有被社区成员发现并得到作者确认的微小 bug」。 开源完整智能体实现有助于解决这一问题并帮助研究社区复现论文结果。例如,DeepMind 在博客《Importance Weighted Actor-Learner Architectures: Scalable Distributed DeepRL in DMLab-30》中介绍了最近在 v-trace 智能体的可扩展分布式实现方面所做的工作。这些大型智能体代码库对于复现论文非常有用,但是很难修改或扩展。一种不同且互补的方法是提供可用于各种不同强化学习智能体的可靠、经过良好测试的常见构件实现。此外,我们用一致的 API 将这些核心组件抽象化到一个库中,使得糅合不同研究中的想法变得更加简单。 TRFL 库包含实现经典 RL 算法和前沿技术的函数。该库提供的损失函数及其他运算都是在 TensorFlow 中实现的。它们不是完整的算法,而是构建功能完备 RL 智能体所需 RL 数学运算的实现。 对于基于价值的强化学习,该库提供用于离散动作空间学习的 TensorFlow op(如 TD-learning、Sarsa、Q-learning 及其变体),以及实现连续控制算法的 op(如 DPG)。该库还提供用于学习分布式价值函数的 op。这些 op 支持批处理,并返回一个损失,通过将它馈入 TensorFlow Optimiser 可实现损失最小化。一些损失会在过渡批次(batches of transition)中(如 Sarsa、Q-learning 等)发挥作用,而其他损失在轨迹批次(batches of trajectories)中(例如 Q-lambda、Retrace 等)发挥作用。对于基于策略的方法,TRFL 可以轻松实现在线方法(如 A2C)并支持离策略纠正技术(如 v-trace)。此外,它还支持连续动作空间中策略梯度计算。最后,TRFL 还提供了一个 UNREAL 使用的辅助伪奖励函数的实现,它可以提高多个领域中的数据效率。 TRFL 库的创建者是 DeepMind 的研究工程团队。此次开源不是一次完成的。由于这个库在 DeepMind 内部应用广泛,DeepMind 将继续对其进行维护,并逐渐添加新功能。
|