• Horizon是首个使用应用强化学习(RL)在大规模生产环境中优化系统的端到端开源平台。

  • 这个版本中包含的工作流和算法是以开放框架为基础构建的——PyTorch 1.0、Caffe2和Spark——使得任何大规模使用RL的人都可以使用Horizon。

  • 在过去的一年里,我们内部已经在多个应用程序中开使用了Horizon,包括帮助定制M建议、发送更有意义的通知以及优化流媒体视频质量。

今天,我们开源了Horizon,一个端到端的应用强化学习平台,使用RL来优化数十亿人使用的产品和服务。我们开发这个平台是为了弥补RL在研究领域日益增长的影响力和在生产领域历来狭窄的应用范围之间的差距。过去一年,我们在Facebook部署了Horizon,提高了该平台把RL基于决策的方法运用到大规模应用程序的能力。虽然人们都在开发增强学习应用程序,但Horizon是第一个用于生产的开源RL平台。

虽然我们正在进行各种强化学习项目,这些项目使用反馈来提高性能,但是,Horizon主要关注的是将RL应用于大型系统。这个版本包括模拟环境的工作流以及用于预处理、训练和导出生产环境模型的分布式平台。该平台已经为Facebook带来了性能优势,包括发送更相关的通知、优化流媒体视频比特率以及改进Messenger中的M建议。但是,Horizon的开放设计和工具集也有可能让该领域的其他人受益,特别是那些有兴趣使用应用RL从大量信息中学习策略的公司和研究团队。Horizon不仅仅证明了我们在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的规模和影响,这种随机性和实时更新目前还不是一个选项。相反,我们的模型是从在一个产品工程师设计的策略上训练开始的。这些模型必须离线训练,使用off-policy方法和反事实策略评估(CPE)来估计RL模型在过去的决策中会做什么。一旦CPE结果被接受,我们将在一个小实验中部署RL模型,收集结果信息。有趣的是,我们发现,与之前相对稳定的系统不同,RL系统会随着时间的推移不断学习和改进。

行业数据集通常包含数十亿条记录,以及数千个具有任意分布和高维离散连续动作空间的状态特征。通过研究和观察,我们发现,与传统的深度网络相比,应用RL模型对噪声和非规范化数据更敏感。Horizon使用Apache Spark并行对这些状态和动作特征进行预处理,我们的Spark管道也包含在开源版本中。在对训练数据进行预处理之后,我们使用基于PyTorch的算法在图形处理单元上进行规范化和训练。

虽然Horizon可以在单个GPU或CPU上运行,但该平台的设计侧重于大型集群,一次在多个GPU上进行分布式训练,使工程师可以使用数百万个样本来解决问题,并更快地迭代他们的模型。我们在PyTorch中使用数据并行和分布式数据并行功能进行分布式训练。该版本包括深度Q网络(DQN)、参数化DQN和深度确定性策略梯度(DDPG)模型。在训练过程中,我们还运行CPE,并将评估结果记录到TensorBoard上。训练完成后,Horizon将使用ONNX导出这些模型,以实现大规模地高效服务。

在许多RL领域中,你可以通过尝试来度量模型的性能。在Facebook,我们希望确保在大规模部署模型之前对它们进行彻底地测试。由于Horizon解决了策略优化任务,训练工作流还自动运行了几种最先进的策略评估技术,包括时序双鲁棒性策略评估和MAGIC。生成的策略评估报告从训练流中导出,可以使用TensorBoard进行观察。评估可以与异常检测相结合,在将策略公开部署之前,如果模型再次迭代的性能与前一个迭代相比有很大的差别,就会自动向工程师发出警报。

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

自从我们开始在内部使用Horizon以来,该平台已经示范了RL如何利用即时反馈来做出提高性能的决策,从而对生产应用程序产生影响。

例如,Horizon使我们可以通过实时优化比特率参数来提高Facebook上360视频的图像质量。该平台既考虑了可用带宽的数量,也考虑了已缓冲视频的数量,以确定是否有可能转换到更高质量的视频。这个过程利用了RL随时产生奖励的能力,使用新的无监督数据——它在给定的视频正在播放时工作,而不是事后再分析性能和仔细标注的数据。

反事实策略评估为在离线环境中部署RL模型的工程师提供了见解。这个图比较了几种CPE方法和日志策略(最初生成训练数据的系统)。得分1.0意味着RL和日志策略在性能上是匹配的。这些结果表明,RL模型的累积奖励大约是日志系统的两倍。

这个高级图表说明了Horizon的反馈循环。首先,我们对现有系统记录的一些数据进行预处理。然后,我们训练一个模型并分析离线环境下的反事实策略结果。最后,我们将模型部署到一组人员中,并度量真正的策略。来自新模型的数据反馈到下一次迭代中,大多数团队每天都部署一个新模型。

Horizon还过滤了Messenger中智能助手M的建议。M在人们的开放式对话中提供相关内容的建议,丰富人们的交流方式,在Messenger中完成工作。Horizon使用RL——比基于规则的对话学习策略方法更具可扩展性、前瞻性、更能响应用户的反馈——帮助M逐步学习。例如,如果人们更有规律地与一个建议交互,M可能会更多地提供这个建议。在Horizon的帮助下,M变得更加智能化和高度个性化,因为它每天都能帮助数百万人进行交流。

该平台还改进了我们使用人工智能的方式,帮助我们决定向用户发送哪些Facebook通知,以及多久发送一次。在过去,我们不是发送所有可能的通知(说明有新帖子、评论等),而是使用ML模型来帮助预测哪些可能最有意义或最相关,并过滤掉其他的。但这些模型依赖于监督学习,没有考虑到发送通知的长期价值。例如,每天多次访问该平台的人可能不需要系统为他们本来会看到的帖子发出通知,而不太活跃的人可能会从通知中受益,这可以确保他们不会错过家人和朋友发表的值得关注的帖子。

为了更好地处理这些长期信号——并使通知按照预期工作,为平台上的所有人提供价值——我们使用Horizon训练了一个离散动作DQN模型,用于发送推送通知。当某人参与了他们可能会错过的帖子时,这个模型会收到奖励,而发送通知则会受到惩罚。RL模型仅在对用户的价值(例如,让他们注意到好友或家人发布的值得关注的帖子)高于惩罚值(在他们的设备上弹出额外的警告)时才允许通知。该模型还定期更新大量的状态转换,使其能够逐步改进,并最终调整通知的数量。自从我们将以前的基于监督学习的系统替换为基于Horizon的版本之后,我们观察到,通知的相关性得到了改善,而发送通知的总数没有增加。与通过点击或单击通知来定义相关性不同,我们可以更广泛、更深入地查看信息以确保它们提供了真正的好处。

使任何人都可以在生产环境中部署RL的工具

这些好处突显了RL能为行业提供的东西,即能够直接从以前的次优策略下收集样本,并从中学习最优策略。尽管我们已经确定了非常适合RL的具体场景和应用程序,但这仅仅是激动人心的旅程的开始。鉴于人工智能社区的集体才华和创造力,我们迫不及待地想看到Horizon所激发的创意、功能和产品。

任何使用机器学习来做决定的人都可以试试Horizon。第一步是记录倾向(采取行动的概率)和备选方案(其他可能的行动)。Horizon使用倾向性和备选方案来了解何时可以采取更好的行动。第二步,定义并记录奖励(采取行动所获得的价值)。在收集到这些数据之后,就可以运行Horizon的训练循环,导出一个能够做出新决策并最大化总回报的模型。

Horizon是我们致力于AI开放开发的一部分——它是Facebook的内部平台,我们现在正在开放源代码,它使用的工具我们已经提供给社区,包括PyTorch 1.0和Caffe2。虽然Horizon已经针对在生产环境应用进行了优化,但我们使用该平台的经验也揭示了与RL集成到其他系统相关的重要研究。我们正利用Horizon平台探索基于模型的RL和“奖励塑造(reward shaping)”的新技术,并利用该平台在Facebook更广泛地挖掘其他应用,比如数据中心资源分配和视频推荐。我们还计划添加更多的模型和工作流,以帮助其他人将RL的长期承诺转化为即时行动。

有关详细信息,请阅读关于Horizon开发和内部用例的完整白皮书:https://arxiv.org/abs/1811.00260

除了对新应用程序产生影响外,Horizon还可以改变工程师和ML模型协同工作的方式。不再通过编写难以理解和维护的规则来驱动模型,我们设想,在工程师和他们使用的模型之间有一个双向对话,工程师可以指定他们的高层目标,并与机器学习协同实现这些目标,把它们应用到一个不断变化的决策环境中。Horizon是这个旅程的第一步,我们邀请您复制我们的GitHub库并进行试用。

查看英文原文:

https://code.fb.com/ml-applications/horizon/

Facebook开源Horizon:首个用于大规模产品和服务的强化学习平台相关推荐

  1. 清华本科生开发强化学习平台「天授」:千行代码实现,性能吊打国外成熟平台,刚刚开源...

    贾浩楠 发自 凹非寺 量子位 报道 | 公众号 QbitAI 江山代有才人出,开源一波更比一波强. 就在最近,一个简洁.轻巧.快速的深度强化学习平台,完全基于Pytorch,在Github上开源. 如 ...

  2. 清华大学人工智能研究院开源“天授”强化学习平台

    深度强化学习(deep RL)近年来取得了令人瞩目的进步,在Atari游戏.围棋等领域战胜了人类.但是,在面对不确定环境.不完全信息的任务时仍然面临很大的挑战.如何求解非完全信息.不确定条件下的决策问 ...

  3. 【强化学习-医疗】用于临床决策支持的深度强化学习:简要综述

    Article 作者:Siqi Liu, Kee Yuan Ngiam, Mengling Feng 文献题目:用于临床决策支持的深度强化学习:简要综述 文献时间:2019 文献链接:https:// ...

  4. Facebook 开源聊天机器人Blender,经94 亿个参数强化训练,更具“人情味”

    来源:AI前线 作者 | Kyle Wiggers 编译 | Sambodhi 策划 & 编辑 | 刘燕 不久前,Facebook 开源了号称是全球最强大的聊天机器人 Blender,它标志着 ...

  5. 花最少的钱,训超6的机器人:谷歌大脑推出机器人强化学习平台,硬件代码全开源...

    鱼羊 发自 凹非寺 量子位 报道 | 公众号 QbitAI 想要在现实世界的机器人身上探索强化学习(RL),并非易事. 首先,你得拥有类似这样的机器人平台: 而像这样的一只PR2,售价高达40万美元( ...

  6. 用于优化广告展示的深度强化学习实践

    本文使用深度强化技术来优化网站上的广告位置,以最大限度地提高用户点击的概率并增加数字营销收入. 在介绍概念的同时提供了带有代码的详细案例,可以作为在任何真实示例中实施解决方案. 流量联盟和按点击付费是 ...

  7. 谷歌大脑推出机器人强化学习平台,硬件代码全开源,花最少的钱,训超6的机器人...

    点击我爱计算机视觉标星,更快获取CVML新技术 鱼羊 发自 凹非寺 量子位 报道 | 公众号 QbitAI 想要在现实世界的机器人身上探索强化学习(RL),并非易事. 首先,你得拥有类似这样的机器人平 ...

  8. 【论文解读】DCN-M:Google提出改进版DCN,用于大规模排序系统的特征交叉学习(附代码)...

    " 本文结合DeepCTR-Torch中的代码实现,介绍了DCN的改进版--DCN-M.该模型能更有效地学习特征交叉,并通过低秩矩阵分解对参数矩阵进行降维,降低计算成本.受MOE结构启发,作 ...

  9. 新国立尤洋:夸父AI——用于大规模并行训练的统一深度学习系统

    [专栏:前沿进展]自十年前AlexNet等模型在计算机视觉领域大放异彩,深度学习算法逐渐流行起来.近年来,BERT等大模型深受大公司喜爱,自2018年至今,最顶尖的大模型的规模越来越大,如GPT-3有 ...

最新文章

  1. 一个好用的时间管理Chrome扩展 - Calendar and Countdown
  2. c语言添加变量到数据库+a+ +b+ 的方法,《C程序设计基础》模拟考试题(含答案)...
  3. OSChina 周日乱弹 —— 昨天夜生活很丰满
  4. openresty 搭建
  5. android:configChanges属性
  6. python27换行_python 27 :用句点字符匹配换行
  7. KNN(二)--近似最近邻算法ANN
  8. Hive中数据的导入与导出
  9. 搜索(深度优先搜索与回溯) 经典例题题单+万字详解(C++)
  10. CADD课程学习(12)-- 基于碎片的药物设计(MOE)
  11. 华为荣耀Linux笔记本评测,华为荣耀 篇一:荣耀MagicBook Pro详细评测 当下最值得推荐的高性能全面屏笔记本...
  12. macos10.14系统:MacOS Mojave
  13. 双网络安全nvr/布控球,可双向同时接入国网B接口视频监控平台和国标28181平台
  14. 《从零开始的 RPG 游戏制作教程》第十五期:地图发布,以及再见
  15. MYSQL数据库下载安装(Windows版本)
  16. LTE学习笔记:OFDM
  17. 大数据技术原理与应用 实验6 Spark数据处理系统的搭建
  18. 常用的电路保护元件有哪些?
  19. C语言输出100-1000之内所有的水仙花数字
  20. css设置文本显示高度隐藏超出部分

热门文章

  1. 此计算机必须为委派而被信任_如何增强 ClassLoader 双亲委派模式 ?
  2. python preference界面设置_偏好设置如何更改Preference的样式
  3. const int *p说明不能修改_C语言关键字const和指针结合的使用
  4. linux100day(day7)--用户管理和权限管理简单介绍
  5. JVM的内存配置参数
  6. P2597 [ZJOI2012]灾难(倍增LCA+拓扑排序)
  7. Python学习笔记(四十六)网络编程(2)— UDP编程
  8. Android学习–Android app 语言切换功能
  9. android ArcGIS学习笔记一
  10. 转:Excel导出问题(导出时不去掉前面的0)