Matteo Hessel等作者

DeepMind开源强化学习库TRFL

今天,DeepMind 开源了一个为写作强化学习智能体服务的实用新构件库——TRFL,该库包含一系列关键算法组件。DeepMind 内部已经在大量最成功的智能体(如 DQN、DDPG 和 IMPALA)中使用了这些组件。

今天,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 将继续对其进行维护,并逐渐添加新功能。

原文链接:https://deepmind.com/blog/trfl/

工程开源强化学习开源库
1
相关数据
深度强化学习技术
Deep reinforcement learning

强化学习(Reinforcement Learning)是主体(agent)通过与周围环境的交互来进行学习。强化学习主体(RL agent)每采取一次动作(action)就会得到一个相应的数值奖励(numerical reward),这个奖励表示此次动作的好坏。通过与环境的交互,综合考虑过去的经验(exploitation)和未知的探索(exploration),强化学习主体通过试错的方式(trial and error)学会如何采取下一步的动作,而无需人类显性地告诉它该采取哪个动作。强化学习主体的目标是学习通过执行一系列的动作来最大化累积的奖励(accumulated reward)。 一般来说,真实世界中的强化学习问题包括巨大的状态空间(state spaces)和动作空间(action spaces),传统的强化学习方法会受限于维数灾难(curse of dimensionality)。借助于深度学习中的神经网络,强化学习主体可以直接从原始输入数据(如游戏图像)中提取和学习特征知识,然后根据提取出的特征信息再利用传统的强化学习算法(如TD Learning,SARSA,Q-Learnin)学习控制策略(如游戏策略),而无需人工提取或启发式学习特征。这种结合了深度学习的强化学习方法称为深度强化学习。

损失函数技术
Loss function

在数学优化,统计学,计量经济学,决策理论,机器学习和计算神经科学等领域,损失函数或成本函数是将一或多个变量的一个事件或值映射为可以直观地表示某种与之相关“成本”的实数的函数。

强化学习技术
Reinforcement learning

强化学习是一种试错方法,其目标是让软件智能体在特定环境中能够采取回报最大化的行为。强化学习在马尔可夫决策过程环境中主要使用的技术是动态规划(Dynamic Programming)。流行的强化学习方法包括自适应动态规划(ADP)、时间差分(TD)学习、状态-动作-回报-状态-动作(SARSA)算法、Q 学习、深度强化学习(DQN);其应用包括下棋类游戏、机器人控制和工作调度等。

权重技术
Weight

线性模型中特征的系数,或深度网络中的边。训练线性模型的目标是确定每个特征的理想权重。如果权重为 0,则相应的特征对模型来说没有任何贡献。

批次技术
Batch

模型训练的一次迭代(即一次梯度更新)中使用的样本集。

张量技术
Tensor

张量是一个可用来表示在一些矢量、标量和其他张量之间的线性关系的多线性函数,这些线性关系的基本例子有内积、外积、线性映射以及笛卡儿积。其坐标在 维空间内,有 个分量的一种量,其中每个分量都是坐标的函数,而在坐标变换时,这些分量也依照某些规则作线性变换。称为该张量的秩或阶(与矩阵的秩和阶均无关系)。 在数学里,张量是一种几何实体,或者说广义上的“数量”。张量概念包括标量、矢量和线性算子。张量可以用坐标系统来表达,记作标量的数组,但它是定义为“不依赖于参照系的选择的”。张量在物理和工程学中很重要。例如在扩散张量成像中,表达器官对于水的在各个方向的微分透性的张量可以用来产生大脑的扫描图。工程上最重要的例子可能就是应力张量和应变张量了,它们都是二阶张量,对于一般线性材料他们之间的关系由一个四阶弹性张量来决定。

TensorFlow技术
TensorFlow

TensorFlow是一个开源软件库,用于各种感知和语言理解任务的机器学习。目前被50个团队用于研究和生产许多Google商业产品,如语音识别、Gmail、Google 相册和搜索,其中许多产品曾使用过其前任软件DistBelief。

推荐文章