自然语言处理(Natural Language Processing,NLP)已经慢慢演变为计算机科学领域与人工智能领域中的一个重要方向,高效地用自然语言与计算机进行通信,被视为解决人工智能完备(AI-complete)的核心问题之一,其中存在着一系列挑战。

  科技知名博主Sebatian Ruder近期的一篇文章讨论了NLP领域近15年来的的八个主要近期进展,重点是基于神经网络的方法。

  八个自然语言处理重大里程碑:

  2001年 - 神经语言模型

  2008年 - 多任务学习

  2013年 - Word嵌入

  2013年 - NLP的神经网络

  2014年 - 序列到序列模型

  2015年 - 注意力机制

  2015年 - 基于记忆的神经网络

  2018年 - 预训练语言模型

  其他重要里程碑

  非神经里程碑

  2001年 - 神经语言模型(Neurallanguage models)

  语言建模是在给定前面的单词的情况下,预测文本中的下一个单词的任务。它可能是最简单的语言处理任务,但却具有实际应用,如智能键盘和电子邮件回复建议。

  语言建模有着深厚的历史。Bengio等人于2001年提出了第一个神经语言模型,它是一种前馈神经网络,如下图1所示。

  图1:前馈神经网络语言模型

  以某词语之前出现的n个词语作为输入向量。今天,这样的向量被称为大家熟知的词嵌入(word embeddings)。这些单词嵌入被连接并馈入隐藏层,然后将其输出提供给softmax层。

  最近,前馈神经网络已经被用于语言建模的递归神经网络和长期短期记忆网络所取代。近年来已经提出了许多扩展经典LSTM的新语言模型。尽管有这些发展,但经典的LSTM仍然是一个强大的基础模型。更好地理解语言模型究竟捕捉了哪些信息,也是当今一个活跃的研究领域。

  语言建模是无监督学习的一种形式,Yann LeCun也将预测性学习称为获取常识的先决条件。关于语言建模最值得注意的方面可能是,尽管它很简单,但它是本文讨论的许多后期进展的核心:

  Word嵌入:word2vec的目标是简化语言建模。

  序列到序列模型:这种模型通过一次预测一个单词来生成输出序列。

  预训练语言模型:这些方法使用语言模型中的表示来进行转移学习。

  这意味着NLP的许多重要最新进展可以归结为一种语言建模形式。为了做“真正的”自然语言理解,需要新的方法和模型。

  2008年 - 多任务学习(Multi-tasklearning)

  多任务学习是在多个任务下训练的模型之间共享参数的一般方法。在神经网络中,这可以通过绑定不同层的权重来轻松完成。多任务学习的想法于1993年由Rich Caruana首次提出,并应用于道路跟踪和肺炎预测(Caruana,1998)。直观地说,多任务学习鼓励模型学习对许多任务有效的表征描述。这对于学习一般的低级表示,集中模型的注意力或在有限量的训练数据的设置中特别有用。

  Collobert在2008年首次将多任务学习应用于NLP的神经网络。在这一框架下,词嵌入矩阵被两个在不同任务下训练的模型共享,如图2所示。

  图2:语嵌入矩阵的共享

  共享单词嵌入使模型能够在单词嵌入矩阵中协作和共享一般的低级信息,这通常构成模型中最大数量的参数。Collobert和Weston在2008年的论文中证明了它在多任务学习中的应用。它引领了诸如预训练单词嵌入和使用卷积神经网络(CNN)之类的方法,这些方法仅在过去几年中被广泛采用。他们也因此获得了2018年机器学习国际会议(ICML)的“时间测试”奖。

  多任务学习现在用于各种NLP任务,并且利用现有或“人工”任务已成为NLP指令集中的有用工具。虽然通常预先定义参数的共享,但是在优化过程期间也可以学习不同的共享模式。随着模型越来越多地评估多项任务以评估其泛化能力,多任务学习越来越重要,最近又有提出了多任务学习的专用基准。

  2013年 - 词嵌入(Word embeddings)

  词嵌入在2001年首次出现。而Mikolov等人在2013年作出的主要创新——是通过删除隐藏层和近似目标来使这些单词嵌入的训练更有效。虽然这些变化本质上很简单,但它们与高效的word2vec(word to vector,用来产生词向量的相关模型)组合在一起,使得大规模的词嵌入模型训练成为可能。

  Word2vec有两种风格,可以在下面的图3中看到:CBOW(continuous bag-of-words)和skip-gram。它们的目标不同:一个基于周围的单词预测中心词,而另一个则相反。

  图3:CBOW和skip-gram架构

  虽然这些嵌入在概念上与使用前馈神经网络学习的嵌入技术没有什么不同,但是对非常大的语料库的训练使它们能够捕获诸如性别,动词时态和国家之类的单词之间的某些关系,这可以看出在下面的图4中。

  图4:word2vec捕获的关系

  这些关系及其背后的意义引发了对嵌入词的初步兴趣,许多研究调查了这些线性关系的起源。然而,使词嵌入成为目前自然语言处理领域中重要一步的,是由于将预训练的词嵌入矩阵用于初始化可以提高大量下游任务性能。

  虽然捕获的关系word2vec具有直观且几乎神奇的质量,但后来的研究表明word2vec没有任何固有的特殊性:通过矩阵分解也可以学习单词嵌入和通过适当的调整,像SVD和LSA这样的经典矩阵分解方法可以获得类似的结果。

  从那时起,许多工作已经开始探索单词嵌入的不同方面(正如原始论文的引用次数所示)。尽管有许多发展,但word2ve仍然是一种流行的选择并且在今天被广泛使用。Word2vec的范围甚至超出了单词级别:带有负抽样的skip-gram,一个基于本地环境学习嵌入的方便目标,已被应用于学习句子的表示,甚至超越NLP到网络和生物序列等。

  一个特别令人兴奋的方向是将不同语言的单词嵌入投影到同一空间中以实现(零射击)跨语言转移。越来越有可能以完全无监督的方式(至少对于类似语言)学习良好的投影,这开启了低资源语言和无监督机器翻译的应用。

  2013年-用于自然语言处理的神经网络(Neural networks for NLP)

  2013年和2014年标志着神经网络模型开始在NLP中被采用的时间。三种主要类型的神经网络成为使用最广泛的:循环神经网络(recurrent neural networks)、卷积神经网络(convolutionalneural networks)和结构递归神经网络(recursive neural networks)。

  递归神经网络(RNN)是处理NLP中普遍存在的动态输入序列的理想选择。Vanilla RNNs很快被经典的长期短期记忆网络(LSTM)所取代,后者证明其对消失和爆炸梯度问题更具弹性。在2013年之前,仍然认为RNN很难训练;Ilya Sutskever的博士论文是改变这一局面的一个关键例子。LSTM细胞的可视化可以在下面的图5中看到。双向LSTM通常用于处理左右上下文。

  图5:LSTM网络(来源:Chris Olah)

  随着卷积神经网络(CNN)被广泛用于计算机视觉,它们也开始应用于语言(Kalchbrenner等,2014;Kim等,2014)。用于文本的卷积神经网络仅在两个维度上操作,其中滤波器仅需要沿时间维度移动。下面的图6显示了NLP中使用的典型CNN。

  图6:用于文本的卷积神经网络(Kim,2014)

  卷积神经网络的一个优点是它们比RNN更容易并行化,因为每个时间步的状态仅取决于本地环境(通过卷积运算)而不是像RNN中的所有过去状态。 CNN可以使用扩张的卷积扩展到更宽的感受域,以捕捉更广泛的背景(Kalchbrenner等,2016)。CNN和LSTM也可以组合和堆叠,并且可以使用卷积来加速LSTM。

  RNN和CNN都将语言视为一个序列。然而,从语言学的角度来看,语言本质上是等级的:单词被组成高阶短语和子句,它们本身可以根据一组生产规则递归地组合。将句子视为树而不是序列的语言启发思想产生了递归神经网络,这可以在下面的图7中看到。

  图7:结构递归神经网络(Socher等,2013)

  自下而上构建序列的结构递归神经网络,与从左至右或从右至左对序列进行处理的循环神经网络相比,有着明显的不同。在树的每个节点处,通过组合子节点的表示来计算新表示。由于树也可以被视为在RNN上施加不同的处理顺序,因此LSTM自然地扩展到树形结构取代序列。

  不仅可以扩展RNN和LSTM以使用分层结构。不仅可以根据本地语言而且可以基于语法背景来学习单词嵌入(Levy&Goldberg,2014);语言模型可以基于句法堆栈生成单词(Dyer等,2016);图形卷积神经网络可以树状结构运行(Bastings等,2017)。

  2014年 - 序列到序列模型(Sequence-to-sequence models)

  2014年,Sutskever等人提出了序列到序列学习,一种使用神经网络将一个序列映射到另一个序列的通用框架。在该框架中,编码器神经网络逐符号地处理句子并将其压缩成矢量表示;然后,解码器神经网络基于编码器状态逐个预测输出符号,在每个步骤中将先前预测的符号作为预测下一个的输入,如下面的图8所示。

  图8:序列到序列模型(Sutskever等,2014)

  机器翻译成了这个框架的杀手级应用。 2016年,谷歌宣布开始用神经MT模型替换其基于单片短语的MT模型(Wu等,2016)。根据Jeff Dean的说法,这意味着用500行神经网络模型替换500,000行基于短语的机器翻译代码。

  由于其灵活性,该框架现在是自然语言生成任务的首选框架,不同的模型承担编码器和解码器的角色。重要的是,解码器模型不仅可以以序列为条件,而且可以以任意表示为条件。这使得例如基于图片生成描述(Vinyals等人,2015)(如图9),基于表格的文本(Lebret等人,2016),基于源的描述、代码更改(Loyola等,2017),以及许多其他应用程序成为可能。

  图9:基于图像生成标题(Vinyals等,2015)

  序列到序列学习甚至可以应用于NLP中常见的结构化预测任务,其中输出具有特定结构。为简单起见,输出是线性化的,如下面图10中的选区解析所示。神经网络已经证明了在给予选区解析的足够数量的训练数据(Vinyals等,2015)和命名实体识别(Gillick等,2016)等的情况下,能够直接学习产生这种线性化输出的能力。

  图10:线性化选区分析树(Vinyals等,2015)

  用于序列和解码器的编码器通常基于RNN,但是可以使用其他模型类型。新架构主要来自机器翻译的工作,机器翻译将作为序列到序列架构的培养皿。最近的模型是深度LSTM(Wu等,2016)、卷积编码器(Kalchbrenner等,2016;Gehring等,2017)、变换器(Vaswani等,2017)将在下一个讨论部分,以及LSTM和变压器的组合(Chen等,2018)。

  2015年 - 注意力机制(Attention)

  注意力(Bahdanau等,2015)是神经MT(NMT)的核心创新之一,也是使NMT模型优于基于经典短语的MT系统的关键思想。序列到序列学习的主要瓶颈是它需要将源序列的整个内容压缩成固定大小的矢量。注意通过允许解码器回顾源序列隐藏状态来减轻这种情况,然后将其作为加权平均值提供给解码器的附加输入,如下面的图11所示。

  图11:注意力机制(Bahdanau等,2015)

  注意力机制是神经网络机器翻译 (NMT) 的核心创新之一,广泛适用,并且可能对任何需要根据输入的某些部分做出决策的任务有用。它已被应用于句法分析(Vinyals等,2015)、阅读理解(Hermann等,2015)和单样本学习(Vinyals等,2016)等等。输入的甚至不需要是一个序列,可以包括其他表示,比如图像的描述(图 12)。注意力的一个有用的副作用是,通过根据注意力量检查输入的哪些部分与特定输出相关,它提供了罕见的对模型内部运作机制的观察。

  图12:图像字幕模型中的视觉注意,指示模型在生成单词“飞盘”时所遵循的内容。(Xu等,2015)

  注意也不仅限于查看输入序列;自我注意可用于查看句子或文档中的周围单词以获得更多上下文敏感的单词表示。多层自我关注是Transformer架构的核心(Vaswani等,2017),这是目前最先进的NMT模型。

  2015年 - 基于记忆的神经网络(Memory-based networks)

  注意力可以看作是模糊记忆的一种形式,其中记忆由模型的过去隐藏状态组成,模型选择从记忆中检索的内容。有关注意事项及其与内存的关联的更详细概述,请查看此文章。已经提出了许多具有更明确记忆的模型。它们有不同的变体,例如神经图灵机(Neural Turing Machines)、记忆网络(Memory Network)、端到端的记忆网络(End-to-end Memory Newtorks)、动态记忆网络(DynamicMemory Networks)、神经可微计算机(Neural Differentiable Computer)、循环实体网络(RecurrentEntity Network)。

  通常基于与当前状态的相似性来访问存储器,类似于注意机制,并且通常可以写入和读取存储器。模型在实现和利用内存方面有所不同。例如,端到端内存网络多次处理输入并更新内存以启用多个推理步骤。神经图灵机还具有基于位置的寻址,允许他们学习简单的计算机程序,如排序。基于内存的模型通常应用于任务,其中保留较长时间跨度的信息应该是有用的,例如语言建模和阅读理解。存储器的概念非常通用:知识库或表可以用作存储器,而存储器也可以基于整个输入或其特定部分来填充。

  2018年 - 预训练语言模型(Pretrained language models)

  预训练的词嵌入与上下文无关,仅用于初始化模型中的第一层。最近几个月,一系列监督任务被用于预训练神经网络(Conneau等,2017;McCann等,2017; Subramanian等,2018)。相比之下,语言模型只需要未标记的文本;因此,培训可以扩展到数十亿单词的语料、新域和新语言。2015年首次提出了预训练语言模型(Dai&Le,2015);直到最近,它们才被证明对各种各样的任务都有益。语言模型嵌入可以用作目标模型中的特征(Peters等,2018),或者可以对目标任务数据微调语言模型(Ramachandran等,2017; Howard&Ruder,2018)。添加语言模型嵌入比许多不同任务的最新技术有了很大的改进,如下面的图13所示。

  图13:改进的语言模型嵌入(Peters等,2018)

  已经展示了预训练语言模型,可以用更少的数据进行学习。由于语言模型仅需要未标记的数据,因此对于标记数据稀缺的低资源语言尤其有用。

  其他里程碑

  其他一些发展不如上面提到的那么普遍,但仍然具有广泛的影响。

  比如基于字符的描述(Character-based representations),在字符上使用CNN或LSTM来获得基于字符的单词表示是相当普遍的,特别是对于形态学丰富的语言和形态信息很重要或具有许多未知单词的任务。据我所知,基于特征的表示首先用于序列标记(Lample等,2016;Plank等,2016)。基于字符的表示减少了必须以增加的计算成本处理固定词汇表的需要,并且能够实现诸如完全基于字符的NMT之类的应用(Ling等人,2016; Lee等人,2017)。

  对抗学习(Adversarial learning)已经全面入侵和颠覆了及其计算领域,并且在NLP中也以不同的形式使用。对抗性示例越来越广泛地被广泛使用,不仅作为探测模型和理解其失败案例的工具,而且还使它们更加强大(Jia&Liang,2017)。 (虚拟)对抗性训练,即最坏情况的扰动(Miyato等,2017; Yasunaga等,2018)和域对抗性损失(Ganin等,2016; Kim等,2017)是有用的正规化的形式可以同样使模型更加坚稳。生成对抗网络(GAN)对于自然语言生成来说,还不是太有效(Semeniuta等,2018),但是例如在匹配分布时是有用的(Conneau等,2018)。

  强化学习(Reinforcement learning)已经被证明对于具有时间依赖性的任务是有用的,例如在训练期间选择数据(Fang等,Wu等,2018)和建模对话(Liu等,2018)。RL对于直接优化诸如反向强化学习在奖励太复杂而无法指定的环境中可能是有用的,例如视觉叙事(Wang等,2018)。

  非神经里程碑

  在1998年以及随后的几年中,引入了FrameNet项目(Baker等,1998),这导致了语义角色标记的任务,这是一种浅层语义分析,至今仍在积极研究中。在21世纪初期,与自然语言学习会议(CoNLL)共同组织的共同任务催化了核心NLP任务的研究,如分块(Tjong Kim Sang等,2000),命名实体识别(Tjong Kim Sang等,2003),以及依赖性解析(Buchholz等,2006)等。许多CoNLL共享任务数据集仍然是当今评估的标准。

  2001年,引入了条件随机区域(CRF; Lafferty等,2001),这是最具影响力的序列标记方法之一,在ICML 2011中获得了时间测试奖.CRF层是核心部分目前最先进的模型用于序列标记问题与标签相互依赖性,如命名实体识别(Lample等,2016)。

  2002年,提出了双语评估替代研究(BLEU; Papineni等,2002)度量,这使得MT系统能够扩展,并且仍然是目前MT评估的标准度量。同年,引入了结构化先行者(Collins,2002),为结构化感知工作奠定了基础。在同一次会议上,引入了情感分析,这是最受欢迎和广泛研究的NLP任务之一(Pang等,2002)。这三篇论文都获得了2018年NAACL的时间测试奖。

  2003年引入了潜在的dirichlet分配(LDA; Blei等,2003),这是机器学习中使用最广泛的技术之一,它仍然是进行主题建模的标准方法。2004年,提出了新的最大边际模型,它们更适合捕获结构化数据中的相关性而不是SVM(Taskar等,2004a; 2004b)。

  2006年,OntoNotes(Hovy等,2006)引入了一个具有多个注释和高交互注入协议的大型多语言语料库。 OntoNotes已被用于培训和评估各种任务,例如依赖性解析和共参考解析。 Milne和Witten(2008)在2008年描述了维基百科如何用于丰富机器学习方法。到目前为止,维基百科是用于训练ML方法的最有用的资源之一,无论是用于实体链接和消歧,语言建模,作为知识库还是各种其他任务。

  2009年,提出了远程监督的想法(Mintz等,2009)。远程监督利用来自启发式或现有知识库的信息来生成可用于从大型语料库中自动提取示例的噪声模式。远程监督已被广泛使用,并且是关系提取,信息提取和情感分析以及其他任务中的常用技术。

  本文来源前瞻网,转载请注明来源。本文内容仅代表作者个人观点,本站只提供参考并不构成任何投资及应用建议。(若存在内容、版权或其它问题,请联系:[email protected]) 品牌合作请联系:0755-33015062 或 [email protected]

查看原文 >>
相关文章