15年来,自然言语处理发展史上的8大里程碑

图灵汇官网

自然语言是人类独有的智慧结晶。自然语言处理(NLP)是计算机科学与人工智能领域的重要分支,旨在研究实现人机之间用自然语言进行有效沟通的各种理论和技术。自然语言处理不仅具有重要的实际应用价值,还具备革命性的理论意义。

由于理解自然语言需要广泛的知识背景以及运用这些知识的能力,自然语言处理也被视为解决人工智能完整问题的核心挑战之一。自然语言处理的研究充满魅力和挑战。

本文源自自然语言处理领域的专家、知名博主Sebastian Ruder的文章,主要从神经网络技术角度探讨自然语言处理领域近15年的重大进展,并总结出与当下紧密相关的8大里程碑事件。文章不可避免地会省略一些其他重要的相关工作,而且这份总结侧重于神经网络相关技术,并不意味着这段时间内其他技术领域没有重要进展。值得注意的是,文中提到的许多神经网络模型都是建立在同期非神经网络技术的里程碑之上。文章最后强调了这些奠定了坚实基础的重要成果。

2001年——神经语言模型

语言模型的任务是在给定已出现词语的文本中预测下一个单词。这是最简单的自然语言处理任务之一,但有多种实际应用场景,如智能键盘和电子邮件回复建议。语言模型的历史由来已久,早期方法基于n-gram模型(即利用后面的n个词预测下一个词),并使用平滑操作处理未见过的n-gram。

第一个神经语言模型——前馈神经网络,由Bengio等人于2001年提出。这种模型以某个词之前出现的n个词作为输入向量。今天,这样的向量被称为词嵌入。这些词嵌入在级联后进入一个隐藏层,再通过softmax层。近年来,用于构建语言模型的前馈神经网络已经被循环神经网络(RNNs)和长短时记忆神经网络(LSTMs)取代。尽管后来提出的新模型大多在经典的LSTM基础上进行了扩展,但LSTM仍然是强大的基础模型。甚至Bengio等人的经典前馈神经网络在某些情况下也能取得与更复杂模型相当的效果,因为这些任务只需要考虑临近的词。更好地理解语言模型究竟捕捉了哪些信息也是当前研究的热点。

语言模型的建立属于无监督学习,Yann LeCun称之为预测学习,是获取关于世界运作的基本知识的前提。尽管语言模型看似简单,但它与后续许多核心进展密切相关。这也意味着自然语言处理领域的许多重要进展都可以简化为某种形式的语言模型构建。然而,仅仅从原始文本中进行学习不足以实现对自然语言的真正理解,我们需要新的方法和模型。

2008年——多任务学习

多任务学习是指在多个任务中共享模型参数的方法,这在神经网络中可以通过结合不同层的权重轻松实现。多任务学习的思想最早由Rich Caruana在1993年提出,并应用于道路追踪和肺炎预测。多任务学习鼓励模型学习对多个任务有效的表征,这对于学习一般的、低级的表征、集中模型的注意力或在训练数据有限的情况下尤其有用。

多任务学习于2008年由Collobert和Weston等人首次应用于自然语言处理领域。在他们的模型中,词嵌入矩阵被两个在不同任务下训练的模型共享。共享的词嵌入矩阵使模型可以相互协作,共享低级信息。Collobert和Weston发表的论文不仅推动了多任务学习的发展,还开创了诸如预训练词嵌入和使用卷积神经网络处理文本的方法,这些方法在随后几年被广泛采用。他们也因此获得了2018年国际机器学习大会(ICML)的“时间考验奖”。

如今,多任务学习在自然语言处理领域广泛应用,利用现有或“人工”任务已经成为NLP指令库中的一个有用工具。尽管参数共享是预先定义好的,但在优化过程中可以学习不同的共享模式。随着模型越来越多地在多个任务上进行评估以测试其泛化能力,多任务学习变得越来越重要,近年来也出现了更多针对多任务学习的评估基准。

2013年——词嵌入

词袋模型是自然语言处理领域常用的文本表示方法,但使用稠密向量表示词语(即词嵌入)则始于2001年。2013年,Mikolov等人工作的主要创新在于通过去除隐藏层和近似计算目标,使词嵌入模型的训练更加高效。虽然这些改进本质上非常简单,但与高效的word2vec(一种用于生成词向量的模型)相结合,使得大规模词嵌入模型的训练成为可能。

Word2vec有两种不同的实现方式:连续词袋(CBOW)和跳字模型(skip-gram)。前者根据周围词语预测中心词语,后者则相反。尽管这些嵌入与通过前馈神经网络学习的嵌入在概念上没有区别,但通过在大型语料库上训练,它们能够捕捉到诸如性别、动词时态和国际事务等单词之间的特定关系。这些关系和它们背后的意义引发了对词嵌入的兴趣,许多研究都关注这些线性关系的来源。然而,使词嵌入成为自然语言处理领域主流的原因是,将预训练的词嵌入矩阵用于初始化可以提高大量下游任务性能。

虽然word2vec捕捉到的关系具有直观且几乎不可思议的特性,但后来的研究表明,word2vec本身并无特殊之处:词嵌入也可以通过矩阵分解学习,经过适当调试,经典的矩阵分解方法如奇异值分解(SVD)和潜在语义分析(LSA)都能获得类似的结果。从那时起,大量的工作开始探索词嵌入的不同方面。尽管有许多发展,word2vec仍然是目前应用最广泛的选择。word2vec的应用范围也超出了词语级别:带有负采样的跳字模型——一个基于上下文学习词嵌入的便捷目标,已被用于学习句子的表征。它甚至超出了自然语言处理的范围,被应用于网络和生物序列等领域。

一个令人兴奋的研究方向是在同一空间中构建不同语言的词嵌入模型,以实现(零样本)跨语言转换。通过无监督学习构建这样的映射变得越来越有希望(至少对于相似语言而言),这也为语料资源较少的语言和无监督机器翻译的应用程序创造了可能。

2013年——用于自然语言处理的神经网络

2013年和2014年是自然语言处理领域神经网络时代的开端。其中三种类型的神经网络应用最为广泛:循环神经网络(RNNs)、卷积神经网络(CNNs)和结构递归神经网络(SRNs)。

循环神经网络是处理动态输入序列的自然选择。Vanilla RNN很快被经典的长短时记忆网络(LSTMs)取代,后者能更好地处理梯度消失和梯度爆炸的问题。在2013年之前,人们认为循环神经网络很难训练,直到Ilya Sutskever的论文改变了这一看法。双向的长短时记忆网络通常用于同时处理出现在左侧和右侧的文本内容。LSTM结构如图所示。

卷积神经网络只在两个维度上操作,卷积层只需在时序维度上移动即可。与循环神经网络相比,卷积神经网络的一个优点是具有更好的并行性,因为卷积操作中每个时间步的形状只依赖于部分上下文,而不是所有过去的形状。卷积神经网络可以使用更大的卷积层覆盖更广泛的上下文内容。卷积神经网络也可以与长短时记忆网络结合和堆叠,还可以用于加速长短时记忆网络的训练。

结构递归神经网络受语言学启发,将语言视为具有层级结构:词语组成高阶短语和小句,它们可以根据一定的产生规则递归组合。这激发了使用结构递归神经网络的想法,以树形结构代替序列来表示语言。这种结构递归神经网络自下而上构建序列的表示,与从左至右或从右至左处理序列的循环神经网络形成鲜明对比。树中的每个节点是通过子节点的表征计算得到的。

不仅是循环神经网络和长短时记忆网络可以扩展到使用层次结构,词嵌入也可以在语法语境中学习,语言模型可以基于句法堆栈生成词汇,图形卷积神经网络可以树状结构运行。

2014年——序列到序列模型

2014年,Sutskever等人提出了序列到序列学习,这是一种用神经网络将一个序列映射到另一个序列的通用框架。在这个框架中,一个作为编码器的神经网络处理句子符号并将其压缩为向量表示;然后,一个作为解码器的神经网络根据编码器的状态逐一预测输入符号,并将前一个预测得到的输入符号作为预测下一个输入符号的输入。

机器翻译是这一框架的杀手级应用。2016年,谷歌宣布他们将用神经机器翻译模型取代基于短语的整句机器翻译模型。谷歌大脑负责人Jeff Dean表示,这意味着用500行神经网络模型代码取代了50万行基于短语的机器翻译代码。

由于其灵活性,该框架在自然语言生成任务中广泛应用,其编码器和解码器分别由不同的模型负责。更重要的是,解码器不仅可以适用于序列,在任意表示上均可以使用。例如,基于图片生成描述(如图所示)、基于表格生成文本、根据源代码更改生成描述,以及其他许多应用。

序列到序列学习甚至可以应用于自然语言处理领域常见的结构化预测任务,即输入具有特定结构。为简化起见,输入可以像选区解析一样线性化。在给定足够多训练数据用于语法解析的情况下,神经网络已经证明具有生成线性输入和识别命名实体的能力。

序列的编码器和解码器通常都是基于循环神经网络,但也可以使用其他模型。新的结构主要源于机器翻译的工作,它已成为序列到序列模型的基础。近期提出的模型包括深度长短时记忆网络、卷积编码器、Transformer(一种基于自注意力机制的全新神经网络架构)以及长短时记忆依赖网络和Transformer的结合体等。

2015年——注意力机制

注意力机制是神经网络机器翻译(NMT)的核心创新之一,也是使神经网络机器翻译优于经典基于短语的机器翻译的关键。序列到序列学习的主要瓶颈是需要将源序列的所有内容压缩为固定大小的向量。注意力机制通过让解码器回顾源序列的隐藏状态,以加权平均值的形式为解码器提供输入,从而缓解这一问题。注意力机制后来在各种需要根据输入的特定部分做出决策的任务中得到了广泛应用,如句法分析、阅读理解、单样本学习等。

注意力机制的一个有用的附带作用是它通过注意力权重揭示了模型内部运作机制,虽然相对浅层次但仍然提供了模型如何处理输入的宝贵见解。

注意力机制不仅限于输入序列。自注意力机制可以用来观察句子或文档中周围的单词,获得包含更多上下文信息的词语表示。多层自注意力机制是神经机器翻译前沿模型Transformer的核心。

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

注意力机制可以视为一种模糊记忆的方式,其记忆内容包括模型之前的隐藏状态,由模型选择从记忆中检索哪些内容。与此同时,更多具有明确记忆单元的模型被提出。它们有许多不同的变体,如神经图灵机(NTMs)、记忆网络(Memory Networks)、端到端记忆网络(End-to-end Memory Networks)、动态记忆网络(Dynamic Memory Networks)、可微分计算机(Neural Differentiable Computers)、循环实体网络(Recurrent Entity Networks)。

记忆的访问通常与注意力机制相似,基于与当前状态的关联,并且可以读写。这些模型之间的差异体现在它们如何实现和应用存储模块。例如,端到端记忆网络对输入进行多次处理并更新内存,以执行多次推理。神经图灵机也有基于位置的寻址方式,使其能够学习简单的计算机程序,如排序。基于记忆的模型通常用于需要长时间保存信息的任务,如语言模型构建和阅读理解。记忆模块的概念非常通用,知识库和表格都可以作为记忆模块,记忆模块也可以基于输入的全部或部分内容填充。

2018年——预训练的语言模型

预训练的词嵌入与上下文相关,仅用于初始化模型中的第一层。最近几个月,许多有监督的任务被用于预训练神经网络。相比之下,语言模型只需要未标记的文本,因此其训练可以扩展到数十亿单词的语料、新的领域、新的语言。预训练的语言模型于2015年首次提出,但直到最近才被证明在大量不同类型的任务中都非常有效。语言模型嵌入可以作为目标任务模型中的特征,或者根据具体任务进行微调。如图所示,语言模型嵌入为许多任务的效果带来了显著提升。

使用预训练的语言模型可以在数据量非常少的情况下有效学习。由于语言模型的训练只需要无标签的数据,因此它们对于数据稀缺的低资源语言特别有利。

其他里程碑

一些其他进展虽然不如上述里程碑那样广泛传播,但仍产生了广泛的影响。

基于字符的表示

在字符层面使用卷积神经网络和长短时记忆网络,以获得基于字符的词表示,现在已相当普遍,特别是在那些词形丰富或形状信息至关重要的语言或任务中。基于字符的表示最初用于序列标注,如今这种表示方法减轻了必须以增加计算成本为代价建立固定词表的问题,并使完全基于字符的机器翻译成为可能。

对抗学习

对抗学习的方法在机器学习领域已广泛使用,并在自然语言处理领域应用于不同任务。对抗样本不仅用于探测模型的弱点,还能增强模型的鲁棒性。虚拟对抗训练(即最坏情况下的扰动)和领域对抗损失(domain-adversarial losses)都是使模型更具鲁棒性的有效正则化方式。生成对抗网络(GANs)目前在自然语言生成任务中效果尚不理想,但在匹配分布方面非常有用。

强化学习

强化学习已在具有时间依赖性的任务中证明了自己的能力,如在训练期间选择数据和对话建模。在机器翻译和摘要任务中,强化学习可以有效地直接优化诸如“红色”和“蓝色”之类的不可微度量,而无需优化诸如交叉熵这样的代理损失函数。逆向强化学习(inverse reinforcement learning)在奖励机制复杂且难以具体化的任务中,如视频故事描述,也非常有用。

本文来源: 图灵汇 文章作者: 五号智评