深度学习(Deep Learning)技术对自然语言处理(NLP,Natural Language Processing)领域有着巨大的影响。
但作为初学者,您要从何处开始学习呢?
深度学习和自然语言处理都是较为广阔的领域,但每个领域重点研究些什么?在自然语言处理领域中,又是哪一方面最受深度学习的影响呢?
通过阅读本文,您会对自然语言处理中的深度学习有一个初步的认识。
阅读这篇文章后,您可以知道:
现在,让我们开始本次学习之旅。
图片作者 ,部分版权保留。
本文将遵循相关论文的结构而分为 12 个部分,分别是:
我想给大家介绍一下本文的主要部分和风格,以及高层次的话题介绍。
如果你想继续深入研究,我强烈推荐或者一些。
论文的题目是:“A Primer on Neural Network Models for Natural Language Processing ” (自然语言处理的神经网络模型入门)。
这篇论文可以免费,最新一次提交则是在 2015 年。它不只是一篇论文,更像是一篇技术报告或教程,并且文中还提供了针对学生与研究人员的,关于自然语言处理(NLP)中的深度学习方法的比较全面的介绍。
本教程从自然语言处理研究的角度对神经网络模型进行了相关研究,力图令自然语言领域的研究人员能跟上神经网络技术的发展速度。
这篇入门论文是由 NLP 领域研究员 撰写的,他曾在 Google Research 担任研究科学家。虽然 Yoav 最近引起了一些,但我不会因此反对他。
这是一份技术报告,大概共有 62 页,其中约有 13 页是参考文献列表。
这篇文章非常适合初学者,其原因有二:
在本教程中,我尝试给 NLP 从业人员(以及新人)提供基本的背景知识,术语,工具和方法,使他们能够理解神经网络模型背后的原理,并将其应用到自己的工作中。 ... 本文的受众,是那些有兴趣使用现存的有用技术,并以实用且富有创造性的方式将其应用到他们最喜欢的 NLP 问题中的读者。
通常,关键的深度学习方法通过语言学或自然语言处理的术语或命名法重新建立,这(在深度学习与自然语言处理之间)提供了一个有用的桥梁。
最后值得一提的是,这篇 2015 年的入门教程已在 2017 年出版,名为 “” (自然语言处理中的神经网络方法)。
如果你喜欢这篇入门教程并且想深入研究,我强烈推荐您继续阅读 Yoav 的这本书。
本小节简要介绍了各种不同类型的神经网络架构,在后面的章节中对它们进行了一些交叉引用。
全连接(Fully connected)前馈神经网络是非线性学习器,在大多数情况下,它可以替换到使用了线性学习器的任何地方。
小节内容涵盖了四种神经网络架构,并重点介绍了各种应用和引用的例子:
如果您只对其中一种特定网络类型的应用感兴趣,并想直接阅读相关文献,本节则提供了一些很好的来源。
本节重点介绍了如何将稀疏表示过渡转化为密集表示,然后再运用到深度学习模型训练中。
当把输入的稀疏线性模型转变为基于神经网络的模型时,最大的变化大概就是不再将每个特征表示为一个唯一的维度(所谓的单一表示 [One-hot Representation]),而是将它们表示为密集向量(Dense Vector)。
本节中介绍了 NLP 分类系统的一般结构,可总结如下:
这个公式的关键在于使用了密集特征向量而不是稀疏特征向量,并且用的是核心特征而非特征组合。
请注意,在神经网络设置中的特征提取阶段,仅仅处理核心特征的提取。这与传统的基于线性模型的 NLP 系统大相径庭,因为在该系统中,特征设计者不仅必须手动地指定感兴趣的核心特征,而且还需要手动指定它们之间的相互作用。
本节是前馈人工神经网络的速成课。
网络是通过大脑启发的隐喻与数学符号来呈现的。常见的神经网络主题包括如下几种:
在自然语言处理中,词嵌入表示(Word Embedding Representations)是神经网络方法的关键部分。本节则扩展了这个主题,并列举了一些关键的方法。
神经网络方法中的一个主要组成部分是使用嵌入 - 将每个特征表示为低维空间中的向量
本节中介绍了关于词嵌入的以下几个主题:
神经词嵌入起源于语言建模领域,其中训练所得的网络则用于基于先前词的序列来预测下一个词。
这个较长的章节是为神经网络新手而写的,它着重于训练神经网络的具体步骤。
神经网络的训练,是通过运用基于梯度的方法将训练集上的损失函数最小化来完成的。
本节重点介绍随机梯度下降法(还有相似的如 Mini-batch 这样的方法)以及训练过程中的一些重要主题,比如说正则化。
有趣的是,本节还提供了神经网络的计算图形透视图,为诸如 Theano 和 TensorFlow 这样的符号化数值计算库提供了一个引子,而这些库则是当前流行的用于实现深度学习模型的基础。
一旦图形被构建,就可以直接运行正向计算(计算计算结果)或者反向计算(计算梯度)
在前一节的基础上,本节总结了级联 NLP 模型和多语言任务学习模型的作用。
级联模型(Model cascading):利用神经网络模型计算图的定义来使用中间表示(编码)开发更复杂的模型。
例如,我们可能有一个前馈网络,它用于根据词的相邻词和(或)构成它的字符来预测词的词性。
多任务学习(Multi-task learning):有一些相互关联的自然语言预测任务,它们不会相互影响,但它们各自的信息可以跨任务共享。
用于预测块边界、命名实体边界和句子中的下一个单词的信息,都依赖于一些共享的基础句法语义表示
这两个先进的概念都是在神经网络的背景下描述的,它允许模型或信息在训练(误差反向传播)和预测期间具有连通性。
本节关注的是使用深度学习方法进行结构化预测的自然语言任务,比如说序列、树,以及图。
典型的例子是序列标记(例如词性标注 [Part-of-speech tagging]),序列分割(分块,NER [Named-entity Recognition,命名实体识别])以及句法分析。
本部分涵盖了基于贪心思想和基于搜索的结构化预测,重点关注后者。
常用的自然语言结构化预测方法,是基于搜索的方法。
本节提供了卷积神经网络(CNN,Convolutional Neural Networks)的速成课程,以及阐述了这一网络对自然语言领域的影响。
值得注意的是,当下已经证明了 CNN 对诸如情感分析(Sentiment analysis)这样的分类 NLP 任务非常有效,例如学习寻找文本中的特定子序列或结构以进行预测。
卷积神经网络被设计来识别大型结构中的指示性局部预测因子(Indicative local predictors),并且将它们组合起来以产生结构的固定大小的向量表示,从而捕获这些对于预测任务而言最具信息性的局部方面(Local aspects)。
与前一节一样,本节重点介绍了在 NLP 中所使用的特定网络及其作用与应用。在 NLP 中,递归神经网络(RNN,Recurrent Neural Networks)用于序列建模。
递归神经网络(RNN)允许在固定大小的向量中表示任意大小的结构化输入,同时也会注意输入的结构化属性。
考虑到 RNN,特别是 NLP 中的长短期记忆(LSTM)的普及,这个较大的章节介绍了各种关于循环神经网络的主题与模型,其中包括:
我们将在 RNN 模型结构或结构元素上花费一定的时间,特别是:
本章节基于上一节的内容,介绍了具体的 RNN 算法。
具体包括如下几点:
最后一节则重点关注一个更复杂的网络,我们称为学习树型建模的递归神经网络。
树,可以是句法树,话语树,甚至是由一个句子中各个部分所表达的情绪的树。我们希望基于特定的树节点或基于根节点来预测值,或者为完整的树或树的一部分指定一个质量值。
由于递归神经网络保留了输入序列的状态,所以递归神经网络会维持树中节点的状态。
如果您正在深入研究,本节将提供更多有关该主题的资源。
这篇文章介绍了一些关于自然语言处理中的深度学习的入门知识。