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

> 原文： [https://machinelearningmastery.com/primer-neural-network-models-natural-language-processing/](https://machinelearningmastery.com/primer-neural-network-models-natural-language-processing/)

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

但是，作为初学者，你从哪里开始？

深度学习和自然语言处理都是巨大的领域。每个领域需要关注的重点是什么？NLP 的哪些领域是深度学习影响最大的？

在这篇文章中，您将发现有关自然语言处理的深度学习的入门读物。

阅读这篇文章后，你会知道：

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

让我们开始吧。

![Primer on Neural Network Models for Natural Language Processing](img/a192778fb6caa7fef7a80b720560a307.jpg)

自然语言处理的神经网络模型入门
照片由 [faungg 的照片](https://www.flickr.com/photos/44534236@N00/10984105353/)，保留一些权利。

## 概观

这篇文章分为 12 个部分，遵循论文的结构;他们是：

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

我想给大家介绍一下本文的主要部分和风格，以及对该主题的高级介绍。

如果你想更深入，我强烈推荐[完整阅读](https://arxiv.org/abs/1510.00726)或[最新书](http://amzn.to/2tXn2dZ)。

## 1.关于论文

该论文的标题是：“_ 自然语言处理神经网络模型入门 _”。

它是[在 ArXiv](https://arxiv.org/abs/1510.00726) 上免费提供，并且是 2015 年的最后日期。它是一份技术报告或教程而不是一篇论文，并提供了针对自然语言处理（NLP）的深度学习方法的全面介绍，供研究人员使用和学生。

> 本教程从自然语言处理研究的角度对神经网络模型进行了调查，试图通过神经技术使自然语言研究人员加快速度。

该入门书由 [Yoav Goldberg](https://www.cs.bgu.ac.il/~yoavg/uni/) 撰写，他是 NLP 领域的研究员，曾在 Google Research 担任研究科学家。 Yoav 最近引起了一些[争议](https://medium.com/@yoav.goldberg/an-adversarial-review-of-adversarial-generation-of-natural-language-409ac3378bd7)，但我不会反对他。

这是一份技术报告，大约 62 页，有大约 13 页的参考文献。

该论文非常适合初学者，原因有两个：

*   除了你对这个主题感兴趣而且你知道一点机器学习和/或自然语言处理之外，它对读者几乎没有什么假设。
*   它具有广泛的广度，涵盖了广泛的深度学习方法和自然语言问题。

> 在本教程中，我尝试为 NLP 从业者（以及新手）提供基本背景，行话，工具和方法，使他们能够理解神经网络模型背后的原理并将其应用于自己的工作中。 ...它针对那些有兴趣采用现有的有用技术并以有用和创造性的方式应用于他们最喜欢的 NLP 问题的读者。

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

最后，这本 2015 年的入门书已经变成 2017 年出版的一本书，名为“[自然语言处理的神经网络方法](http://amzn.to/2tXn2dZ)”。

[![Amazon Image](img/82db93f4aeff9716b90238fbd979adea.jpg)](http://www.amazon.com/dp/1627052984?tag=inspiredalgor-20)

如果您喜欢这本入门书并希望深入了解，我强烈推荐 Yoav 的书。

## 2.神经网络架构

这个简短的部分介绍了不同类型的神经网络架构，并在后面的部分中进行了交叉引用。

> 完全连接的前馈神经网络是非线性学习器，在大多数情况下，无论在何处使用线性学习器，它都可以用作替代品。

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

*   完全连接的前馈神经网络，例如，多层感知机网络。
*   具有卷积和池化层的网络，例如，卷积神经网络。
*   循环神经网络，例如长期的短期记忆网络。
*   循环神经网络。

如果您只对特定网络类型的应用程序感兴趣并想直接阅读源文件，那么本节提供了一个很好的来源。

## 3.特征表示

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

> 从稀疏输入线性模型转向基于神经网络的模型时，最大的跳跃可能是停止将每个特征表示为唯一维度（所谓的单热表示）并将其表示为密集向量。

提出了 NLP 分类系统的一般结构，总结如下：

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

这个公式的关键是密集而不是稀疏的特征向量和核心特征的使用而不是特征组合。

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

## 4.前馈神经网络

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

![Feed-forward neural network with two hidden layers](img/d1e0f90b5a8041a681052ed400e52b28.jpg)

具有两个隐藏层的前馈神经网络，取自“用于自然语言处理的神经网络模型的入门”。

使用脑启发的隐喻和使用数学符号来呈现网络。涵盖了常见的神经网络主题，例如：

*   表示功率（例如通用近似）。
*   常见的非线性（例如传递函数）。
*   输出变换（例如 softmax）。
*   词嵌入（例如内置的学习密集表示）。
*   损失函数（例如铰链和对数损失）。

## 5\. 词嵌入

单词嵌入表示的主题是自然语言处理中神经网络方法的关键。本节对主题进​​行了扩展，并列举了关键方法。

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

将审核以下单词嵌入主题：

*   随机初始化（例如，从均匀的随机向量开始）。
*   监督任务特定的预训练（例如转学习）。
*   无人监督的预训练（例如像 word2vec 和 GloVe 这样的统计方法）。
*   训练目标（例如，目标对结果向量的影响）。
*   上下文的选择（例如每个单词周围的单词的影响）。

神经词嵌入源于语言建模的世界，其中训练网络以基于先前词的序列预测下一个词

## 6.神经网络训练

这个较长的部分侧重于如何训练神经网络，为那些刚接触神经网络范例的人编写。

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

本节重点介绍随机梯度下降（以及像迷你批次这样的朋友）以及正规化等训练期间的重要主题。

有趣的是，提出了神经网络的计算图透视，为像 Theano 和 TensorFlow 这样的符号数值库提供了入门，这些库是实现深度学习模型的流行基础。

> 构建图形后，可以直接运行正向计算（计算计算结果）或反向计算（计算梯度）

## 7.级联和多任务学习

本节以上一节为基础，总结了用于跨多种语言任务学习的级联 NLP 模型和模型的工作。

**模型级联**：利用神经网络模型的计算图定义来利用中间表示（编码）来开发更复杂的模型。

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

**多任务学习**：相关的自然语言预测任务不相互馈送，但可以跨任务共享信息。

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

在神经网络的背景下描述了这两个先进概念，其允许在训练（错误的反向传播）和做出预测期间的模型或信息之间的连接。

## 8.结构化输出预测

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

> 典型示例是序列标记（例如，词性标记）序列分段（分块，NER）和句法分析。

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

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

## 9.卷积层

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

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

> 卷积神经网络被设计用于识别大结构中的指示性局部预测器，并将它们组合以产生结构的固定大小向量表示，捕获对于手头的预测任务最具信息性的这些局部方面。

## 10.循环神经网络

与前一节一样，本节重点介绍特定类型网络的使用及其在 NLP 中的作用和应用。在这种情况下，用于建模序列的循环神经网络（RNN）。

> 循环神经网络（RNN）允许在固定大小的向量中表示任意大小的结构化输入，同时关注输入的结构化属性。

鉴于 RNN 的普及，特别是 NLP 中的长期短期记忆（LSTM），这个较大的部分通过各种经常性的主题和模型来工作，包括：

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

时间花在 RNN 模型架构或架构元素上，具体如下：

*   **接受器**：完成输入序列后输出计算的损耗。
*   **编码器**：最终向量用作输入序列的编码。
*   **传感器**：为输入序列中的每个观察创建一个输出。
*   **编解码器**：输入序列在被解码为输出序列之前被编码为固定长度的向量。

## 11.具体的 RNN 架构

本节以前面的方式为基础，介绍了特定的 RNN 算法。

具体涉及的是：

*   简单的 RNN（SRNN）。
*   长短期记忆（LSTM）。
*   门控循环单元（GRU）。

## 12.树木建模

最后一节重点介绍一种更为复杂的网络，称为循环神经网络，用于学习模型树。

树木可以是句法树，话语树，甚至是树，代表句子各部分所表达的情感。我们可能希望基于特定树节点预测值，基于根节点预测值，或者将质量分数分配给完整树或树的一部分。

由于循环神经网络维持输入序列的状态，循环神经网络维持树中节点的状态。

![Example of a Recursive Neural Network](img/0c3673f27664459e71deb868d523255d.jpg)

循环神经网络的示例，取自“用于自然语言处理的神经网络模型的入门”。

## 进一步阅读

如果您要深入了解，本节将提供有关该主题的更多资源。

*   [自然语言处理神经网络模型入门](https://arxiv.org/abs/1510.00726)，2015
*   [自然语言处理的神经网络方法](http://amzn.to/2tXn2dZ)，2017
*   [Yoav Goldberg 主页](https://www.cs.bgu.ac.il/~yoavg/uni/)
*   [Yoav Goldberg 中等](https://medium.com/@yoav.goldberg)

## 摘要

在这篇文章中，您发现了自然语言处理的深度学习入门。

具体来说，你学到了：

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

你有任何问题吗？
在下面的评论中提出您的问题，我会尽力回答。