NLP&深度学习:近期趋势概述

NLP&深度学习:近期趋势概述git

 

摘要:当NLP赶上深度学习,到底发生了什么样的变化呢?github

 

在最近发表的论文中,Young及其同事汇总了基于深度学习的天然语言处理(NLP)系统和应用程序的一些最新趋势。本文的重点介绍是对各类NLP任务(如视觉问答(QA)机器翻译)最新技术(SOTA)结果的回顾和比较。在这篇全面的综述中,你能够详细了解NLP深度学习的过去,如今和将来。此外,你还将学习一些 在NLP中应用深度学习的最佳实践。其中主题包括:web

一、分布式表示的兴起(例如,word2vec);算法

二、卷积,循环和递归神经网络;spring

三、在强化学习中的NLP的应用;网络

四、无监督模型在表示学习中的最新进展;框架

五、将深度学习模型与加强记忆策略相结合;机器学习

 

 

什么是NLP?分布式

 

天然语言处理(NLP)涉及构建计算机算法以自动分析和表示人类语言。基于NLP的系统如今已经实现了普遍的应用,例如Google强大的搜索引擎,以及最近阿里巴巴的语音助手天猫精灵。NLP还可用于教授机器执行复杂的天然语言相关任务的能力,例如机器翻译对话生成函数

 

长期以来,用于研究NLP问题的大多数方法都采用浅机器学习模型和耗时的手工制做特征。因为大多数的语言信息用稀疏表示(高维特征)表示,这致使诸如维数灾难之类的问题。然而,随着最近词嵌入(低维,分布式表征)的普及和成功,与传统的机器学习模型(如SVM逻辑回归)相比,基于神经的模型在各类语言相关任务上取得了优异的成果。

 

分布式表征

 

如前所述,手工制做的特征主要用于模拟天然语言任务,直到神经网络的方法出现并解决了传统机器学习模型所面临的一些问题,如维数的灾难。

 

词嵌入: 分布向量,也称为词嵌入,基于所谓的分布假设-出如今相似语境中的单词具备类似的含义。Word嵌入是在任务上预先训练的,其目标是基于其上下文预测单词,一般使用浅层神经网络。下图说明了Bengio及其同事提出的神经语言模型 。

                       

 

词向量倾向于嵌入语法和语义信息,并在各类NLP任务中负责SOTA,例如情感分析和句子组成。

 

分布式表征在过去被大量用于研究各类NLP任务,可是当连续的词袋(CBOW)和skip-gram模型被引入该领域时,它才开始流行起来。它们很受欢迎,由于它们能够有效地构建高质量的词嵌入,而且它们能够用于语义组合(例如,'man'+'royal'='king')。

 

Word2vec2013年左右,Mikolav等人提出了CBOW和skip-gram模型。CBOW是构造词嵌入的神经网络方法,其目的是在给定上下文单词的状况下计算目标单词的条件几率。另外一方面,Skip-gram是构建词嵌入的神经网络方法,其目标是在给定中心目标单词的状况下预测周围的上下文单词(即条件几率)。对于两种模型,经过计算(以无监督的方式)预测的准确性来肯定单词嵌入维度。

 

使用词嵌入方法的挑战之一是当咱们想要得到诸如“hot potato”或“Boston Globe”之类的短语的矢量表示时。咱们不能简单地组合单个单词矢量表示,由于这些短语不表明单个单词的含义的组合。当考虑更长的短语和句子时,它会变得更加复杂。

 

word2vec模型的另外一个限制是使用较小的窗口大小(window sizes)产生相似的嵌入,用于对比诸如“好”和“坏”之类的单词,这对于这种区分很重要的任务(例如情感分析)是不可取的。词嵌入的另外一个限制是它们依赖于使用它们的应用程序,即为每一个新任务从新训练任务特定的嵌入是一个探索的选项,但这一般是计算上昂贵的,而且可使用负抽样更有效地解决。Word2vec模型还存在其余问题,例如没有考虑多义因素和其余可能从训练数据中浮现的偏见。

 

字符嵌入:对于诸如词性(POS)标记命名实体识别(NER)之类的任务,查看单词中的形态信息(例如字符或其组合是有用的。这对于形式丰富的语言也颇有用,例如葡萄牙语,西班牙语和中文。因为咱们在字符级别分析文本,所以这些类型的嵌入有助于处理未知单词问题,由于咱们再也不表示须要为了高效计算目的而须要减小的大词汇表。

 

最后,重要的是要理解即便字符级和字级嵌入都已成功应用于各类NLP任务,但长期影响仍受到质疑。例如,Lucy和Gauthier最近发现,词向量受限于它们如何很好地捕捉单词背后的概念意义的不一样方面。换句话说,他们声称只有分布式语义不能用于理解单词背后的概念。最近,在天然语言处理系统的背景下,对意义表征进行了重要的辩论

 

卷积神经网络(CNN)

 

CNN基本上是基于神经网络的方法,其应用于构成单词或n-gram以提取更高级特征的特征函数。由此产生的抽象特征已被有效地用于情感分析,机器翻译和问答(QA)系统,以及其余任务。Collobert和Weston是首批将基于CNN的框架应用于NLP任务的研究人员之一。他们的方法的目标是经过查找表将词转换为矢量表示,这使得一种原始的词嵌入方法,能够在神经网络训练期间学习权重(见下图)。

 

 

 

为了利用基本的CNN进行句子建模,首先要先将句子标记为单词,进一步将其转换为d 维的词嵌入矩阵(即输入嵌入层)。而后,在该输入嵌入层上应用卷积滤波器,其包括应用全部可能窗口大小(window size)的滤波器以产生所谓的特征映射。而后进行最大池操做,对每一个过滤器应用最大操做以得到固定长度输出并减少输出的维数,而且该过程产生最终句子表征。

 

 

 

经过增长上述基本的CNN的复杂性并使其适应于执行基于词的预测,能够研究诸如NER,物体检测和POS(词性标记)的其余NLP任务。这须要基于窗口(window)的方法,其中对于每一个单词,考虑相邻单词(句子)的固定大小窗口。而后将独立的CNN应用于句子中,而且训练目标是预测窗口中心的单词,也称为单词级分类。

 

CNNs的一个缺点是没法建模-长距离依赖关系,这对于各类NLP任务很重要。为了解决这个问题,CNN已经与时间延迟神经网络(TDNN)耦合,后者在训练期间能够当即实现更大的上下文范围。在不一样的NLP任务中表现成功的其余有用类型的CNN,例如情绪预测和问题类型分类,被称为动态卷积神经网络(DCNN)。DCNN使用动态k-max池策略,其中过滤器能够在执行句子建模时动态地跨越可变范围。

 

CNN还用于更复杂的任务,对于不一样长度的文本,例如物体检测,情感分析短文本分类讽刺检测。然而,其中一些研究报告说,在将基于CNN的方法应用于Twitter文本等微观文本时,外部知识是必要的。证实CNN有用的其余任务是查询-文档匹配,语音识别,机器翻译和问答等。另外一方面,DCNN被用于分层学习捕获并将低级词汇特征组合成用于文本的自动归纳的高级语义概念。

 

整体而言,CNN是有效的,由于它们能够在上下文窗口中挖掘语义线索,可是它们难以保持连续顺序和模拟远距离的上下文信息。RNN更适合这种类型的学习,接下来将对它们进行讨论。

 

递归神经网络(RNN)

 

RNN是专门用于处理顺序信息的神经网络的方法。RNN将计算应用于以先前计算结果为条件的输入序列。这些序列一般由固定大小的标记向量表示,他们被顺序送至循环单元。下图说明了一个简单的RNN框架。

 

 

 

RNN的主要优点在于可以记忆先前的计算结果并在当前计算中使用该信息。这使得RNN模型适合于在任意长度的输入中都具备上下文依赖性,这样能够为输入建立适当的组合。RNN已被用于研究各类NLP任务,例如机器翻译、图像字幕和语言建模等。

与CNN模型相比,RNN模型在特定的天然语言任务中能够一样有效甚至更好。由于它们模拟了数据不一样的方面,这才会使它们有效,具体的效果取决于任务所需的语义。

 

RNN指望的输入一般是单热(one-hot)编码或词嵌入,但在某些状况下,它们与由CNN模型构造的抽象表征耦合。简单的RNN容易遭受消失的梯度问题,这使得网络难以学习和调整较早层中的参数。其余变体正在出现已解决这个问题,例如长短时间记忆(LSTM)网络残留网络(ResNets)门控循环网络(GRU)后来被引入以克服这一限制。

 

RNN变体

 

LSTM由三个门(输入,遗忘和输出门)组成,并经过三者的组合计算隐藏状态。GRU相似于LSTM,但只包含两个门,效率更高,由于它们不那么复杂。一项研究代表,很难说RNN哪些门控更有效,一般只是根据可用的计算能力来挑选它们。研究及实验代表各类基于LSTM的模型用于序列到序列映射(经过编码器-解码器框架),其适用于机器翻译,文本摘要,人工对话建模,问题回答,基于图像的语言生成以及其余任务。

 

总的来讲,RNN能够用于许多NLP系统,例如:

•  字级分类(NER);

•  语言建模;

•  句子级别分类(例如,情感极性);

•  语义匹配(例如,将消息与对话系统中的候选响应相匹配);

•  天然语言生成(例如,机器翻译,视觉QA和图像字幕);

 

注意力机制

 

本质上,注意力机制是一种技术,其受益于容许上述基于RNN框架的解码器使用最后隐藏状态以及基于输入隐藏状态序列计算的信息(即上下文矢量)的须要。这对于须要在输入和输出文本之间进行某些对齐的任务特别有用。

 

注意力机制已成功用于机器翻译,文本摘要,图像字幕,对话生成和基于内容(aspect-based)的情感分析。而且已经有人提出了各类不一样形式和类型的注意力机制,它们仍然是NLP研究人员研究各类应用的重要领域。

 

递归神经网络(Recursive Neural Network)

 

与RNN相似,递归神经网络是对连续数据建模很是适用。这是由于语言能够被视为递归结构,其中单词和短语构成层次结构中其余更高级别的短语。在这种结构中,非终端节点由其全部子节点的表示来表示。下图说明了下面的一个简单的递归神经网络。

 

 

 

在基本递归神经网络形式中,组合函数(即网络)以自下而上的方法组合成分来计算更高级别短语的表示(参见上图)。在变体MV-RNN中,单词由矩阵和向量表示,这意味着由网络学习的参数表示每一个成分的矩阵。另外一种变型,即递归神经张量网络(RNTN),使得输入矢量之间的更多交互可以避免大的参数产生,如MV-RNN的状况。递归神经网络更能显示出灵活性,而且它们能够与LSTM单元耦合以处理诸如梯度消失之类的问题。

 

递归神经网络用于各类应用,例如:

•  解析;

•  利用短语级表示来进行情绪分析;

•  语义关系分类(例如,主题消息);

•  句子相关性;

 

 

强化学习

强化学习是经过机器学习的方法,训练代理执行离散动做,而后奖励。正在经过强化学习来研究几种天然语言生成(NLG)任务,例如文本摘要。

 

强化学习在NLP上的应用受到一些问题的阻力。当使用基于RNN的发生器时,标准答案会被模型生成的答案所取代,这会迅速提高错误率。此外,对于这样的模型,词级训练的目标不一样于测试度量的目标,例如用于机器翻译和对话系统的n-gram重叠测量,BLEU。因为这种差别,当前的NLG类型系统每每会产生不连贯,重复和枯燥的信息。

 

为了解决上述问题,业内采用称为REINFORCE的强化算法来解决NLP任务,例如图像字幕和机器翻译。这个强化学习框架由一个代理(基于RNN的生成模型)组成,它与外部环境相互做用(在每一个时间步骤看到的输入词和上下文向量)。代理根据策略(参数)选择一个动做,该策略会在每一个时间步骤预测序列的下一个单词。而后代理会更新其内部状态(RNN的隐藏单元)。这一直持续到达最终计算奖励序列的结尾。奖励功能因任务而异,例如,在句子生成任务中,奖励能够是信息流。

 

尽管强化学习方法显示出了但愿,但它们须要适当地处理动做和状态空间,这可能限制模型的表达能力和学习能力。记住,独立的基于RNN的模型力求表现力和表达语言的天然能力。

 

对抗训练也被用来训练语言生成器,其目的是欺骗训练有素的鉴别器,以区分生成的序列和真实的序列。若是一个对话系统,经过policy gradient(策略网络),能够在强化学习范例下构建任务,其中鉴别器就像人类图灵测试员同样,鉴别器基本上是受过训练以区分人类和机器生成的对话。

 

无监督学习

无监督的句子表征学习涉及以无监督的方式将句子映射到固定大小的向量。分布式表征从语言中捕获语义和句法属性,并使用辅助任务进行训练。

 

研究员与用于学习词嵌入的算法相似,提出了跳过思惟模型,其中任务是基于中心句子预测下一个相邻句子。使用seq2seq框架训练该模型,其中解码器生成目标序列,而且编码器被视为通用特征提取器-甚至在该过程当中学习了字嵌入。该模型基本上学习输入句子的分布式表征,相似于在先前语言建模技术中如何为每一个单词学习词嵌入。

 

深度生成模型

 

诸如变分自动控制器(VAE)生成对抗网络(GAN)之类的深度生成模型也能够应用于NLP中,经过从潜在代码空间生成逼真句子的过程来发现天然语言中的丰富结构。

众所周知,因为无约束的潜在空间,标准的自动编码器没法生成逼真的句子。VAE在隐藏的潜在空间上施加先验分布,使模型可以生成适当的样本。VAE由编码器和发生器网络组成,编码器和发生器网络将输入编码到潜在空间中,而后从潜在空间生成样本。训练目标是在生成模型下最大化观测数据的对数似然的变分下界。下图说明了用于句子生成的基于RNN的VAE

 

 

 

生成模型对于许多NLP任务是有用的,而且它们本质上是灵活的。例如,与标准自动编码器相比,基于RNN的VAE生成模型被提出用于产生更多样化且格式良好的句子。其余模型容许将结构化变量(例如,时态和情感)结合到潜在代码中以生成合理的句子。

 

由两个竞争网络组成的GAN(生成器和鉴别器)也被用于生成逼真的文本。例如,将LSTM用做生成器,CNN用做区分真实数据和生成样本的鉴别器。在这种状况下,CNN表示二进制句子分类器。该模型可以在对抗训练后生成逼真的文本。

 

除了鉴别器的梯度不能经过离散变量适当地反向传播的问题以外,深层生成模型同时也是难以评估的。近年来已经提出了许多解决方案,但这些解决方案还没有标准化。

 

内存加强网络(Memory-Augmented Network)

在输出结果生成阶段由注意力机制访问的隐藏向量表示模型的“内部存储器”。神经网络还能够与某种形式的内存耦合,以解决视觉QA语言建模POS标记情感分析等任务。例如,为了解决QA任务,将支持事实或常识知识做为存储器的形式提供给模型。动态存储器网络是对先前基于存储器的模型的改进,其采用神经网络模型用于输入表征、注意力机制和应答机制。

 

结论

到目前为止,咱们如今已经知道了基于神经网络的模型(如CNN和RNN)的容量和有效性。咱们也意识到将强化学习、无监督方法和深度生成模型正在被应用于复杂的NLP任务(如可视化QA和机器翻译)。注意力机制和记忆加强网络在扩展基于神经的NLP模型的能力方面是强大的。结合这些强大的技术,咱们相信会找到使人信服的方法来处理语言的复杂性。

 

本文做者:【方向】

做者:阿里云云栖社区连接:https://www.jianshu.com/p/f1e6c888479d來源:简书简书著做权归做者全部,任何形式的转载都请联系做者得到受权并注明出处。

相关文章
相关标签/搜索