最新资讯风向标

南京大学教授俞扬:走出游戏世界的强化学习

2020-12-30 13:45 作者: 来源: 本站 浏览: 26次 字号:

摘要:    南京大学教授俞扬:走出游戏世界的强化学习 (来源:网易科技)    更多精彩内容,请关注《预见未来十年!2020网易未来大会》专题报道   杭州网讯12月18日-20日,2020网易未来大会在杭州盛大举行。大会以“洞觉未见”为主题,汇聚了全球最强大脑,期...

  

   更多精彩内容,请关注《预见未来十年!2020网易未来大会》专题报道

  杭州网讯12月18日-20日,2020网易未来大会在杭州盛大举行。大会以“洞觉未见”为主题,汇聚了全球最强大脑,期盼以远见超越未见,去寻找打开未来的钥匙。

  大会上,南京大学教授,国家万人计划青年拔尖人才俞扬做了《走出游戏世界的强化学习》主题演讲,分享了一种通过深度学习,使用机器人帮助我们自主解决问题的技术。

  

style=margin:

  他认为,今天看到大部分人工智能技术其实是在扩展人类的感知,比如虚拟的场景,属于扩展人类的感知。但在整个智能系统上,除了感知、认知,还有决策。

  怎么样让机器人自主的解决问题,一个很关键的技术就是强化学习。俞扬表示,它不需要收集数据,也不需要做任何标记,而是把称之为智能体的Agent放在一个环境里,自己学会如何完成一个任务,解决一个问题。目前,在游戏环境里要做很多事情时,已经开始用强化学习。

  既然它已经能够自主在游戏环境下帮我们解决问题,有没有可能在游戏外面也能够自主解决问题呢?

  俞扬表示,在游戏上学习可以上亿次试错,但真实世界里要做上亿次试错是不可能的,哪怕今天最先进的学习方法都是上万次的试错。

  在展示了各种尝试过的方案之后,他提出一种解决方案,从数据自动还原虚拟环境,并且可以在虚拟环境里面自动做决策。

  他说,这个过程和之前的方案最大的不同,就是人可以不在环境里面,技术路线全部走通以后就可以实现机器自主决策,也期待未来能走到真正的通用人工智能道路上。

  以下为俞扬演讲的部分内容:

  大家好,非常感谢网易的邀请。

  我们这里要讲的是未来,未来是什么样子的呢,这是《I Robot》电影里描述的未来场景,实际上描述的是2035年,到现在也就是15年之后,相信这样的场景会出现,到那个时候有很多机器人在帮助我们解决一些任务。

  当我们看到这样的场景时,机器人要帮我们解决任务,和我们今天看到大部分人工技术其实是在扩展人类的感知,比如虚拟的场景,属于扩展人类的感知。但在整个智能系统上,除了感知、认知,还有决策。如果我们需要用机器人来帮助我们解决问题的话,一定需要这个机器人能够自主的解决问题。怎么样让机器人自主的解决问题,这里一个很关键的技术就是强化学习。强化学习和其他的人工智能技术有一个很大的差异,那就是它的学习范式和其它技术不太一样。

  它不需要我们去收集数据,也不需要我们去做任何标记,而是我们把称之为智能体,Agent,放在一个环境里,就像动物或者我们自己生存的一个环境里,它会和环境自己打交道,自己学会在环境里如何完成一个任务,解决一个问题。我们之前已经能看到的东西,包括在围棋、游戏上面,游戏里解决如何战胜人类,其中一半技术是靠强化学习,自己在环境里学会如何处理这样的问题。如果我们今天在游戏环境上要做很多事情时,已经开始用强化学习来解决问题,比如做一些陪玩的角色,或者直接来设计这个场景,都可以用到强化学习。

  

南京大学教授俞扬:走出游戏世界的强化学习

  但我们可能更关注的是,既然它已经能够自主在游戏环境下帮我们解决问题,有没有可能在游戏外面也能够自主的解决问题呢。这时候我们就发现在游戏里,我们用强化学习解决问题是一个很容易的事情,这个很容易不是说我们打败人类的AlphaGo技术多么简单。而是说我们在游戏场景下可以做大量的试错,在游戏场景下做错了没有任何关系,重来就可以了,不会有太大的代价。但是在真实的场景下,比如如果这个时候要做一个医疗的诊断,如果诊断错了就会带来很大的成本,一个代价。如果我们要做一个投资,投资错了也会带来巨大的损失,所以我们在真实的环境下要用强化学习的方式,让他自己学会怎么做到最优的决策,需要大量的进行试错。

  如果我们需要在游戏上学习有上亿次试错,我们在真实世界里要做上亿次试错是不可能的,哪怕今天最先进的学习方法都是上万次的试错。我们希望一次试错都不要做,才能在真实环境里把这样的技术用起来。

  我们认为这样的技术如果只能在游戏上发挥作用的话,那么它可能就是一个好看,但是不好用的技术。更进一步,像DeepMind,创造AlphaGo的这家公司,它的愿景是要做通用智能。但如果只在游戏上,只能叫做在游戏上的通用智能,而不是真正的通用智能。我们今天也在考虑怎么能把这样的技术,今天就把它用起来,所以如果我们今天从算法层面来说,这些算法一定要做大量的试错,那我们下面要面临的问题可能就是能不能有这么一个环境,这个环境和游戏一样是一个虚拟的环境,所以我们可以在里面做大量的试错。同时,它和游戏不一样,它能和我们的真实场景打通,它能够和我们在现实环境下做出来的决策效果一样。这样的话,我们就能够把这样的技术用起来。

  有没有可能做到这样的事情呢,这是有可能的。第一种最简单的方式,就是我们靠专家、靠人来把虚拟的场景搭出来,这也是我们今天见到最多的情况。实际说在很多工业场景下已经有大量的这种应用是靠人把模拟器,或者叫仿真环境搭出来之后,做一些工业上的应用。但更多的场景如果需要人来搭的话,我们搭出来的虚拟场景和真实的场景之间多少都会有出入,有的时候可能会有严重的出入。所以上面的问题就是我们能不能在有严重出入的虚拟场景下,帮助我们得到能用的智能体。一种方法,我们在很多情况下知道哪些维度模拟的不准,不准的时候可以把智能体变成能识别环境的智能体。原来只是看到下棋时棋盘上有什么,我们就决定这时候要走哪一步。而现在要看一下,我们到底在下围棋还是下象棋,还是规则不太清楚的棋。不仅能看到目前的输入是什么,而且能看到我们的环境是什么,那么它就能做到这件事情。我们有了模拟器之后可以做的一件事情,创造大量不同的模拟器出来,然后在新的环境里识别这个环境是什么,再根据这个环境来进行适应。

  这里举一个例子,我们可以看到左边和右边是两个长度不一样的手臂,但它并不知道有多长。它怎么适应这个环境呢,可以先试一下,有点像如果我们学驾驶,驾校里学驾驶用的车是非常破的车,但我们回家之后拿到一辆新车,并不需要从头来学,只需要简单摸一下这个车哪个地方对应上的,就可以去开一辆新的车。

  刚才它做的几个动作,我重复一遍。刚才它做的几个动作就是做了5个动作,适应一下自己是什么样子的,然后就可以完成任务了。它实际上并不需要做大量的试错,只需要做5个动作。如果我们真的是从头用强化学习来学的话,这个环境看上去很简单,实际上它需要有300万次试错。右边展示的是100万次试错的结果,所以大家可以看到这个结果并不好,左边我们只对环境进行了5次试错就能得到这个结果。所以即使是在虚拟的环境不是很准确的情况下,我们也能够利用这样的环境。但更希望做到的事情,把专家从这中间移除出去,实现完全自主的过程。把专家移除出去以后我们有什么呢,实际上能有的就是在场景下可能有一些历史的数据。历史的数据,我们能不能通过智能体自己去还原它现在是处于什么样的虚拟环境里,这个我们是希望能做到这样一个事情。

  我们的数据是什么样子的呢,我们的数据就是去和环境打交道的过程,看到环境是什么,我们这里做了什么事情,环境发生的变化。就像游戏一样,我看到当前的游戏场景是什么样子的,往前走了一步之后场景发生了什么变化。这个变化的过程就是我们想要模拟的虚拟环境,所以我们就想知道看到了当前的状态,做了一个动作之后,做这个动作和做另外的动作,它未来有什么不一样。如果能把这样的事情从数据上还原出来,我们就能够去自动实现虚拟的环境。

  这个事情能不能做呢,这个事情看起来就跟我们今天做人脸识别预测技术差不多,因为输入输出数据上全有,历史数据上全有。这样的事情如果是放在机器人身上的话,这里有一个很成功的案例,就是ETH做的ANYmal的机器人,传统做机器人的控制就是靠方程的方式,靠人的方式把机器人描述出来,看怎么控制。但这个工作里很有意思的,它的机器人腿的长度是多少不太清楚,关节怎么动也不太清楚,所以在实验室环境下收集了大量的机器人怎么动的数据,然后从这个数据上用深度学习的预测方法做了虚拟的环境,这就是机器人的模拟器。做了虚拟的环境之后,我们就在虚拟的环境里来训练怎么去控制机器人,所以它表现出来的会和人设计的运动,看起来更加自然,更加像动物运动方式。

  这种场景可以简单来使用深度学习,能够完成虚拟环境的构造。在更多的场景下面是不是也能够用这样的技术呢,我们发现会有很大的困难。这个困难在什么地方呢,这个困难就在于我们在实验室环境下去收集机器人运动时,收集到的是覆盖非常全面的数据。用这个数据,用简单的监督学习,大家通常理解的深度学习就可以完成虚拟环境的构造。哪怕是更复杂的环境,我们也可以用更复杂的模型来完成虚拟环境的构造。但真实的环境下,很多业务场景下,我们面临的是数据覆盖不足的情况。数据覆盖不足的情况对应的是很多地方输入面临的响应是什么,完全不知道,这件事情能不能用今天的深度学习方式直接来解决呢,是做不到的。因为不管多么复杂、多么漂亮的技术,它都有一个背后的理论假定,就是你没有见过的数据表现的不好,这个在统计上叫做“独立同分布”的假定。

  这种情况下有什么办法呢,我这里会出现一个公式,这个公式不要紧,我们解释一下它背后表示的含义。如果我们今天用深度学习技术来解决这个问题的话,它会产生一个很大的误差。这个误差看起来是什么样子呢,就是屏幕上显示的这样,哪怕有很小的误差,在等式的右边都会被平方级的放大,所以我们没有办法用今天的深度学习技术来构造一个模拟好的虚拟环境。

  有没有其他的办法?其实是有的,我们把我们的目标换一下以后,能够得到新的结果,这个结果是我们想去学习虚拟环境这件事情做了几十年以后,今天唯一出现的新结果。所以这个结果告诉我们——和以往不同的是它能把平方级误差变成线性的误差,我们今天用这样的技术解决问题,所以这是我们做的第一个能够用通用框架,能从数据里面还原虚拟的场景。

  这样的东西可以在什么地方有用?第一个场景,我们把它用在推荐上。这是和淘宝合作的项目,我们将这样的技术用于做推荐。我们做的决策,就是把商品怎么陈列出来,面临的环境是很多用户在买东西。所以要构建一个虚拟环境,就是很多虚拟用户买东西。我们对着虚拟用户,可以不计成本来做推荐,看什么样的推荐工作更好。这样的工作做完了以后,在虚拟环境下,对着虚拟用户,我们提高了4%的销量。但是对着真实用户呢?我们做了线上实验,可以提高2%的销量。

  第二个场景,和滴滴出行合作,对司机要做程序定制。我们的环境就是有司机,所以我们怎么把司机虚拟出来?我们用数据方法虚拟出来,定制了很多不同程序给它,看什么样的规划对司机来说是最好的。我们在数据下的验证,我们在虚拟司机上可以提升13%的完单量,在实际城市验证上提升11%点多的完单量以及8%以上的司机收入。

  第三个场景,物流场景。物流场景下,我们通常人工设计物流场景怎么运转,但由于这里面需要有工人捡获,所以工人行为很难被专家规则描述得很清楚。所以我们通过数据,来把工人虚拟出来了。同样的技术,我们用在天猫超市场景下,原有系统发一个订单、我们的系统发了一个订单,我们比了6天,能提升10%以上的效率,也就是说节省了10%以上的时间。

  这是闲鱼平台做的demo,闲鱼就是卖二手。如果我们卖二手没有时间砍价,就可以把底价托给机器,这个机器人要做的事情就是有买家来了以后和买家砍价,这里面包括自然语言的处理,当然这不是我们做的,我们只是做砍价决策。砍价决策,要么我不卖,要么就是你降得太低。或者我觉得可以,也可以还一点价,看什么样的成交最好。所以我们在数据验证,能够比人的成交率提升1倍以上。这几个案例,就是我们在真实业务场景下,能够用强化学习显示出来自主做决策的能力。

  还有其他的状况,其实我们觉得很大程度上,比如说自动驾驶,我们觉得自动驾驶在今天还是比较困难,困难在哪里?不是因为车难开,而是因为它面临动态不确定的环境。比如这是我们拍摄的人怎么过马路,就是街上的动态参与者的环境,所以动态参与者才是自动驾驶最大的麻烦。有了这些数据以后,我们可以还原出虚拟的人在马路上怎么走。有了这样的场景,我们可以训练一下,这里面每个能看到周围,而且根据周围情况进行反应。这种情况下,我们可以训练车怎么能够成功通过一个人群,特别是我们有很多这样的场景以后,很多很难在真实情况下被发现的corner case,在这种情况下就能被发现出来。比如这是在做加塞,在今天的道路上如果不能加塞,如果我们要通过拥挤的交通,就没有办法真正上路。