当前位置: 首页 > 科技观察

强化学习的框架会不会引爆AI开发的新脑洞?

时间:2023-03-16 14:57:56 科技观察

如果你是一个不懂算法的应用开发者,想开发一款具有AI功能的APP,你会选择:从零开始训练一个AI模型;使用开发平台的训练框架和API;  答案很明显,后者能提供技术方案且准入门槛低为王。  但是面对众多开发平台的深度学习框架,需要考虑的问题有很多:兼容性、社区资源、框架迁移等等。  最近,框架辩论的焦点已经转移到强化学习上。  谷歌去年推出了基于TensorFlow的强化学习框架Dopamine。强化学习界的明星OpenAI,也把很多算法放在了baseline上。百度最近还更新了PaddlePaddle的强化学习框架PARL。就连一向低调的网易也宣布了自研的ReinforcedProgramming框架...申请去吧,恐怕还是有点云里雾里。  所以今天我们不妨厘清一下强化学习的真正价值和实际问题。  深度学习,强化学习,深度强化学习,傻傻分不清楚?  经过几年的市场教育,大部分开发者都清楚深度学习框架能做什么,怎么做。  但是各大平台推出的强化学习框架或者说深度强化学习框架,立马让人有些摸不着头脑。他们之间的区别在哪里,各自承担什么责任?  举个例子来说明这三种机器学习方法的区别:  如果我是一个种植厂,想做一个可以识别苹果好坏的APP,那么我需要一个深度学习开发框架。在其上构建训练过程。几乎所有的开发平台都有现成的图像识别API。我只需要将训练图片(也就是各种苹果照片)拖到系统中,就可以得到一个训练好的苹果识别模型。  但是,如果我比较懒,想要一个可以学会自己采摘好的、成熟的苹果的机器人怎么办?深度学习有点混乱。  这时候需要用强化学习框架来训练一个agent。每当它摘到一个新鲜漂亮的苹果,它就会得到系统的正强化奖励。如果误摘了生的或烂的苹果,将没有奖励,甚至会因负强化而扣分。  为了获得更多的奖励,agent更愿意选择那些好的水果去摘,而放弃那些会带来0分甚至负分的水果。通过这种方法,我得到了一个可以高效采摘好水果的智能机器人。这不是一件很美好的事情吗?  但是尝到甜头后我并不满足。我不仅想让它学会摘黄瓜和西红柿,我也懒得再训练它了。这时候就需要一种全新的算法,结合深度学习和强化学习。只要告诉它新的奖励机制,机器就可以通过深度神经网络自动获得类似的技能,不需要我手动去训练它。  以前,我必须一行一行地敲代码。现在,只要有开发框架+训练样本,我就可以轻松拥有一副永不疲倦、吃苦耐劳、举一反三的智能体。谁能拒绝这样的诱惑呢?  当然这里只是简单介绍一下他们的工作模式。训练出这样一个智能模型,并应用到我们自己的产品中,是一个比较复杂的综合工程。  但是加入了强化学习功能的开发框架,大大降低了强化学习训练的编程难度和工作量。对于想做强化学习但无法从头搭建环境和训练的技术人员和企业来说,无疑是个福音。  AI开发新宠:强化学习有什么用?  如今,强化学习不仅成为学术界的宠儿,相关研究论文在各大会议上的占比也迅速攀升;各种开发平台也纷纷将强化学习框架作为部署和竞争的重点。  但问题也随之而来:框架只能降低一部分开发门槛,定制模型、调试、兼容等工作仍然需要企业投入大量的人力、物力和财力。或者不切实际,这对开发者来说无疑是非常残酷的。  因此,在贸然“模仿例子”之前,有必要弄清楚:强化学习的强项是什么?开发者在什么情况下应该向它投降?  先解释一下强化学习的核心逻辑,即智能体(Agent)可以根据环境(Environment)中奖励(Reward)的不同,判断自己在什么状态(State)下处于什么动作(Action)),从而最大化累积奖励。  比如打败围棋世界冠军的AlphaGo,在《Dota 2》中虐杀人类棋手的OpenAIFive,还有在Atari2600场比赛中获得最高分的DeepMindDQN,都是基于强化学习的。  那么它的具体特点是什么,大致可以概括为三个方面:训练样本。强化学习是通过环境给予的奖惩结果来学习的,需要有奖励的数据。交互模式。强化学习的学习过程是动态的,需要通过与环境的交互来完成。给的东西不是学什么的,没有环境也是白搭。解决这个问题。强化学习的逻辑更像人脑,主要解决智能决策问题,比如在游戏中获得高分、通用机器人、推荐系统等。  这些特殊的设置使得强化学习在很多应用领域都比传统的深度学习表现得更好,例如:  控制型智能:实时控制工业多关节机械臂,让机器人可以观看YouTube视频学习动作并将其应用到真实场景中,或者帮助无人驾驶车辆学习如何处理人和动物乱穿马路等特殊情况;*影响;电子商务推荐系统,根据用户对推荐列表的反馈(忽略、点击或购买)实时改变推荐策略。  对话生成:比如体验更好的人机多轮对话,让机器人持续生成有意义的对话,而不是胡说八道、尴尬的聊天;结合深度学习,达到更好的机器双语翻译效果。  传统的深度学习已经能够很好地解决机器感知和识别问题,但人类对机器智能的要求显然不止于此。可以处理复杂现实中的决策问题的强化学习,以及两者的融合,自然成为未来人工智能应用的重点发展方向。  在这种情况下,掌握了算法先发优势的技术平台纷纷推出RL框架,对于开发者和准入权来说无疑是最好的布局。  强化学习框架之争,究竟是何方神圣?  当然,虽然强化学习取得了很多“炫酷”的成就,但它的应用局限性也很明显,我们要提前做好准备:  比如强化学习就像刚出生的婴儿,所有的技能都要开始从头开始训练,要花很多时间教它掌握一个任务目标;  而且,强化学习只能根据即时反馈指令执行动作。下围棋和Dota可能很好,但面对个性化的语音助手之类需要记忆和推理能力的任务就有点力不从心了;  还有一个比较头疼的问题是目前的强化学习算法在稳定性和效率上参差不齐。它需要加强。  因此,如何选择适合自己业务的强化学习框架进行试水,可能是当下开发者最关心的问题。  针对强化学习的发展方向和各个平台的特点,我们有几个不成熟的建议供参考:超参数有一个小的变化,最终的性能不会受到太大影响。但强化学习(或深度强化学习)并非如此。训练结果会受到随机概率、样本效率、算法稳定性等方面的影响,带来巨大的结果差异,降低成功复现率。更严重的情况是机器认为不管怎么努力都会失败,就死机了,停止学习了。  为了解决随机性和递归问题,不同的平台有不同的解决方案。  比如谷歌正在对训练环境和测试流程进行标准化。该代码提供了60个游戏的测试覆盖率和训练数据,并使用Arcade学习环境进行了标准化的实证评估。  百度尽可能多的涵盖相关算法。PARL框架提供了算法集合,包含大量主流经典算法和完整的超参数列表,保证模型的复现率。Flexibility&EaseofUse  大多数开发者最大的需求就是借助技术框架摆脱算法的束缚,释放自己的新想法和商业创意。因此,框架设计一方面要平衡多业务场景和简单训练方式之间的矛盾,另一方面要紧跟技术趋势的发展,快速迭代。  比如Google的arcade学习环境,agent在里面是怎么工作的,非常简单易懂,而且有详细的文档和原始日志。此外,谷歌还推出了TensorBoard可视化工具套件,帮助开发者在短时间内清晰直观地梳理、验证和迭代新的想法。框架与业务的耦合  虽然我们说强化学习离工业端的落地还很遥远,但是技术框架从基础开发就已经做好了工业集成的准备,显然可以加快这个过程。  因此,技术框架与行业业务需求的耦合成为了开发平台生命力的一大保障。比如百度加速了强化学习框架的跟进,很好地填补了强化学习算法在中文文档和训练数据方面的空白。  另外要考虑的是华人世界的开发者数量、数据规模、用户体量,技术框架的支撑能力也是一大挑战。基于PaddlePaddle对大规模工业级排序/推荐等稀疏模型的支持能力,百度的PARL可以轻松扩展到百亿级数据或特征训练。这种并行提速能力更符合中国市场的真实需求。  当然,影响强化学习性能和用户选择的因素有很多,比如社区资源的丰富性、算法的好坏、应用工具的多样化等等。  总的来说,在现阶段,想要训练出一个门槛低、时间短的好的强化学习模型还是非常困难的。但正如吴恩达所说,“短期悲观,长期乐观”,深度强化学习作为机器智能的下一个发展方向是毋庸置疑的。  要想赢得未来,就必须占领这个新的竞争制高点。强化学习的框架之争只是序幕。随着各种超乎想象的实际问题被一一解决,许多有趣的事情将会发生。