Auto Byte

专注未来出行及智能汽车科技

微信扫一扫获取更多资讯

Science AI

关注人工智能与其他前沿技术、基础学科的交叉研究与融合发展

微信扫一扫获取更多资讯

JASON GAUCI等作者路雪 王淑婷编译

Facebook开源首个适应大规模产品的强化学习平台Horizon,基于PyTorch 1.0

今日,Facebook 开源了适合大规模产品和服务的强化学习平台 Horizon,这是第一个使用强化学习在大规模生产环境中优化系统的开源端到端平台。Horizon 包含的工作流程和算法建立在开放的框架上(PyTorch 1.0、Caffe2、Spark),任何使用 RL 的人都可以访问 Horizon。去年,Facebook 内部已经广泛应用 Horizon,包括帮助个性化 M suggestions、提供更有意义的通知、优化流视频质量。

Horizon GitHub 地址:https://github.com/facebookresearch/Horizon

今天,Facebook 开源了一个强化学习端到端平台 Horizon,该平台利用强化学习(RL)来优化数十亿用户规模的产品及服务。Facebook 开发此平台的目的是弥补 RL 在研究领域日益增强的影响力与其在生产领域的狭窄应用之间的落差。过去一年,Facebook 已在内部广泛部署了 Horizon,提高了该平台将 RL 基于决策的方法应用于大规模应用的能力。尽管其他人也在做 RL 应用方面的研究,但 Horizon 是第一个用于生产的开源 RL 平台。

Horizon 专注于将 RL 应用于大型系统。本次开源包含用于模拟环境的工作流程及用于生产预处理、训练及模型导出的分布式平台。Horizon 平台已经提高了 Facebook 的性能,包括发送相关度更高的通知、优化流视频比特率及提升 Messenger 中 M suggestions 的效果。但 Horizon 的开放性设计和工具集使得它可以惠及该领域其他研究人员,尤其是对利用 RL 从大量信息中学习策略的公司和研究团队而言。Horizon 不仅是 Facebook 继续投资 RL 的证明,也表明这个充满希望的人工智能研究领域现在可以用于实际应用。

大规模决策:Horizon 如何利用 RL 进行生产

机器学习(ML)系统通常产生预测,但之后就需要工程师将这些预测转化为策略(即采取行动的策略)。另一方面,RL 创建的系统能够决策、采取行动,并基于收到的反馈进行改进。这种方法无需手动制造的策略就可以优化一系列决策。例如,RL 系统可以在视频播放时,基于来自其他 ML 系统的评估和视频缓冲器的状态直接选择高/低比特率。

尽管 RL 的策略优化能力在研究中已经展示出不错结果,但人工智能社区很难调整这些模型来处理截然不同的现实生产环境需求。Horizon 专注于缩小两种不同应用类型之间的差距:研究相关模拟器的复杂但有限的环境;基于 ML 的策略优化系统,该系统依赖本质上带噪声、稀疏和任意分布的数据。虽然在一些游戏中,RL 驱动的机器人可以对有限的一组预测和重复性规则作出反应,但在现实世界中不可能实现完美模拟,且反馈也更难融入到部署代码中去,因为与受控的实验环境相比,这种环境中的任何改动都必须更加小心。

深度学习神经网络应用的改变类似,Horizon 等项目有望通过使用策略优化产生影响,定义科学家和工程师把 RL 应用于生产环境的方式。具体来说,Horizon 考虑了具体的生产环境问题,包括特征归一化、分布式训练、大规模部署和服务,以及具有数千种不同特征类型和分布与高维离散和连续动作空间的数据集。

Horizon 的工作流程分为三部分:1)时间线生成,在数千个 CPU 上运行;2)训练,在多个 GPU 上运行;3)服务,也跨越数千台机器。该工作流程允许 Horizon 扩展到 Facebook 数据集。对于在策略学习(如使用 OpenAI Gym),Horizon 可以选择将数据直接传输给闭环训练。

Horizon 还解决了大规模构建和部署 RL 系统带来的独特挑战。RL 通常以在线方式训练,系统首选随机选择动作,然后实时更新。考虑到 Facebook 上系统的规模和影响,这种随机性和实时更新目前尚无法选择。Facebook 的模型首先基于产品工程师设计的策略开始训练。该模型必须离线训练,使用离策略方法和反事实策略评估(counterfactual policy evaluation,CPE)来估计如果 RL 模型做了之前的决策,它会做什么。一旦 CPE 结果被接受,研究人员就在一个小实验中部署 RL 模型,并收集结果。有趣的是,结果显示与保持相对恒定的已有系统不同,RL 系统会随着时间的推移继续学习和改进。

行业数据集通常包含数十亿条记录和数千个具有任意分布和高维离散与连续动作空间的状态特征。根据研究和观察,研究人员发现,与传统的深度网络相比,应用 RL 模型对带噪声和非标准化的数据更敏感。Horizon 利用 Apache Spark 并行预处理这些状态和动作特征(此次开源包括 Spark pipeline)。训练数据经过预处理后,研究人员使用基于 PyTorch 的算法在 GPU 上进行归一化和训练。

尽管 Horizon 可以在单个 GPU 或 CPU 上运行,但该平台使用大型集群。在多个 GPU 上进行分布式训练可使工程师解决涉及数百万示例的问题,且更快迭代模型。Facebook 研究人员在 PyTorch 中使用数据并行和分布式数据并行功能进行分布式训练。此次发布包括深度 Q 网络(DQN)、parametric DQN 和深度确定策略梯度(deep deterministic policy gradient,DDPG)模型。训练过程中,研究人员还运行 CPE,将评估结果记录到 TensorBoard 上。训练完成后,Horizon 将使用 ONNX 导出模型,以便模型实现大规模高效服务。

在很多强化学习领域中,你可以通过尝试衡量模型的性能。Facebook 想在大规模部署模型之前进行全面的模型测试。由于 Horizon 解决了策略优化任务,因此训练工作流可以自动化运行多个当前最优策略评估技术,包括 sequential doubly robust 策略评估和 MAGIC。最终的策略评估报告在工作流中导出,可在 TensorBoard 中观察报告。策略评估可与异常检测结合起来,在大规模部署该策略之前,自动提醒工程师模型的新迭代是否与之前的模型性能迥异。

在工作中学习:Horizon 对 Messenger、360 video 等的影响

过去一年 Facebook 在内部广泛使用 Horizon,期间该平台展示了 RL 通过即时反馈做出提升性能的决策,从而对生产应用产生影响。

例如,Horizon 允许通过实时优化比特率参数来改善 Facebook 360 video 的图像质量。Horizon 使用可用带宽和已缓冲视频量决定是否转化为更高画质的视频。这个过程利用了 RL 使用新的无监督数据瞬间创造刺激(incentive)的能力,这种方法在播放给定视频时即可奏效,而不是事后分析性能和仔细标注的数据。

反事实策略评估为工程师在离线环境中部署 RL 模型提供了见解。上图将几种 CPE 方法和记录的策略(最初生成训练数据的系统)进行了比较。1.0 分表示 RL 和记录策略性能相当。这些结果表明 RL 模型的累积奖励大约是记录系统的两倍。

Horizon 反馈循环高级图示。首先,预处理现有系统已记录的部分数据。然后在离线环境中训练模型,分析反事实的策略结果。最后,将模型部署到一组人并衡量真正的策略。将来自新模型的数据传输回下一个迭代,这样大部分团队每天都可以部署新模型。

Horizon 还为 Messenger 中的智能助手 M 过滤建议。M 为人们的开放对话提供相关内容的建议或者丰富人们的沟通。Horizon 使用强化学习帮助 M 学习,在学习对话策略方面,强化学习比基于规则的方法更具扩展性、前瞻性,对用户反馈也更具响应性。例如,如果人们更常使用某个建议,M 可能会更多地展示该建议。有了 Horizon,M 变得更加智能、更加个人化,因为它每天要帮助数百万人进行沟通。

Horizon 平台还改进了 Facebook 利用 AI 确定要发送给用户哪些 Facebook 通知及发送频率的方式。过去,Facebook 不会发送每一个可能的通知(包括新 post、评论等),而是利用机器学习模型帮助预测哪个通知最有意义、最相关,过滤掉其它的通知。但是这些模型依赖于监督学习,无法解释发送通知的长期价值。例如,每天访问 Facebook 多次的人可能不需要关于新 post 的通知,因为他们总能看到,而不那么活跃的用户会从 post 通知中受益,确保不漏掉家人朋友有意思的 post。

为了更好地解决这些长期信号,同时确保通知的效果达到预期,Facebook 向整个平台的所有用户提供价值,他们利用 Horizon 训练一个离散动作 DQN 模型用于发送 push 通知。用户通过通知看到了可能漏掉的内容时该模型获得奖励,反之,如果用户本就能看到新内容,而 Facebook 发送了 post 通知,则模型会被惩罚。只有通知对用户的价值比惩罚高时,强化学习模型才会发送通知。该模型还会使用大批量状态转换进行定期更新,实现增量改进,并最终调整通知的数量。由于 Facebook 用 Horizon 强化学习模型取代了之前基于监督学习的系统,目前通知相关度方面已经有了改进,同时通知的总数并未增加。Facebook 不是通过点击通知来判断相关度,而是看得更宽更深,确保通知为用户提供真正的帮助。

允许在生产环境中部署强化学习

这些优势强调了强化学习对工业界的作用,即基于前一个次优策略收集的样本直接学习最优策略的能力。Facebook 已经确定了一些适合强化学习的特定用例和应用,但这仅是一个开始。Facebook 期待人工智能社区能够基于 Horizon 平台产生更多想法、功能和产品。

任何使用机器学习进行决策的人都可以尝试 Horizon。第一步是记录 propensity(执行某个动作的概率)和替代方案(可能的其它动作)。Horizon 利用二者学习何时可获取更好的动作。第二步是定义和记录奖励(执行动作带来的价值)。收集数据后,可以运行 Horizon 的训练循环,并导出可制定新决策并最大化整体奖励的模型。

原文链接:https://code.fb.com/ml-applications/horizon/

工程Facebook开源Horizon强化学习PyTorch 1.0
2
相关数据
深度学习技术

深度学习(deep learning)是机器学习的分支,是一种试图使用包含复杂结构或由多重非线性变换构成的多个处理层对数据进行高层抽象的算法。 深度学习是机器学习中一种基于对数据进行表征学习的算法,至今已有数种深度学习框架,如卷积神经网络和深度置信网络和递归神经网络等已被应用在计算机视觉、语音识别、自然语言处理、音频识别与生物信息学等领域并获取了极好的效果。

机器学习技术

机器学习是人工智能的一个分支,是一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、计算复杂性理论等多门学科。机器学习理论主要是设计和分析一些让计算机可以自动“学习”的算法。因为学习算法中涉及了大量的统计学理论,机器学习与推断统计学联系尤为密切,也被称为统计学习理论。算法设计方面,机器学习理论关注可以实现的,行之有效的学习算法。

人工智能技术

在学术研究领域,人工智能通常指能够感知周围环境并采取行动以实现最优的可能结果的智能体(intelligent agent)

TensorBoard技术

一个信息中心,用于显示在执行一个或多个 TensorFlow 程序期间保存的摘要信息。

参数技术

在数学和统计学裡,参数(英语:parameter)是使用通用变量来建立函数和变量之间关系(当这种关系很难用方程来阐述时)的一个数量。

异常检测技术

在数据挖掘中,异常检测(英语:anomaly detection)对不符合预期模式或数据集中其他项目的项目、事件或观测值的识别。 通常异常项目会转变成银行欺诈、结构缺陷、医疗问题、文本错误等类型的问题。 异常也被称为离群值、新奇、噪声、偏差和例外。

张量技术

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

神经网络技术

(人工)神经网络是一种起源于 20 世纪 50 年代的监督式机器学习模型,那时候研究者构想了「感知器(perceptron)」的想法。这一领域的研究者通常被称为「联结主义者(Connectionist)」,因为这种模型模拟了人脑的功能。神经网络模型通常是通过反向传播算法应用梯度下降训练的。目前神经网络有两大主要类型,它们都是前馈神经网络:卷积神经网络(CNN)和循环神经网络(RNN),其中 RNN 又包含长短期记忆(LSTM)、门控循环单元(GRU)等等。深度学习是一种主要应用于神经网络帮助其取得更好结果的技术。尽管神经网络主要用于监督学习,但也有一些为无监督学习设计的变体,比如自动编码器和生成对抗网络(GAN)。

监督学习技术

监督式学习(Supervised learning),是机器学习中的一个方法,可以由标记好的训练集中学到或建立一个模式(函数 / learning model),并依此模式推测新的实例。训练集是由一系列的训练范例组成,每个训练范例则由输入对象(通常是向量)和预期输出所组成。函数的输出可以是一个连续的值(称为回归分析),或是预测一个分类标签(称作分类)。

强化学习技术

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

推荐文章
暂无评论
暂无评论~