乐趣区

一文了解自然语言处理神经史(上)

摘要:越来越火的 NLP 到底经历了什么?
本文扩展了 Herman Kamper 和我在 2018 年深度学习 Indaba 组织的自然语言处理前沿课程。整个课程的幻灯片都可以在这里找到,这篇文章将主要讨论 NLP 中基于神经网络方法的近期进展。
免责声明:本文尝试将大约 15 年 NLP 的发展历程浓缩为今天最相关的八个里程碑,因此遗漏了许多相关和重要的发展。特别是,它严重偏向于当前的神经方法,这可能给人留下此期间没有其他有影响力方法的错误影响。
2001 年 - 神经语言模型
语言建模是在给定前面的单词的情况下预测文本中的下一个单词的任务。它可能是最简单的语言处理任务,具有实际应用,如智能键盘和电子邮件响应建议(Kannan et al.,2016)。语言建模有着丰富的历史。基于 n -gram 的经典方法采用平滑处理看不见的 n -gram(Kneser&Ney,1995)。Bengio 等人于 2001 年提出了第一种神经语言模型,一种前馈神经网络,如下图 1 所示。

该模型把 n 个可以在表 C 中查找的先前单词向量表示作为输入。现在,这种向量被称为词嵌入。这些词嵌入被连接并送入隐藏层,然后将其输出提供给 softmax 层。想要了解更多该模型的信息,请查看此文章。
最近,前馈神经网络已被用于语言建模的递归神经网络(RNN; Mikolov 等人,2010)和长短期记忆网络(LSTM; Graves,2013)所取代。近年来已经提出了许多经典 LSTM 的新语言扩展模型(请参阅此页面以获得概述)。尽管有这些发展,但经典的 LSTM 仍然是一个强大的基线(Melis 等,2018)。即使 Bengio 等人的经典前馈神经网络在某些环境中也与更复杂的模型竞争,但这些通常只学会考虑最近的词(Daniluk 等,2017)。如何理解这些语言模型捕获的信息是一个活跃的研究领域(Kuncoro 等,2018; Blevins 等,2018)。
语言建模通常是应用 RNN 时的首选训练场,并成功捕捉到了想象力,许多人通过 Andrej 的博客文章开始了解。语言建模是无监督学习的一种形式,Yann LeCun 也将预测性学习作为获取常识的先决条件(参见 NIPS 2016 的 Cake 幻灯片)。关于语言建模最显著的方面可能是,尽管它很简单,但它是本文讨论的许多后期进展的核心:

词嵌入:word2vec 的目标是简化语言建模;
序列到序列模型:这种模型通过一次预测一个词来生成输出序列;
预训练语言模型:这些方法使用语言模型中的表示来进行迁移学习;

这反过来意味着 NLP 中许多最重要的最新进展减少为一种语言建模形式。为了做“真正的”自然语言理解,仅仅从原始形式的文本中学习可能是不够的,我们将需要新的方法和模型。
2008- 多任务学习
多任务学习是在多个任务上训练的模型之间共享参数的一般方法。在神经网络中,这可以通过绑定不同层的权重来轻松实现。多任务学习的想法在 1993 年由 Rich Caruana 首次提出,并应用于道路跟踪和肺炎预测(Caruana,1998)。直观地说,多任务学习鼓励模型学习对许多任务有用的表示。特别对于学习一般的低级表示,集中模型的注意力或在有限量的训练数据的设置中特别有用。有关多任务学习的更全面概述,请查看此文章。
Collobert 和 Weston 于 2008 年首次将多任务学习应用于 NLP 的神经网络。在他们的模型中,查找表(或词嵌入矩阵)在两个在不同任务上训练的模型之间共享,如下面的图 2 所示。

共享词嵌入使模型能够在词嵌入矩阵中协作和共享一般的低级信息,这通常构成模型中最大数量的参数。Collobert 和 Weston 在 2008 年的论文中证明了它在多任务学习中的应用,它引领了诸如预训练词嵌入和使用卷积神经网络(CNN)之类的思想,这些思想仅在过去几年中被广泛采用。它赢得了 ICML 2018 的时间考验奖(参见此时的时间考验奖论文)。
多任务学习现在用于各种 NLP 任务,并且利用现有或“人工”任务已成为 NLP 指令集中的有用工具。有关不同附加任务的概述,请查看此文章。虽然通常预先定义参数的共享,但是在优化过程期间也可以学习不同的共享模式(Ruder 等,2017)。随着模型越来越多地在多项任务中被评估来评估其泛化能力,多任务学习越来越重要,最近提出了多任务学习的专用基准(Wang et al,2018; McCann et al,2018)。
2013- 词嵌入
文本的稀疏向量表示,即所谓的词袋模型,在 NLP 中具有悠久的历史。正如我们在上面所看到的,早在 2001 年就已经使用了词或词嵌入的密集向量表示。Mikolov 等人在 2013 年提出的主要创新,是通过移动隐藏层和近似目标来使这些词嵌入的训练更有效率。虽然这些变化本质上很简单,但它们与高效的 word2vec 一起实现了大规模的词嵌入训练。
Word2vec 有两种模式,可以在下面的图 3 中看到:连续的词袋(CBOW)和 skip-gram。它们的目标不同:一个基于周围的词预测中心词,而另一个则相反。

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

这些关系及其背后的意义引发了对嵌入词的初步兴趣,许多研究调查了这些线性关系的起源(Arora 等,2016; Mimno&Thompson,2017; Antoniak&Mimno,2018; Wendlandt 等,2018))。然而,使用预训练嵌入作为初始化的固定词嵌入,把它作为当前 NLP 的主要内容被证明可以提高各种下游任务的性能。
虽然捕获的关系 word2vec 具有直观且几乎神奇的性能,但后来的研究表明 word2vec 没有任何固有的特殊性:通过矩阵分解也可以学习词嵌入(Pennington 等,2014; Levy&Goldberg,2014)和通过适当的调整,经典的矩阵分解方法(如 SVD 和 LSA)可以获得类似的结果(Levy 等,2015)。
从那时起,许多工作已经开始探索词嵌入的不同方面,可以通过这篇文章了解一些趋势和未来方向。尽管有许多发展,但 word2ve 仍然是如今被广泛使用的一种流行的选择。Word2vec 的范围甚至超出了词级别:带有负抽样的 skip-gram,一个基于本地环境学习嵌入的方便目标,已被应用于学习句子的表示(Mikolov&Le,2014; Kiros et al.,2015)- 甚至超越 NLP,应用到网络(Grover&Leskovec,2016)和生物序列(Asgari&Mofrad,2015)等。
一个特别令人兴奋的方向是将不同语言的词嵌入投影到同一空间中以实现(零射击)跨语言转移。越来越有可能以完全无监督的方式(至少对于类似语言)学习良好的投影,这开启了低资源语言和无监督机器翻译的应用(Lample 等,2018; Artetxe 等,2018)。请查看(Ruder 等,2018)的概述。
2013 年 -NLP 的神经网络
2013 年和 2014 年是神经网络模型开始应用于 NLP 的标志年份。三种主要类型的神经网络被广泛使用:递归神经网络、卷积神经网络、循环神经网络。
递归神经网络(RNN)是处理 NLP 中普遍存在的动态输入序列问题的明显选择。Vanilla RNNs(Elman,1990)很快被经典的长短期记忆网络(Hochreiter&Schmidhuber,1997)所取代,后者证明其对消失和爆炸梯度问题更具弹性。在 2013 年之前,RNN 仍然被认为很难训练,Ilya Sutskever 的博士论文是改变这种现状的一个关键例子。LSTM 细胞可视化可以在下面的图 5 中看到。双向 LSTM(Graves 等,2013)通常用于处理左右上下文。

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

卷积神经网络的一个优点是它们比 RNN 更可并行化,因为每个时间步的状态仅取决于本地环境(通过卷积运算)而不是像 RNN 取决过去所有状态。CNN 可以使用扩张卷积扩展到更宽的感受野,以捕捉更广泛的背景(Kalchbrenner 等 2016)。CNN 和 LSTM 也可以组合和堆叠,并且可以使用卷积来加速 LSTM。
RNN 和 CNN 都将语言视为一个序列。然而,从语言学的角度来看,语言本质上是等级的:单词被组成高阶短语和子句它们本身可以根据一组生产规则递归地组合。将句子视为树而不是序列的语言启发思想产生了递归神经网络,这可以在下面的图 7 中看到:

与从左到右或从右到左处理句子的 RNN 相比,递归神经网络从下到上构建序列的表示。在树的每个节点处,通过组合子节点的表示来计算新表示。由于树也可以被视为在 RNN 上施加不同的处理顺序,因此 LSTM 自然地扩展到树。
RNN 和 LSTM 不仅仅可以被扩展来使用分层结构,而且不仅可以根据本地语言学习词嵌入,而且可以基于语法背景来学习词嵌入(Levy&Goldberg,2014);语言模型可以基于句法堆栈生成单词(Dyer et al。,2016); 图形卷积神经网络可以在树上运行(Bastings 等,2017)。

本文作者:【方向】阅读原文
本文为云栖社区原创内容,未经允许不得转载。

退出移动版