NLP的发展趋势:规则—>统计—>深度学习。自然语言处理的发展大致经历了4个阶段:1956年以前的萌芽期;1957-1970年的快速发展期;1971-1993年的低谷的发展期和1994年至今的复苏融合期。
自然语言处理在这一时期很快融入了人工智能的研究领域中。由于有基于规则和基于概率这两种不同方法的存在,自然语言处理的研究在这一时期分为了两大阵营。一个是基于规则方法的符号派(symbolic),另一个是采用概率方法的随机派(stochastic)。这一时期,两种方法的研究都取得了长足的发展。从50年代中期开始到60年代中期,以Chomsky为代表的符号派学者开始了形式语言理论和生成句法的研究,60年代末又进行了形式逻辑系统的研究。而随机派学者采用基于贝叶斯方法的统计学研究方法,在这一时期也取得了很大的进步。但由于在人工智能领域中,这一时期多数学者注重研究推理和逻辑问题,只有少数来自统计学专业和电子专业的学者在研究基于概率的统计方法和神经网络,所以,在这一时期中,基于规则方法的研究势头明显强于基于概率方法的研究势头。这一时期的重要研究成果包括1959年宾夕法尼亚大学研制成功的TDAP系统,布朗美国英语语料库的建立等。1967年美国心理学家Neisser提出认知心理学的概念,直接把自然语言处理与人类的认知联系起来了。
90年代中期以后,有两件事从根本上促进了自然语言处理研究的复苏与发展。一件事是90年代中期以来,计算机的速度和存储量大幅增加,为自然语言处理改善了物质基础,使得语音和语言处理的商品化开发成为可能;另一件事是1994年Internet商业化和同期网络技术的发展使得基于自然语言的信息检索和信息抽取的需求变得更加突出。2000年之后的几个里程碑事件:2001年-神经语言模型2008年-多任务学习2013年-Word嵌入2013年-NLP的神经网络2014年-序列到序列模型2015年-注意力机制2015年-基于记忆的神经网络2018年-预训练语言模型
语言模型解决的是在给定已出现词语的文本中,预测下一个单词的任务。这可以算是最简单的语言处理任务,但却有许多具体的实际应用,例如智能键盘、电子邮件回复建议等。当然,语言模型的历史由来已久。经典的方法基于n-grams模型(利用前面n个词语预测下一个单词),并利用平滑操作处理不可见的n-grams。第一个神经语言模型,前馈神经网络(feed-forwardneuralnetwork),是Bengio等人于2001年提出的。
以某词语之前出现的n个词语作为输入向量。今天,这样的向量被称为大家熟知的词嵌入(wordembeddings)。这些单词嵌入被连接并馈入隐藏层,然后将其输出提供给softmax层。最近,前馈神经网络已经被用于语言建模的递归神经网络和长期短期记忆网络所取代。近年来已经提出了许多扩展经典LSTM的新语言模型。尽管有这些发展,但经典的LSTM仍然是一个强大的基础模型。更好地理解语言模型究竟捕捉了哪些信息,也是当今一个活跃的研究领域。语言建模是无监督学习的一种形式,YannLeCun也将预测性学习称为获取常识的先决条件。关于语言建模最值得注意的方面可能是,尽管它很简单,但它是本文讨论的许多后期进展的核心:--Word嵌入:word2vec的目标是简化语言建模。--序列到序列模型:这种模型通过一次预测一个单词来生成输出序列。--预训练语言模型:这些方法使用语言模型中的表示来进行转移学习。这意味着NLP的许多重要最新进展可以归结为一种语言建模形式。为了做“真正的”自然语言理解,需要新的方法和模型。
多任务学习是在多个任务下训练的模型之间共享参数的一般方法。在神经网络中,这可以通过绑定不同层的权重来轻松完成。多任务学习的想法于1993年由RichCaruana首次提出,并应用于道路跟踪和肺炎预测(Caruana,1998)。直观地说,多任务学习鼓励模型学习对许多任务有效的表征描述。这对于学习一般的低级表示,集中模型的注意力或在有限量的训练数据的设置中特别有用。Collobert在2008年首次将多任务学习应用于NLP的神经网络。在这一框架下,词嵌入矩阵被两个在不同任务下训练的模型共享.
虽然捕获的关系word2vec具有直观且几乎神奇的质量,但后来的研究表明word2vec没有任何固有的特殊性:通过矩阵分解也可以学习单词嵌入和通过适当的调整,像SVD和LSA这样的经典矩阵分解方法可以获得类似的结果。从那时起,许多工作已经开始探索单词嵌入的不同方面(正如原始论文的引用次数所示)。尽管有许多发展,但word2ve仍然是一种流行的选择并且在今天被广泛使用。Word2vec的范围甚至超出了单词级别:带有负抽样的skip-gram,一个基于本地环境学习嵌入的方便目标,已被应用于学习句子的表示,甚至超越NLP到网络和生物序列等。一个特别令人兴奋的方向是将不同语言的单词嵌入投影到同一空间中以实现(零射击)跨语言转移。越来越有可能以完全无监督的方式(至少对于类似语言)学习良好的投影,这开启了低资源语言和无监督机器翻译的应用。
自下而上构建序列的结构递归神经网络,与从左至右或从右至左对序列进行处理的循环神经网络相比,有着明显的不同。在树的每个节点处,通过组合子节点的表示来计算新表示。由于树也可以被视为在RNN上施加不同的处理顺序,因此LSTM自然地扩展到树形结构取代序列。不仅可以扩展RNN和LSTM以使用分层结构。不仅可以根据本地语言而且可以基于语法背景来学习单词嵌入(Levy&Goldberg,2014);语言模型可以基于句法堆栈生成单词(Dyer等,2016);图形卷积神经网络可以树状结构运行(Bastings等,2017)
2014年,Sutskever等人提出了序列到序列学习,一种使用神经网络将一个序列映射到另一个序列的通用框架。在该框架中,编码器神经网络逐符号地处理句子并将其压缩成矢量表示;然后,解码器神经网络基于编码器状态逐个预测输出符号,在每个步骤中将先前预测的符号作为预测下一个的输入.
机器翻译成了这个框架的杀手级应用。2016年,谷歌宣布开始用神经MT模型替换其基于单片短语的MT模型(Wu等,2016)。根据JeffDean的说法,这意味着用500行神经网络模型替换500,000行基于短语的机器翻译代码。由于其灵活性,该框架现在是自然语言生成任务的首选框架,不同的模型承担编码器和解码器的角色。重要的是,解码器模型不仅可以以序列为条件,而且可以以任意表示为条件。这使得例如基于图片生成描述(Vinyals等人,2015),基于表格的文本(Lebret等人,2016),基于源的描述、代码更改(Loyola等,2017),以及许多其他应用程序成为可能。
序列到序列学习甚至可以应用于NLP中常见的结构化预测任务,其中输出具有特定结构。为简单起见,输出是线性化的,如下面图10中的选区解析所示。神经网络已经证明了在给予选区解析的足够数量的训练数据(Vinyals等,2015)和命名实体识别(Gillick等,2016)等的情况下,能够直接学习产生这种线性化输出的能力。
用于序列和解码器的编码器通常基于RNN,但是可以使用其他模型类型。新架构主要来自机器翻译的工作,机器翻译将作为序列到序列架构的培养皿。最近的模型是深度LSTM(Wu等,2016)、卷积编码器(Kalchbrenner等,2016;Gehring等,2017)、变换器(Vaswani等,2017)将在下一个讨论部分,以及LSTM和变压器的组合(Chen等,2018)。
注意力(Bahdanau等,2015)是神经MT(NMT)的核心创新之一,也是使NMT模型优于基于经典短语的MT系统的关键思想。序列到序列学习的主要瓶颈是它需要将源序列的整个内容压缩成固定大小的矢量。注意通过允许解码器回顾源序列隐藏状态来减轻这种情况,然后将其作为加权平均值提供给解码器的附加输入。
预训练的词嵌入与上下文无关,仅用于初始化模型中的第一层。最近几个月,一系列监督任务被用于预训练神经网络(Conneau等,2017;McCann等,2017;Subramanian等,2018)。相比之下,语言模型只需要未标记的文本;因此,培训可以扩展到数十亿单词的语料、新域和新语言。2015年首次提出了预训练语言模型(Dai&Le,2015);直到最近,它们才被证明对各种各样的任务都有益。语言模型嵌入可以用作目标模型中的特征(Peters等,2018),或者可以对目标任务数据微调语言模型(Ramachandran等,2017;Howard&Ruder,2018)。添加语言模型嵌入比许多不同任务的最新技术有了很大的改进。