之前我们已经了解过n-gram语言模型和前馈神经网络语言(NNLM),今天我们简单地看一下循环神经网络语言模型。那么首先看一下为什么要把RNN用到语言模型中呢?

首先循环神经网络语言模型(RNNLM)是想要解决前馈神经网络模型窗口固定的问题。其次,前馈神经网络模型假设每个输入都是独立的,但是这个假设并不合理。循环神经网络的结构能利用文字的这种上下文序列关系,更好地对语句之间的关系进行建模。在某种程度上也能很好地进行上下文的联系,但由于RNN可能有的长距离梯度消失问题,这个上下文的记忆能力也是有限的。在这里只是简单介绍RNNLM,不做过多研究。

RNNLM简单介绍

这个过程基本与之前介绍的RNN类似,贴两张网图,分别展示了RNNLM的结构图和训练过程:

语言模型(三)—— 循环神经网络语言模型(RNNLM)与语言模型评价指标

语言模型(三)—— 循环神经网络语言模型(RNNLM)与语言模型评价指标

其实可以看出还是由之前我们所了解的RNN演变而来,可以看之前的笔记回顾:干货!RNN、LSTM、GRU学习笔记。RNNLM简化图如下:

语言模型(三)—— 循环神经网络语言模型(RNNLM)与语言模型评价指标

思想还是循环应用同一个参数矩阵 W进行训练,也可以有很多变体,比如LSTM、GRU。

在B站上随便点开一个关于RNNLM的视频,我觉得还是很便于理解的,贴图如下:

语言模型(三)—— 循环神经网络语言模型(RNNLM)与语言模型评价指标

上图结合传统的语言模型来看更加清晰,也是为了不断地求几个条件概率的乘积。有兴趣的可以去看原视频:循环神经网络语言模型RNN language model

RNNLM优缺点

优点:

  • 可以处理任意长度的输入
  • 理论上可以追溯前面时间步的信息
  • 模型参数大小固定,与输入长度无关

缺点:

  • 计算时间长
  • 实际应用中,难以追溯很久远的时间步的信息

语言模型评价指标——困惑度/迷惑度 (Perplexity)

困惑度用来度量一个概率分布或概率模型预测样本的好坏程度,其基本思想是给测试集的句子赋予较高概率值的语言模型较好,当语言模型训练完之后,测试集中的句子都是正常的句子,那么训练好的模型就是在测试集上的概率越高越好。迷惑度越小,句子概率越大,语言模型越好。计算公式如下:

语言模型(三)—— 循环神经网络语言模型(RNNLM)与语言模型评价指标

通常在工程中一个好的模型应该将困惑度控制在100以内,最好应该在30左右。

加油加油,晚安。

参考文章:

深入理解语言模型 Language Model

NLP自然语言处理:神经网络语言模型(NNLM)

循环神经网络语言模型RNN language model

Perplexity 困惑度