欢迎你们前往云+社区,获取更多腾讯海量技术实践干货哦~程序员
深度学习(Deep Learning)技术对天然语言处理(NLP,Natural Language Processing)领域有着巨大的影响。算法
但做为初学者,您要从何处开始学习呢?markdown
深度学习和天然语言处理都是较为广阔的领域,但每一个领域重点研究些什么?在天然语言处理领域中,又是哪一方面最受深度学习的影响呢?网络
经过阅读本文,您会对天然语言处理中的深度学习有一个初步的认识。架构
阅读这篇文章后,您能够知道:app
如今,让咱们开始本次学习之旅。机器学习
图片做者 faungg ,部分版权保留。函数
本文将遵循相关论文的结构而分为 12 个部分,分别是:工具
我想给你们介绍一下本文的主要部分和风格,以及高层次的话题介绍。学习
若是你想继续深刻研究,我强烈推荐阅读全文或者一些最近出版的的书。
论文的题目是:“A Primer on Neural Network Models for Natural Language Processing ” (天然语言处理的神经网络模型入门)。
这篇论文能够免费在 ArXiv 上获取,最新一次提交则是在 2015 年。它不仅是一篇论文,更像是一篇技术报告或教程,而且文中还提供了针对学生与研究人员的,关于天然语言处理(NLP)中的深度学习方法的比较全面的介绍。
本教程从天然语言处理研究的角度对神经网络模型进行了相关研究,力图令天然语言领域的研究人员能跟上神经网络技术的发展速度。
这篇入门论文是由 NLP 领域研究员 Yoav Goldberg 撰写的,他曾在 Google Research 担任研究科学家。虽然 Yoav 最近引发了一些争议,但我不会所以反对他。
这是一份技术报告,大概共有 62 页,其中约有 13 页是参考文献列表。
这篇文章很是适合初学者,其缘由有二:
在本教程中,我尝试给 NLP 从业人员(以及新人)提供基本的背景知识,术语,工具和方法,使他们可以理解神经网络模型背后的原理,并将其应用到本身的工做中。 ... 本文的受众,是那些有兴趣使用现存的有用技术,并以实用且富有创造性的方式将其应用到他们最喜欢的 NLP 问题中的读者。
一般,关键的深度学习方法经过语言学或天然语言处理的术语或命名法从新创建,这(在深度学习与天然语言处理之间)提供了一个有用的桥梁。
最后值得一提的是,这篇 2015 年的入门教程已在 2017 年出版,名为 “Neural Network Methods for Natural Language Processing” (天然语言处理中的神经网络方法)。
若是你喜欢这篇入门教程而且想深刻研究,我强烈推荐您继续阅读 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 算法。
具体包括以下几点:
最后一节则重点关注一个更复杂的网络,咱们称为学习树型建模的递归神经网络。
树,能够是句法树,话语树,甚至是由一个句子中各个部分所表达的情绪的树。咱们但愿基于特定的树节点或基于根节点来预测值,或者为完整的树或树的一部分指定一个质量值。
因为递归神经网络保留了输入序列的状态,因此递归神经网络会维持树中节点的状态。
若是您正在深刻研究,本节将提供更多有关该主题的资源。
这篇文章介绍了一些关于天然语言处理中的深度学习的入门知识。
具体来讲,你学到了: