飞桨强化学习框架 PARL 曾两次夺得 NeurIPS 强化学习赛事世界冠军。近期 PARL 升级1.3版本,通过发布深度进化学习库 EvoKit,多智能体强化学习(Multi-Agent RL)算法,助力强化学习进一步落地工业应用场景。
深度进化学习库 EvoKit
PARL 1.3重点发布了首个工业级进化学习框架 EvoKit,支持大规模神经网络在真实业务场景中调研和部署进化学习算法,针对性解决进化学习算法部署到业务场景所遇到的难题。
什么是进化学习算法?
进化学习(Evolution Strategy)借鉴自然界种群进化过程,通过演化的方式找到全局最优。进化学习由来已久,近年来被不少学者用于解决强化学习(Reinforcement Learning),AutoML(Auto Machine Learning)等场景的问题。
相对于梯度优化而言,进化学习直接通过参数空间的扰动来观察最终目标(如下图所示),并且和强化学习一样,进化学习不要求优化目标和参数之间可导,因此适用范围非常广泛,易于并行化。基于 EvoKit,可以利用数百台 CPU 优化百万量级参数的模型。
进化学习能用到哪些地方?
优化目标和模型之间不可导的场景。例如,模型超参数的搜索;一些推荐类产品留存,总时长等不能建模,或者直接建模成本较高的场景。
模型和业务规则逻辑或和其他流程耦合的场景。例如,某业务线的流程包括上下游总共十几个模块串行处理,希望优化中间某个模块的模型参数,但是下游处理模块的逻辑对于当前优化是黑箱。通过进化算法可以避免黑箱对于优化的不确定性,直接提升最终评价指标。
元学习。很多模型不是直接使用,而是需要在多个场景上进一步 fine-tune。进化学习算法可以利用最终 fine-tune 结果来优化元学习模型,破解求导链条过长等问题。
EvoKit有哪些特点?
EvoKit 提供一整套可供线下调研及线上部署的进化学习工具。线下借助飞桨开源框架 API 实现快速调研,线上基于 Paddle Lite 等工具,支持以较小的成本完成调研到上线的流程。同时,EvoKit 提供包含异步更新机制,参数压缩和还原等线上业务普遍需求的功能。
EvoKit 使用上非常便利。用户可以利用飞桨开源框架 API 搭建任意结构的复杂网络。进化学习算法包含两个关键步骤,采样(或者扰动)和更新。网络参数不断通过扰动收集反馈,并基于相关反馈迭代进化网络(如上图所示)。EvoKit 定义了主接口分别用于网络的扰动(AddNoise)和更新迭代(Update)。用户只需通过简单几行代码就能实现完整的进化流程,下图展示了一个伪代码的样例。EvoKit 内置了包括 ES、GA、CMA-ES 等常用进化策略,也提供了很好的便于二次开发的可扩展接口,可以方便实现新的算法。
多智能体强化学习
PARL 1.3还实现了全新的多智能体强化学习算法(Multi-Agent RL,MARL)的框架支持。MARL 是 RL 挑战群体决策问题的“杀手锏”,可以被广泛运用在包括地图派单、游戏 AI、任务分配等等问题中,但是算法的复现难度比起传统算法更大。
很多 RL 框架很难利用一套框架兼容多种单智能体 RL 算法和 MARL 算法的开发,PARL 在这一点上有新的突破。在单智能体算法中,PARL 抽象出了 Model、Algorithm、Agent 三个模块,分别定义了前向网络(forward)、算法损失函数(backward)、数据交互等逻辑(见下图)。这种以智能体为核心的设计方式,在扩展到多智能体算法的时候,只需创建多个 Agent 实例,就可以让多个智能体交互起来,共同更新 MARL 算法。
以主流的 MADDPG 算法的评估为例,可以看到 PARL 在 MARL 的扩展性:
当通过 Model、Algorithm 搭建好多个 Agent 之后,这些 Agent 可以很方便地和环境进行交互,存储各自的数据,然后训练模型。PARL1.3 此次开源的 MADDPG 算法在 OpenAI 的8个 MARL 场景都进行了验证,效果能完全复现最优的表现。
此外,PARL 1.3版本还针对使用文档、应用样例进行了全面梳理,并开源了 NuerIPS 2019强化学习赛事的冠军解决方法。
基于这些全新的功能,希望 PARL 和 EvoKit 能给相关领域的同学带来新的便利,助力强化学习和进化学习算法在工业场景的进一步应用落地。
PARL 和 EvoKit 完全开源,欢迎大家使用、反馈和贡献。如在使用过程中有技术问题,欢迎加入飞桨官方 QQ 群进行提问。
PARL 链接:https://github.com/PaddlePadd...
飞桨官方 QQ 群:703252161