【RL从入门到放弃】【二十五】

一直在纠结强化学习的env环节,今天来看看google团队提供的horizen:

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

今天,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 考虑了具体的生产环境问题,包括特征归一化、分布式训练、大规模部署和服务,以及具有数千种不同特征类型和分布与高维离散和连续动作空间的数据集

【RL从入门到放弃】【二十五】

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 中观察报告。策略评估可与异常检测结合起来,在大规模部署该策略之前,自动提醒工程师模型的新迭代是否与之前的模型性能迥异