Michael collins nlp课程笔记(一)语言模型Language Modeling

目录

一、语言模型的定义和意义

二、语言模型的马尔可夫模型

2.1 定长句子下的马尔可夫模型

2.2 变长句子下的马尔可夫模型

 三、三元语言模型(Trigram Language Model)

3.1 极大似然估计

3.2 平滑估计

3.2.1  线性插值(Linear Interpolation)

         3.2.2  Discounting Methods


讲义链接:http://www.cs.columbia.edu/~mcollins/lm-spring2013.pdf

一、语言模型的定义和意义

语言模型本质上是为了衡量一个句子出现的概率。例如,在语音识别中,当模型生成多个候选句子时,通过语言模型可以选出最有可能的语句。

首先,我们有一个有穷的集合V(词典,包括语言中所有可能出现的单词)。语句S就是单词的一个序列,x1x2 . . . xn(n >= 1)。所有句子的集合即可表示为V^+(正闭包)。语言模型可以定义如下:For any  ∈ V^+ , p(x1, x2, . . . xn) ≥ 0,并且p(x1, x2, . . . xn)之和等于1。

二、语言模型的马尔可夫模型

在语言模型中,我们的任务就是对句子的概率p(x1, x2, . . . xn)进行建模。一种最直接的想法就是用训练集中句子x1x2 . . . xn出现的次数除以训练集句子总数,以该频率作为句子出现的概率。这个办法有很致命的缺陷。对于一个没有在训练集中出现过的句子,模型给出的概率为0。下面介绍的马尔可夫模型则更加合理。

2.1 定长句子下的马尔可夫模型

假设,句子的长度n是固定的(例如10),那么所有可能的句子有|V|^n条(|V|表示词典的大小,即单词总数)。显然,我们很难估计这么大数量级的参数。一阶马尔可夫模型提出一个重要的假设:

Michael collins nlp课程笔记(一)语言模型Language Modeling_第1张图片

第一步推导运用了链式法则,第二步推导则利用了一个独立性假设:

也就意味着句子中第i个单词出现的概率仅与它前面一个单词有关。这样子我们所需要估计的参数数量就从|V|^n减少到了|V|^2 + |V|个。

类似地,二阶马尔可夫模型提出假设:

为了方便,我们引入了两个起始符号x_0 = x_{-1} = *,在二阶马尔可夫模型中,句子中的第i个单词出现的概率仅与它前面两个单词有关。模型所需要估计的参数数量为|V|^3 + |V|^2 + |V|

2.2 变长句子下的马尔可夫模型

在上一小节中,我们假定了句子长度是固定的。显然,实际使用的句子是不定长的,也就是说句子长度n本身也是一个随机变量,也需要对其建模。下面介绍一种最常使用的建模方法。

我们引入一个特殊的字符STOP,这个字符不会出现在词典中,它标记着一个句子的结束,只会出现在句子的末尾。于是,在二阶马尔可夫模型的假设下,有:

其中,n>=2,x_n = STOP,x_0 = x_{-1} = *。模型所需要估计的参数数量为|V+1|*|V|^2 + |V+1|*|V| + |V|。至此,我们可以描述一个句子的生成过程:

Michael collins nlp课程笔记(一)语言模型Language Modeling_第2张图片

例如, 

 三、三元语言模型(Trigram Language Model)

三元语言模型其实就是2.2中描述的语言模型中的二阶马尔可夫模型。在这一节中,我们更多地关注模型中的参数以及如何估计这些参数。

在2.2中,我们可以看到,如果知道了所有的P(X_i = x_i|X_{i-2} = x_{i-2},X_{i-1} = x_{i-1}),我们就能计算出一个句子出现的概率。若P(X_i = x_i|X_{i-2} = x_{i-2},X_{i-1} = x_{i-1}) = q(x_i|x_{i-2},x_{i-1}),那么q(x_i|x_{i-2},x_{i-1})就是模型的参数。也就是说,我们要估计的参数是q(w|u,v),其中,w \in {V \bigcup \{STOP\}} and u,v \in {V \bigcup \{*\}}(这里为了方便,放宽了规定,实际上w=STOP时,u和v等于*或者u=*时,v \in {V}是没有意义的,当然也可以理解有意义,但是为概率为0)。

3.1 极大似然估计

定义c(u,v,w)为三元组(u,v,w)在训练语料中的出现次数。例如c(the,dog,barks)是序列the dog barks在训练语料中出现的次数。类似地,c(u,v)为二元组(u,v)在训练语料中的出现次数。则有:。例如,

根据定义,很容易发现存在以下的问题:

1.c(u,v) = 0时,式子没有意义;

2.c(u,v,w)=0时,估计结果为0,即q(w|u,v)=0。但是,训练预料库中没有三元组(u,v,w),并不意味着三元组完全不可能出现。这时,可以通过拉普拉斯平滑来修改参数的估计方式,即q(u,v,w) = \frac{c(u,v,w) + 1}{c(u,v) + |V+1|}

 在3.2中,我们将讨论两种平滑估计的方式。

3.2 平滑估计

3.2.1  线性插值(Linear Interpolation)

注意到我们在三元模型的参数估计中,只使用了三元组的出现频率。事实上,二元组甚至是一元组的出现频率也有一定的估计意义。在估计参数时,可以将三元组,二元组,一元组同时考虑进去,赋予三者一定的比重。同时,二元组,一元组对于3.1中提到的问题1和2,会有一定程度的缓解。

于是,我们定义:

Michael collins nlp课程笔记(一)语言模型Language Modeling_第3张图片

其中, c()表示训练预料中所有单词出现的总次数。引入参数\lambda_1,\lambda_2,\lambda_3,满足\lambda_1 + \lambda_2 + \lambda_3 = 1,\lambda_1 \geq 0,\lambda_2 \geq 0,\lambda_3 \geq 0,定义:。这三个参数可以通过验证集选出,定义c$^'$(u,v,w)为验证集中三元组(u,v,w)出现的次数,关于\lambda_1,\lambda_2,\lambda_3的函数L定义如下:

 求解使得函数取最大值的\lambda_1,\lambda_2,\lambda_3值。

上述方法所确定的\lambda_1,\lambda_2,\lambda_3是定值。当然,也可以通过其他的方式来确定\lambda_1,\lambda_2,\lambda_3的值。例如,让\lambda_1,\lambda_2,\lambda_3的值随着c(u,v)而变化,具体定义如下:

Michael collins nlp课程笔记(一)语言模型Language Modeling_第4张图片

其中,\gamma是唯一 的参数。通过这个定义,\lambda_1 + \lambda_2+\lambda_3 = 1,\lambda_1 \geq 0,\lambda_2 \geq 0,\lambda_3 \geq 0,同时\lambda_1会随着c(u,v)的增大而增大。

 此外,Bucketing也是线性插值中的一种常见方法,在此不做具体介绍。

3.2.2  Discounting Methods

拉普拉斯平滑是通过分母增加|V+1|,分子增加1的方式来避免分子,分母为0,而Discounting method则是减少分子。

首先,对c(u,v) > 0,定义,其中\beta是一个0到1之间的数值,通常取0.5。

再定义,。例如:

Michael collins nlp课程笔记(一)语言模型Language Modeling_第5张图片

对于消失的概率质量,定义:。在上面的例子中,有。将这部分概率质量根据unigram的概率分给c(v,w)=0的二元组。定义两个集合: 以及

类似地,对于trigram,有Michael collins nlp课程笔记(一)语言模型Language Modeling_第6张图片

至此,通过Discounting method,解决了c(u,v)=0和c(u,v,w)=0的问题。

你可能感兴趣的:(自然语言处理)