RLlib简介:一个可组合和可扩展的强化学习计算库
RISE Lab的Ray平台增加了用于强化学习和超参数调整的计算库。
编者注:更多使用强化学习构建人工智能应用的内容请关注2018年4月10-13日人工智能北京大会

之前的文章中,我概述了强化学习(RL)在工业中的新兴应用。我首先列举了任何想要应用RL的人面临的挑战,包括对大量数据的需求,以及复制研究结果的难度以及派生出关键任务应用所需的错误估计。就算如此,RL在某些领域的成功一直是媒体广泛报道的主题。这引起了人们的兴趣,公司正在开始探讨我在之前的文章中描述的一些用例和应用。许多任务和职业,包括软件开发,都将可能会纳入某些形式的由AI驱动的自动化。在这篇文章中,我将描述RISE实验室的Ray平台如何随着公司考察RL的用例而不断发展和成熟。

假设已经确定了合适的用例,那么如何开始使用RL?大多数正在考虑使用RL进行试点项目的公司都希望利用现有的库。

Figure1-41e523fc95bc168c109fa8385a1f930b

图1 RL训练囊括很多种计算。感谢Richard Liaw和Eric Liang提供的图片,使用已经过允许

有几个开源项目可以作为尝试的起点。 从技术角度来看,在考虑使用何种RL库时,有几个关键点:

  • 它要支持现有的机器学习库。 因为RL通常使用基于梯度下降或进化算法来学习和拟合策略函数,所以您需要它支持您最喜欢的库(TensorFlow,Keras,PyTorch等)。
  • 可扩展性。 RL是计算密集型的,并且在关键应用程序中开始使用RL时,可以选择以分布式方式运行。
  • 可组合性。 RL算法通常涉及模拟和许多其他组件。 您将需要一个库,允许您重用与多种深度学习框架兼容的RL算法组件(例如策略图,走子演算等),并提供可组合的分布式执行原语(嵌套并行)。

Figure2-90d9d4a9674007b4d3e75393484f51b8

Figure 2. 一些用于强化学习的开源库。来源:Richard Liaw和Eric Liang, 使用已经过允许

介绍Ray RLlib

Ray是一个分布式执行平台(来自加州大学伯克利分校的RISE实验室),它专注于新兴的AI应用,包括那些依赖RL的应用。 RISE实验室最近发布了RLlib,这是一个在Ray之上构建的可扩展和可组合的RL库

Figure3-c9e33369d8eeb3f066917d0e47f020ff

Figure 3. Ray是一个用于新兴AI应用的开源平台。Ben Lorica提供图片

RLlib旨在支持多种深度学习框架(目前支持TensorFlow和PyTorch),并可通过简单的Python API使用。 它目前附带以下流行的RL算法(接下来还会有更多):

要重点注意的是,如何计算、组合RL算法组件没有一种主流模式。因此,我们需要一个能够在多层次、不同物理设备上发挥出并行计算优势的库。 RLlib是一个用于可扩展性RL应用部署的开源代码库,它能够把不断发展的RL组件有机结合在一起。特别是,RLlib能够实现快速开发,因为通过重用和组装现有实现(“并行封装”),可以轻松构建可扩展的RL算法。 RLlib还允许开发人员使用由几种流行的深度学习框架创建的神经网络,并将其与流行的第三方模拟器集成在一起。

Figure4-a2d3c1653917dcf8bb4eb3c6e31db248

图4 RLlib提供可组装能力。感谢Richard Liaw和Eric Liang提供的图片,使用已经过允许

用于机器学习的软件需要在各种硬件配置(内部部署和公共云)上高效运行。 Ray和RLlib被设计为在单个多核节点上或以分布式方式提供快速训练,而这些软件工具在异构硬件(不管CPU与GPU的比例是多少)上提供高效的性能。

例子:文本摘要和AlphaGo Zero

开始使用RL的最好方法,是把RL在现有的一些数据集上进行应用。 为此,RL的相对比较新的应用是在文本摘要中。 这里有一个小例子,尝试使用RLlib来对非结构化文本进行摘要(请注意,这不是生产级模型):

# Complete notebook available here: https://goo.gl/n6f43h

document = “””Insert your sample text here

“””

summary = summarization.summarize(agent, document)

print(“Original document length is {}”.format(len(document)))

print(“Summary length is {}”.format(len(summary)))

文本摘要只是几个可能的应用之一。 最近RISE实验室的一篇论文提供了其他的例子,包括在70行左右的RLlib伪代码中实现AlphaGo Zero的主要算法。

使用RayTune进行超参数调整

另一个常见的例子涉及到模型的建立。 数据科学家要花费相当多的时间进行实验,其中许多涉及调整他们最爱的机器学习算法的参数。 随着深度学习和RL变得越来越流行,数据科学家将需要某种软件工具来进行高效的超参数调整和其他形式的实验和模拟。 RayTune是一个新的深度学习和RL分布式超参数搜索框架。 它建立在Ray之上,与RLlib紧密结合。 RayTune基于网格搜索,并使用早期停止的想法,包括中位数停止规则HyperBand

有越来越多的开放源代码软件工具可用于希望深入学习和RL的公司。我们处于经验时代,我们需要能够实现快速并行实验的工具,同时让我们能够利用流行的软件库,算法和组件。 Ray刚刚添加了两个库,让公司可以进行强化学习,并有效搜索神经网络架构的空间。

强化学习应用程序涉及多个组件,每个组件提供分布式计算的机会。 Ray RLlib采用了一种编程模型,可以轻松组合和重用组件,并利用多层次并行性和物理设备的并行性。在短期内,RISE实验室计划添加更多的RL算法,用于与在线服务集成的API,支持多智能体场景,以及一组扩展的优化策略。

相关资源包括:

Ben Lorica

Ben Lorica是O’Reilly传媒集团的首席数据科学家。他还是Strata数据大会和O’Reilly的人工智能大会的项目主席。他已经在多个领域里(包括直销市场、消费者和市场研究、精准广告、文本挖掘和金融工程)进行了商业智能、数据挖掘、机器学习和统计分析的工作。他之前曾效力于投资管理公司、互联网创业企业和金融服务公司。

Industrial robots (source: Mixabest on Wikimedia Commons)