# 统计语言建模和神经语言模型的简要介绍

> 原文： [https://machinelearningmastery.com/statistical-language-modeling-and-neural-language-models/](https://machinelearningmastery.com/statistical-language-modeling-and-neural-language-models/)

语言建模是许多重要的自然语言处理任务的核心。

最近，基于神经网络的语言模型已证明比独立的经典方法和作为更具挑战性的自然语言处理任务的一部分更好的表现。

在这篇文章中，您将发现用于自然语言处理的语言建模。

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

*   为什么语言建模对于解决自然语言处理中的任务至关重要。
*   什么是语言模型以及使用它们的一些示例。
*   神经网络如何用于语言建模。

让我们开始吧。

![Gentle Introduction to Statistical Language Modeling and Neural Language Models](img/ddba5467d95d1acfe4e72d3ccade4a06.jpg)

统计语言建模和神经语言模型的简要介绍
照片由 [Chris Sorge](https://www.flickr.com/photos/stone65/7790433584/) 拍摄，保留一些权利。

## 概观

这篇文章分为 3 部分;他们是：

1.  建模语言问题
2.  统计语言建模
3.  神经语言模型

## 1.建模语言问题

可以完全指定正式语言，如编程语言。

可以定义所有保留字，并且可以精确定义它们可以使用的有效方式。

我们不能用自然语言来做这件事。自然语言不是设计的;它们出现了，因此没有正式的规范。

可能存在部分语言和启发式的正式规则，但经常使用不确认的自然语言。自然语言涉及大量术语，可以用于引入各种歧义的方式，但其他人仍然可以理解。

此外，语言改变，单词用法改变：它是一个移动的目标。

然而，语言学家试图用正式的语法和结构来指定语言。它可以做到，但是非常困难，结果可能很脆弱。

指定语言模型的另一种方法是从示例中学习它。

## 2.统计语言建模

统计语言建模，或语言建模，简称 LM，是概率模型的开发，它能够预测序列中的下一个单词，给出前面的单词。

> 语言建模是将概率分配给语言中的句子的任务。 [...]除了为每个单词序列分配概率之外，语言模型还指定给定单词（或单词序列）跟随单词序列的可能性的概率

- 第 105 页，[自然语言处理中的神经网络方法](http://amzn.to/2wt1nzv)，2017。

语言模型基于文本示例来学习单词出现的概率。更简单的模型可以查看短序列单词的上下文，而较大的模型可以在句子或段落的级别上工作。最常见的是，语言模型在单词级别上运行。

> 语言模型的概念本质上是概率性的。语言模型是对从某些词汇表中提取的字符串进行概率测量的函数。

- 第 238 页，[信息检索简介](http://amzn.to/2vAavQd)，2008 年。

语言模型可以独立开发和使用，例如生成看似来自语料库的新文本序列。

语言建模是大量自然语言处理任务的根本问题。更实际地，语言模型用于需要语言理解的任务的更复杂模型的前端或后端。

> ...语言建模是机器翻译和自动语音识别等实际应用中的关键组成部分。[...]出于这些原因，语言建模在自然语言处理，人工智能和机器学习研究中发挥着核心作用。

- 第 105 页，[自然语言处理中的神经网络方法](http://amzn.to/2wt1nzv)，2017。

一个很好的例子是语音识别，其中音频数据被用作模型的输入，并且输出需要语言模型来解释输入信号并且识别已经识别的单词的上下文中的每个新单词。

> 语音识别主要涉及将语音信号转录为单词序列的问题。 [...]从这个角度来看，假定语音是由语言模型生成的，该语言模型为所有单词串 w 提供独立于观察信号的 Pr（w）的估计[...]语音识别的目标是找到最可能的词序列给出观察到的声学信号。

- 第 205-206 页，[牛津计算语言学手册](http://amzn.to/2w9nmc4)，2005 年。

类似地，语言模型用于在许多类似的自然语言处理任务中生成文本，例如：

*   光学字符识别
*   手写识别。
*   机器翻译。
*   拼写纠正。
*   图像标题。
*   文本摘要
*   以及更多。

> 语言建模是确定一系列单词概率的艺术。这在许多领域都很有用，包括语音识别，光学字符识别，手写识别，机器翻译和拼写校正

- [语言建模的一点进展](https://arxiv.org/abs/cs/0108005)，2001。

开发更好的语言模型通常会使模型在预期的自然语言处理任务中表现更好。这是开发更好，更准确的语言模型的动力。

> [语言模型]在传统的 NLP 任务中发挥了关键作用，例如语音识别，机器翻译或文本摘要。通常（尽管不总是），训练更好的语言模型可以改善下游任务的基本指标（例如语音识别的单词错误率，或翻译的 BLEU 得分），这使得训练更好的 LM 的任务本身就是有价值的。

- [探索语言建模的局限](https://arxiv.org/abs/1602.02410)，2016。

## 3.神经语言模型

最近，神经网络在语言模型开发中的使用已变得非常流行，以至于它现在可能是首选方法。

在语言建模中使用神经网络通常称为神经语言建模，简称 NLM。

神经网络方法在独立语言模型上以及在语音识别和机器翻译等具有挑战性的任务中将模型合并到较大模型中时，比传统方法获得更好的结果。

提高表现的一个关键原因可能是该方法的推广能力。

> 非线性神经网络模型解决了传统语言模型的一些缺点：它们允许在越来越大的上下文大小上进行调整，只需参数数量的线性增加，它们减少了手动设计后退顺序的需要，并且它们支持跨不同上下文的泛化。

- 第 109 页，[自然语言处理中的神经网络方法](http://amzn.to/2wt1nzv)，2017。

具体地，采用单词嵌入，其使用实值向量来表示项目向量空间中的每个单词。这种基于其用法的单词的学习表示允许具有相似含义的单词具有相似的表示。

> 神经语言模型（NLM）通过将单词参数化为向量（单词嵌入）并将其用作神经网络的输入来解决 n-gram 数据稀疏性问题。参数作为训练过程的一部分进行学习。通过 NLM 获得的单词嵌入表现出在诱导向量空间中语义上接近的单词同样接近的性质。

- [字符感知神经语言模型](https://arxiv.org/abs/1508.06615)，2015。

这种概括是经典统计语言模型中使用的表示不能轻易实现的。

> 在一个离散的单词 indice 空间中很难获得“真正的泛化”，因为单词索引之间没有明显的关系。

- [用于大词汇量连续语音识别的连接语言建模](https://pdfs.semanticscholar.org/b4db/83366f925e9a1e1528ee9f6b41d7cd666f41.pdf)，2002。

此外，分布式表示方法允许嵌入表示随着词汇量的大小更好地缩放。每个单词具有一个离散表示的经典方法使用越来越大的单词词汇来对抗维度的诅咒，这导致更长和更稀疏的表示。

语言建模的神经网络方法可以使用以下三个模型属性来描述，这些属性取自“ [A Neural Probabilistic Language Model](http://www.jmlr.org/papers/v3/bengio03a.html) ”，2003。

1.  将词汇表中的每个单词与分布式单词特征向量相关联。
2.  根据序列中这些单词的特征向量表示单词序列的联合概率函数。
3.  同时学习单词特征向量和概率函数的参数。

这表示一种相对简单的模型，其中表示和概率模型直接从原始文本数据一起学习。

最近，基于神经的方法已经开始，然后一直开始超越传统的统计方法。

> 我们提供了充分的实证证据，表明连接语言模型优于标准的 n-gram 技术，除了它们的高计算（训练）复杂性。

- [基于循环神经网络的语言模型](http://www.fit.vutbr.cz/research/groups/speech/publi/2010/mikolov_interspeech2010_IS100722.pdf)，2010。

最初，前馈神经网络模型用于介绍该方法。

最近，循环神经网络以及具有长期记忆的网络（如长短期记忆网络或 LSTM）允许模型在比更简单的前馈网络更长的输入序列上学习相关的上下文。

> [RNN 语言模型]提供了进一步的概括：不考虑前面几个单词，假设具有来自循环连接的输入的神经元代表短期记忆。该模型从数据中学习如何表示内存。虽然浅前馈神经网络（仅具有一个隐藏层的神经网络）只能聚类相似的词，但是循环神经网络（可以被认为是深层架构）可以执行类似历史的聚类。这允许例如具有可变长度的模式的有效表示。

- [循环神经网络语言模型的扩展](http://ieeexplore.ieee.org/abstract/document/5947611/)，2011。

最近，研究人员一直在寻求这些语言模型的极限。在文章“[探索语言建模的极限](https://arxiv.org/abs/1602.02410)”中，评估大数据集上的语言模型，例如一百万字的语料库，作者发现基于 LSTM 的神经语言模型胜过经典方法。

> ......我们已经证明 RNN LMs 可以在大量数据上进行训练，并且优于竞争模型，包括精心调校的 N-gram。

- [探索语言建模的局限](https://arxiv.org/abs/1602.02410)，2016。

此外，他们提出了一些启发式方法来开发一般的高表现神经语言模型：

*   **尺寸很重要**。最好的型号是最大的型号，特别是内存单元的数量。
*   **正规化很重要**。在输入连接上使用正规化（如丢失）可改善结果。
*   **CNNs 与嵌入**。字符级卷积神经网络（CNN）模型可用于前端而不是字嵌入，从而实现类似且有时更好的结果。
*   **合奏很重要**。结合多个模型的预测可以大大提高模型表现。

## 进一步阅读

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

### 图书

*   第 9 章语言建模，[自然语言处理中的神经网络方法](http://amzn.to/2vStiIS)，2017。
*   第 22 章，自然语言处理，[人工智能现代方法](http://amzn.to/2fDPfF3)，2009。
*   第 12 章，信息检索的语言模型，[信息检索简介](http://amzn.to/2vAavQd)，2008。

### 文件

*   [神经概率语言模型](https://papers.nips.cc/paper/1839-a-neural-probabilistic-language-model.pdf)，NIPS，2001。
*   [神经概率语言模型](http://www.jmlr.org/papers/v3/bengio03a.html)，JMLR，2003。
*   [用于大词汇量连续语音识别的连接语言建模](https://pdfs.semanticscholar.org/b4db/83366f925e9a1e1528ee9f6b41d7cd666f41.pdf)，2002。
*   [基于循环神经网络的语言模型](http://www.fit.vutbr.cz/research/groups/speech/publi/2010/mikolov_interspeech2010_IS100722.pdf)，2010。
*   [循环神经网络语言模型的扩展](http://ieeexplore.ieee.org/abstract/document/5947611/)，2011。
*   [字符感知神经语言模型](https://arxiv.org/abs/1508.06615)，2015。
*   [用于语言建模的 LSTM 神经网络](https://pdfs.semanticscholar.org/f9a1/b3850dfd837793743565a8af95973d395a4e.pdf)，2012
*   [探索语言建模的局限](https://arxiv.org/abs/1602.02410)，2016。

### 用品

*   [语言模型，维基百科](https://en.wikipedia.org/wiki/Language_model)
*   [神经网络语言模型，Scholarpedia](http://www.scholarpedia.org/article/Neural_net_language_models)

## 摘要

在这篇文章中，您发现了自然语言处理任务的语言建模。

具体来说，你学到了：

*   这种自然语言没有正式指定，需要使用统计模型来学习实例。
*   统计语言模型是许多具有挑战性的自然语言处理任务的核心。
*   使用神经语言模型，特别是那些具有字嵌入和循环神经网络算法的模型，可以实现最先进的结果。

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