为什么说强化学习在近年不会被广泛应用?

共 5636字,需浏览 12分钟

 ·

2021-03-13 15:30

来源:知乎

https://www.zhihu.com/question/404471029

文章仅做学术分享,著作权归属作者,侵删


攻城狮子(南洋理工大学,擅长强化学习、软件架构、模糊测试)回答:


做过两年多RL,发过几篇顶会,以及有幸与国内top的游戏公司合作过,落地这块有一定的经验。

尝试用大白话说点本质问题。

不被广泛应用的原因是:

数据收集过程不可控

跟监督学习不一样,强化学习的数据来自agent跟环境的各种交互。对于数据平衡性问题,监督学习可以通过各种补数据加标签来达到数据平衡。但这件事情对强化学习确实非常难以解决的,因为数据收集是由policy来做的,无论是DQN的Q-network还是AC架构里的actor,它们在学习过程中,对于任务激励信号的理解的不完善的,很可能绝大部分时间都在收集一些无用且重复的数据。


举个例子,比如一个走迷宫任务,分为A、B两个房间,agent需要从A出发,到B中拿到钥匙。从A走出去大约需要100步,这意味着需要收集房间B里的state-transition信息,需要先解决怎么绕出A。而学习在B中拿到钥匙这个目标,需要收集大量的重复经验。这些重复经验的规模很可能远远大于房间B中学习拿到钥匙所收集的数据。虽然有prioritized replay buffer来解决训练优先级的问题,但实际上是把重复的经验数据都丢弃了。在实际应用中,面对一些稍微复杂点的任务还是需要收集一大堆重复且无用的数据。这也是DRL sample efficiency差的原因之一。


环境限制

DRL问题中,环境都是从初始状态开始,这限制了很多可能的优化方向。比如在状态空间中,可以针对比较“新”的状态重点关注,控制环境多到这个状态。但目前的任务,很多环境的state-transition function都是stochastic的,都是概率函数。即便记录下来之前的action序列,由于环境状态转移的不确定性,也很难到达类似的状态。更别提policy本身也是stochastic的,这种双重stochastic叠加,不可能针对“重点”状态进行优化。

同时这种限制也使得一些测试场景成为不可能。比如自动驾驶需要测试某个弯道,很难基于当前的policy在状态空间中达到类似的状态来重复测试policy在此状态下的鲁棒性。


玄之又玄,可解释性较差

本来Q-learning就是一个通过逐步学习来完善当前动作对未来收益影响作出估计的过程。加入DNN后,还涉及到了神经网络近似Q的训练。这就是“不靠谱”上又套了一层“不靠谱”。如何验证策略是正确的?如何验证Q function是最终收敛成为接近真实的估计?这些问题对于查表型的Q-learning来说,是可以解决的,无非就是工作量的问题。但对于大规模连续状态空间的DQN来说,基本上没法做。论证一个policy有效,也就是看看render以后的效果,看看reward曲线,看看tensorborad上的各个参数。连监督学习基本的正确率都没有。然后还要根据这些结果来调reward function,基本上都在避免回答why这个问题。


随机的探索

DRL的探索过程还是比较原始。现在大多数探索,epsilon-greedy,UCB都是从多臂老虎机来的,只针对固定state的action选择的探索。扩展到连续状态空间上,这种随机探索还是否有效,在实际落地过程中,还是要打个问号。因为也不能太随机了。大家都说PPO好,SAC强,探索过程也只不过是用了stochastic policy,做了个策略分布的熵的最大化。本质还是纯随机。虽然有些用好奇心做探索的工作,但也还是只把探索任务强加给了reward,指标不治本。


比如在自动驾驶任务中,学习车不上马路牙子这件事情。DRL的探索策略是,我开车的时候都正常开,突然有一刹那我想来点新鲜的,拐到马路牙子上探索一下上马路牙子是什么后果(reward -1000!)。


然后它并没有学乖,通常要在类似位置上几千几万次马路牙子才能涨点记性,因为这个规模的数据才能回传给之前的状态转移,通过大规模训练影响决策。然而,因为探索概率还在,下次碰上随机时刻,又要上一下。这只是针对样式A的马路牙子,对于样式BCDEF,都要重复类似过程才能最终训出来一个看起来不错的司机。人类不一样,成年了(多年的智力开发),教练说别上马路牙子,基本上通过几次低速的左拐右拐就能完全胜任这个任务。DRL对于Q的估计过程过于粗暴,不会像人类那样总结出来“只要是马路牙子就不能上”这样形式化的概念,而是收集海量马路牙子的案例,来训练状态操作空间中对于类似的与之关联的操作的估计。

所以总结一下,当前DRL的实际科研的进步速度要远远慢于大众对于AI=DL+RL的期望。

能解决的问题:

  1. 固定场景:状态空间不大,整个trajectory不长

  2. 问题不复杂:没有太多层次化的任务目标,奖励好设计

  3. 试错成本低:咋作都没事

  4. 数据收集容易:百万千万级别的数据量,如果不能把数据收集做到小时级别,那整个任务的时间成本就不太能跟传统的监督相比

  5. 目标单纯:容易被reward function量化,比如各种super-human的游戏。对于一些复杂的目标,比如几大公司都在强调拟人化,目前没有靠谱的解决方案


领域来讲也就只有游戏了,而且是简单游戏,比如固定场景、小地图上的格斗,比如街霸、王者之类。要是大地图、开放世界的话,光捡个枪、开个宝箱就能探索到猴年马月了。


而且现在游戏的落地,也没想象中那么fancy,基本没有图像类输入,全是传感器类的内部数据,所以同类型任务的训练难度还没到Atari级别。比如敌方英雄冷却时间,人类是记住之后估算的,强化agent可以直接拿到实际值(这种非视觉的输入很欺负人,比如LOL的各种躲技能脚本)。其实有点类似作弊,很多行业内应用都是类似的trick搭起来的。(这里提一句,如果质疑其公平性,其实有些落地项目都不能严格说是super human的)而且训练代价超级高,特别是解决收集数据+探索,耗的CPU用量真的烧钱。最近这几年时间,DOTA2和星际基本上是游戏领域内到顶的落地了。


给大三大四研一的,想做强化的同学们一点信息:

强化学习岗位很少,因为落地难+烧钱,基本只有几个头部游戏公司会养一个规模不大的团队。

纯强化的技术栈不太好跳槽,除了游戏外,别的领域很难有应用。

20年huawei的强化夏令营,同时在线也有好几万人,想想这规模,未来几年这些研究生到job market会多卷。。。

建议是,做强化的尽量读博走研究道路,找工作要结合领域,比如游戏AI,多看点行为树之类的,这样找工作要容易一些。

有同学问推荐,我的建议是以推荐为主,RL为辅的姿态来看待这个事情。



王源(运筹优化博士、机器学习半吊子)回答:

讲个段子,权当听相声,各位看官切勿当真:

每当有人问我强化学习能否解决他们的问题时,我会说“不能”。而且我发现这个回答起码在70%的场合下是正确的。


强化学习是唯一一个可以明目张胆地在测试集上进行训练的机器学习网络。

都2020了强化学习除了能玩游戏还能做什么?


很多时候我都不知道自己 是在做强化学习 还是在做一个仿真系统。

强化学习不就是 Approximation dynamic programming 吗?(model predictive control 和 LQR 纷纷表示不服)

如果有人说机器学习是玄学炼丹的话,那是因为他还没有尝试过Reward function的设计。


说到这里我觉得我并不是不看好强化学习的应用前景,我个人感觉强化学习是目前值得研究的一个topic,那么之所以抛出上面这些对强化学习的吐槽,是希望能够全面看待问题。我非常欣赏的一句话就是 每个科研人员都必须学会如何憎恨自己研究的领域


尤其在写paper的时候我们多少都会刻意强调优点而掩盖或者回避掉缺点,这其实对于真正想要落地的研究领域是非常不健康的。希望在有生之年 可以见证在各位的努力下 能把上面那些吐槽的难题都解决了。青山不改,绿水长流,科研不易,道阻且长。



纳米酱回答:

首先,强化学习的特点是面向目标的算法,过程你基本很难拆解,没法管控,如果你的目标没法在商业公司被很好的认可,你用强化就失去了意义。


其二,目标导向最强的无非就是赚钱和省钱,就拿容易赚钱的场景,而且赚钱就是主要目标的黄赌毒系统来说。强化学习目前的样本使用率还是低,提高样本效率对系统入侵性还是太强。工业届目前大部分黄赌毒系统设计初衷是分离训练和推理阶段的,而且训练的批处理以及线上的流处理不是同一套系统,甚至完全接口都不是一个逻辑,强化学习真的完全做到online,需要耦合训练和推理过程,工程上需要批流一致化,把线上推理和online的学习放到一个工程模块里面,但是批流一致基本上不会落盘让你cat 一下中间结果,对从业者写代码能力要求略高,容易搞得线上线下不一致。


其三,有大量日记和行为数据可以重构出整个环境,而且基本上,我们不会认为最优解会超出日记的覆盖范围,最优解肯定是日记分布的一个子集。不然按照目前整个互联网kpi的设定,这个系统也是做成一坨屎才有如此显著的缺陷性,只是到底处于日记分布那一块,这个无法探明,需要人去理解目标。


最后,整个链路的优化非常扯,确实业务链路很多参数可以调,有很多貌似可以提升的操作空间,但是别忘了,一个链路节点只要是被人占据,就是一个kpi,然后系统成型以后不会有人让你把整个系统都交给一个算法管理,这种社会问题很多,导致做强化的只能做一个很小的单点问题的提升,不是系统性解决方案,强化的策略空间的可操作范围不大,没有实质的意义。



np.random(电子科大,CS硕士在读)回答:


这里尝试从两个方面进行回答:

1.  强化学习对环境的强依赖性

2. 强化学习的难封装性。


  • 环境强依赖性

一直以来强化学习都凭借其对先验数据样本的低依赖性而备受人们的喜爱,但由于整个数据训练中所有的数据样本都来自于与环境进行真实互动得到,即“试验的同时获取数据”,这就导致了强化学习必须不断和环境进行交互才能不断成长、不断进步。而强化学习的“试错机制”又决定了在训练初期,模型需要经历过非常多次的“挫折”才能学会“避免挫折”,但在某些真实场景中试错成本是很高的,拿无人驾驶来说,如果从零开始训练,汽车需要经历过很多次的撞车后才能学会不再撞车,但这样的试错成本太高了,使得人们难以接受。


为此,人们考虑过建立真实环境的模拟仿真,把在仿真中训练好的模型直接迁移应用到真实世界中,但这样就对仿真系统提出了极高的要求,仿真系统必须对真实世界进行完美的逼近仿真,保证仿真中所产生的训练数据要和现实世界中所产生的数据有非常高的还原性,即数据一致性问题。这样一来一个强化学习问题就变成了一个完美仿真的构建问题了,很多时候搭建一个高还原度仿真的难度甚至大过了强化学习本身的难度,有一点本末倒置的感觉。


“学习自仿真”又“应用于仿真”的最好实例就是游戏中的AI模型,从训练到最后应用都是在游戏环境中,这也是为什么目前RL大多数取得的成就基本都是基于游戏环境(诸如星际/腾讯的觉悟等),因此我觉得RL要想落地应用的话,训练环境应该是其中一个非常重要的考虑因素吧,如果虚拟到现实的迁移问题一旦被解决,我认为RL落地的项目会越来越多。


  • 难封装性

为什么说RL难封装?现在不是已经有那么多成熟的算法框架了吗,不是可以直接用吗?其实这里主要还是和视觉作比较得出来的结论,在之前做项目的时侯曾经接触过国外某大厂开源的一个视觉分类的框架,从GUI到算法都给你写好,你只需要按路径加载自己的图片分类数据集,点一点手指按下训练按钮算法就开始自己运行了,你甚至都不用了解Deep Learning相关的任何知识,按照使用说明加载数据集就能train出一个不错的分类模型。这真是太棒了,从模型搭建到参数设置都不用用户关心,用户要做的只有搜集自己的数据集并加载就可以,整个训练过程对用户均保持透明。那现在的RL能做到这样吗?就我的看法来说目前还是做不到的,其根本原因在于RL中一个非常重要的环节——Reward Design。


Reward的设计对于一次RL来说真的是太重要了,前段时间国外有个企业家批判现在的强化学习就是在waste time,其依据就是说RL的设计初衷本该是解放人们的劳动力,让机器自己去试错自己去学习,人们不用过多的介入,但现在RL的效果并不是这样,RL内部存在非常多的human engineering,这违背了RL的设计初衷。我并不同意他说RL就是一门waste time的技术,但就human engineering这一点上我确实深有体会,以我个人经验来说,每一次用RL解决实际问题的时候耗时最多的并不是在算法选型上,而是在做reward design。我们需要考虑大量的方法来引导模型能够学到我们期望它学到的知识,并且使用很多技巧来让每一个reward产生的是“有意义”的,也就是说目前的RL还没有足够智能到不需要人为的参与就能够快速自我进化。因此,场景的多样化和reward的处理机制复杂多样成为了RL难以被封装的一个重要原因。


因此,我个人认为要说RL在近几年内没有办法像视觉那样成熟的被广泛引用的话,主要原因应该就是以上两点吧。



俞扬(南京大学,人工智能)回答:


已经开始在应用,并且未来2-3年学术界的落地突破将受到关注。一旦扎实的落地了,强化学习将展示出前AI技术所未有的通用性,同时也是极具威胁性的技术,预测将迅速形成寡头垄断。


浏览 123
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报