人工智能首页 > 自然语言 > 正文

自然语言:发展未来

2019-08-03 阅读888次

  NLP在许多任务上的性能都已经超越了人类。听起来世界一片大好,我们把数据准备好,买一大堆机器,只需要去训练就好了,不用管太多的事情。所以现在好多人在刷榜,有了新的任务,搞一堆模型、一堆数据、一堆机器,刷个榜,我们就毕业了。

  但是我认为不是这样的,反而有强烈的危机感。

  下面我就跟大家分析一下,目前存在的问题,以及我们应该怎么做才好。

  第一个是无休止的计算资源的军备竞赛。现在大家都用大规模的机器训练,同样的算法,只要训练速度快,就可以快速迭代,然后你的水平就比别人高。与之同时,当然也特别耗资源,许多模型一训练可能要好几天或者好几万美金。有时候它管事,但有时候也不管事。举个例子:

  

[深度]周明:<a href=自然语言处理的未来之路 | CCF-GAIR 2019" src="https://static.leiphone.com/uploads/new/images/20190713/5d29a1eb267e7.png?imageView2/2/w/740" width="740" height="166"/>


  在这个例子中,它用了10倍的蛮力,但是只有0.2%的效率提升。由于用了很多的资源,造成了环境的污染。最近有一篇网上比较火的论文,就是在讨论这个计算模型。如果我们太依赖算力,就会对环境产生很大的影响。

  第二个是过度依赖数据。首先你要标数据,标注的代价是非常大的。其次,数据有隐含歧视的问题,通过数据分析,可能会得到歧视性的结果。另外数据有偏差,数据在标注的时候请人标注,人都是偷懒的,想最简单的方法去标注,结果标注的数据千篇一律,基于这样的数据学的模型也只能解决标注的数据,拿到真实任务上由于跟你标注分布不一样,所以根本不好使。比如说我们做Q&A问答系统,我们在所有的问答里面都假设是第一名,但到了搜索引擎上有很多简单的问题都解决不好。此外,还有数据隐私保护等等问题。

  我们现在再往前走一走,看一看,假如我们不在乎资源,不在乎计算,我们看神经网络处理一些典型的任务,它的表现如何,有哪些问题。

  我这里选了三个最典型的问题。第一个是Rich Resource Tasks,即有足够资源的任务,比如中英机器翻译,网上有很多的资源。第二个Low Resources Tasks,即资源很少或没有资源,比如说中文到希伯来语的翻译,几乎没有什么资源。第三个是Multi-turn Tasks,就是多轮的意思,我们的客服都是多轮的。这三类问题基本上代表了自然语言最基本的问题,如果这三类问题都解决得很好,自然语言就基本OK了。我们看看这三类问题现在处于什么位置上。

  针对Rich Resource Tasks,我们做一个中-英神经网络机器翻译错误分析。这是一个大语料训练的结果,

  

[深度]周明:自然语言处理的未来之路 | CCF-GAIR 2019


  我们可以看到,尽管是基于大语料的,但翻出来的结果还有很多错误,包括翻错词、丢词、不合语法等。

  

[深度]周明:自然语言处理的未来之路 | CCF-GAIR 2019


  例如这个“土方”不是“earth”,而是“土耳其”的意思。因为神经网络现在不可解释,它是黑箱,你也不知道它在哪儿丢的,有可能是数据问题,有可能是模型问题。

  

[深度]周明:自然语言处理的未来之路 | CCF-GAIR 2019


  还有成语,成语是很麻烦的,你即使学了很多的成语,在一个新的句子中,成语的翻译也要发生变化,所以它要动态的计算。

  所以即使在这样的足够资源的算法里面,仍然存在众多的问题要研究,比如说丢词,如何把词典集成进来,如何上下文判断一些问题,然后还有领域自适应、主体自适应等等,谁也不敢说这些问题通过Rich-Resource就解决了,这里面有上下文件联系的问题,还有数据歧视的问题,还有Multi-task learning,还有Human knowledge。

  第二个是Low Resources Tasks,就是没什么语料,学起来很难,因此要借力。常用的有三种。

  第一是迁移模型,把从其它语料中学习到的内容迁移过来。迁移训练最常见的就是前面介绍的预训练模型,把它加到目标任务上。

  第二是跨语言学习,即从其它语言学习过来。比如说英文有很多语料,我把英文的训练模型用到法语、德语上,这个方式很流行。

  第三是利用种子进行迭代学习,比如我有一个小辞典,有几条规则,有几条双语,我能不能用它当做一个引子,做一个冷启动,启动之后再迭代改进。

  虽然我们做了很多的研究,但是在Low-Resource方面,我们并没有一个很好的办法。首先Low-Resource如何建模,如何从数据分析中做无监督或少监督的学习,这是没有明确回答的问题。怎么做Transfer Learning,怎么做Unsupervised learning,也是目前的一个难题。还有一些先验的规则辞典,如何让它冷启动起来;人能不能参与其中帮助一个开始弱小的系统逐渐变得更加强大。这些都是目前热门的话题,都还没有很好地解决。

  第三个是Multi-turn Task(多轮问题)。以多轮对话为例。我们看下面这个例子:

  

[深度]周明:自然语言处理的未来之路 | CCF-GAIR 2019


  我们可以看到,对于小孩子很简单的问题,电脑却不知道该怎么回答。其原因在于目前的自然语言处理还没有很好地解决常识和推理的问题。

  

[深度]周明:自然语言处理的未来之路 | CCF-GAIR 2019


  此外,还有前后不一致、自我矛盾的问题。比如说用户问“你今天多大了”?聊天机器人说“我16了”。隔几天用户又问“你今天多大了”?它可能说“我24岁”,自己前后不一致了.还有空间不一致、逻辑不一致的问题.这就需要人跟机器对话的时候,要有一个记忆体系,把说过的话的特征存储起来,将来在用的时候,要抽取这样的信息来表征一个机器人各方面的信息。

  推理是要做很多事情。第一是要了解上下文,说过什么话,答过什么问题,干过什么事都要存储起来,记忆起来。第二是各种各样的知识要用起来。第三才是推理的部分,这里面涉及到语义分析、上下文的指代消解、省略消解。最后,还有就是可解释的问题,如果你的推理不可解释的话,那就没有人会相信,导致你的系统无法进行进一步的推进。

  

[深度]周明:自然语言处理的未来之路 | CCF-GAIR 2019


  我们要做推理,一般来讲就是设计这样的模型.它有记忆,记住我说过什么话,或者有哪些知识;有一个读的装置和一个写的装置,来了一个问题,经过分析,到记忆里把状态和知识找出来,把原来的记忆找出来,然后改变我们的对话状态;更新在记忆里的一些存储。得到答案后,还要反过来更新我们的记忆和存储。


随意打赏