雷锋网 AI 科技评论按:继今年 8 月谷歌开源发布了专为学术研究人员设计的简单但鲁棒的强化学习框架「多巴胺」(Dopamine)之后,早已被谷歌母公司收购但保持独立运营的 DeepMind 也把自己日常使用的代码库拿出来开源,继续为领域内的研究人员们提供功能丰富、高可复现性及高可拓展性的实验工具。雷锋网(公众号:雷锋网) AI 科技评论介绍如下。
今天 DeepMind 宣布开源一个用于在 TensorFlow 环境中开发强化学习智能体的代码库,打包了许多有用的基础组件。它的名字是 TRFL(读作「truffle」),地址是 https://github.com/deepmind/trfl/ 。DeepMind 自己用来开发 DQN、DDPG 以及 IMPALA(重要性加权行动者-学习者架构)等知名强化学习技术的许多关键算法组件都包含在其中。
另一种开源路线
一个典型的深度强化学习智能体需要包含一组数目众多的互动组件:首先起码需要包括一个环境以及某种能表示值或者策略的深度神经网络,然后很多时候还会包含学习到的环境的模型、伪反馈函数甚至一个回放系统等等。
这些组件互相之间的影响很微妙(而且如 Henderson 和他的同事在 https://arxiv.org/pdf/1709.06560.pdf 中指出,论文中常常并不会详细说明这些影响是怎么样的),从而当计算图变得很大的时候一旦出现 bug 就很难进行定位并解决。OpenAI 近期的一篇博客也着重研究了这个问题,他们分析了某些最热门的强化学习智能体的开源实现,发现 10 个中的 6 个都「由社区成员发现了微小的 bug 并得到了作者本人的确认」。
要解决这种问题,并帮助整个研究社区中的人顺利复现论文中的结果,其中一种方法就是开源智能体的全套完整实现。比如,DeepMind 最近就开源了基于 IMPALA 的 v-trace 智能体的可拓展分布式实现。这种大规模的代码库对于研究结果的复现固然有帮助,但同时也难以修改并拓展。
另一种有所不同并且能起到补充作用的方法是提供可靠的、经过充分测试的通用基础组件的实现,同一个构件也就可以在许多不同的强化学习智能体中反复使用。另一方面,在单个代码库中囊括了所有这些组件的抽象,然后可以用统一的 API 调用,也就让研究人员可以更方便地组合不同文献中阅读到的不同的想法。
全功能的基础组件
TRFL 库包含了许多功能,可以实现经典强化学习算法以及更现代的算法。其中的损失函数以及许多其他操作都是完全在 TensorFlow 中实现的。它们并不是完整的算法,而是构建具有完整功能的强化学习智能体时必要的、也是强化学习专用的数学操作的代码实现。
对于基于值的强化学习,DeepMind 的研究人员们也在 TRFL 库中提供了各种 TensorFlow 操作,便于在离散的行动空间中学习,比如 TD 学习、Sarsa、Q-learning 以及它们的变体;当然也包括了用于实现 DPG 之类的连续控制算法的操作。TRFL 库中还包括了学习值分布函数的操作。这些操作支持批量计算,并且返回的损失值可以送入 TensorFlow 优化器进行最小化。有一些损失值是针对不同的批之间的变化进行计算的(比如 Sarsa 和 Q-learning 等),也有一些损失是针对成批的轨迹的(比如 Q-lambda、Retace 等)。
对于基于策略的方法,TRFL 库中也同时提供了可以简易实现 A2C 等在线学习方法以及 v-trace 等离线策略校正方法的工具。TRFL 也支持连续动作空间中的策略梯度的计算。最后,TRFL 还提供了一个 Unreal 引擎中使用的辅助伪反馈函数的实现,DeepMind 的研究人员发现它能在许多不同的任务中提高数据效率。
宣告开源显然并不是这个项目的终点。由于这个库在 DeepMind 内部有着广泛的应用,他们也会持续不断地对它进行维护,并逐步增加新的功能。DeepMind 也非常期待强化学习社区中的更多人也参与到这个项目的贡献中来。
via deepmind.com,雷锋网 AI 科技评论编译
雷锋网版权文章,未经授权禁止转载。详情见。
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/134553.html