强化学习的框架化,会引爆AI开发的新脑洞吗?
假如你是应用开发者,不懂算法,又想开发一个带AI功能的APP,你会选择:
1.自己从头训练一个AI模型;
2.使用开发平台的训练框架和API;
答案显而易见,能够提供技术解决方案及低准入门槛的后者才是王道。
但面对众多开发平台的深度学习框架,需要考虑的问题可就多了:兼容性、社群资源、框架迁移等等不一而足。
而最近,框架之争的焦点又转移到强化学习身上了。
谷歌在去年推出了基于TensorFlow的强化学习框架Dopamine,强化学习界的明星OpenAI也将很多算法放上了baseline,百度也在前不久更新了PaddlePaddle的强化学习框架PARL。就连一向低调的网易,都公布了自主研发的强化编程(Reinforced Programing)框架……
对于大部分开发者来说,强化学习到底能带来什么,与深度学习框架有何区别,自家应用又该何去何从,恐怕还有点云里雾里的。
所以我们今天不妨就来厘清强化学习的真正价值与现实难题。
深度学习、强化学习、
深度强化学习,傻傻分不清楚?
经过几年的市场教育,大多数开发者对于深度学习框架能够做什么、怎么做,已经比较有谱了。
但是各大平台随即推出的强化学习框架或者深度强化学习框架,就让人有点蒙圈了。它们之间的区别在哪里,又分别承担着怎样的职责呢?
我们举个例子来解释一下这三种机器学习方法的不同吧:
假如我是个种植工厂,想要做一个能够识别苹果好坏的APP,那么就需要一个深度学习开发框架,在上面搭建训练过程。几乎所有开发平台都有现成的图像识别API,我只需要把训练用的图片(也就是各种各样的苹果照片)拖进系统,就可以得到一个训练好的苹果识别模型了。
但如果我更懒一点,想要一个能自己学会采摘优质成熟苹果的机器人呢?深度学习就有点搞不定了。
这时我需要用强化学习框架来训练一个智能体,每当它摘下一个新鲜漂亮的好苹果,就会收到来自系统的奖励,进行正强化。要是错误摘下了没熟或者烂掉的苹果,就没有奖励甚至会被扣分,进行负强化。
为了得到更多的回报,智能体会就更愿意选择那些好果子来摘,而放弃那些会带来0分甚至负分的果子。通过这种方法,我就得到了一个最大化摘到好果子的智能机器人,岂不是美滋滋?
但尝到甜头的我又不满足了,不仅想让它学会摘黄瓜摘西红柿,而且还懒得再训练一遍。这时候就需要一种全新的算法,将深度学习与强化结合学习起来,只要告诉它新的奖励机制,机器就能通过深度神经网络自主get类似技能,不需要我再手把手训练。
以前,我还需要自己一行行敲代码,现在只要有一个开发框架+训练样本,就可以轻松拥有永不疲倦、勤奋学习、还会举一反三的智能体,这样的诱惑试问谁能拒绝?
当然,这里只是简单解释一下它们的工作模式,真要训练出这样一个智慧模型并应用于自家产品上,是一个更为复杂的综合工程。
不过,增加了强化学习功能的开发框架,大大降低了强化学习训练的编程难度和工作量,对于想做强化学习但又无力从零开始搭建环境和训练的技术人员和企业来说,无疑是个好消息。
AI开发新宠:
强化学习究竟有什么用?
如今,强化学习不仅成了学术界的宠儿,相关研究论文在各大顶会中的比例飞速上升;各家开发平台也都把强化学习框架当成重点来部署和争夺。
但问题也随之而来:框架只能降低一部分开发门槛,定制化模型、调试、兼容等工作依然需要企业投入大量人力物力财力,如果费了大力气得到的成果最后无法应用或者不切实际,对开发者来说无疑是非常残酷的。
因此在贸然“以身效法”之前,有必要先搞搞清楚:强化学习到底强在哪些地方?开发者又应该在何种情况下向它投诚?
先解释一下强化学习的核心逻辑,那就是智能体(Agent)可以在环境(Environment)中根据奖励(Reward)的不同来判断自己在什么状态(State)下采用什么行动(Action),从而最大限度地提高累积奖励。
比如击败围棋世界冠军的Alpha Go,在《Dota 2》中血虐人类玩家的OpenAI Five,打下Atari 2600游戏最高分的DeepMind DQN,都是基于强化学习实现的。
那么它具体有哪些特征呢,大致可以总结为三个方面:
1.训练样本。强化学习是通过环境给出的奖惩结果来学习,需要带有回报的数据。
2.交互方式。强化学习的学习过程是动态的,需要与环境进行交互来完成,不是给什么样本就学什么,没有环境都白搭。
3.解决问题。强化学习的逻辑更像人脑,主要解决的是智能决策问题,比如游戏打出高分、通用机器人、推荐系统等等。
这些特殊设定,使得强化学习可以在很多应用领域表现得比传统深度学习更为出色,比如:
控制类智能:工业上多关节机械臂的实时控制,让机器人观看YouTube 视频学习动作并应用到现实场景中,又或者是帮助无人车学习如何应对人和动物乱穿马路这样的特殊情况;
序列问题:比如文本序列预测,通过行为反馈让搜索排序达到最优效果;电商推荐系统, 根据用户对推荐列表的反馈(忽略、点击或购买)来实时改变推荐策略。
对话生成:比如体验更好的人机多轮对话,让机器人能够持续生成有意义的对话,而不是乱说一气地尬聊;与深度学习相结合,实现更好的机器双语翻译效果。
传统深度学习已经能很好地解决机器感知和识别问题,但人类对机器智能的要求显然不止于此,能够应对复杂现实中决策型问题的强化学习,以及二者的融合,自然成为AI应用未来的重点发展方向。
这种情况下,掌握了算法先发优势的技术平台相继推出RL框架,无疑是争夺开发者和入口权的最好布局。
强化学习框架之争,究竟拼些什么?
当然,强化学习虽然取得了很多“炫酷”的成就,但其应用的局限也是显而易见的,不得不预先做好准备:
比如强化学习就像刚出生的婴儿,所有技能都要从零开始训练,需要花很多时间才能教会它掌握一个任务目标;
而且,强化学习只能根据即时反馈指令来进行动作,下围棋、打dota或许很牛,但面对个性化语音助手这样需要记忆和推理能力的任务,就有点力不从心;
另一个困扰的问题是,目前的强化学习算法在稳定性和效率上参差不齐,想要真正满足现实场景的应用需求,还有待加强。
因此,如何选择适合自身业务的强化学习框架来试水,或许是开发者当下最为关心的问题。
就强化学习的发展方向和各个平台的特点来看,我们有几个不成熟的小建议供参考:
1.平台的稳定及复现性。
深度学习是稳定的,有固定的数据集和固定目标,超参数出现很小的改动,最终的性能也不会受到太大影响。但强化学习(或者深度强化学习)就不是如此了,训练结果会受到随机几率、样本效率、算法稳定性等多重影响,从而带来结果上的巨大差异,降低成功的复现率。更严重的情况是,机器认为自己无论怎么尝试都会导致失败,直接崩溃不学了。
为了解决随机性和复现的问题,不同平台的解决方案也不尽相同。
比如谷歌是实现训练环境和测试环节的标准化。为代码提供60款游戏的测试覆盖范围和训练数据,并使用街机学习环境(Arcade Learning Environment)进行标准化经验评估。
而百度则是尽可能多地覆盖相关算法。PARL框架提供algorithm集合,里面包含了大量主流的经典算法和完整的超参数列表,以保障模型的复现率。
2.灵活性&易用性。
大多数开发者的终极需求,是希望借助技术框架打破算法的桎梏自由驰骋,释放自己的新想法和商业创造力。因此,框架设计一方面要平衡多元业务场景和简易训练方式之间的矛盾,另一方面则要跟上技术趋势的发展快速迭代。
比如谷歌的街机学习环境,智能体在其中是如何工作的,理解起来就非常简单,并且有详细的文档记录和原始日志。除此之外,谷歌还推出了一个TensorBoard的可视化工具套件,帮助帮助开发者在短时间内清晰直观地梳理、验证和迭代新想法。
3.框架与业务的耦合性。
尽管我们说强化学习距离产业端落地还有遥远的距离,但技术框架从基础开发就为产业结合做好准备,显然能加快这一进程。
因此,技术框架与产业端业务需求的耦合,就成为开发平台生命力的一大保障。比如百度加快跟进强化学习框架,就很好地填补了中文文档和训练数据在强化学习算法中的不足。
另外需要考虑的,则是中文世界的开发者数量、数据规模、用户体量,对技术框架的支持能力也是一大挑战。基于PaddlePaddle对大规模工业级排序/推荐等稀疏模型的支持能力,百度的PARL得以轻松扩展到百亿级别数据或特征的训练,这种并行提速的能力,更符合中国市场的真实需求。
当然,影响强化学习性能和用户选择的因素还有很多,比如社区资源的丰富,算法质量,应用工具的多元化等等。
总体而言,现阶段想要低门槛、短时间地训练处一个好的强化学习模型,还是很困难。但正如吴恩达所说的,“短期悲观,长期乐观”,深度强化学习作为机器智能接下来的发展方向,是毋庸置疑的。
想要赢得未来,这个新的竞争高地不得不去占领。强化学习的框架之争只是序曲,随着各种难度超乎想象的实际问题被一一解决,很多有趣的事情将会发生。