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

深度学习正在对自然语言处理领域产生巨大影响。

但是,作为初学者,该从何开始呢?

深度学习和自然语言处理都是巨大的领域。这两个领域各自有哪些值得关注的突出方面?深度学习对NLP的哪些领域影响最大?

在这篇文章中,您将了解自然语言处理深度学习的入门知识。

阅读本文后,你将了解:

  • 对自然语言处理领域产生最大影响的神经网络架构。
  • 深度学习可以成功解决的自然语言处理任务的广泛概述。
  • 密集词表示的重要性以及学习它们的方法。

通过我的新书《自然语言处理深度学习》来启动您的项目,包括分步教程和所有示例的Python源代码文件。

让我们开始吧。

Primer on Neural Network Models for Natural Language Processing

自然语言处理神经网络模型入门
图片由 faungg’s photos 提供,保留部分权利。

概述

本文分为12个部分,与论文结构一致;它们是

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

我想让您了解这篇论文主要部分的风格,并对该主题进行高层次的介绍。

如果您想深入了解,我强烈建议阅读完整论文,或最新的书籍

需要深度学习处理文本数据的帮助吗?

立即参加我的免费7天电子邮件速成课程(附代码)。

点击注册,同时获得该课程的免费PDF电子书版本。

1. 关于论文

这篇论文的标题是:“自然语言处理神经网络模型入门”。

可在ArXiv上免费获取,最新日期为2015年。它更像是一份技术报告或教程,而非论文,为研究人员和学生提供了自然语言处理(NLP)深度学习方法的全面介绍。

本教程从自然语言处理研究的角度考察神经网络模型,旨在帮助自然语言研究人员掌握神经网络技术。

这本入门书由 Yoav Goldberg 撰写,他是NLP领域的科研人员,曾在Google Research担任研究科学家。Yoav 最近引起了一些争议,但我不会因此而对他有偏见。

这是一份技术报告,大约62页,其中约13页是参考文献。

这篇论文非常适合初学者,原因有二:

  • 它对读者知之甚少,只假设您对这个主题感兴趣,并且对机器学习和/或自然语言处理有所了解。
  • 它涵盖了广泛的深度学习方法和自然语言问题。

在本教程中,我试图为NLP从业者(以及新手)提供基本背景、术语、工具和方法,使他们能够理解神经网络模型的原理,并将其应用于自己的工作……它面向那些有兴趣将现有实用技术以实用和创造性的方式应用于他们最喜欢的NLP问题的读者。

通常,关键的深度学习方法会使用语言学或自然语言处理的术语或命名法重新表述,从而提供有用的桥梁。

最后,这本2015年的入门指南已于2017年出版成书,标题为《自然语言处理神经网络方法》。

Neural Network Methods for Natural Language Processing

自然语言处理的神经网络方法

如果你喜欢这本入门书,想深入了解,我强烈推荐 Yoav 的书。

2. 神经网络架构

这个简短的部分介绍了不同类型的神经网络架构,并交叉引用了后续部分。

全连接前馈神经网络是非线性学习器,在大多数情况下,可以作为线性学习器的直接替代。

总共涵盖了4种类型的神经网络架构,重点介绍了每种架构的应用示例和参考文献

  • 全连接前馈神经网络,例如多层感知器网络。
  • 具有卷积层和池化层的网络,例如卷积神经网络。
  • 循环神经网络,例如长短期记忆网络。
  • 递归神经网络。

如果您只对特定网络类型的应用程序感兴趣,并想直接查阅原始论文,本节将提供丰富的资料。

3. 特征表示

本节重点介绍从稀疏表示到密集表示的转换,这些表示可以与深度学习模型一起进行训练。

从稀疏输入线性模型转向基于神经网络的模型时,最大的转变也许就是不再将每个特征表示为唯一的维度(所谓的独热表示),而是将其表示为密集向量。

本文介绍了一种NLP分类系统的通用结构,总结如下:

  1. 提取一组核心语言特征。
  2. 检索每个向量对应的向量。
  3. 组合特征向量。
  4. 将组合向量输入非线性分类器。

这种公式化的关键在于密集而非稀疏的特征向量,以及使用核心特征而非特征组合。

请注意,神经网络设置中的特征提取阶段仅处理核心特征的提取。这与传统的基于线性模型的NLP系统形成对比,在传统的系统中,特征设计者不仅需要手动指定感兴趣的核心特征,还需要指定它们之间的交互。

4. 前馈神经网络

本节提供了前馈人工神经网络的速成课程。

Feed-forward neural network with two hidden layers

具有两个隐藏层的前馈神经网络,摘自《自然语言处理神经网络模型入门》。

网络以受大脑启发的比喻和数学符号两种方式呈现。涵盖了常见的神经网络主题,例如

  • 表示能力(例如通用逼近)。
  • 常见非线性(例如传递函数)。
  • 输出变换(例如softmax)。
  • 词嵌入(例如内置的学习到的密集表示)。
  • 损失函数(例如铰链损失和对数损失)。

5. 词嵌入

词嵌入表示在自然语言处理的神经网络方法中至关重要。本节扩展了该主题并列举了关键方法。

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

以下词嵌入主题被回顾

  • 随机初始化(例如,从均匀随机向量开始)。
  • 有监督任务特定预训练(例如,迁移学习)。
  • 无监督预训练(例如,word2vec 和 GloVe 等统计方法)。
  • 训练目标(例如,目标对结果向量的影响)。
  • 上下文的选择(例如,每个词周围词的影响)。

神经词嵌入起源于语言建模领域,其中训练一个网络根据一系列前置词来预测下一个词。

6. 神经网络训练

这一节较长,重点介绍了神经网络的训练方式,专为神经网络范式的新手撰写。

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

本节重点介绍随机梯度下降(以及小批量等相关方法)以及训练期间的重要主题,例如正则化。

有趣的是,本文介绍了神经网络的计算图视角,为Theano和TensorFlow等符号数值库提供了入门知识,这些库是实现深度学习模型的流行基础。

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

7. 级联和多任务学习

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

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

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

多任务学习:存在相关的自然语言预测任务,它们之间不相互依赖,但信息可以在任务之间共享。

用于预测块边界、命名实体边界和句子中下一个词的信息都依赖于某些共享的底层句法-语义表示。

这两个高级概念都在神经网络的背景下进行了描述,神经网络允许模型之间以及训练期间(误差反向传播)和进行预测时都进行连接或信息共享。

8. 结构化输出预测

本节关注深度学习方法用于进行序列、树和图等结构化预测的自然语言任务示例。

典型示例是序列标注(例如词性标注)、序列分割(分块、命名实体识别)和句法分析。

本节涵盖贪婪和基于搜索的结构化预测,重点是后者。

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

9. 卷积层

本节提供了关于卷积神经网络(CNN)及其对自然语言影响的速成课程。

值得注意的是,CNN 已被证明对情感分析等分类 NLP 任务非常有效,例如,学习在文本中查找特定的子序列或结构以进行预测。

卷积神经网络旨在在大结构中识别指示性局部预测因子,并将其组合以生成结构的固定大小向量表示,捕获这些对当前预测任务最有信息量的局部方面。

10. 循环神经网络

与上一节一样,本节侧重于特定类型网络的使用及其在NLP中的作用和应用。在本例中,是用于序列建模的循环神经网络(RNN)。

循环神经网络(RNN)允许以固定大小的向量表示任意大小的结构化输入,同时关注输入的结构化属性。

鉴于RNN,特别是长短期记忆(LSTM)在NLP中的流行,这个较长的部分通过各种循环主题和模型进行讲解,包括

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

重点介绍了RNN模型架构或架构元素,特别是

  • 接受器:在完整输入序列后计算输出上的损失。
  • 编码器:最终向量用作输入序列的编码。
  • 转换器:为输入序列中的每个观察创建一个输出。
  • 编码器-解码器:输入序列被编码为固定长度向量,然后解码为输出序列。

11. 具体RNN架构

本节在前一节的基础上介绍了具体的RNN算法。

具体涵盖的内容有

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

12. 建模树

本节最后着重介绍一种更复杂的网络类型——递归神经网络,用于学习模型树。

这些树可以是句法树、语篇树,甚至可以是表示句子各个部分所表达情感的树。我们可能希望根据特定的树节点预测值,根据根节点预测值,或者为完整的树或树的一部分分配质量分数。

正如循环神经网络维护输入序列的状态一样,递归神经网络维护树中节点的状态。

Example of a Recursive Neural Network

递归神经网络示例,摘自《自然语言处理神经网络模型入门》。

进一步阅读

如果您想深入了解此主题,本节提供了更多资源。

总结

在这篇文章中,您了解了自然语言处理深度学习的入门知识。

具体来说,你学到了:

  • 对自然语言处理领域产生最大影响的神经网络架构。
  • 深度学习可以成功解决的自然语言处理任务的广泛概述。
  • 密集词表示的重要性以及学习它们的方法。

你有什么问题吗?
在下面的评论中提出你的问题,我会尽力回答。

立即开发文本数据的深度学习模型!

Deep Learning for Natural Language Processing

在几分钟内开发您自己的文本模型

...只需几行python代码

在我的新电子书中探索如何实现
用于自然语言处理的深度学习

它提供关于以下主题的自学教程
词袋模型、词嵌入、语言模型、标题生成、文本翻译等等...

最终将深度学习应用于您的自然语言处理项目

跳过学术理论。只看结果。

查看内容

对《自然语言处理神经网络模型入门》的22条回复

  1. Simone 2017年9月15日上午7:24 #

    嗨,Jason,

    非常感谢这篇关于NLP的有用文章。

  2. Jan 2017年9月15日下午7:45 #

    好文章……又一次:)

    非常感谢!

  3. Soujanya Poria 2017年9月16日上午1:08 #

    嗨,Jason,

    好文章。您可能也会觉得这篇文章有用——“基于深度学习的最新趋势
    自然语言处理” -> https://arxiv.org/pdf/1708.02709.pdf 。请查阅。谢谢。

    此致,
    Soujanya

  4. Dilip 2017年9月16日上午4:47 #

    感谢这篇不错的NLP文章

  5. Victor Garcia Cazorla 2017年9月16日下午6:05 #

    好文章,Jason,谢谢。

  6. isaac 2017年9月17日上午2:24 #

    期待Jason在不久的将来推出类似“nlp_with_python”的捆绑包。

    • Jason Brownlee 2017年9月17日上午5:29 #

      快了,艾萨克,它将涵盖 word2vec、字幕生成、情感分析、翻译等等。我已经完成了大约70%。

  7. Ravi 2017年9月17日下午7:15 #

    很高兴听到您即将推出 NLP,Jason,期待中。

  8. Ade Idowu 2017年9月17日下午9:51 #

    一篇非常有用的文章,Jason。
    我目前正在阅读/学习您的书:《用 Python 探索 LSTM》。它非常有用。
    期待您未来的书籍/捆绑包。

  9. alessandro 2017年9月19日上午4:10 #

    干得好,Jason!

    您知道书里有没有关于基于方面的情感分析的内容吗?
    对于这个主题,您有什么推荐吗?

    谢谢!

    • Jason Brownlee 2017年9月19日上午7:50 #

      抱歉,我没有听说过“基于方面的情感分析”。我不确定书里有没有。

  10. Tim 2017年9月22日下午7:24 #

    我曾试图读它一次,觉得它太技术化,充满了数学符号和术语。您真的认为它易于理解,并且程序员或实际的机器学习从业者能从中受益吗?

    • Jason Brownlee 2017年9月23日上午5:37 #

      这是一个很好的开始,直到有新的东西出现。

      我正在写一本书来弥合这个差距。

      • Tim 2017年9月27日下午8:57 #

        太棒了。我很想看到一本为对高度抽象数学符号过敏的人写的书。

发表回复

Machine Learning Mastery 是 Guiding Tech Media 的一部分,Guiding Tech Media 是一家领先的数字媒体出版商,专注于帮助人们了解技术。访问我们的公司网站以了解更多关于我们的使命和团队的信息。