永利网站网址 56

永利网站网址万字长文概述NLP中的深度学习技术,深度学习

原标题:深度学习、机器学习与NLP的前世今生

永利网站网址 1永利网站网址 2永利网站网址 3

随着深度学习的发展,自然语言处理领域的难题也得到了不断突破,AlphaGo项目的主要负责人David
Silver曾说“深度学习 (DL)+ 强化学习 (RL)=
人工智能(AI)”。目前深度学习在自然语言处理上主要有哪些应用?在工程实践中是否会有哪些瓶颈?

文章发布于公号 ,关注公号不错过每一篇干货。

永利网站网址 4

转自| 机器之心

一、为什么做文本挖掘

该项目是对基于深度学习的自然语言处理的概述,包括用来解决不同 NLP
任务和应用的深度学习模型(如循环神经网络、卷积神经网络和强化学习)的理论介绍和实现细节,以及对
NLP
任务(机器翻译、问答和对话系统)当前最优结果的总结。该项目原文链接:

什么是NLP?

该项目的主要动机如下:

简单来说:NLP的目的是让机器能够理解人类的语言,是人和机器进行交流的技术。它应用在我们生活中,像:智能问答、机器翻译、文本分类、文本摘要,这项技术在慢慢影响我们的生活。

  1. 维护最新 NLP
    研究学习资源,如当前最优结果、新概念和应用、新的基准数据集、代码/数据集发布等。

  2. 创建开放性资源,帮助指引研究者和对 NLP 感兴趣的人。

NLP的发展历史非常之久,计算机发明之后,就有以机器翻译为开端做早期的NLP尝试,但早期做得不是很成功。直到上个世纪八十年代,大部分自然语言处理系统还是基于人工规则的方式,使用规则引擎或者规则系统来做问答、翻译等功能。

3.
这是一个合作性项目,专家研究人员可以基于他们近期的研究和实验结果提出变更建议。

第一次突破是上个世纪九十年代,有了统计机器学习的技术,并且建设了很多优质的语料库之后,统计模型使NLP技术有了较大的革新。接下来的发展基本还是基于这样传统的机器学习的技术,从2006年深度学习开始,包括现在图像上取得非常成功的进步之后,已经对NLP领域领域影响非常大。

01

永利网站网址 5

简介

达观划分的NLP技术层次

自然语言处理是指对人类语言进行自动分析和表示的计算技术,这种计算技术由一系列理论驱动。NLP
研究从打孔纸带和批处理的时代就开始发展,那时分析一个句子需要多达 7
分钟的时间。到了现在谷歌等的时代,数百万网页可以在不到一秒钟内处理完成。NLP
使计算机能够执行大量自然语言相关的任务,如句子结构解析、词性标注、机器翻译和对话系统等。

当年上小学时有一本书叫《字词句篇与达标训练》,里面讲了字、词、句、篇,我们开始学写字,词是最基础的一级,中文的一个字比英文的一个字母的语义要丰富的多,但表义能力仍然较差。所以中文一般的处理情况都是按照词级别,词级别的分析就有了中文分词、有了命名实体识别这样的层次来做底层处理。

深度学习架构和算法为计算机视觉与传统模式识别领域带来了巨大进展。跟随这一趋势,现在的
NLP 研究越来越多地使用新的深度学习方法。之前数十年,用于解决 NLP
问题的机器学习方法一般都基于浅层模型
(如 SVM 和 logistic
回归),这些模型都在非常高维和稀疏的特征(one-hot
encoding)上训练得到。而近年来,基于稠密向量表征的神经网络在多种 NLP
任务上得到了不错结果。这一趋势取决了词嵌入和深度学习方法的成功。深度学习使多级自动特征表征学习成为可能。而基于传统机器学习的
NLP 系统严重依赖手动制作的特征,它们及其耗时,且通常并不完备。

在这个底层处理之上是段落级别,是一句话、一段话、短的文本,对这个级别文本做法又对应了相关的技术,包括:依存文法分析、词位置分析、语义归一化、文本纠错等等功能。但是这个功能也是为它更上级的服务去服务的,达观称之为“篇章”级的应用。

永利网站网址 6

大部分同学平时做比赛、做项目关注的点最多是在“篇章”级的应用,底下这些中文分词等都已经有很好的工具了,不用再从头到尾去开发,只要关心上层的应用,把底下的工具用好,让它产生需要的Feature,来做分类、主题模型、文章建模,这种比较高层次的应用。

图 1:过去 6 年 ACL、EMNLP、EACL、NAACL 会议上深度学习论文的比例。

所以,要做好NLP,包括我们公司在内,这三个级别的技术都是自己掌握的。但是如果个人学习使用是有权衡的。某个同学的某一个技术特别好也是OK的,因为现在开源工具,甚至商用工具有很好的效果。如果不要求精度特别高或者有特殊的要求,用这些工具一般是可以达到你的要求。

Ronan Collobert 等人 2011 年的研究《Natural Language Processing from
Scratch》展示了在多个 NLP
任务上优于当时最优方法的简单深度学习框架,比如命名实体识别、语义角色标注和词性标注。之后,研究人员提出了大量基于复杂深度学习的算法,用于解决有难度的
NLP
任务。本文综述了用于自然语言任务的主要深度学习模型和方法,如卷积神经网络、循环神经网络和递归神经网络。本文还讨论了记忆增强策略、注意力机制,以及如何使用无监督模型、强化学习方法和深度生成模型解决语言任务。

每个层次的技术都是完全不同的,而且层次间的技术是有联系,一般的联系是底层是为上层服务。

本文结构如下:第2章介绍分布式表征的概念,它们是复杂深度学习模型的基础;第
3、4、5 章讨论了流行的模型(如卷积、循环、递归神经网络)及其在不同 NLP
任务中的应用;第 6 章列举了强化学习在 NLP
中的近期应用,以及无监督句子表征学习的近期发展;第 7
章介绍了深度学习模型结合记忆模块这一近期趋势;第 8
章概述了多种深度学习方法在 NLP 任务标准数据集上的性能。这里选取了第
2、3、4、8 章进行重点介绍。

达观数据就是应用这些技术为企业提供文档智能审阅、个性化推荐、垂直搜索等文本挖掘服务。

02

二、为什么要用深度学习?

分布式表征

深度学习的发展与应用要有一定的基础,上个世纪末互联网时代到来已经有大量的数据电子化,我们有海量的文章真是太多了。有这样的数据之后就要去算它,需要算法进步。以前这个数据量规模没法算,或者数据量太大算起来太慢。就算有更好的算法还是算得很慢时,就需要芯片的技术,尤其我们现在用并行计算GPU,这个加速对各种各样的算法尤其深度学习的算法影响速度非常大。

基于统计的 NLP
已经成为建模复杂自然语言任务的首要选择。然而在它刚兴起的时候,基于统计的
NLP
经常遭受到维度灾难,尤其是在学习语言模型的联合概率函数时。这为构建能在低维空间中学习分布式词表征的方法提供了动力,这种想法也就导致了词嵌入方法的诞生。

所以一定要有这三个基础——数据、算法、芯片,在这三个核心基础上面做更高级的应用,涉及人的感官——听觉、视觉、语言这三个感官,语音的识别、计算机的视觉、自然语言的处理。

第一种在低维空间中学习密集型的分布式词表征是 Yoshua Bengio 等人在 2003
年提出的 A Neural Probabilistic Language
Model,这是一种基于学习而对抗维度灾难的优美想法。

1. 深度学习与机器学习

词嵌入

很多同学会把深度学习和机器学习划等号,实际上它们不是等号。AI的概念非常大,比如:我们用的Knowledge
Base知识数据库也是一种AI,它可能没有那么智能。机器学习是AI其中的一小块,而深度学习用又是机器学习中的一小块,我们常见的CNN、RNN都属于深度学习的范畴。

如下图 2
所示,分布式向量或词嵌入向量基本上遵循分布式假设,即具有相似语义的词倾向于具有相似的上下文词,因此这些词向量尝试捕获邻近词的特征。分布式词向量的主要优点在于它们能捕获单词之间的相似性,使用余弦相似性等度量方法评估词向量之间的相似性也是可能的。

同时,也做Logistics
Regression知识图谱,因为知识图谱是NLP中一个很重要的应用,无论是生成知识图谱,还是用它做像问答等其他应用都是会用到的。

词嵌入常用于深度学习中的第一个数据预处理阶段,一般我们可以在大型无标注文本语料库中最优化损失函数,从而获得预训练的词嵌入向量。例如基于上下文预测具体词(Mikolov
et al., 2013b,
a)的方法,它能学习包含了一般句法和语义的词向量。这些词嵌入方法目前已经被证明能高效捕捉上下文相似性,并且由于它们的维度非常小,因此在计算核心
NLP 任务是非常快速与高效的。

我们为什么要用深度学习?

永利网站网址 7

可以比较一下经典机器学习和深度学习间的差异。

图 2:分布式词向量表征,其中每一个词向量只有 D 维,且远小于词汇量大小
V,即 D<<V。

永利网站网址 8

多年以来,构建这种词嵌入向量的模型一般是浅层神经网络,并没有必要使用深层神经网络构建更好的词嵌入向量。不过基于深度学习的
NLP
模型常使用这些词嵌入表示短语甚至句子,这实际上是传统基于词统计模型和基于深度学习模型的主要差别。目前词嵌入已经是
NLP 任务的标配,大多数 NLP 任务的顶尖结果都需要借助它的能力。

比如:做一个分类的问题,这两个分类问题唯一的区别就是特征工程的区别。我们用经典的机器学习算法是上面这条路,输入数据后大家就开始(包括打比赛也)做各种各样的特征工程。有了这样的特征,我们还要根据TF-IDF、互信息、信息增益等各种各样的方式去算特征值,或对特征进行过滤排序。传统机器学习或经典机器学习90%的时间,都会花在特征工程上。

本身词嵌入就能直接用于搜索近义词或者做词义的类推,而下游的情感分类、机器翻译、语言建模等任务都能使用词嵌入编码词层面的信息。最近比较流行的预训练语言模型其实也参考了词嵌入的想法,只不过预训练语言模型在词嵌入的基础上进一步能编码句子层面的语义信息。总的而言,词嵌入的广泛使用早已体现在众多文献中,它的重要性也得到一致的认可。

而Deep
learning颠覆了这个过程,不需要做特征工程。
需要各种各样的特征,比如:需要一些长时间依赖的特征,那可以用RNN、LSTM这些,让它有个序列的依赖;可以用局部的特征,用各种各样的N元语法模型,现在可以用CNN来提取局部的文本特征。

永利网站网址,分布式表示主要通过上下文或者词的「语境」来学习本身该如何表达。上个世纪
90 年代,就有一些研究(Elman,
1991)标志着分布式语义已经起步,后来的一些发展也都是对这些早期工作的修正。此外,这些早期研究还启发了隐狄利克雷分配等主题建模(Blei
et al., 2003)方法和语言建模(Bengio et al., 2003)方法。

深度学习节省的时间是做特征工程的时间,这也是非常看重深度学习的原因:

在 2003 年,Bengio
等人提出了一种神经语言模型,它可以学习单词的分布式表征。他们认为这些词表征一旦使用词序列的联合分布构建句子表征,那么就能构建指数级的语义近邻句。反过来,这种方法也能帮助词嵌入的泛化,因为未见过的句子现在可以通过近义词而得到足够多的信息。

  • 特征工程做起来很累。
  • 很多实际场景是挖掘出一个好的特征或者对我们系统贡献很大的特征,往往比选择算法影响还大。用基本的特征,它的算法差距不会特别大,最多也就10个点,主要还是特征工程这块,而深度学习很好的解决了这个问题。

永利网站网址 9

有了深度学习之后,对文本挖掘就有了统一处理的框架,达观把它定义为五个过程:


3:神经语言模型(图源:

永利网站网址 10

Collobert 和 Weston
展示了第一个能有效利用预训练词嵌入的研究工作,他们提出的神经网络架构构成了当前很多方法的基础。这一项研究工作还率先将词嵌入作为
NLP 任务的高效工具,不过词嵌入真正走向 NLP 主流还是 Mikolov 等人在 2013
年做出的研究《Distributed Representations of Words and Phrases and their
Compositionality》。

  1. 文本数据。
  2. 预处理,预处理很重要,大家在工作中拿到的数据都是经过清洗过程的,“达观杯”算法大赛的数据是我们帮大家清洗过的。比赛中做到的字、词都是各种各样的ID,是预处理的一部分。
  3. 有了预处理之后,我们可以选择各种各样的网络。
  4. 后处理,比如业务需要分类,分类最终的结果是通过不通过,这都是后处理的过程。
  5. 应用,应用的方向有文本分类、情感分析、中文分词、命名实体识别、机器翻译。

Mikolov 等研究者在这篇论文中提出了连续词袋模型和 Skip-Gram
模型,这两种方法都能学习高质量的分布式词表征。
此外,令这两种方法受到极大关注的是另一种附加属性:语义合成性,即两个词向量相加得到的结果是语义相加的词,例如「man」+「royal」=「king」。这种语义合成性的理论依据最近已经由
Gittens et al.
给出,他们表示只有保证某些特定的假设才能满足语义合成性,例如词需要在嵌入空间中处于均匀分布。

几乎所有任务都可以拿Deep
learning来做,它的适应性和它的广度非常好,例如:传统的机器学习做文本分类需要特定的算法,而这个算法不可能做命名实体识别的事情。

Pennington et al. 提出了另一个非常出名的词嵌入方法
GloVe,它基本上是一种基于词统计的模型。在有些情况下,CBOW 和 Skip-Gram
采用的交叉熵损失函数有劣势。因此 GloVe
采用了平方损失,它令词向量拟合预先基于整个数据集计算得到的全局统计信息,从而学习高效的词词表征。

2. 通过Vector Representationns 进行低纬度连续空间的字词表示

一般 GloVe
模型会先对单词计数进行归一化,并通过对数平滑来最终得到词共现矩阵,这个词共现矩阵就表示全局的统计信息。这个矩阵随后可以通过矩阵分解得到低维的词表征,这一过程可以通过最小化重构损失来获得。下面将具体介绍目前仍然广泛使用的
CBOW 和 Skip-Gram 两种 Word2Vec 方法(Mikolov et al., 2013)。

在深度学习在NLP领域火起来之前,最有代表性的一个研究,对每个人影响最大的工作就是Word2Vec,把一个字、一个词变成向量来表示,这是对我们影响非常大的工作。

Word2Vec

这件事情的好处是什么?

可以说 Mikolov 等人彻底变革了词嵌入,尤其是他们提出的 CBOW 和 Skip-Gram
模型。CBOW
会在给定上下文词的情况下计算目标词的条件概率,其中上下文词的选取范围通过窗口大小
k 决定。而 Skip-Gram 的做法正好与 CBOW
相反,它在给定目标词或中心词的情况下预测上下文词。一般上下文词都会以目标词为中心对称地分布在两边,且在窗口内的词与中心词的距离都相等。也就是说不能因为某个上下文词离中心词比较远,就认为它对中心词的作用比较弱。

在之前我们以词为单位,一个词的表示方式几乎都是one hot。 one
hot序列有一个致命的缺点,你不能计算相似度,所有人算出来都是“0”,都是一样的,距离也都是一样的,因此它不能很好的表示词之间的关系。

在无监督的设定中,词嵌入的维度可以直接影响到预测的准确度。一般随着词嵌入维度的增加,预测的准确度也会增加,直到准确率收敛到某个点。一般这样的收敛点可以认为是最佳的词嵌入维度,因为它在不影响准确率的情况下最精简。通常情况下,我们使用的词嵌入维度可以是
128、256、300、500 等,相比于几十万的词汇库大小已经是很小的维度了。

过去像威海市、潍坊市、枣庄市这三个城市对计算机来说是完全不一样的东西,而我们使用Word2Vec做这件事情有两个好处:

下面我们可以考虑 CBOW
的简化版,上下文只考虑离中心词最近的一个单词,这基本上就是二元语言模型的翻版。

第一,这个词如果有1万维的话,1万维本来存储它就是一个非常稀疏的矩阵、而且很浪费,我们就可以把它变得更小,因为我们的Word2Vec里面一般的向量都在
512以内。

永利网站网址 11

这个维度的向量相对1万维来说已经是比较低维的空间,它里面存的是各种的浮点数,这个浮点数看起来这三个向量好像每个都不一样,但是实际去计算,发现这三个向量之间的相似度非常高,一个是相似度可以判断它的相似性,另外是判断它们的距离。

图 4:CBOW 模型。

永利网站网址 12

如图 4 所示,CBOW
模型就是一个简单的全连接神经网络,它只有一个隐藏层。输入层是上下文词的
one-hot 向量,它有 V 个神经元,而中间的隐藏层只有 N 个神经元,N
是要远远小于 V 的。最后的输出层是所有词上的一个 Softmax
函数。层级之间的权重矩阵分别是 V*N 阶的 W 和 N*V 阶的
W’,词汇表中的每一个词最终会表征为两个向量:v_c 和
v_w,它们分别对应上下文词表征和目标词表征。若输入的是词表中第 k
个词,那么我们有:

威海、潍坊、枣庄这几个城市在空间上离得非常近,它们的数值也非常近。它对于我们实际工作的好处是增强了我们的泛化能力,这是一个很难做的事情。

永利网站网址 13

  • 第一,有更好的带语义的表示;
  • 第二,有了这样的表示之后可以做语义的计算,包括山东-威海约等于广东-佛山,两个向量之间是约等于的,语义的东西不太好解释,但是人知道这是怎么回事,语义相近就是Word2Vec最大的帮助。

总体而言,在给定上下文词 c 作为输入的情况下,对于任意词 w_i 有:

有了表示学习之后,下一步就是常见的各种网络结构,这些都是非常常见的,比如:CNN、GRU、RNN、Bi-LSTM。LSTM也是一种RNN,Bi-LSTM也是一种LSTM,只不过Bi是双向的LSTM,它可能学到前后上下文的特征和语义。

永利网站网址 14

GRU的好处是比LSTM这种算法稍微简单,所以在层次比较深的时候或者比较复杂的时候,用它这个单元的运算效率会高一点、快一点,但它实际精度可能稍微差一点。所以模型那么多,怎么来选是很重要的,要根据大家的实践去看看怎么用。

参数 θ={V_w, V_c}
都是通过定义目标函数而学习到的,一般目标函数可以定义为对数似然函数,且通过计算以下梯度更新权重:

3. CNN模型原理

永利网站网址 15

CNN是卷积神经网络。

在更广泛的 CBOW 模型中,所有上下文词的 one-hot
向量都会同时作为输入,即:

永利网站网址 16

永利网站网址 17

这张图中间的九宫格就是个卷积格,每个数字相当于一个过滤器。它做的事情对一个图像来说,是把九宫格和图像中对应的矩阵相乘,乘出来一个结果,得到卷积之后它就开始平移,平移的步长是可选择的,一般我们都是一步一步平移过去。

词嵌入的一个局限是它们无法表示短语(Mikolov et al.,
2013),即两个词或多个词的组合并不表示对应的短语意义
,例如「人民」+「大学」并不能组合成「人民大学」。Mikolov
提出的一种解决办法是基于词共现识别这些短语,并为它们单独地学一些词嵌入向量,而
Rie Johnson 等研究者在 15 年更是提出直接从无监督数据中学习 n-gram
词嵌入。

它这样的好处是什么?对于图像来说,1个像素真的代表不了什么东西,那9个像素是不是有意义?

另一种局限性在于学习的词嵌入仅基于周围词的小窗口,有时候「good」和「bad」几乎有相同的词嵌入,这对于情感分析等下游任务很不友好。有时候这些相似的词嵌入有正好相反的情感,这对于需要区别情感的下游任务简直是个灾难,它甚至比用
One-hot 向量的表征方法还要有更差的性能。Duyu
Tang等人通过提出特定情感词嵌入来解决这个问题,他们在学习嵌入时将损失函数中的监督情感纳入其中。

是有意义的,它可能学到像直线、弯曲等特征,很简单的图形特点,然后它会得到一层。

一个比较重要的观点是,词嵌入应该高度依赖于他们要使用的领域。Labutov 和
Lipson
提出了一种用于特定任务的词嵌入,他们会重新训练词嵌入,因此将词嵌入与将要进行的下游任务相匹配,不过这种方法对计算力的需求比较大。而
Mikolov
等人尝试使用负采样的方法来解决这个问题,负采样仅仅只是基于频率对负样本进行采样,这个过程直接在训练中进行。

为什么叫深度学习?

此外,传统的词嵌入算法为每个词分配不同的向量,这使得其不能解释多义词。在最近的一项工作中,Upadhyay
等人
提出了一种新方法来解决这个问题,他们利用多语平行数据来学习多语义词嵌入。例如英语的「bank」在翻译到法语时有两种不同的词:banc

banque,它们分别表示金融和地理意义,而多语言的分布信息能帮助词嵌入解决一词多义的问题。

我们这只是一层,它在CNN里面尤其图像识别网络,大家都听过“大力出奇迹”,网络越深效果越好,因为它经过一层一层的学习,可以把每一层的特征进行浓缩。

下表 1
提供了用于创建词嵌入的现有框架,它们都可以训练词嵌入并进一步与深度学习模型相结合:

简单的像素没有任何的表义能力,到第一层浓缩之后它有一些点线的能力,再往上浓缩可能就有弧线的能力,再往上浓缩它越来越复杂,可以做到把一个像素这个没有意义的东西变成有意义的东西。可以它可以看成是一层层的过滤,选出最好的特征结果,这是卷积的原理。卷积不仅仅在图像里,在文本里用得也非常好。

永利网站网址 18

4. RNN和LSTM

03

永利网站网址 19

卷积神经网络

简单来说LSTM就是单元格换了一个更复杂的RNN,它可以做到RNN做不到的事情。

随着词嵌入的流行及其在分布式空间中展现出的强大表征能力,我们需要一种高效的特征函数,以从词序列或
n-grams 中抽取高级语义信息。随后这些抽象的语义信息能用于许多 NLP
任务,如情感分析、自动摘要、机器翻译和问答系统等。卷积神经网络因为其在计算机视觉中的有效性而被引入到自然语言处理中,实践证明它也非常适合序列建模。

为什么叫长短期记忆网络?

永利网站网址 20

看下面这张图,它比传统的RNN多了一个所谓的细胞状态,我翻译成“细胞”,一般也叫“cell”,它多了一个存储长期信息的“cell”状态。

图 5:用于执行词级分类预测的 CNN 框架。(Collobert and Weston

永利网站网址 21

使用 CNN 进行句子建模可以追溯到 Collobert 和 Weston
的研究,他们使用多任务学习为不同的 NLP
任务输出多个预测,如词性标注、语块分割、命名实体标签和语义相似词等。其中查找表可以将每一个词转换为一个用户自定义维度的向量。因此通过查找表,n
个词的输入序列 {s_1,s_2,… s_n } 能转换为一系列词向量 {w_s1,
w_s2,… w_sn},这就是图 5 所示的输入。

我们看一下第一张图,它是怎么来做长期记忆的更新?

这可以被认为是简单的词嵌入方法,其中权重都是通过网络来学习的。在
Collobert 2011 年的研究中,他扩展了以前的研究,并提出了一种基于 CNN
的通用框架来解决大量 NLP 任务,这两个工作都令 NLP
研究者尝试在各种任务中普及 CNN 架构。

看输入Ht-1和Xt,Ht-1是上一个时刻这个cell隐状态的输出,Xt是当前输入,它们两个通过这个函数计算后的输出是0-1之间的某一个值。

CNN 具有从输入句子抽取 n-gram
特征的能力,因此它能为下游任务提供具有句子层面信息的隐藏语义表征。
下面简单描述了一个基于
CNN 的句子建模网络到底是如何处理的。

  • 第一步,决定上个时刻细胞状态留下的比率是多少。
  • 第二步,来了一些新的信息,不能只是把老的细胞状态更新,还要把新的信息添进去,通过这两个公式来添,第一个公式输出0-1的系数,第二个公式要选出量是多少。

基础 CNN

有了第一步和第二步之后就开始第三步细胞状态更新,第一步的输出0-1和Ct-1相乘决定上一时刻这个细胞状态留下多少。第二步算出来系数和信息量相乘决定留下多少新增信息,然后把上一步剩下的和这一步新增的加起来,做一个更新,这个更新就是现的cell状态值。

1. 序列建模

现在单元的状态更新完了,下一步就要输出,这个输出有两个:第一个,对外是一样,还是隐层的输出Ht,这个输出和前面讲的RNN隐层输出是一样的,只是多了一步内部更新。决定留下多少老的信息,决定留下多少新的信息,再把老的信息和新的信息加起来就是最终的结果。

对于每一个句子,w_i∈R^d 表示句子中第 i 个词的词嵌入向量,其中 d
表示词嵌入的维度。给定有 n 个词的句子,句子能表示为词嵌入矩阵
W∈R^n×d。下图展示了将这样一个句子作为输入馈送到 CNN 架构中。

长短期记忆网络可以把很长很远的语义通过Ct把信息记下来,而RNN本来就很擅长记忆这种比较近的信息,所以LSTM长短信息都能记下来,对后面特征的选择、模型的输出选择有很大的帮助。

永利网站网址 22

三、深度学习的具体应用

图 6:使用 CNN 的文本建模(Zhang and Wallace , 2015)。

永利网站网址 23

若令 w_i:i+j 表示 w_i, w_i+1,…w_j
向量的拼接,那么卷积就可以直接在这个词嵌入输入层做运算。卷积包含 d
个通道的卷积核 k∈R^hd,它可以应用到窗口为 h
个词的序列上,并生成新的特征。例如,c_i
即使用卷积核在词嵌入矩阵上得到的激活结果:

  • one to
    one:
    图像分类,对于我们来说,图像就是二维矩阵,就是像素XY坐标的矩阵,输入之后经过神经网络的处理输出蓝色,这是分类问题。
  • one to
    many:
    图像描述,最早看到这个应用觉得很神奇,一个图像进来了,它告诉我图像上有一个狗、一个猫站在车旁边,这就是一个图像描述的过程,它可以把图像变成很多输出,这就是one
    to many的问题。
  • many to
    one:
    输入的是一个序列,文字等都是这样一个序列,这个序列输出之后做文本分类、情感分析,它最终都给出来这样一个结果,它们都属于“多到一”的过程。
  • many to
    many:
    这有两张图,它们的区别是:第一张图红色输入的时候没有蓝色的输出,而是等第三个红色输入的时候蓝色开始输出,它是一个异步的序列到序列的问题,异步到一个序列问题常见的例子就是机器翻译。机器翻译是看到很多上下文才能决定开始怎么翻译,不能光看到China就翻译成中国,因为英文的表述和中文表述顺序有时候不同,需要看到上下文之后再去翻译。但是有异步就有同步,我们写代码经常异步和同步问题,其实这边也一样,序列到序列的同步关系就是我们经常见的,所有选手应该都知道的序列标注问题,序列标注问题的上面就是各种各样的应用。

永利网站网址 24

本次讲的是文本,所以我着重会讲many to one和many to many的过程。

若 b 是偏置项,f
是非线性激活函数,例如双曲正切函数。使用相同的权重将滤波器 k
应用于所有可能的窗口,以创建特征图。

1. 文本分类

永利网站网址 25

永利网站网址 26

在卷积神经网络中,大量不同宽度的卷积滤波器(也叫做内核,通常有几百个)在整个词嵌入矩阵上滑动。每个内核提取一个特定的
n-gram 模式。卷积层之后通常是最大池化策略
c^=max{c},该策略通过对每个滤波器应用最大运算来对输入进行二次采样。使用这个策略有两大原因。

“达观杯”算法大赛很多同学在用传统的方式,包括baseline来做,很多人吐槽baseline好像有点高。但是我们没有做特殊优化,这是最基础的版本,做出来很高说明传统的机器学习还是非常好的,不是Deep
learning一统天下。

首先,最大池化提供固定长度的输出,这是分类所需的。因此,不管滤波器的大小如何,最大池化总是将输入映射到输出的固定维度上。

传统的机器学习,需要构造特征,不同领域定制化程度很高,这个模型A领域用了,B领域几乎要从头再做一遍,没有办法把其他的特征迁移过来很好的使用。某些领域效果很好,某些领域另外一个算法很好,传统机器学习把各种各样的方式做以融合来提升效果。

其次,它在降低输出维度的同时保持了整个句子中最显著的 n-gram
特征。
这是通过平移不变的方式实现的,每个滤波器都能从句子的任何地方提取特定的特征,并加到句子的最终表示中。

深度学习则可实现端到端,无需大量特征工程。框架的通用性也很好,能满足多领域的需求,并且可以使用费监督语料训练字词向量提升效果。

词嵌入可以随机初始化,也可以在大型未标记语料库上进行预训练。第二种方法有时对性能提高更有利,特别是当标记数据有限时。卷积层和最大池化的这种组合通常被堆叠起来,以构建深度
CNN
网络。
这些顺序卷积有助于改进句子的挖掘,以获得包含丰富语义信息的真正抽象表征。内核通过更深的卷积覆盖了句子的大部分,直到完全覆盖并创建了句子特征的总体概括。

但是为什么有人吐槽Deep learning?

2. 窗口方法

因为调参很麻烦,有时改了一下参数好很多,改了一个参数效果又下降了,有的算法能够对此有一定的解释,但不像传统机器学习能够解释得那么好。这两大帮派不能说完全谁战胜了谁,是相融相生的。

上述架构将完整句子建模为句子表征。然而,许多 NLP
任务(如命名实体识别,词性标注和语义角色标注)需要基于字的预测。为了使
CNN
适应这样的任务,需要使用窗口方法,其假定单词的标签主要取决于其相邻单词。
因此,对于每个单词,存在固定大小的窗口,窗口内的子句都在处理的范围内。如前所述,独立的
CNN 应用于该子句,并且预测结果归因于窗口中心的单词。按照这个方法,Poira
等人采用多级深度 CNN 来标记句子中的每个单词为 aspect 或
non-aspect。结合一些语言模式,它们的集成分类器在 aspect
检测方面表现很好。

2. TextCNN

词级分类的最终目的通常是为整个句子分配一系列的标签。在这样的情况下,有时会采用结构化预测技术来更好地捕获相邻分类标签间的关系,最终生成连贯标签序列,从而给整个句子提供最大分数。

永利网站网址 27

为了获得更大的上下文范围,经典窗口方法通常与时延神经网络相结合。这种方法中,可以在整个序列的所有窗口上进行卷积。通过定义特定宽度的内核,卷积通常会受到约束。因此,相较于经典窗口方法(只考虑要标记单词周围窗口中的单词),TDNN
会同时考虑句子中的所有单词窗口。TDNN 有时也能像 CNN
架构一样堆叠,以提取较低层的局部特征和较高层的总体特征。

它是一个单层的CNN,选择了几种类型的卷积,做一个feature
map,然后用max-pooling取得每个map最大的特征作为最终的输出,结构非常简单,大家只要有一点深度学习的知识就可以。但是因为过于简单,而且CNN天生的缺陷是宽度有限,导致它会损失语义的问题。

应用

2. Deep Pyramin CNN

在这部分,研究者介绍了一些使用 CNN 来处理 NLP
任务的研究,这些研究在它们当时所处时代属于前沿。

Deep Pyramin CNN就是深度的CNN, CNN的特点就是结构简单。虽然有block
N,但它每个block长得都是一样的,除了第一层,每一层就是一个pooling取一半,剩下是两个等宽度的卷积,输出250维,叠加好几层后就可能学到非常准的语义。

Kim
探讨了使用上述架构进行各种句子分类任务,包括情感、主观性和问题类型分类,结果很有竞争力。因其简单有效的特点,这种方法很快被研究者接受。在针对特定任务进行训练之后,随机初始化的卷积内核成为特定
n-gram
的特征检测器,这些检测器对于目标任务非常有用。但是这个网络有很多缺点,最主要的一点是
CNN 没有办法构建长距离依存关系。

永利网站网址 28

永利网站网址 29

3. Hierarchical Attention Network

图 7:4 种预训练 7-gram 内核得到的最好核函数;每个内核针对一种特定
7-gram。

这个模型的优点是非常符合人类的思维。Word级别的时候前面的套路都是一样的,做各种Embedding,在Embedding到下一层次,这个输到下一层sentence级别之前会加一层Attention,让它知道这句话里面哪一个词最重要,这像我们知道一句话中哪个词最重要。

Kalchbrenner
等人的研究在一定程度上解决了上述问题。他们发表了一篇著名的论文,提出了一种用于句子语义建模的动态卷积神经网络。他们提出了动态
k-max 池化策略,即给定一个序列 p,选择 k
种最有效的特征。选择时保留特征的顺序,但对其特定位置不敏感。在 TDNN
的基础上,他们增加了动态 k-max
池化策略来创建句子模型。这种结合使得具有较小宽度的滤波器能跨越输入句子的长范围,从而在整个句子中积累重要信息。在下图中,高阶特征具有高度可变的范围,可能是较短且集中,或者整体的,和输入句子一样长。他们将模型应用到多种任务中,包括情感预测和问题类型分类等,取得了显著的成果。总的来说,这项工作在尝试为上下文语义建模的同时,对单个内核的范围进行了注释,并提出了一种扩展其范围的方法。

最终输出之前再加个Attention,这个Attenton去学这里面哪些句子最重要的。你可以简单的理解,它把我们输入的那么多文本,也是经过了一层层的过滤,前面是通过卷积的过程,它现在是通过Attention的机制去找。

永利网站网址 30

还有一个特别好的地方是学部分可解释,句子里哪些词最重要,它的蓝颜色就更深,它能找到语义级别哪个语义对分类贡献最大,这是这个网络很好的一点。

图 8:DCNN
子图,通过动态池化,较高层级上的宽度较小滤波器也能建立输入句子中的长距离相关性。

包括前面讲的HNN、Deep Pyramin
CNN,网上的实现跟论文是有一定差别的。所以大家要注意,我们关注的是它整体的网络结构,并不是每一点的百分之百的还原,我们不是它的复制者,而是它的使用者。所有的网络结构、参数甚至过程,只要大体的思想有了就OK。这两个是many
to one在文本分类上用得很多的。

情感分类等任务还需要有效地抽取 aspect 与其情感极性(Mukherjee and Liu,
2012)。Ruder 等人还将 CNN 应用到了这类任务,他们将 aspect
向量与词嵌入向量拼接以作为输入,并获得了很好的效果。CNN
建模的方法一般因文本的长短而异,在较长文本上的效果比较短文本上好。Wang
et al. 提出利用 CNN
建模短文本的表示,但是因为缺少可用的上下文信息,他们需要额外的工作来创建有意义的表征。因此作者提出了语义聚类,其引入了多尺度语义单元以作为短文本的外部知识。最后
CNN 组合这些单元以形成整体表示。

4. 序列标注

CNN 还广泛用于其它任务,例如 Denil et al. 利用 DCNN
将构成句子的单词含义映射到文本摘要中。
其中 DCNN
同时在句子级别和文档级别学习卷积核,这些卷积核会分层学习并捕获不同水平的特征,因此
DCNN 最后能将底层的词汇特征组合为高级语义概念。

序列标注就两个东西:第一个是定义标签体系。我们这边一般最常用BMES,简单一点的IO,复杂一点的BIO,BMES算是一个经典的方法,不多也不少,还有M1、M2、M3更复杂的一般都不太用。

此外,CNN 也适用于需要语义匹配的 NLP 任务。例如我们可以利用 CNN
将查询与文档映射到固定维度的语义空间,并根据余弦相似性对与特定查询相关的文档进行排序。在
QA 领域,CNN
也能度量问题和实体之间的语义相似性,并借此搜索与问题相关的回答。机器翻译等任务需要使用序列信息和长期依赖关系,因此从结构上来说,这种任务不太适合
CNN。但是因为 CNN 的高效计算,还是有很多研究者尝试使用 CNN
解决机器翻译问题。

5. 深度学习和传统文本处理方法的结合

总体而言,CNN
在上下文窗口中挖掘语义信息非常有效,然而它们是一种需要大量数据训练大量参数的模型。
因此在数据量不够的情况下,CNN
的效果会显著降低。CNN
另一个长期存在的问题是它们无法对长距离上下文信息进行建模并保留序列信息,其它如递归神经网络等在这方面有更好的表现。

传统的CRF用起来效果不错,Deep
learning也能够把这个事情做得很好。LSTM可以学习到很长的上下文,而且对识别非常有帮助。实际问题或者工业应用来说,我们要保证它的整体效果和复杂度的情况下,这边Bi-LSTM是一个非常好的方式,也是相对比较成熟的方式。

04

为什么要加CRF?

循环神经网络

我对这个模型结构的看待,它是一个深度学习和传统方式非常完美的结合。Bi-LSTM做特征工程,CRF做标签的输出。很多同学都试过,用纯的Bi-LSTM去写,最终输出标签之间没有序列依赖的关系。

循环神经网络的思路是处理序列信息。「循环」表示 RNN
模型对序列中的每一个实例都执行同样的任务,从而使输出依赖于之前的计算和结果。
通常,RNN
通过将 token
挨个输入到循环单元中,来生成表示序列的固定大小向量。一定程度上,RNN
对之前的计算有「记忆」,并在当前的处理中使用对之前的记忆。该模板天然适合很多
NLP 任务,如语言建模、机器翻译、语音识别、图像字幕生成。因此近年来,RNN
在 NLP 任务中逐渐流行。

6. 序列标注特征选择多维度字词向量表示

对 RNN 的需求

做这个模型能做什么事情?大家的网络都类似,怎么去PK?

这部分将分析支持 RNN 在大量 NLP 任务中广泛使用的基本因素。鉴于 RNN
通过建模序列中的单元来处理序列,它能够捕获到语言中的内在序列本质,序列中的单元是字符、单词甚至句子。语言中的单词基于之前的单词形成语义,一个简单的示例是「dog」和「hot
dog」。RNN
非常适合建模语言和类似序列建模任务中的此类语境依赖,
这使得大量研究者在这些领域中使用
RNN,频率多于 CNN。

这是非常好的一篇论文,讲到了我们怎么能够把各种各样的level的信息用到,它这边是英文,所以有一个char级别的,先对char,通过RNN、CNN做一个Embedding。学习到char级别上的关系,char级别的关系合并之后是黄颜色那个字符的向量,然后它又把word级别的红颜色的词向量也加进去拼起来,还有两个是灰颜色的,灰颜色的是人工特征。就看大家自己怎么加,这是每个人的智慧。

RNN
适合序列建模任务的另一个因素是它能够建模不定长文本,包括非常长的句子、段落甚至文档。与
CNN 不同,RNN
的计算步灵活,从而提供更好的建模能力,为捕获无限上下文创造了可能。
这种处理任意长度输入的能力是使用
RNN 的主要研究的卖点之一。

7. 引入注意力机制来实现生成式摘要

很多 NLP
任务要求对整个句子进行语义建模。这需要在固定维度超空间中创建句子的大意。RNN
对句子的总结能力使得它们在机器翻译等任务中得到更多应用,机器翻译任务中整个句子被总结为固定向量,然后映射回不定长目标序列。

生成式摘要是很难的一个东西,它的训练集标注比我们标分词、标分类难得多,要有一篇文章,人得写出摘要,整理出好多这样的摘要。因为每个人写得不一样,包括评测的方式BLUE等,所以做摘要比较难。但是我们平时可以基于生成式文本的其他小应用。

RNN 还对执行时间分布式联合处理(time distributed joint
processing)提供网络支持,大部分序列标注任务属于该领域。
具体用例包括多标签文本分类、多模态情感分析等应用。

举个简单的例子:大家爬过一些新闻的网站,那么长的正文一般正文第一段把事情都说清楚了,然后有一个新闻的标题,我们可以用第一段作为输入,标题作为输出,做这样一个简单的通过新闻第一段可以写出新闻标题的功能,其实跟生成摘要的思想是一样的。唯一的差别是它加了注意力的机制,会发现它关注输出的哪些词对语义表达最有用,它会关注有用的信息,解码的时候就可以得到各种各样的序列、各种各样的值,用beam
search找到最好的结果。

上文介绍了研究人员偏好使用 RNN 的几个主要因素。然而,就此认为 RNN
优于其他深度网络则大错特错。
近期,多项研究就 CNN 优于 RNN
提出了证据。甚至在 RNN 适合的语言建模等任务中,CNN 的性能与 RNN
相当。CNN 与 RNN 在建模句子时的目标函数不同。RNN
尝试建模任意长度的句子和无限的上下文,而 CNN 尝试提取最重要的
n-gram。尽管研究证明 CNN 是捕捉 n-gram
特征的有效方式,这在特定长度的句子分类任务中差不多足够了,但 CNN
对词序的敏感度有限,容易限于局部信息,忽略长期依赖。

引入注意机制,以前做不了这个事情,现在我们可以做这个事情。工业中用得比较多的是抽取式的摘要。简单来说,就是一篇文章中哪些句子比较重要,把它抽出来就可以了。

《Comparative Study of CNN and RNN for Natural Language Processing》对
CNN 和 RNN 的性能提供了有趣的见解。研究人员在多项 NLP
任务(包括情感分类、问答和词性标注)上测试后,发现没有明确的赢家:二者的性能依赖于任务所需的全局语义。

四、文本挖掘的经验和思考 实际工程中需要考虑的因素

下面,我们讨论了文献中广泛使用的一些 RNN 模型。

  1. 长文本阅读的场景和关键难点有哪些?
  2. 文档结构信息(如段落)丢失时该如何还原?
  3. 数据的训练量如何,质量和数据量都不行的时候该怎么办?
  4. 如何构建一个真正面向实用的测评系统?
  5. 领域知识如何引入到系统中?
  6. 知识图谱自动化构建方法?
  7. 深度学习和经典机器学习该如何取舍?

RNN 模型

实际工程中运用深度学习挖掘文本的思考

1. 简单 RNN

深度学习优点:

在 NLP 中,RNN 主要基于 Elman 网络,最初是三层网络。图 9
展示了一个较通用的 RNN,它按时间展开以适应整个序列。图中 x_t
作为网络在时间步 t 处的输入,s_t 表示在时间步 t 处的隐藏状态。s_t
的计算公式如下:

我们可以用非监督的训练向量来提升它的泛化,主要目标是提升泛化。它有些端到端的方式,可以提供新思路。

永利网站网址 31

深度学习能够克服传统模型的缺点,大家用CRF很多,但CFR有时拿不到太远的长的上下文,它比较关注左右邻居的状态,很远的状态对它影响不大。

因此,s_t 的计算基于当前输入和之前时间步的隐藏状态。函数 f
用来做非线性变换,如 tanh、ReLU,U、V、W 表示在不同时间上共享的权重。在
NLP 任务中,x_t 通常由 one-hot
编码或嵌入组成。它们还可以是文本内容的抽象表征。o_t
表示网络输出,通常也是非线性的,尤其是当网络下游还有其他层的时候。

但是有些语义影响很大,比如:我们要抽“原告律师”、“被告律师”、“原告刘德华”,然后中间讲了一大堆,“委托律师张学友”,我们能抽取出来他是律师,但是如何知道他是原告律师?

永利网站网址 32

一定要看到刘德华前面三个有“原告”两个字,才知道他是原告律师。这时如果用深度学习LSTM的方式可以学到比较远的上下文特征,帮助你解决这个问题。

图 9:简单 RNN
网络(图源:

深度学习缺点:

RNN 的隐藏状态通常被认为是其最重要的元素。如前所述,它被视为 RNN
的记忆元素,从其他时间步中累积信息。但是,在实践中,这些简单 RNN
网络会遇到梯度消失问题,使学习和调整网络之前层的参数变得非常困难。

  1. 小数据量的情况效果不能保证;
  2. 调参工作量有时不亚于特征工程;
  3. 系统要配合客户的部署硬件系统。

该局限被很多网络解决,如长短期记忆网络、门控循环单元和残差网络,前两个是
NLP 应用中广泛使用的 RNN 变体。

思考:

2. 长短期记忆

  1. 在业务场景下尽量收集并理解数据,分析问题本质,选择合适模型;
  2. 初始阶段可以使用传统机器学习模型快速尝试,再引入深度学习技术;
  3. 疑难问题使用端到端也许会有惊喜;
  4. 关注前沿技术,包括对抗网络、强化学习、迁移学习;
  5. 一句话送给大家, “数据决定效果的上限,模型只是逼近上线”;
  6. 不断尝试,从挫折中总结规律。

LSTM 比简单 RNN
多了『遗忘』门,其独特机制帮助该网络克服了梯度消失和梯度爆炸问题。

本文由 @达观数据 原创发布于人人都是产品经理。未经许可,禁止转载

永利网站网址 33

题图作者提供返回搜狐,查看更多

图 10:LSTM 和 GRU 门图示(图源:

责任编辑:

与原版 RNN 不同,LSTM
允许误差通过无限数量的时间步进行反向传播。它包含三个门:输入门、遗忘门和输出门,
并通过结合这三个门来计算隐藏状态,如下面的公式所示:

永利网站网址 34

3. 门控循环单元

另一个门控 RNN 变体是 GRU,复杂度更小,其在大部分任务中的实验性能与 LSTM
类似。GRU 包括两个门:重置门和更新门,并像没有记忆单元的 LSTM
那样处理信息流。
因此,GRU 不加控制地暴露出所有的隐藏内容。由于 GRU
的复杂度较低,它比 LSTM 更加高效。其工作原理如下:

永利网站网址 35

研究者通常面临选择合适门控 RNN 的难题,这个问题同样困扰 NLP
领域开发者。纵观历史,大部分对 RNN 变体的选择都是启发式的。《Empirical
Evaluation of Gated Recurrent Neural Networks on Sequence
Modeling》对前面三种 RNN 变体进行了对比评估,不过评估不是在 NLP
任务上进行的,而是复调音乐建模和语音信号建模相关任务。他们的评估结果明确表明门控单元(LSTM
和 GRU)优于传统的简单 RNN(实验中用的是 tanh
激活函数),如下图所示。但是,他们对这两种门控单元哪个更好没有定论。其他研究也注意到了这一点,因此人们在二者之间作出选择时通常利用算力等其他因素。

永利网站网址 36

图 11:不同 RNN 变体在训练集和验证集上的学习曲线,上图 x
轴表示迭代次数,下图 x 轴表示挂钟时间,y 轴表示模型的负对数似然。

应用

1. 用于单词级别分类任务的 RNN

之前,RNN
经常出现在单词级别的分类任务中。其中的很多应用到现在仍然是所在任务中的最优结果。论文《Neural
Architectures for Named Entity Recognition》提出 LSTM+CRF
架构。它使用双向 LSTM
解决命名实体识别问题,该网络捕捉目标单词周围的任意长度上下文信息(缓解了固定窗口大小的约束),从而生成两个固定大小的向量,再在向量之上构建另一个全连接层。最终的实体标注部分使用的是
CRF 层。

RNN 在语言建模任务上也极大地改善了基于 count statistics
的传统方法。该领域的开创性研究是 Alex Graves 2013 年的研究《Generating
Sequences With Recurrent Neural Networks》,介绍了 RNN
能够有效建模具备长距离语境结构的复杂序列。该研究首次将 RNN 的应用扩展到
NLP 以外。之后,Sundermeyer 等人的研究《From Feedforward to Recurrent
LSTM Neural Networks for Language Modeling》对比了在单词预测任务中用 RNN
替换前馈神经网络获得的收益。该研究提出一种典型的神经网络层级架构,其中前馈神经网络比基于
count 的传统语言模型有较大改善,RNN 效果更好,LSTM
的效果又有改进。该研究的一个重点是他们的结论可应用于多种其他任务,如统计机器翻译。

2. 用于句子级别分类任务的 RNN

Xin Wang 等人 2015 年的研究《Predicting Polarities of Tweets by
Composing Word Embeddings with Long Short-Term Memory》提出使用 LSTM
编码整篇推文,用 LSTM 的隐藏状态预测情感极性。这种简单的策略被证明与 Nal
Kalchbrenner 等人 2014 年的研究《A Convolutional Neural Network for
Modelling Sentences》提出的较复杂 DCNN 结构性能相当,DCNN 旨在使 CNN
模型具备捕捉长期依赖的能力。在一个研究否定词组(negation
phrase)的特殊案例中,Xin Wang 等人展示了 LSTM 门的动态可以捕捉单词 not
的反转效应。

与 CNN 类似,RNN
的隐藏状态也可用于文本之间的语义匹配。在对话系统中,Lowe 等人 2015
年的研究《The Ubuntu Dialogue Corpus: A Large Dataset for Research in
Unstructured Multi-Turn Dialogue Systems》提出用 Dual-LSTM
匹配信息和候选回复,Dual-LSTM
将二者编码为固定大小的向量,然后衡量它们的内积用于对候选回复进行排序。

3. 用于生成语言的 RNN

NLP 领域中的一大难题是生成自然语言,而这是 RNN
另一个恰当的应用。基于文本或视觉数据,深度 LSTM
在机器翻译、图像字幕生成等任务中能够生成合理的任务特定文本。
在这些案例中,RNN
作为解码器。

在 Ilya Sutskever 等人 2014 年的研究《Sequence to Sequence Learning with
Neural Networks》中,作者提出了一种通用深度 LSTM
编码器-解码器框架,可以实现序列之间的映射。使用一个 LSTM
将源序列编码为定长向量,源序列可以是机器翻译任务中的源语言、问答任务中的问题或对话系统中的待回复信息。然后将该向量作为另一个
LSTM的初始状态。在推断过程中,解码器逐个生成 token,同时使用最后生成的
token 更新隐藏状态。束搜索通常用于近似最优序列。

该研究使用了一个 4 层 LSTM
在机器翻译任务上进行端到端实验,结果颇具竞争力。《A Neural
Conversational
Model》使用了同样的编码器-解码器框架来生成开放域的有趣回复。使用 LSTM
解码器处理额外信号从而获取某种效果现在是一种普遍做法了。《A
Persona-Based Neural Conversation
Model》提出用解码器处理恒定人物向量(constant persona
vector),该向量捕捉单个说话人的个人信息。在上述案例中,语言生成主要基于表示文本输入的语义向量。类似的框架还可用于基于图像的语言生成,使用视觉特征作为
LSTM 解码器的初始状态。

视觉 QA 是另一种任务,需要基于文本和视觉线索生成语言。2015 年的论文《Ask
Your Neurons: A Neural-based Approach to Answering Questions about
Images》是首个提供端到端深度学习解决方案的研究,他们使用 CNN
建模输入图像、LSTM 建模文本,从而预测答案。

永利网站网址 37

图 12:结合 LSTM 解码器和 CNN
图像嵌入器,生成图像字幕(图源:

《Ask Me Anything: Dynamic Memory Networks for Natural Language
Processing》提出动态记忆网络(dynamic memory
network,DMN)来解决这个问题。其思路是重复关注输入文本和图像,以使每次迭代中的信息都得到改善。
注意力网络用于关注输入文本词组。

永利网站网址 38

图 13:神经图像
QA(图源:

注意力机制

传统编码器-解码器框架的一个潜在问题是:有时编码器会强制编码可能与目前任务不完全相关的信息。这个问题在输入过长或信息量过大时也会出现,选择性编码是不可能的。

例如,文本摘要任务可以被视为序列到序列的学习问题,其中输入是原始文本,输出是压缩文本。直观上看,让固定大小向量编码长文本中的全部信息是不切实际的。类似的问题在机器翻译任务中也有出现。

在文本摘要和机器翻译等任务中,输入文本和输出文本之间存在某种对齐,这意味着每个
token
生成步都与输入文本的某个部分高度相关。这启发了注意力机制。该机制尝试通过让解码器回溯到输入序列来缓解上述问题。具体在解码过程中,除了最后的隐藏状态和生成
token 以外,解码器还需要处理基于输入隐藏状态序列计算出的语境向量。

《Neural Machine Translation by Jointly Learning to Align and
Translate》首次将注意力机制应用到机器翻译任务,尤其改进了在长序列上的性能。该论文中,关注输入隐藏状态序列的注意力信号由解码器最后的隐藏状态的多层感知机决定。通过在每个解码步中可视化输入序列的注意力信号,可以获得源语言和目标语言之间的清晰对齐。

永利网站网址 39

图 14:词对齐矩阵(图源:

类似的方法也被应用到摘要任务中,《A Neural Attention Model for
Abstractive Sentence
Summarization》用注意力机制处理输入句子从而得到摘要中的每个输出单词。作者执行
abstractive summarization,它与 extractive summarization
不同,但可以扩展到具备最小语言输入的大型数据。

在图像字幕生成任务中,《Show, Attend and Tell: Neural Image Caption
Generation with Visual Attention》用 LSTM
解码器在每个解码步中处理输入图像的不同部分。注意力信号由之前的隐藏状态和
CNN 特征决定。《Grammar as a Foreign
Language》将解析树线性化,从而将句法解析问题作为序列到序列学习任务。该研究证明注意力机制更加数据高效。指回输入序列的进一步步骤是:在特定条件下,直接将输入中的单词或子序列复制到输出序列,这在对话生成和文本摘要等任务中也有用。解码过程中的每个时间步可以选择复制还是生成。

在基于 aspect 的情感分析中,《Attention-based LSTM for Aspect-level
Sentiment Classification》提出基于注意力的解决方案,使用 aspect
嵌入为分类提供额外支持。注意力模块选择性关注句子的某些区域,这会影响
aspect 的分类。图 16 中,对于 a 中的
aspect「service」,注意力模块动态聚焦词组「fastest delivery times」,b
中对于
aspect「food」,注意力在整个句子中识别了多个关键点,包括「tasteless」和「too
sweet」。近期,《Targeted Aspect-Based Sentiment Analysis via Embedding
Commonsense Knowledge into an Attentive
LSTM》用层级注意力机制(包含目标级注意力和句子级注意力)增强
LSTM,利用常识处理基于目标 aspect 的情感分析。

永利网站网址 40

图 15:使用注意力机制进行 aspect
分类(图源:

永利网站网址 41

图 16:对于特定
aspect,注意力模块对句子的关注点(图源:

另一方面,《Aspect Level Sentiment Classification with Deep Memory
Network》采用基于记忆网络(也叫
MemNet)的解决方案,使用多跳注意力(multiple-hop
attention)。记忆网络上的多个注意力计算层可以改善对记忆中大部分信息区域的查找,从而有助于分类。这一研究目前仍是该领域的当前最优结果。

由于注意力模块应用的直观性,NLP
研究者和开发者在越来越多的应用中积极使用注意力模块。

并行化注意力:Transformer

CNN 和 RNN
在包括编码器-解码器架构在内的序列传导应用中非常关键。注意力机制可以进一步提升这些模型的性能。但是,这些架构面临的一个瓶颈是编码步中的序列处理。为了解决该问题,《Attention
Is All You Need》提出了
Transformer,它完全去除了编码步中的循环和卷积,仅依赖注意力机制来捕捉输入和输出之间的全局关系。因此,整个架构更加并行化,在翻译、解析等任务上训练得到积极结果所需的时间也更少。

永利网站网址 42

图 17:multi-head 注意力(图源:

Transformer 的编码器和解码器部分都有一些堆叠层。每个层有两个由
multi-head 注意力层组成的子层,之后是 position-wise 前馈网络。对于查询集
Q、关键 K 和值 V,multi-head 注意力模块执行注意力 h 次,计算公式如下:

永利网站网址 43

此处,W_i^{[.]} 和 W^o
是投影参数。该模型融合了残差连接、层归一化、dropout、位置编码等技术,在英语-德语、英语-法语翻译和
constituency parsing 中获得了当前最优结果。

05

不同模型在不同 NLP 任务上的表现

在下面表 2 到表 7
中,我们总结了一系列深度学习方法在标准数据集上的表现,这些数据集都是近年来最流行的探究主题。我们的目标是向读者展示深度学习社区常用的数据集以及不同模型在这些数据集上的当前最佳结果。

词性标注

WSJ-PTB(the Wall Street Journal part of the Penn Treebank
Dataset)语料库包含 117 万个
token,已被广泛用于开发和评估词性标注系统。Giménez 和 arquez在 7
个单词窗口内采用了基于人工特征的一对多 SVM,其中有些基本的 n-gram
模式被评估用来构成二元特征,如:「前一个单词是 the」,「前两个标签是 DT
NN」等。词性标注问题的一大特征是相邻标签之间的强依赖性。通过简单的从左到右标注方案,该方法仅通过特征工程建模相邻标签之间的依赖性。

为了减少特征工程,Collobert
等人通过多层感知机仅依赖于单词窗口中的词嵌入。Santos 和
Zadrozny将词嵌入和字符嵌入连接起来,以便更好地利用形态线索。在论文《Learning
Character-level Representations for Part-of-Speech
Tagging》中,他们没有考虑
CRF,但由于单词级的决策是在上下文窗口上做出的,可以看到依赖性被隐式地建模。Huang
等人把单词嵌入和手动设计的单词级特征连接起来,并采用双向 LSTM
来建模任意长度的上下文。

一系列消融分析(ablative analysis)表明,双向 LSTM 和 CRF
都提升了性能。Andor
等人展示了一种基于转换(transition-based)的方法,该方法通过简单的前馈神经网络上产生了具有竞争性的结果。当应用于序列标注任务时,DMN(Kumar
et al., 2015)允许通过把每个 RNN
的隐藏状态视为记忆实体来多次关注上下文,且每次都关注于上下文的不同部分。

永利网站网址 44

表 2:词性标注

句法分析

有两种句法分析:依存句法分析(dependency
parsing)和成分句法分析(constituency
parsing)。
前者将单个单词及其关系联系起来,后者依次将文本拆分成子短语(sub-phrase)。基于转换的方法是很多人的选择,因为它们在句子长度上是线性的。解析器会做出一系列决定:根据缓冲器顺序读取单词,然后逐渐将它们组合到句法结构中(Chen
and Manning, 2014)。

在每个时间步,决策是基于包含可用树节点的堆栈、包含未读单词的缓冲器和获得的依存关系集来确定的。Chen
and Manning
利用带有一个隐藏层的神经网络来建模每个时间步做出的决定。输入层包含特定单词、词性标注和弧标签的嵌入向量,这些分别来自堆栈、缓冲器和依存关系集。

Tu 等人扩展了 Chen and Manning
的工作,他们用了带有两个隐藏层的深度模型。但是,不管是 Tu 等人还是 Chen

Manning,他们都依赖于从解析器状态中选择手动特征,而且他们只考虑了少数最后的几个
token。Dyer 等人提出堆栈-LSTMs 来建模任意长度的 token
序列。当我们对树节点的堆栈进行 push 或 pop 时,堆栈的结束指针(end
pointer)会改变位置。Zhou 等人整合集束搜索和对比学习,以实现更好的优化。

基于变换的模型也被应用于成分句法分析。Zhu
等人基于堆栈和缓冲器顶部几个单词的特征(如词性标签、成分标签)来进行每个转换动作。通过用线性标签序列表示解析树,Vinyals
等人将 seq2seq 学习方法应用于该问题。

永利网站网址 45

表 3.1:依存句法分析(UAS/LAS=未标记/标记的 Attachment 分数;WSJ=The
Wall Street Journal Section of Penn Treebank)

永利网站网址 46

表 3.2:成分句法分析

命名实体识别

CoNLL 2003
是用于命名实体识别的标准英语数据集,其中主要包含四种命名实体:人、地点、组织和其它实体。NER
属于自然语言处理问题,其中词典非常有用。Collobert
等人首次通过用地名索引特征增强的神经架构实现了具有竞争性的结果。Chiu and
Nichols将词典特征、字符嵌入和单词嵌入串联起来,然后将其作为双向 LSTM
的输入。

另一方面,Lample
等人仅靠字符和单词嵌入,通过在大型无监督语料库上进行预训练嵌入实现了具有竞争性的结果。与
POS 标签类似,CRF 也提升了 NER 的性能,这一点在 Lample 等人的《Neural
Architectures for Named Entity Recognition》中得到了证实。总体来说,带有
CRF 的双向 LSTM 对于结构化预测是一个强有力的模型。

Passos 等人提出经修正的 skip-gram
模型,以更好地学习与实体类型相关的词嵌入,此类词嵌入可以利用来自相关词典的信息。Luo
等人联合优化了实体以及实体和知识库的连接。Strubell
等人提出用空洞卷积,他们希望通过跳过某些输入来定义更宽的有效输入,因此实现更好的并行化和上下文建模。该模型在保持准确率的同时展示出了显著的加速。

永利网站网址 47

表 4:命名实体识别

语义角色标注

语义角色标注旨在发现句子中每个谓词的谓词-论元(predicate-argument)结构。至于每个目标动词,句子中充当动词语义角色的所有成分都会被识别出来。典型的语义论元包括施事者、受事者、工具等,以及地点、时间、方式、原因等修饰语
(Zhou and Xu, 2015)。表 5 展示了不同模型在 CoNLL 2005 & 2012
数据集上的性能。

传统 SRL
系统包含几个阶段:
生成解析树,识别出哪些解析树节点代表给定动词的论元,最后给这些节点分类以确定对应的
SRL
标签。每个分类过程通常需要抽取大量特征,并将其输入至统计模型中(Collobert
et al., 2011)。

给定一个谓词,Täckström
等人基于解析树,通过一系列特征对该谓词的组成范围以及该范围与该谓词的可能关系进行打分。他们提出了一个动态规划算法进行有效推断。Collobert
等人通过解析以附加查找表形式提供的信息,并用卷积神经网络实现了类似的结果。Zhou
和 Xu提出用双向 LSTM
来建模任意长度的上下文,结果发现不使用任何解析树的信息也是成功的。

永利网站网址 48

表 5:语义角色标注

情感分类

SST 数据集(Stanford Sentiment Treebank)包含从电影评论网 Rotten Tomatoe
上收集的句子。它由 Pang 和 Lee提出,后来被 Socher
等人进一步拓展。该数据集的标注方案启发了一个新的情感分析数据集——CMU-MOSI,其中模型需要在多模态环境中研究情感倾向。

Socher 等人和 Tai
等人都是通过成分解析树及递归神经网络来改善语义表征。另一方面,树形
LSTM(tree-LSTM)比线性双向 LSTM
表现更好,说明树结构能够更好地捕捉自然句子的句法特性。Yu
等人提出用情感词汇微调预训练的词嵌入,然后基于 Tai
等人的研究观察改进结果。

Kim和 l Kalchbrenner 等人都使用卷积层。Kim 等人提出的模型与图 5
中的相似,而 Kalchbrenner 等人通过将 k-max
池化层和卷积层交替使用,以分层方式构建模型。

永利网站网址 49

表 6:不同情感分类模型在 SST-1 和 SST-2 数据集上的效果。

机器翻译

基于短语的 SMT 框架(Koehn et al.,
2003)将翻译模型分解为原语短语和目标语短语之间的概率匹配问题。Cho et al.
进一步提出用 RNN
编码器-解码器框架学习原语与目标语的匹配概率。而基于循环神经网络的编码器-解码器架构,再加上注意力机制在一段时间内成为了业内最标准的架构。Gehring
et al. 提出了基于 CNN 的 Seq2Seq 模型,CNN
以并行的方式利用注意力机制计算每一个词的表征,解码器再根据这些表征确定目标语序列。Vaswani
et al. 随后提出了完全基于注意力机制的
Transformer,它目前已经是神经机器翻译最常见的架构了。

永利网站网址 50

表 7:不同机器翻译模型和 BLEU 值。

问答系统

QA
问题有多种形式,有的研究者根据大型知识库来回答开放性问题,也有的研究者根据模型对句子或段落的理解回答问题。对于基于知识库的问答系统,学习回答单关系查询的核心是数据库中找到支持的事实。

永利网站网址 51

表 8:不同模型在不同问答数据集上的效果。

上下文嵌入

2018 年,使用预训练的语言模型可能是 NLP
领域最显著的趋势,它可以利用从无监督文本中学习到的「语言知识」,并迁移到各种
NLP 任务中。这些预训练模型有很多,包括 ELMo、ULMFiT、OpenAI Transformer
和 BERT,其中又以 BERT 最具代表性,它在 11 项 NLP
任务中都获得当时最佳的性能。
不过目前有 9
项任务都被微软的新模型超过。下图展示了不同模型在 12 种 NLP
任务中的效果:

永利网站网址 52永利网站网址 53

BERT
的核心过程:
它会先从数据集抽取两个句子,其中第二句是第一句的下一句的概率是
50%,这样就能学习句子之间的关系。其次随机去除两个句子中的一些词,并要求模型预测这些词是什么,这样就能学习句子内部的关系。最后再将经过处理的句子传入大型
Transformer 模型,并通过两个损失函数同时学习上面两个目标就能完成训练。

永利网站网址 54

如上所示为不同预训练模型的架构,BERT 可以视为结合了 OpenAI GPT 和 ELMo
优势的新模型。
其中 ELMo 使用两条独立训练的 LSTM 获取双向信息,而
OpenAI GPT 使用新型的 Transformer 和经典语言模型只能获取单向信息。

BERT 的主要目标是在 OpenAI GPT
的基础上对预训练任务做一些改进,以同时利用 Transformer
深度模型与双向信息的优势。这种「双向」的来源在于 BERT
与传统语言模型不同,它不是在给定所有前面词的条件下预测最可能的当前词,而是随机遮掩一些词,并利用所有没被遮掩的词进行预测。

永利网站网址 55永利网站网址 56

发表评论

电子邮件地址不会被公开。 必填项已用*标注

标签:, , , , , , ,
网站地图xml地图