自然语言处理的神经网络模型初探

欢迎大家前往云+社区,获取更多腾讯海量技术实践干货哦~

深度学习(Deep Learning)技术对自然语言处理(NLP,Natural Language Processing)领域有着巨大的影响。

但作为初学者,您要从何处开始学习呢?

深度学习和自然语言处理都是较为广阔的领域,但每个领域重点研究些什么?在自然语言处理领域中,又是哪一方面最受深度学习的影响呢?

通过阅读本文,您会对自然语言处理中的深度学习有一个初步的认识。

阅读这篇文章后,您可以知道:

  • 对自然语言处理领域影响最为深远的神经网络结构。
  • 综观那些可以通过深度学习成功解决的自然语言处理任务。
  • 密集词表示(Dense word representations)的重要性以及可以用于学习它们的方法。

现在,让我们开始本次学习之旅。

自然语言处理的神经网络模型入门

图片作者 faungg,部分版权保留。

概览

本文将遵循相关论文的结构而分为 12 个部分,分别是:

  1. 关于论文(简介)
  2. 神经网络架构
  3. 特征表示
  4. 前馈神经网络
  5. 词嵌入
  6. 训练神经网络
  7. 级联和多任务学习
  8. 结构化输出预测
  9. 卷积层
  10. 循环神经网络
  11. 循环神经网络的具体架构
  12. 树型建模

我想给大家介绍一下本文的主要部分和风格,以及高层次的话题介绍。

如果你想继续深入研究,我强烈推荐阅读全文或者一些最近出版的的书

1.关于论文

论文的题目是:“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 的这本书。

2.神经网络架构

本小节简要介绍了各种不同类型的神经网络架构,在后面的章节中对它们进行了一些交叉引用。

全连接(Fully connected)前馈神经网络是非线性学习器,在大多数情况下,它可以替换到使用了线性学习器的任何地方。

小节内容涵盖了四种神经网络架构,并重点介绍了各种应用和引用的例子:

  • 全连接前馈神经网络,如多层感知器网络(Multilayer Perceptron Networks)。
  • 具有卷积和池化层(Pooling Layers)的网络,如卷积神经网络(Convolutional Neural Network)。
  • 递归神经网络(Recurrent Neural Networks),如长短期记忆(LSTM,Long Short Term Memory)网络。
  • 循环神经网络(Recursive Neural Networks)。

如果您只对其中一种特定网络类型的应用感兴趣,并想直接阅读相关文献,本节则提供了一些很好的来源。

3.特征表示

本节重点介绍了如何将稀疏表示过渡转化为密集表示,然后再运用到深度学习模型训练中。

当把输入的稀疏线性模型转变为基于神经网络的模型时,最大的变化大概就是不再将每个特征表示为一个唯一的维度(所谓的单一表示 [One-hot Representation]),而是将它们表示为密集向量(Dense Vector)。

本节中介绍了 NLP 分类系统的一般结构,可总结如下:

  1. 提取一组核心语言特征。
  2. 为每个向量检索对应的向量。
  3. 组合成为特征向量。
  4. 将组合的矢量馈送到一个非线性分类器中。

这个公式的关键在于使用了密集特征向量而不是稀疏特征向量,并且用的是核心特征而非特征组合。

请注意,在神经网络设置中的特征提取阶段,仅仅处理核心特征的提取。这与传统的基于线性模型的 NLP 系统大相径庭,因为在该系统中,特征设计者不仅必须手动地指定感兴趣的核心特征,而且还需要手动指定它们之间的相互作用。

4.前馈神经网络

本节是前馈人工神经网络的速成课。

带有两个隐藏层的前馈神经网络,摘自 “A Primer on Neural Network Models for Natural Language Processing”。

网络是通过大脑启发的隐喻与数学符号来呈现的。常见的神经网络主题包括如下几种:

  • 表示能力(例如通用逼近性 [Universal approximation])。
  • 常见的非线性关系(例如传递函数)。
  • 输出变换(例如 softmax)。
  • 词嵌入(例如内置的学习密集表示)。
  • 损失函数(如 Hinge-loss 和对数损失)。

5.词嵌入

在自然语言处理中,词嵌入表示(Word Embedding Representations)是神经网络方法的关键部分。本节则扩展了这个主题,并列举了一些关键的方法。

神经网络方法中的一个主要组成部分是使用嵌入 - 将每个特征表示为低维空间中的向量

本节中介绍了关于词嵌入的以下几个主题:

  • 随机初始化(例如,从统一的随机向量开始训练)。
  • 特定的有监督任务的预训练(例如,迁移学习 [Transfer Learning])。
  • 无监督任务的预训练(例如,word2vec 与 GloVe 之类的统计学方法)。
  • 训练目标(例如,目标对结果向量的影响)。
  • 上下文的选择(例如,每个单词受到附近的单词的影响)。

神经词嵌入起源于语言建模领域,其中训练所得的网络则用于基于先前词的序列来预测下一个词。

6.训练神经网络

这个较长的章节是为神经网络新手而写的,它着重于训练神经网络的具体步骤。

神经网络的训练,是通过运用基于梯度的方法将训练集上的损失函数最小化来完成的。

本节重点介绍随机梯度下降法(还有相似的如 Mini-batch 这样的方法)以及训练过程中的一些重要主题,比如说正则化。

有趣的是,本节还提供了神经网络的计算图形透视图,为诸如 Theano 和 TensorFlow 这样的符号化数值计算库提供了一个引子,而这些库则是当前流行的用于实现深度学习模型的基础。

一旦图形被构建,就可以直接运行正向计算(计算计算结果)或者反向计算(计算梯度)

7.级联和多任务学习

在前一节的基础上,本节总结了级联 NLP 模型和多语言任务学习模型的作用。

级联模型(Model cascading):利用神经网络模型计算图的定义来使用中间表示(编码)开发更复杂的模型。

例如,我们可能有一个前馈网络,它用于根据词的相邻词和(或)构成它的字符来预测词的词性。

多任务学习(Multi-task learning):有一些相互关联的自然语言预测任务,它们不会相互影响,但它们各自的信息可以跨任务共享。

用于预测块边界、命名实体边界和句子中的下一个单词的信息,都依赖于一些共享的基础句法语义表示

这两个先进的概念都是在神经网络的背景下描述的,它允许模型或信息在训练(误差反向传播)和预测期间具有连通性。

8.结构化输出预测

本节关注的是使用深度学习方法进行结构化预测的自然语言任务,比如说序列、树,以及图。

典型的例子是序列标记(例如词性标注 [Part-of-speech tagging]),序列分割(分块,NER [Named-entity Recognition,命名实体识别])以及句法分析。

本部分涵盖了基于贪心思想和基于搜索的结构化预测,重点关注后者。

常用的自然语言结构化预测方法,是基于搜索的方法。

9.卷积层

本节提供了卷积神经网络(CNN,Convolutional Neural Networks)的速成课程,以及阐述了这一网络对自然语言领域的影响。

值得注意的是,当下已经证明了 CNN 对诸如情感分析(Sentiment analysis)这样的分类 NLP 任务非常有效,例如学习寻找文本中的特定子序列或结构以进行预测。

卷积神经网络被设计来识别大型结构中的指示性局部预测因子(Indicative local predictors),并且将它们组合起来以产生结构的固定大小的向量表示,从而捕获这些对于预测任务而言最具信息性的局部方面(Local aspects)。

10.循环神经网络

与前一节一样,本节重点介绍了在 NLP 中所使用的特定网络及其作用与应用。在 NLP 中,递归神经网络(RNN,Recurrent Neural Networks)用于序列建模。

递归神经网络(RNN)允许在固定大小的向量中表示任意大小的结构化输入,同时也会注意输入的结构化属性。

考虑到 RNN,特别是 NLP 中的长短期记忆(LSTM)的普及,这个较大的章节介绍了各种关于循环神经网络的主题与模型,其中包括:

  • RNN 的抽象概念(例如网络图中的循环连接)。
  • RNN 训练(例如通过时间进行反向传播)。
  • 多层(堆叠)RNN(例如深度学习的 “深度” 部分)。
  • BI-RNN(例如前向和反向序列作为输入)。
  • 用于表示的 RNN 堆叠。

我们将在 RNN 模型结构或结构元素上花费一定的时间,特别是:

  • 接受器(Acceptor):完整的序列输入后,它计算输出的损失。
  • 编码器(Encoder):最终向量用作输入序列的编码器。
  • 转换器(Transducer):为输入序列中的每个观测对象创建一个输出。
  • 编码器 - 解码器(Encoder-Decoder):输入序列在被解码为输出序列之前,会编码成为固定长度的向量。

11.循环神经网络的具体架构

本章节基于上一节的内容,介绍了具体的 RNN 算法。

具体包括如下几点:

  • 简单的 RNN(SRNN)。
  • 长短期记忆(LSTM)。
  • 门控循环单元(GRU,Gated Recurrent Unit)。

12.树型建模

最后一节则重点关注一个更复杂的网络,我们称为学习树型建模的递归神经网络。

树,可以是句法树,话语树,甚至是由一个句子中各个部分所表达的情绪的树。我们希望基于特定的树节点或基于根节点来预测值,或者为完整的树或树的一部分指定一个质量值。

由于递归神经网络保留了输入序列的状态,所以递归神经网络会维持树中节点的状态。

递归神经网络的例子,摘自 “A Primer on Neural Network Models for Natural Language Processing”。

扩展阅读

如果您正在深入研究,本节将提供更多有关该主题的资源。

总结

这篇文章介绍了一些关于自然语言处理中的深度学习的入门知识。

具体来说,你学到了:

  • 对自然语言处理领域影响最大的神经网络结构。
  • 对可以通过深度学习算法成功解决的自然语言处理任务有一个广泛的认识。
  • 密集表示以及相应的学习方法的重要性。

翻译人:StoneDemo,该成员来自云+社区翻译社

原文链接:https://machinelearningmastery.com/primer-neural-network-models-natural-language-processing/

原文作者:Jason Brownlee

相关阅读

从程序员的角度设计一个Java的神经网络

基于神经网络的图像压缩技术

深度学习入门与自然语言理解


此文已由作者授权云加社区发布,转载请注明文章出处

原文地址:https://www.cnblogs.com/qcloud1001/p/8462620.html

时间: 2024-10-12 06:21:03

自然语言处理的神经网络模型初探的相关文章

大数据金融数据分析GBDT模型、神经网络模型、违约预测模型视频教程

38套大数据,云计算,架构,数据分析师,Hadoop,Spark,Storm,Kafka,人工智能,机器学习,深度学习,项目实战视频教程 视频课程包含: 38套大数据和人工智能精品高级课包含:大数据,云计算,架构,数据挖掘实战,实时推荐系统实战,电视收视率项目实战,实时流统计项目实战,离线电商分析项目实战,Spark大型项目实战用户分析,智能客户系统项目实战,Linux基础,Hadoop,Spark,Storm,Docker,Mapreduce,Kafka,Flume,OpenStack,Hiv

从图(Graph)到图卷积(Graph Convolution):漫谈图神经网络模型 (一)

本文属于图神经网络的系列文章,文章目录如下: 从图(Graph)到图卷积(Graph Convolution):漫谈图神经网络模型 (一) 从图(Graph)到图卷积(Graph Convolution):漫谈图神经网络模型 (二) 从图(Graph)到图卷积(Graph Convolution):漫谈图神经网络模型 (三) 笔者最近看了一些图与图卷积神经网络的论文,深感其强大,但一些Survey或教程默认了读者对图神经网络背景知识的了解,对未学过信号处理的读者不太友好.同时,很多教程只讲是什么

Caffe学习系列——工具篇:神经网络模型结构可视化

Caffe学习系列--工具篇:神经网络模型结构可视化 在Caffe中,目前有两种可视化prototxt格式网络结构的方法: 使用Netscope在线可视化 使用Caffe提供的draw_net.py 本文将就这两种方法加以介绍 1. Netscope:支持Caffe的神经网络结构在线可视化工具 Netscope是个支持prototxt格式描述的神经网络结构的在线可视工具,网址:  http://ethereon.github.io/netscope/quickstart.html  它可以用来可

BP神经网络模型与学习算法

一,什么是BP "BP(Back Propagation)网络是1986年由Rumelhart和McCelland为首的科学家小组提出,是一种按误差逆传播算法训练的多层前馈网络,是目前应用最广泛的神经网络模型之一.BP网络能学习和存贮大量的输入-输出模式映射关系,而无需事前揭示描述这种映射关系的数学方程.它的学习规则是使用最速下降法,通过反向传播来不断调整网络的权值和阈值,使网络的误差平方和最小.BP神经网络模型拓扑结构包括输入层(input).隐层(hide layer)和输出层(output

【数据挖掘技术】神经网络模型

神经网络模型 一.神经网络模型 对网络模型的研究始于20世纪40年代,作为一门交叉学科,它是人类基于对其大脑神经认识的基础上,人工构造实现某种功能的网络模型.经过将近70年的发展,神经网络模型已成为机器学习的典型代表,它不依照任何概率分布,而是模仿人脑功能进行抽象运算.神经网络(Neutral Network)是通过数学算法来模仿人脑思维的,它是数据挖掘中机器学习的典型代表.神经网络是人脑的抽象计算模型,我们知道人脑中有数以百亿个神经元(人脑处理信息的微单元),这些神经元之间相互连接,是的人的大

基于tensorflow的MNIST手写字识别(一)--白话卷积神经网络模型

一.卷积神经网络模型知识要点卷积卷积 1.卷积 2.池化 3.全连接 4.梯度下降法 5.softmax 本次就是用最简单的方法给大家讲解这些概念,因为具体的各种论文网上都有,连推导都有,所以本文主要就是给大家做个铺垫,如有错误请指正,相互学习共同进步. 二.卷积神经网络讲解 2.1卷积神经网络作用 大家应该知道大名鼎鼎的傅里叶变换,即一个波形,可以有不同的正弦函数和余弦函数进行叠加完成,卷积神经网络也是一样,可以认为一张图片是由各种不同特征的图片叠加而成的,所以它的作用是用来提取特定的特征,举

神经网络模型种类

神经网络模型种类 一般地,CNN的基本结构包括两层,其一为特征提取层,每个神经元的输入与前一层的局部接受域相连,并提取该局部的特征.一旦该局部特征被提取后,它与其它特征间的位置关系也随之确定下来:其二是特征映射层,网络的每个计算层由多个特征映射组成,每个特征映射是一个平面,平面上所有神经元的权值相等.特征映射结构采用影响函数核小的sigmoid函数作为卷积网络的激活函数,使得特征映射具有位移不变性.此外,由于一个映射面上的神经元共享权值,因而减少了网络自由参数的个数.卷积神经网络中的每一个卷积层

利用Tensorflow实现卷积神经网络模型

首先看一下卷积神经网络模型,如下图: 卷积神经网络(CNN)由输入层.卷积层.激活函数.池化层.全连接层组成,即INPUT-CONV-RELU-POOL-FC池化层:为了减少运算量和数据维度而设置的一种层. 代码如下: n_input = 784 # 28*28的灰度图 n_output = 10 # 完成一个10分类的操作 weights = { #'权重参数': tf.Variable(tf.高期([feature的H, feature的W, 当前feature连接的输入的深度, 最终想得到

常用神经网络模型及其应用评述(转载)

神经网络是由大量处理单元(神经元)互相连接而成的网络,实际上ANN并不完全模拟了生物的神经系统,而是一种抽象.简化和模拟.神经网络的信息处理通过神经元的相互作用来实现,知识与信息的存贮表现在网络元件互连的分布式结构与联系,神经网络的学习和识别各神经元连接权系数的动态演化过程.实践中常用的基本神经网络模型有:感知器神经网络.线性神经网络.BP神经网络.径向基神经网络.自组织神经网络.反馈网络等.1.感知器神经网络: 是一个具有单层计算神经元的神经网络,网络的传递函数是线性阈值单元.原始的感知器神经