Recent Trends in Deep Learning Based Natural Language Processing(翻译)

摘要

       深度学习方法采用多个处理层来学习数据的多层表示,并在许多领域产生了最新的技术成果。最近在NLP内容的背景下,各种模型设计和方法得到了发展。本文中,我们回顾了与深度学习有关的模型和方法,这些模型和方法已经应用到众多NLP任务,并提出了其演变过程。我们也总结、比较和对比各种模型,并对深度学习在NLP的过去、现在和未来提出详细的了解。

绪论

       自然语言处理(NLP)是用于自动分析和表示人类语言的一种理论驱动的计算技术。NLP的研究已经从打孔卡和批处理的时代(句子分析可能需要长达7分钟的时间)发展到谷歌等类似的时代(数百万个网页可以在不到一秒钟的时间内处理完)[1]。NLP使计算机能够在各个层次上执行与自然语言相关的各种任务,从解析和词性(POS)标注到机器翻译和对话系统。
       深度学习架构和算法已经在诸如计算机视觉和模式识别等领域取得了令人瞩目的进步。遵循这一趋势,最近的NLP研究越来越侧重于使用心得深度学习方法(图1)。几十年来,针对NLP问题的机器学习方法一直在基于高维和稀疏特征的浅层模型(例如SVM和逻辑回归)上训练。在过去几年,基于密集矢量表示的神经网络已经在各种NLP任务中产生了优异的结果。词嵌入[2,3]和深度学习方法[4]的成功引发这种趋势。深度学习支持多层自动特征表示学习。相反,基于传统机器学习的NLP系统在很大程度上依赖手工制作的功能。这种手工制作的功能很耗时,而且往往是不完整的。

       Collobert等人[5]证实在一些NLP任务(诸如命名实体识别(NER)、情感角色标签(SRL)和词性标注等)中,简单的深度学习框架要优于大多数最新技术。自此,已经提出许多基于复杂深度学习的算法来解决困难的NLP任务。我们回顾了适用于自然语言任务的主要深度学习相关的模型和方法,例如卷积神经网络(CNNs)、循环神经网络(RNNs)和递归神经网络。我们还讨论记忆增强策略、注意力机制以及如何将无监督模型、强化学习方法和深度生成模型用于与语言相关的任务。        据我们所知,这项工作是首次全面涵盖当今NLP研究中最受欢迎的深度学习方法。Goldberg[6]的工作仅以教程的方式介绍了将神经网络应用于NLP的基本原理。我们相信本文将为读者提供有关该领域当前实践的更全面的想法。        本文框架如下:第II部分介绍分布式表示的概念,复杂的深度学习模型的基础;第III、IV和V部分讨论了流行的模型,例如卷积、循环和递归神经网络,以及它们在各种NLP任务中的应用;第VI部分列出了强化学习在在NLP的最新应用以及无监督句子表示学习的新发展;第VII部分阐述了深度学习模型于内存组件耦合的最新趋势;第VIII部分总结了一系列深度学习方法在有关NLP主题的标准数据集上的性能。 # 分布式表示        统计NLP已成为建模复杂自然语言任务的主要选择。但是,从一开始在学校语言模型的联合概率函数时,它经常遭受着臭名昭著的维数诅咒。这导致了学习低维空间中存在的单词的分布式表示的动机[7]。 ## 1、Word Embedding(词嵌入)        分布式向量或词嵌入(图2)基本上遵循分布式假设,根据这个假设,具有相同含义的单词倾向于在相似的上下文出现。因此,这些词向量尝试捕获单词的邻居的特征。分布式向量的主要优点是它们能捕获单词之间的相似性。使用余弦相似度等度量可以测量向量之间的相似度。词嵌入通常用作深度学习模型中的第一个数据处理层。通常,通过优化未标记的大型语料库中的辅助目标来对词嵌入进行预训练,例如根据其上下文来预测单词[8,3],其中学到的词向量能够捕获一般的句法和情感信息。因此,这些嵌入被证明在捕获上下文相似度方面是有效的,同样地,由于其较小的维数,在处理核心NLP任务时是快速而有效的。

       多年以来,创建此类嵌入的模型一直都是浅层模型,因此不需要深度网络来创建良好的嵌入。然而,基于深度学习的NLP模型始终使用这些嵌入表示它们的单词、短语,甚至句子。实际上,这是传统的基于计数的模型与基于深度学习的模型之间的主要区别。词嵌入已成为各类NLP任务的最新计数成果[9, 10, 11, 12]。
       例如,Glorot等人[13]在情感分类中,使用嵌入和叠置去噪自动编码器进行域自适应。Hermann和Blunsom [14]提出组合类别自动编码器学习句子的组合性。在最近的文献中它们的广泛使用表明它们使用任意深度学习模型执行NLP任务中的有效性和重要性。
       分布式表示(嵌入)主要通过上下文学习。在1990年代,一些研究进展[15]标志着分布式语义研究的基础。这些早期趋势的更详细总结在[16, 17]中提供。后来的发展是对早期工作的改编,从而导致了主题模型(潜在的狄利克雷分配[18]和语言模型[7])的创建。这些成果奠定了自然语言中表征学习的基础。
       在2003年,Bengio等人[7]提出了一个学习单词分布式表示的神经语言模型(图3)。作者认为,这些单词表示一旦使用单词序列的联合概率被编译为句子表示,就可以实现语义上相邻句子的指数级增长。反过来说这有助于概括。因为如果已经看到具有相似单词的单词序列(相对于附近的单词表示),那么看不见的句子现在可以获得更高的可信度。

       Collobert和Weston[19]是第一个展示预训练词嵌入实用性的工作。他们提出一种神经网络结构,为许多当前方法奠定了基础。这个工作还建立了词嵌入作为NLP任务中的有用工具。然而,词嵌入的巨大普及可以说是由于Mikolov等人[3]提出了CBOW和skip-gram模型来有效地构建高质量的分布式向量表示形式。推动它们流行的是向量表示出组合性的意想不到的效果,即添加两个词序列会产生一个向量,该向量是各个词的语义组合(例如’man’+‘royal’=‘king’)。Gittens等人最近给出了这种行为的理论依据,[20]中指出只有当某些假设成立(例如单词需要在嵌入式空间均匀分布的假设)时才能看到组合性。
       Pennington等人[21]提出另一种著名的词嵌入方法—Glove,本质上是一种“基于计数”的模型。通过对计数进行归一化和对数平滑操作来对单词共现矩阵进行预处理。然后通过最小化“重建损失”将共现矩阵分解为低维表示。
       下面,我们简要介绍由Mikolov等人[3]提出的word2vec方法。

2、Word2vec

       条件概率。另一方面,skip-gram模型与CBOW模型完全相反,通过给定中心词来预测周围的上下文词。假设上下文词对称分布在与中心词两个方向上距离均等于窗口大小的距离内。在无监督设置中,由预测的精确度来确定词嵌入的维度。随着词嵌入维度的增加,预测的精确度也提高,直到收敛到某个点为止。在不影响精确度的前提下,预测的最短嵌入维度这被认为是最佳的嵌入维度。
       让我们考虑CBOW模型的简化版本,其中上下文中只考虑一个单词,这实际上是复制了bigram语言模型。
       如图4所示,CBOW模型是一个具有一个隐藏层的简单的完全连接的神经网络。输入层(使用上下文词的one-hot向量)具有 V V V个神经元,而隐藏层具有 N N N个神经元。输出层是词汇表中所有单词的 s o f t m a x softmax softmax概率。层与层之间分别通过权重矩阵 W ∈ R V × N W\in R^{V\times N} WRV×N W ′ ∈ R H × V W'\in R^{H\times V} WRH×V相连。词汇表中的每个单词最终表示为两个学习向量 V c V_c Vc V w V_w Vw分布对应于上下文和中心词表示。因此,词汇表中的第 k k k个单词
v c = W ( k , . ) v_{c}= W_{\left ( k,. \right )} vc=W(k,.) v w = W ( . , k ) ′ v_{w}= W'_{\left ( .,k\right )} vw=W(.,k)       总体而言,对于给定上下文词 c c c和任意词 w i w_i wi作为输入:
p ( w i c ) = y i = e u i ∑ i = 1 V e u i p\left ( \frac{w_{i}}{c}\right )= y_{i}= \frac{e^{u_{i}}}{\sum_{i=1}^{V}{e^{u_{i}}}} p(cwi)=yi=i=1Veuieui其中, u i = v w i T ⋅ v c u_{i}= v_{w_{i}}^{T}\cdot v_{c} ui=vwiTvc      &#160将对数似然函数定义为目标函数学习参数 θ = { v w , v c } w , c ∈ V o c a b \theta = \left \{ v_{w},v_{c} \right \}_{w,c\in Vocab} θ={ vw,vc}w,cVocab并求其梯度 I ( θ ) = ∑ w ∈ V o c a b log ⁡ ( p ( w c ) ) I\left ( \theta \right )= \sum _{w\in Vocab}\log\left ( p\left ( \frac{w}{c}\right )\right ) I(θ)=wVocablog(p(cw)) ∂ l ( θ ) ∂ v w = v c ( 1 − p ( w c ) ) \frac{\partial l\left ( \theta \right )}{\partial v_{w}}= v_{c}\left ( 1-p\left ( \frac{w}{c}\right ) \right ) vwl(θ)=vc(1p(cw))       在一般的CBOW模型中,上下文词的所有one-hot向量同时作为输入,即: h = W T ( x 1 + x 2 + . . . + x c ) h= W^{T}\left ( x_{1}+x_{2}+...+x_{c} \right ) h=WT(x1+x2+...+xc)

       单个词嵌入的局限性是它们无法表示短语[3],两个或两个以上单词的组合(例如像"hot potato"(烫手山芋)这样的成语或者例如"Boston Globe"(波士顿环球报)这样的命名实体)不代表单个单词含义的组合。正如Mikolov等人[3]所探讨的,解决这一问题的方法是基于单词共现来识别这些短语并分布训练它们的嵌入。后来的方法探索了从未标记的数据中直接学习n-gram嵌入[23]。
       另一个局限性来自仅基于周围单词的小窗口学习嵌入,有时诸如‘good’和‘bad’之类的单词几乎共享相同的嵌入[24],如果在诸如情感分析之类的任务中使用时有问题的[25]。有时这些嵌入会聚类语义相似的单词,然而这些单词具有相反的情感极性。这导致用于情感分析任务的下游模型无法识别这种相反的极性,从而导致性能不佳。Tang等人[26]通过提出情感专用词嵌入(SSWE)来解决这一问题。作者在学习嵌入的同时,将文本的监督情感极性纳入其损失函数中。
       词嵌入的一般警告是它们高度依赖其使用的应用程序。Labutow和Lipson[27]提出了任务特定的嵌入,它重新训练词嵌入使其在当前任务空间中对齐。这一点非常重要,因为从头开始训练嵌入需要大量的时间和资源。Mikolov等人[8]试图通过提出负样本(negative sampling)来解决这一问题,该采样在训练word2vec模型的同时对负项进行基于频率的采样。
       传统的词嵌入算法为每个词分配不同的向量,这使得它们无法解释一词多义。在最近的工作中,Upadhyay等人[28]提出解决这一缺陷的创新方法。作者利用多语言并行数据来学习多义词嵌入。例如,当翻译英语单词‘bank’为法语时,分别提供两个不同的单词:‘banc’和‘banque’表示财务和地理含义。这种多语言分布信息有助于它们解释多义词。
       表1提供了现有框架的目录,这些框架常用于创建嵌入并将其进一步集成到深度学习模型中。

3、Character Embeddings

       词嵌入可以捕获语义和情感信息,但是对于诸如词性标注和NER等任务,词内形态和形状信息也非常有用。一般来说,在字符层面上建立自然语义理解系统已经引起了一定的研究关注[29, 30, 31, 32]。在某些NLP任务中报道了在形态丰富的语言上更好的结果。Santos和Guimaraes[31]应用了字符级别的表示以及NER的词嵌入,在葡萄牙语和西班牙语语料库中获得了最新的成果。Kim等人[29]在仅使用字符嵌入建立神经语言模型方面显示出积极的结果。Ma等人[33]利用包含character trigrams在内的几种嵌入将原型和层次信息结合在一起,以便在NER的上下文中学校预训练的标签嵌入。
       对于具有大量词汇的语言,一个常见的现象是未知词问题,也称为out-of-vocabulary(OOV)词。字符嵌入自然处理它,因为每个单词被认为只不过是单个字母的组合而已。在语言中,文本不是由分开的单词组成,而是由单个字符组成。并且单词的语义映射为其组成字符(例如中文),因此在字符级别上建立系统是自然选择来避免单词分割[34]。因此,使用深度学习应用程序在此类语言上的工作倾向于选择字符嵌入而不是词向量[35]。例如,Peng等人[36]证明了激进层次处理可以极大提高情感分类的性能。特别地,作者提出两种基于中文根基的层次嵌入,它们不就包含根基和字符层次的语义,还包含情感信息。Bojanowski等人[37]也尝试提高通过在形态丰富的语言中使用字符层信息来提高单词的表示。他们通过将单词表示为字符袋n-gram来接近skip-gram方法。因此他们的工作具有skip-gram模型的有效性,同时解决了一些持久的词嵌入问题。该方法也很快,可以快速在大型语料库上进行训练模型。该方法通常被称为FastText,在速度、可伸缩性和有效性方面都比之前的方法更突出。
       除了字符嵌入之外,还提出了用于OOV处理的不同方法。Herbelot和Baroni[38]通过将未知词初始化为上下文词的总和以及以更高的学习率提炼这些词来实时处理OOV。然而,他们的方法还未在典型的NLP任务中进行测试。Pinter等人[39]提出一个的有趣方法—训练基于字符的模型来重建预训练嵌入。这使他们能够学习兄字符嵌入到词嵌入的组合映射,从而解决OOV问题。
       尽管分布式向量越来越受欢迎,但最近关于他们长期相关性的讨论已经出现。例如,Lucy和Gauthier[40]最近尝试评估单词向量捕获概念意义的必要方面的程度。作者也发现了对词背后的概念的感知理解的严重不足,这些不足无法仅从分布式语义中推断出来。缓解这些不足的可能方向是基础学习(grounded learning),它在这个研究领域中越来越受欢迎。

4、Contextualized Word Embeddings

       单词表示的质量通常由其编码语法信息和处理多义词行为的能力来衡量。这些属性可以改善语义词的表示。通过利用上下文,该领域的最新方法将此类信息编码为其嵌入。这些方法提供了更深层的网络,可以根据其上下文计算单词表示形式。
       传统的词嵌入方法(例如word2vec和Glove)会考虑存在该词的所有句子以便创建该词的全局向量表示。然而,单词在上下文中可能具有完全不同的意义或含义。例如,让我们考虑这两个句子—1)“The bank will not be accepting cash on Saturdays.”;2)“The river overflowed the bank.”。这两句话中bank的词义因语境不同而有所不同。合理地,人们可能希望根据单词bank两种不同的语义来表示两种不同的向量表示形式。新一类的模型采用这种推理方式,与全局词表示的概念有所不同,而是提出了上下文词嵌入的概念。
ELMo(Embedding from Language Model)[41]是一种提供深度上下文嵌入的方法。ELMo针对每个使用该单词的上下文生成词嵌入,从而允许使用不同的表示形式表示同一单词的不同含义。特别地,对于存在单词w的N个不同句子,ELMo生成单词w的N个不同表示,即 w 1 , w 2 , . . . , w N w_{1},w_{2},...,w_{N} w1,w2,...,wN
       ELMo机制是基于从双向语言模型获得的表示形式。双向语言模型(biLM)由两个语言模型(LM)组成:1)前向LM和 2)后向LM。前向LM为第 k k k个标记中的每一个获得输入表示 x k L M x_{k}^{LM} xkLM并将其传递它通过前向LSTM的 L L L层以获取表示 h ⃗ k , j L M , j = 1 , . . . L \vec{h}_{k,j}^{LM},j=1,...L h k,jLM<

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值