前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >飞桨强化学习框架PARL发布首个工业级深度进化学习库EvoKit

飞桨强化学习框架PARL发布首个工业级深度进化学习库EvoKit

作者头像
用户1386409
发布2020-04-29 15:45:33
4340
发布2020-04-29 15:45:33
举报
文章被收录于专栏:PaddlePaddlePaddlePaddle
飞桨强化学习框架PARL曾两次夺得NeurIPS强化学习赛事世界冠军

深度进化学习库EvoKit

PARL 1.3 重点发布了首个工业级进化学习框架EvoKit,支持大规模神经网络在真实业务场景中调研和部署进化学习算法,针对性解决进化学习算法部署到业务场景所遇到的难题。

什么是进化学习算法?

进化学习(Evolution Strategy)借鉴自然界种群进化过程,通过演化的方式找到全局最优。进化学习由来已久,近年来被不少学者用于解决强化学习(Reinforcement Learning),AutoML(Auto Machine Learning)等场景的问题。相对于梯度优化而言,进化学习直接通过参数空间的扰动来观察最终目标(如下视频所示),并且和强化学习一样,进化学习不要求优化目标和参数之间可导,因此适用范围非常广泛,易于并行化。基于EvoKit,可以利用数百台CPU优化百万量级参数的模型。

进化学习能用到哪些地方?

1. 优化目标和模型之间不可导的场景。例如,模型超参数的搜索;一些推荐类产品留存,总时长等不能建模,或者直接建模成本较高的场景。

2. 模型和业务规则逻辑或和其他流程耦合的场景。例如,某业务线的流程包括上下游总共十几个模块串行处理,希望优化中间某个模块的模型参数,但是下游处理模块的逻辑对于当前优化是黑箱。通过进化算法可以避免黑箱对于优化的不确定性,直接提升最终评价指标。

3. 元学习。很多模型不是直接使用,而是需要在多个场景上进一步fine-tune。进化学习算法可以利用最终fine-tune结果来优化元学习模型,破解求导链条过长等问题。

EvoKit有哪些特点?

1. EvoKit提供一整套可供线下调研及线上部署的进化学习工具。线下借助飞桨开源框架 API实现快速调研,线上基于Paddle Lite等工具,支持以较小的成本完成调研到上线的流程。同时,EvoKit提供包含异步更新机制,参数压缩和还原等线上业务普遍需求的功能。

2. 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完全开源,欢迎大家使用,反馈和贡献。

PARL链接:

https://github.com/PaddlePaddle/PARL

如在使用过程中有技术问题,欢迎加入飞桨官方QQ群进行提问:703252161

飞桨开源框架项目地址:

GitHub: https://github.com/PaddlePaddle/Paddle

Gitee: https://gitee.com/paddlepaddle/Paddle

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-04-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 PaddlePaddle 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档