在之前的文章中,我概述了强化学习(RL)在工业中的新兴应用。我首先列举了任何想要应用RL的人面临的挑战,包括对大量数据的需求,以及复制研究结果的难度以及派生出关键任务应用所需的错误估计。就算如此,RL在某些领域的成功一直是媒体广泛报道的主题。这引起了人们的兴趣,公司正在开始探讨我在之前的文章中描述的一些用例和应用。许多任务和职业,包括软件开发,都将可能会纳入某些形式的由AI驱动的自动化。在这篇文章中,我将描述RISE实验室的Ray平台如何随着公司考察RL的用例而不断发展和成熟。
假设已经确定了合适的用例,那么如何开始使用RL?大多数正在考虑使用RL进行试点项目的公司都希望利用现有的库。
图1 RL训练囊括很多种计算。感谢Richard Liaw和Eric Liang提供的图片,使用已经过允许
有几个开源项目可以作为尝试的起点。 从技术角度来看,在考虑使用何种RL库时,有几个关键点:
- 它要支持现有的机器学习库。 因为RL通常使用基于梯度下降或进化算法来学习和拟合策略函数,所以您需要它支持您最喜欢的库(TensorFlow,Keras,PyTorch等)。
- 可扩展性。 RL是计算密集型的,并且在关键应用程序中开始使用RL时,可以选择以分布式方式运行。
- 可组合性。 RL算法通常涉及模拟和许多其他组件。 您将需要一个库,允许您重用与多种深度学习框架兼容的RL算法组件(例如策略图,走子演算等),并提供可组合的分布式执行原语(嵌套并行)。
Figure 2. 一些用于强化学习的开源库。来源:Richard Liaw和Eric Liang, 使用已经过允许
介绍Ray RLlib
Ray是一个分布式执行平台(来自加州大学伯克利分校的RISE实验室),它专注于新兴的AI应用,包括那些依赖RL的应用。 RISE实验室最近发布了RLlib,这是一个在Ray之上构建的可扩展和可组合的RL库:
Figure 3. Ray是一个用于新兴AI应用的开源平台。Ben Lorica提供图片
RLlib旨在支持多种深度学习框架(目前支持TensorFlow和PyTorch),并可通过简单的Python API使用。 它目前附带以下流行的RL算法(接下来还会有更多):
- 近端策略优化,PPO是TRPO的变体。
- A3C(Asynchronous Advantage Actor-Critic)
- Deep Q Net(DQN)。
- 进化策略,如论文所述。
要重点注意的是,如何计算、组合RL算法组件没有一种主流模式。因此,我们需要一个能够在多层次、不同物理设备上发挥出并行计算优势的库。 RLlib是一个用于可扩展性RL应用部署的开源代码库,它能够把不断发展的RL组件有机结合在一起。特别是,RLlib能够实现快速开发,因为通过重用和组装现有实现(“并行封装”),可以轻松构建可扩展的RL算法。 RLlib还允许开发人员使用由几种流行的深度学习框架创建的神经网络,并将其与流行的第三方模拟器集成在一起。
图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,支持多智能体场景,以及一组扩展的优化策略。
相关资源包括:
- “工业中强化学习的实际应用”
- “通过人工智能和深度学习让游戏变为现实”:强化学习是如何为游戏开发中的AI训练而非编程打开大门的。
- Ray:强化学习应用的分布式执行框架:由Ion Stoica举办的2017年人工智能会议演讲
- 利用Ray构建强化学习应用程序:2018年4月29日至5月2日在纽约市人工智能大会上的一次会议。
- “神经进化:一种不同的深度学习”
- “为什么持续学习是AI的关键”