去年,斯坦福大学神经生物实验室与 EPFL 联合举办了一场强化学习赛事——人工智能假肢挑战赛(AI for Prosthetics Challenge),但愿将强化学习应用到人体腿部骨骼仿真模拟模型的训练。算法
通过激烈的角逐,最终来自百度大脑的 NLP 技术团队一举击败众多强劲对手,以9980分的成绩夺得冠军!网络
近日,百度正式发布在赛事夺冠中起到关键做用的深度强化学习框架 PaddlePaddle PARL,同时开源了基于该框架的 NeurIPS 2018强化学习赛事的完整训练代码。点击“阅读原文”可查看冠军解决方案。架构
PaddlePaddle PARL 的名字来源于 PAddlepaddle Reinfocement Learning,是一款基于百度 PaddlePaddle 打造的深度强化学习框架。PaddlePaddle PARL 凝聚了百度多年来在强化学习领域的技术深耕和产品应用经验。与现有强化学习工具和平台相比,PaddlePaddle PARL 具备更高的可扩展性、可复现性和可复用性,强大的大规模并行化和稀疏特征的支持能力,以及工业级应用案例的验证。框架
自2012年以来,百度就将在 multi-arm bandits 问题上的研究成果成功落地到推荐系统中,普遍应用于搜索、对话、推荐等产品,经过点击反馈结合在线训练的方式,动态调整探索(exploration)和收益(exploitation)的平衡点,下降探索风险的同时最大化推荐收益。近年来,百度在工业应用以及学术研究上进一步引入强化学习,落地在不只限于凤巢、新闻 Feed 推荐等应用上,还应用在前沿的学术研究领域,例如机器人控制,通用人工智能 AGI 等。2018年,在机器人控制会议 CoRL 上,百度发表了干预强化学习机制的工做;进而在 NeurIPS 2018的强化学习赛事上击败了400多个全球研究机构的参赛队伍,首次参赛就拿下了 NeurIPS 2018强化学习赛事冠军。参赛队伍中不乏 RNN 之父创立的公司、卫冕冠军 NNAISENSE、Yandex、Intel 等强劲对手。函数
设计深度强化学习框架是至关具有挑战性的工做。虽然各大公司前后推出了一些强化学习框架,但截止到目前,开源社区中仍没有一个主导的 RL 框架。这其中主要的一个缘由是强化学习近年来发展迅猛,新的研究方向不断涌现。当前社区中存在的开源框架虽然能够支持其中的一部分算法,可是因为技术迭代太快,以前设计的框架难以跟上最新的研究热点。工具
第二个缘由是深度强化学习算法和应用,具备方法各异、超参难调、随机性大等特色,即使是针对同一个问题,使用同一种算法,不一样的实现方式会带来极大的差别,学术界也一再强调强化学习可复现性问题。综合这些因素,要实现一个统一的模型和计算平台,是至关困难的事情。性能
PaddlePaddle PARL 在设计之初就考虑了上述提到的扩展性和可复现性的问题。从上图能够看出,PaddlePaddle PARL 经过抽象出 Model、Algorithm、Agent 等基础类帮助用户快速搭建能够和环境交互的机器人。Model 类负责强化学习算法中的网络前向计算(forward)部分,一般嵌套在 algorithm中。Algorithm 类则定义了网络的更新方式(backward)部分,一般属于一个 agent。Agent 类负责和环境进行交互,而且收集数据训练底下的 algorithm。经过这样的设计方案,PARL 保证了算法扩展性:针对同一个场景,用户想调研不一样的网络结构对算法效果影响的时候,好比调研 RNN 建模或者 CNN 建模,只须要重写 model 部分便可;针对不一样场景想用同一个算法调研的时候,也是只需重写 model 便可。可复现性主要体如今框架提供的 algorithm 集合上,在下一段和复用性一块儿结合理解。学习
PaddlePaddle PARL 的这种设计结构的另外一个好处是高复用性。仓库内的提供了大量经典算法的例子(algorithms目录内), 包括主流的 DQN 、DDQN、Dueling DQN、DDPG、PPO 等,这些算法因为和网络结构进行了解耦(网络结构定义在 Model 类中),所以不针对特定任务,而是一个至关通用的算法抽象。用户经过 PaddlePaddle PARL 搭建强化学习算法来解决本身目前遇到的问题时,能够直接 import 这些经典算法,而后定义本身的网络前向部分便可短期内构建出经典的 RL 算法。这种高复用性不只极大地下降了用户的开发成本,并且因为 PARL 提供的算法内部包含完整的超参数列表,确保仓库内模型具有复现论文级别指标的能力。人工智能
下图是 PaddlePaddle PARL 的一个构建示例,展现了如何快速构建能够解决 Atari 游戏的 DQN 模型。用户只须要定一个前向网络(Model 类),而后调用框架算法集合里面的 DQN algorithm 便可构建一个经典 DQN 算法了。DQN 算法里面的繁琐的构建 target 网络,同步 target 网络参数等细节,已经包含在构建的 algorithm 里面,用户无需再特别关注。设计
PaddlePaddle PARL 基于百度内部的成熟应用开源,所以更能方便地定制大规模并行算法。经过调用简单的函数接口,用户能够将算法从单机版扩展成 GA3C、A3C、IMPALA 等并行训练架构。 PaddlePaddle PARL 对于通信机制,数据 I/O 等也有独特的加速处理。此外,基于 PaddlePaddle 对大规模工业级排序/推荐等稀疏模型的支持能力,PARL 也能轻松扩展到百亿级别数据或特征的训练。
PaddlePaddle PARL 的并行能力在开源社区中处于绝对领先地位。根据百度在 NeurIPS 上作的技术分享,基于 PaddlePaddle PARL 最多能够同时经过8块 GPU 来拉动近20000个 CPU 节点运算,彻底发挥整个 CPU 集群的计算潜力,在赛事中成功将须要近5个小时迭代一轮的 PPO 算法加速到了不到1分钟,实现了相对单机运算高达几百倍的加速比。这种目前开源社区中框架难以支持的并行提速,是百度拿下本次冠军的关键因素之一。
百度本次正式发布 PaddlePaddle PARL, 不只在学术界引起关注,工业界也将所以受益。百度拥有在国内具备至关影响力的深度学习基础库,并积极推动 AI 生态战略。随着百度 PaddlePaddle 在工业界的影响不断深刻,一个高性能、高规格的深度强化学习框架,也是知足工业界日趋发展旺盛的强化学习应用需求的必要条件。
AI 时代,用科技让复杂的世界更简单!