2
雷锋网按:随着 DARPA(美国国防高级研究计划局)的项目 L2M(终身学习机器)和欧盟联合项目 LLIS(智能系统的终身学习)出现,LML(终身机器学习)开始备受关注。研究者们意识到在一种数据集中运行一种机器算法的传统机器学习范例远远不能达到真正意义上的智能,它只适用于狭窄的领域。人类自身的学习过程则与之截然不同。我们在开放环境中能够持续学习,积累学习到的知识,并用于未来的学习和解决问题当中。
LML 旨在达到这些能力。在 NLP 中,聊天机器人等具有语言能力的机器人越来越被广泛使用。对这些系统而言,在开放的世界中与人类和其他机器人的互动中不断学习,能够实现更好地聊天是梦寐以求的。在这次演讲中,刘兵教授将主要讲述这种模式转变,关于 NLP 进入下一层级的最新研究以及 LML 所面临的挑战。
刘兵,伊利诺伊芝加哥分校教授,ACM、AAAI、IEEE Fellow,主要研究领域有终身机器学习、情感分析、数据挖掘、机器学习和自然语言处理。
以下为刘兵教授在第二届语言与智能高峰论坛的演讲,雷锋网做了不改变原意的删减。
我今天想讲的是我这几年做的一个事情,是讲怎么样让机器能够永远一直学下去,而不是说像现在这种还是一个一个的去学。
我的应用主要还是在自然语言方面比较多一些。为什么我们做机器学习的人,还是在做一个 Isolated Single-task Learning(单任务学习),它不考虑别的事情。如果我们要用图来表示,先来 Task T,然后来一个 Data T,通过机器学习算法算出一个 Model,它拿来直接用就是 Application。
但是这个有什么问题呢?它不考虑其他与之相关的事情,而且不考虑你以前学过的东西,这就存在很多问题,使得机器在学的时候需要非常大的数据,没有人那种长期记忆在里面,只能解决非常狭窄的问题。
虽然我们做了很多应用,但我觉得真正的智能真的没有达到,我们要做的是怎么样让机器能够自驱动来学习。这样才能够举一反三达到人的智能,而仅仅只有单任务学习是不够的。
我们怎么样把这个事情解决呢?很多学者研究小样本学习,或者根本不要样本,但这个东西都是需要 Prior Knowledge(先验知识)的,没有知识就不可能学。这个问题就大了,这些先验知识哪里来的?
你说是人给的,但这不靠谱,我觉得这不是一个理想的解决方案。而应该是在这个过程中积累一些知识,然后用在将来,这也是我对终身机器学习感兴趣的驱动力,如果这个只是有人在这边辅助,意义就不大了,这不是智能。
人的学习和机器学习还不太一样,举一个很简单的例子,你给我 1000 个正例和 1000 个负例,然后可以让机器学习学一个 Model 出来。可是你想想,你这辈子有过这种经历吗?从来没有。
如果你没有知识,就算给你这个东西你也学不到。比如说我现在给你中文文章,你可以看看,大概知道这个主题是什么,但阿拉伯语的文章你不懂,给你 1000个、10000 个,你能学得了吗?我觉得你肯定学不了,除非你用了翻译。所以,人其实不是这样学的。
无论如何,Humans never learn in isolation from scratch(人类永远不会从零开始学习)——不是说任何一件事情都是从头开始,过去的什么事情都不知道。而是随着我们从小到大积累了很多知识,然后用这些积累的知识帮助我们去学,而且需要自驱学习,就是你自己怎么样去往前走。
比方说,人给你一个问题你去解决,人不给你问题怎么办?那你就不管了是不是?在这个开放世界里 ,那你是没办法生存的,没办法得到更多的知识。
我们就是需要让终身机器学习模仿人的学习能力。如果机器没有这个能力真正的人工智能不可能出现,这是我自己的观点,虽然可能跟别人可能不一样,但我坚持己见。
终身机器学习正在引起人们关注,去年我跟学生写了一本书,叫《Lifelong Machine Learning》。今年美国的 DARPA 有一个很大的项目叫做 Lifelong Learning Machines(终身学习机器)。可是,我最早知道这个事情是今年 3、4 月的时候,欧洲办公室当时给我寄一个东西,我一看是 European Union Coordinated 的项目,就是很多国家一起搞的,叫做“智能系统的机器学习”,这个问题实在是非常的难解决,但引起了人们的重视。
在自然语言方面,举个例子,我做 Sentiment Analysis(情感分析)的时候,就觉得这个东西好像是越学(要学的)东西就越少,这是怎么回事?之前美国一个公司也需要做情感分析,但是我们做着做着,感觉怎么这个跟以前的差不多,这个东西好像我也做过。就是虽然你觉得其实每个都不一样,但你做着做着就觉得这个东西好像是不需要做的,差不多都是过去的东西。
所以,你们想一想人是不是这样?从小你学习,越学越没啥学的了?这就让我想起来,我们能不能来建模型这个事情。
又让我想起了,大部分的领域的产品特征有很多重复,当然你看看这边,每个领域都有一个 Price、Battery、Screen,现在我们的学生给百示麦(音)做一个项目,做一千多个类别,你想想,如果你一个一个去做的话,做得了吗?
后来我们也做了一些比较,刚才有人讲,我们要用经验知识帮助解决下一个问题,可是后来又想想,这个先验知识哪里来的?所以我们也在文章中也做了说明。
另外一个,我讲的是自然语言对终身学习非常的适合,为什么呢?因为自然语言不管到什么地方,虽然存在有一些歧义,但基本上都是一样的。
自然语言的知识自然是积累性和组合性的,有一个排列组合在里面。而且不同的 Task 其实都是相关的,不管在什么领域,你都是可以应用的。
我现在讲一个,终身学习的定义是什么?
这是比较早的定义,我们加了一个 Knowledge Base(知识库),就是这个长期记忆在里面,这个定义其实还不够。在任何一个时段,我已经解决了很多的问题,现在面临的新问题,可以用我以前学过的知识,来帮我解决问题,让它可能做的更好,或者要很少的数据,算得更快。把这个做完了以后,知识还可以返回到这个系统里面,然后这个知识接着又可以帮将来的人做这个事情。
我们去年写书的时候,给了一个定义,这个定义其实不够完整。你要是从图上看的话,那个定义基本上就是像这样的。这个 Task 就是 T1、T2...直到最后到 Tn+1。
这个问题就是它也有数据,这个 Learner 就是机器学习的算法得要有知识,或者说传统那种比如 SCM,你直接上就可以,你要知道怎么样用知识。
学术东西那边存起来就是,还有一个就是 Past Knowledge 帮助我学习下一个问题,来学的更好。当然,然后就是输出,所以这个定义就是根据前面那个来表述的。
现在我们的定义是这样的,前部分还是一样的,后面加了一些,就是最后这两边 Discovered new problem(发现新问题),你的模型运行的时候,要发现新的问题。要不然的话,这个也不靠谱。
另外就是说,这个世界是一个动态的、开放的世界,不能说你学到什么东西,这个世界就只有那些东西。这个世界不是封闭的,比如说自动驾驶,你如果用传统那个学法,你这个车永远开不了。
怎么样发现问题,然后自动去学,你可以重新返回来,重新给我一个任务,接着学,所以这部分我们就可以闭环,这个就是自驱动学习。
我们底下加了一个的部分,就你在用这个模型的时候,我还可以接着学,就是说我用这个模型很久以后,这个模型变得更好,现在基本上算法可以做到这一点。
为什么这个很重要?因为跟人是一样的。你在学校,老师教你学什么东西,学了这些东西,然后要下去实践。实践的时候还得学,不是说刚才教你了之后,老师教我啥我就只会干啥。这是不可能的事情,因为这个世界太复杂,你要有这种能耐。
最后我们就成为比较有意思的闭环,那么 Application(应用)可以非常的复杂,里面有人、还有其它东西,可以给你的环境的反馈,如果能够这样的话,那是比较理想化的了,这就是终生机器学习的一个定义,跟我今年做的东西有一些关系。
另外一个就是它的主要特点是什么?其实还应该再加一个,就是一个不间断的学习过程,不是说我不学,或者是我干这个事情就不干;还有一个是知识非得要积累,得要有一个长期记忆。
还有就是你一定要在用的时候,就是怎么样适应、知道这个知识是否适合你,这个知识怎么样用到你遇到的这种新情况。我们还有一个可以加的,就是说你可以自己发现问题,在运用的时候还可以自己改进。
其实很多人都在朝这个方向走,最明显的就是 Transfer Learning(转化学习) 和 Multitask Learning(多任务学习),转化学习大家可能都比较熟悉,就是说怎么样用 Source Domain(源域) 很多数据来帮助学这个 Target Domain(目标域),后者可能就没有什么数据。
它还不是一个持续学习过程,还是比较人为的东西。就是说我知道这个能够帮那个,不是说我自己去找知识,而是我知道这个能够帮那个,所以我才这样做。它其实也没有一个知识积累,它还是一个单向性的。
多任务学习其实跟传统的也没有太大的差别,我把很多任务一起连结优化。但也存在一些问题,它除了数据没有知识积累,任务多样时很难再学习。我们就想从这方面看有没有什么突破,但这是非常难的。
我现在讲几个例子,Lifelong Supervised Learning(终身监督学习)怎么去做?别人也做了一些,但不是跟自然语言相关的。
这是一个我自己做一些情绪分类,这就是一个简单的例子。
现在的算法,基本上来说,如果我给你一些数据,把它放在一个终身学习的架构里面,假设我以前做过很多,但现在这些新的东西可能就不需要太多的数据。虽然这个东西是新的,但很多情况下不需要数据,因为每个东西都是很相像的。
如果我用同样的数据,只用这个领域或者用过去的数据,它的结果可能相差非常大。过去因为我见识多,所以我做的就比你做的好。
但是有时候又不行,为什么不行呢?这是一个很大的问题,就是你怎么知道过去的知识是不够用的?会有两个问题:
第一,我们现在做的很多都是 Statistics Learning(统计学习),不能保证正确性。
第二,既然不能保证正确,它到这里是不是适合?
所以,最后这个例子就是说,我们做了很多领域了,现在要做的这个领域就是个玩具。在很多领域里面,你说个东西就是一个玩具,一般来说这个是不好的,这个东西没什么用。所以要用适合你用的,不要去用不适合你用的。
这就是两个非常重要的问题。我们最后是用一种在训练数据中没有出现的东西,就是说可以考虑过去的东西好不好?适合不适合使用?
还有一个很有意思的问题,就是说如果现在只用传统的办法,只用训练数据来分出这个测试数据,如果你的训练数据没有见过一个词,你在测试的时候,你不敢用的,对不对?一般你是不用的,把它丢了,因为你不做这个,没有见过,但是这里我就可以用。
另外就是说 Lifelong Unsupervised Learning(终身无监督学习),这是是我们最早做的,我们开始做的就是 Knowledge Base(知识库),然后最后就是我刚刚说的,你让它自己生成知识,做的更加智能。
我们用主题模型,我可以在很多文档找出一些主题,但它是一些词,一些组成元素。比如说我找那个主题我也不管它是啥,比如像这些词 Money,Dollar 这些词。
这个问题需要很大量的知识来做这件事情,就是现实中有很多数据,结果还不一样。过去我已经见过的这些东西,已经做过这个事情,但是在做新的时候,就可以做的很好,虽然我过去见的东西跟你这个不完全一样,但是有很多东西是一样的。
我就可以去找适合我用的东西,不用我不适合的。因为它有很多 Sharing,让你可以不用,也可以用。这个算法是什么意思呢?就是说我先拿这个模型来算一下,这个数据还是有点多,我用这个模型来试的时候,基本上我知道我这里有啥。
然后我就去在我的知识库里面就去匹配,哪些东西跟我比较像,我就可以做一些数据挖掘,给它做出比较好的结果,就是这样的。这个全部的过程,不需要人给任何指示。不像我们以前最早做的事,需要人为给你一些东西。
比如说,我现在这个领域有一个主题。我到过去做过的东西,找到一些跟我差不多的,然后再做一个数据挖掘,这个最终是来干什么的呢?就是我要保证过去的知识是正确的,不能说我见过一次就觉得正确,而是见过很多次,然后觉得这个可能还比较靠谱,用这个知识反过来建模。
另外一个我想讲的就是怎么在开放世界中学习,当你这个算法放在这个世界里面,这个世界里面不光是你需要去学会的东西,还有其它的东西你没有学过。你没有学过怎么办?
我们现在机器学习基本上是一个很狭窄的,因为我学到的东西跟我将来见的东西是一样的,比如说我现在做一个分类,其实是说现在学的时候有 5 个 Class,在用的时候,我觉得这个世界里只有 5 个 Class,没有别的东西。你想想这东西靠不靠谱?如果你想做自动驾驶的话,你绝对没办法开始。因为自动车要见的东西太多了,太复杂了。
这个系统如果不知道它们自己知道什么,不知道什么,它是没办法学习的。如果这个事情全都是我知道的,那你学什么呢?所以你要知道什么东西你不知道,然后你才能越学越多,这个是什么问题呢?当然问题很简单,就是说我现在学的很多 Class,我的 Class Level 是从 1 到 P 的。
假设这个开放域还有其它的东西,我不知道这个东西是什么,但是最起码要知道这个东西我知不知道。然后你的模型要自己想一想怎么办,要是你采取这种方式,这个算法就要改一改。
我们讲个算法,第一个算法就是比较简单的一个算法,是一个 Space Transformation(空间转换),但是我们做的效果不是很好。
下面是传统学习和 CBS 学习的一个比较。假设你在实践中见到这些一些其它的东西,你怎么办?如果是传统的分类的话,就是说这个是正的,但是这个肯定是不合适的,对不对?
然后,我们应该怎么做呢?办法就是在这里找一个中心点,在这个阵列里每个 Class 基本上找一个中心,比如说这个中心在这里,我们就可以做。在那个 Space 上做一个 Learning,再回到这个 Space,是不是基本上就是个圆。这样的话,就可以做到我知道这个不是我,我见到新的东西了,要去学这个新的东西。
我们学到这个东西,知道这个东西以后,我知道这个东西不是我的,要怎么自动去学它?当然有这些情况:一个就是我们说的 Text,Text 有一点麻烦,就是说这个东西可能不同的类别,这个之后就要求帮助了,大概就是这样。
假设这个如果是一个 Picture,Object,我们就可以完成。比如说我见到一个人,这个人我不认识,我可以问他怎么样,叫什么名字。下次就可以放很多照片,然后把他选下来,下次我在见到他的时候,这人我认识,完全可以。
怎么样让模型用到学习的时候,让这个模型越做越好?要在测试和执行中改进模型,有一个想法是从提取结果连结这些特征,使更多结果变成更好的特征。
今天,我介绍了终身机器学习和一些 NLP 的应用。最后我总结一下,这个领域确实比较难,就是这个知识你不知道正不正确,就算正确,也不一定能用。
现有的终身机器学习仍然处于非常初期的阶段,我们对它的理解也是非常有限的;其次,存在很大的挑战,包括知识呈现和推理、自驱学习、组合性等方面,这是下一步需要解决的问题。
(雷锋网整理)
雷峰网原创文章,未经授权禁止转载。详情见转载须知。