文章目录

  • 基本知识
  • 统计语言模型
  • n-gram语言模型
  • n-gram语言模型中的平滑技术
  • n-gram 语言模型小结
  • 神经网络语言模型(NNLM)
  • NNLM基本原理
  • NNLM总结
  • 语言模型评价指标—困惑度



语言模型(language model, LM)在自然语言处理中占有重要的地位,尤其在基于统计模型的语音识别、机器翻译、汉语自动分词和句法分析等相关研究中得到了广泛应用。本文介绍两种语言模型n-gram 语言模型和神经网络语言模型。**将 n-gram 语言模型看作是基于词与词共现频次的统计,而神经网络语言模型则是给每个词分别赋予分布式向量表征,探索它们在高维连续空间中的依赖关系。**实验证明,神经网络的分布式表征以及非线性映射更加适合对自然语言进行建模。

基本知识

一个语言模型通常构建为字符串s的概率分布深度学习语言模型的结构 语言模型是什么_神经网络,这里深度学习语言模型的结构 语言模型是什么_神经网络反映的是字符串s在一个句子出现的频率。如一个人所说的话语中每100个句子里大约有一句是
Okay,则可以认为深度学习语言模型的结构 语言模型是什么_语言模型_03

设句子深度学习语言模型的结构 语言模型是什么_深度学习语言模型的结构_04深度学习语言模型的结构 语言模型是什么_神经网络_05表示组成句子的基元,字,词或短语),其概率为:
深度学习语言模型的结构 语言模型是什么_自然语言处理_06
对于一些句子,直接计算$ p(w_i|w_1\ldots w_{i-1})深度学习语言模型的结构 语言模型是什么_深度学习语言模型的结构_07n-1$个词。即:
深度学习语言模型的结构 语言模型是什么_深度学习语言模型的结构_08
这是语言模型的基本思想。

统计语言模型

当前词出现的概率只依赖于前深度学习语言模型的结构 语言模型是什么_深度学习语言模型的结构_09个词。即:
深度学习语言模型的结构 语言模型是什么_深度学习语言模型的结构_08
n取不同的值得到不同的n-gram语言模型。

n-gram语言模型

(1)当n=1时,即出现在第i位上的词深度学习语言模型的结构 语言模型是什么_神经网络_05不依赖于过去的任何词。即:
深度学习语言模型的结构 语言模型是什么_语言模型_12
(2)当n=2时,即出现在第i位上的词深度学习语言模型的结构 语言模型是什么_神经网络_05仅依赖于前面的一个词深度学习语言模型的结构 语言模型是什么_深度学习语言模型的结构_14 有关。即:
深度学习语言模型的结构 语言模型是什么_自然语言处理_15
(3)当n=3时,即出现在第i位上的词深度学习语言模型的结构 语言模型是什么_神经网络_05仅依赖于前面的两个个词深度学习语言模型的结构 语言模型是什么_自然语言处理_17 有关。即:
深度学习语言模型的结构 语言模型是什么_深度学习语言模型的结构_18
接下来以深度学习语言模型的结构 语言模型是什么_神经网络_19讲述n-gram语言模型。即一个词的概率只依赖于它前面的一个词,那么:
深度学习语言模型的结构 语言模型是什么_自然语言处理_20
深度学习语言模型的结构 语言模型是什么_字符串_21时,为了使上式有意义,在句子的开头加上深度学习语言模型的结构 语言模型是什么_语言模型_22,即对于所有的句子深度学习语言模型的结构 语言模型是什么_神经网络_23。同时,给每个句子加上一个结束符深度学习语言模型的结构 语言模型是什么_字符串_24,加上结束符的目的是使得所有的字符串的概率之和深度学习语言模型的结构 语言模型是什么_自然语言处理_25

举例:假设要计算概率深度学习语言模型的结构 语言模型是什么_神经网络_26
深度学习语言模型的结构 语言模型是什么_字符串_27
那么深度学习语言模型的结构 语言模型是什么_深度学习语言模型的结构_28如何计算?我们采用极大似然估计进行计算:
深度学习语言模型的结构 语言模型是什么_深度学习语言模型的结构_29
用于构建语言模型的文本称为训练语料(training corpus)。对于n元语法模型,使用的训练语料的规模一般要有几百万个词。

例如:假设训练语料S由下面3个句子构成:

深度学习语言模型的结构 语言模型是什么_字符串_30


用计算最大似然估计的方法计算概率深度学习语言模型的结构 语言模型是什么_自然语言处理_31,具体过程如下:

深度学习语言模型的结构 语言模型是什么_字符串_32

所以:

深度学习语言模型的结构 语言模型是什么_语言模型_33

n-gram语言模型中的平滑技术

一方面,我们知道自然语言处理中的一大痛点就是出现未登录词(OOV)的问题,即测试集中出现了训练集中未出现过的词,导致语言模型计算出的概率为零。另一方面,可能某个子序列未在训练集中出现,也会导致概率为零。而这显然不是我们乐意看到的,平滑的出现就是为了缓解这类问题。

常见的平滑方法有:

加法平滑方法

古德-图灵(Good-Turing)估计法

Katz平滑方法

Jelinek-Mercer平滑方法

Witten-Bell平滑方法

绝对减值法

具体内容参考统计自然语言处理第二版_ 宗成庆

n-gram 语言模型小结

优点:(1) 采用极大似然估计,参数易训练;(2) 完全包含了前 n-1 个词的全部信息;(3) 可解释性强,直观易理解。

缺点:(1) 缺乏长期依赖,只能建模到前 n-1 个词;(2) 随着 n 的增大,参数空间呈指数增长;(3) 数据稀疏,难免会出现OOV的问题;(4) 单纯的基于统计频次,泛化能力差。

n-grams存在的问题:1.泛化时常常有训练语料中没有出现过的词序列;2.没有考虑词之间的相似性。

神经网络语言模型(NNLM)

NNLM基本原理

和统计语言模型相似,当前词出现的概率只依赖于前深度学习语言模型的结构 语言模型是什么_深度学习语言模型的结构_09个词。即:
深度学习语言模型的结构 语言模型是什么_语言模型_35
假设深度学习语言模型的结构 语言模型是什么_深度学习语言模型的结构_36,存在一个深度学习语言模型的结构 语言模型是什么_字符串_37参数矩阵C,矩阵的每一行代表每一个词的特征向量,一个|V|个词,m代表每个特征向量由m个维度。深度学习语言模型的结构 语言模型是什么_深度学习语言模型的结构_38表示第词深度学习语言模型的结构 语言模型是什么_语言模型_39的特征向量。

神经网络语言模型的数学形式如下:
深度学习语言模型的结构 语言模型是什么_深度学习语言模型的结构_40
具体细节如图所示:

深度学习语言模型的结构 语言模型是什么_神经网络_41


如图所示:将句子的第深度学习语言模型的结构 语言模型是什么_字符串_42深度学习语言模型的结构 语言模型是什么_字符串_43个词特征向量深度学习语言模型的结构 语言模型是什么_自然语言处理_44作为神经网络的输入,输出第深度学习语言模型的结构 语言模型是什么_深度学习语言模型的结构_45个词是深度学习语言模型的结构 语言模型是什么_语言模型_39的概率。计算过程如下:

深度学习语言模型的结构 语言模型是什么_自然语言处理_47

其中:

深度学习语言模型的结构 语言模型是什么_神经网络_48

经过上式得到深度学习语言模型的结构 语言模型是什么_神经网络_49 ,其中,将深度学习语言模型的结构 语言模型是什么_深度学习语言模型的结构_50进行softmax后,深度学习语言模型的结构 语言模型是什么_神经网络_51 表示当上下文为深度学习语言模型的结构 语言模型是什么_深度学习语言模型的结构_52时,下一个词恰好是词典中第深度学习语言模型的结构 语言模型是什么_深度学习语言模型的结构_45个词的概率,即:

深度学习语言模型的结构 语言模型是什么_语言模型_54

其中,深度学习语言模型的结构 语言模型是什么_语言模型_55表示词深度学习语言模型的结构 语言模型是什么_自然语言处理_56在词典中的索引。

大部分计算集中在隐藏层和输出层之间的矩阵向量运算,以及输出层上的softmax归一化运算

该模型的参数是:

深度学习语言模型的结构 语言模型是什么_字符串_57

损失函数是:

深度学习语言模型的结构 语言模型是什么_自然语言处理_58

深度学习语言模型的结构 语言模型是什么_语言模型_59是正则化项,用于控制过拟合。

有了损失函数,我们可以用梯度下降法,在给定学习了深度学习语言模型的结构 语言模型是什么_神经网络_60的条件下,进行参数更新:
深度学习语言模型的结构 语言模型是什么_深度学习语言模型的结构_61
直至收敛,得到一组最优参数。

NNLM总结

先给每个词在连续空间中赋予一个向量(词向量),再通过神经网络去学习这种分布式表征。利用神经网络去建模当前词出现的概率与其前 n-1 个词之间的约束关系。很显然这种方式相比 n-gram 具有更好的泛化能力,只要词表征足够好。从而很大程度地降低了数据稀疏带来的问题。但是这个结构的明显缺点是仅包含了有限的前文信息

优点:(1) 长距离依赖,具有更强的约束性;(2) 避免了数据稀疏所带来的OOV问题;(3) 好的词表征能够提高模型泛化能力。

缺点:(1) 模型训练时间长;(2) 神经网络黑盒子,可解释性较差。
注意他和n-gram区别:
1.词语之间的相似性可以通过词向量来体现.

举例来说,如果某个(英语)语料中S1=“A dog is running in the room”出现了10000次,而S2=“A cat is running in the room”只出现了1次.按照n-gram模型的做法,p(S1)肯定会远大于p(S2)。注意,S1和S2的唯一区别在于dog和cat,而这两个词无论是句法还是语义上都扮演了相同的角色,因此,p(S1)和p(S2)应该很相近才对.

然而,由神经概率语言模型算得的p(S1)和p(S2)是大致相等的.原因在于: (1)在.神经慨率语言模型中假定了“相似的”的词对应的词向量也是相似的;(2)概率函数关于词向量是光滑的,即词向量中的一一个小变化对概率的影响也只是一一个小变化. 这样一来,对于下面这些句子

深度学习语言模型的结构 语言模型是什么_自然语言处理_62


只要在语料库中出现一个,其他句子的概率也会相应增大。

2.基于词向量的模型自带平滑化功能(由深度学习语言模型的结构 语言模型是什么_自然语言处理_63不会为零),不再需要像n-gram那样进行额外处理了.

语言模型评价指标—困惑度

通常将困惑度作为语言模型的评价指标,设存在语言序列深度学习语言模型的结构 语言模型是什么_深度学习语言模型的结构_64,则每个词的平均交叉熵为:
深度学习语言模型的结构 语言模型是什么_自然语言处理_65
显然,交叉熵越小,得到的概率模型越接近真实分布,进一步我们定义困惑度为:
深度学习语言模型的结构 语言模型是什么_神经网络_66
由公式可知:困惑度越小,说明所建模的语言模型越精确