JM Book chapter3——N-gram Language Models

3 N-gram语言模型

**Language models(LMs): 把为词序列计算概率的模型称为语言模型。**常用的领域有语音识别(speech recognition)、拼写检查(spelling correction)、语法错误纠正(grammatical error correction)、机器翻译(machine translation)以及辅助替代交流(augmentative and alternative communication, AAC)。本章主要介绍n-gram语言模型,其中n-gram是指由n个词组成的序列,n-gram语言模型则是在给定n-gram中最后一个词之前的词的情况下,计算最后一个词的概率,并计算整个词序列的概率。

3-1 N-Grams

在计算整个词序列的概率时,可以使用链式法则来将其进行分解,即将联合概率分解为多个条件概率的乘积。

然而,语言具有多样性以及创造性,总会存在未出现过的词序列,因此我们可以仅仅使用历史中最近的几个词来近似代替整个历史,当其为1时,就成为了bigram模型,这样的假设可以称为马尔科夫假设。马尔科夫假设认为我们可以在不追溯很远的历史的情况下来预测未来某一单元的概率。如图1所示:

图1 N-Gram计算式

在对n-gram的参数(由预测词所提供,例如1-gram就有词数-1个参数)进行估计时,采用的是最大似然估计,由于n-gram可以看作是一个多项分布,则可以直观地将其理解为统计次数即频率,并对其进行规范化使其落在0-1之间。以bigram为例,如图2所示:
请添加图片描述

图2 bigram的MLE计算式

log-概率:当句子较长时,概率的连乘容易产生下溢,因此改为对数相加的形式。

3-2 评估语言模型

语言模型的评估分为两种,一种是外部评估,即将其应用于具体的应用中并检验其对于应用的提升,另一种为内部评估,即独立于其应用并从质量上进行检验的评估。为了避免“training on the test set”,应将数据集划分为训练集以及测试集,但当进行多次测试后,模型会隐式地趋向于测试集,因此需要再划分出一个发展集,通常训练集、发展集以及测试集的比例为8:1:1。

3-2-1 困惑度

困惑度的定义为测试集上概率的倒数,并根据总词数进行归一化,如图3所示:
请添加图片描述

图3 困惑度定义

由其定义可知,最小化困惑度即最大化测试集概率,同时需要将“”符号计算在总词数中

从熵的角度进行理解又可称困惑度为加权平均分支因子,分支因子是指一种语言中,任何词接下来可能跟着出现的词的数目,则当概率平均分布时,熵最大,困惑度最大。

同时随着,n-gram中n的数量增大,模型的困惑度也会随之下降,这是因为模型能够提供的信息更加多了。关于不同n-gram模型的比较上,当他们所使用的词库完全一致时,才能够进行比较。

3-3 从语言模型中采样句子

采样是视觉化模型所刻画的知识的一个重要途径。从分布中进行采样意味着根据其似然值随机地选择一个数值,例如图4所示,所有英文单词均占据一个间隔,因此在0-1之间随机地选择一个数,则其所落在的间隔内则代表着该词被采样得到。
请添加图片描述

图4 采样示例图

3-4 泛化与零现象

**n-gram语言模型与很多统计模型一样,依赖于训练集。**一种解释是指模型所产生的概率往往编码着所给定训练集的特定事实;另一种解释是指随着n的增大,n-gram模型对于训练集的拟合能力也越强。然而当训练集与测试集的语料有差别时,统计模型将会变得无用,因此为了避免此类问题,无论我们想实现何种任务,其训练集需要与其拥有相似的类别,抑或是在处理含有大量口头数据时,需要将方言等类型的数据也考虑在内。

数据稀疏的问题是难以避免的,因此就会有很多概率为零的n-gram存在,且常会发生在测试集中,这会导致测试集的困惑度也为0。

3-4-1 未登陆词

未登陆词是指未出现在词典中的词,将其标记为,对于未登陆词通常有两种解决方法,一种是将开放词库转换为封闭词库,即先选择一个固定大小的词库,并将训练集中的未登陆词设置为,并为计算其概率;另一种是当不预先存在一个封闭的词库时,使用训练集中的其他词来替换的方法。

3-5 平滑技术

平滑技术是指在遇到0概率问题时,将一些高概率事件的概率质量“刮掉”一些并将其分配给0概率事件,包括拉普拉斯(加一)平滑、加k平滑、退避算法以及Kneser-Ney平滑技术。

3-5-1 拉普拉斯平滑

其思想是在规范化之前,将所有n-gram的频次加一。在unigram中,分子即加一,分母则相当于加上了词的总数,使用adjusted count来便于进行与MLE做比较,方法是使用规范化因子,如图5所示。discounting则是adjusted count与原count的比值。请添加图片描述

图5 adjusted count计算式

然而当未出现过的n-gram数量较大时,经过拉普拉斯平滑后,会为此类数据分配较大的概率空间,相应的原本概率较高的n-gram将会出现概率锐减的情况。因此增加相同的频度值存在一定的不合理性。

3-5-2 add-k 平滑

在拉普拉斯平滑的基础上进行改进,将加1改为加一个小数k,如图6所示,这要求我们要对k进行一个学习。效果并没有很好。

图6 add-k平滑计算式

3-5-3 退避与插值平滑

其核心思想是使用更少的上下文信息来帮助模型进行更好的泛化,其中包括两种方法,一种是退避,当trigram信息不够时退避至bigram,再不够时退避至unigram;另一种是插值,将所有的n-gram概率估计进行加权混合,图7展示了一种简单的线性插值。

图7 线性插值平滑

3-6 Kneser–Ney 平滑

absolute discouting:在拉普拉斯平滑以及add-k平滑中,背后结果是为频率高的n-gram打折扣,absolute discounting计算得到的折扣为0.75。如图8所示。
在这里插入图片描述

图8 absolute discounting计算式

Kneser-Ney discounting:对absolute discounting进行了进一步的改进,主要针对于unigram为了避免由于某些bigram的高频出现所导致的该词的高频而对unigram的选择产生影响,因此提出了continuation,主要用于衡量该词在不同上下文中出现的频率,即不同bigram它所可以组成的数量。具体计算如图9所示。

图9 Kneser-Ney计算式

3-7 大型语言模型以及愚蠢退避

google根据web等数据发布了The Web 1 Trillion 5-gram corpus、Google Books Ngrams corpora等等,其中高效的数据存储是非常必要的,例如使用64位的哈希数,或是在存储时去除一些数据,例如频率低于某一阈值的或是使用熵来去除一些相较来说不重要的。

stupid backoff:是一种更为简单的平滑技术,即当遇到频率为0的n-gram时,不进行higher-order的discounting,直接退避至更低的n-gram,并采用固定的权重,如图10所示。
在这里插入图片描述

图10 stupid backoff计算式

3-8 困惑度与熵的关系

是一种对于信息的衡量,如图11所示。

图11 熵的计算式

在计算一个语言的真正熵时,需要将其长度考虑至无限长度,根据 Shannon-McMillan-Breiman理论,当这个语言以某种方式下是规律的时,可以将其简化为图12所示,即可以认为单一的足够长的序列更够替代所有的序列并且将短的序列包含在内。
在这里插入图片描述

图12 语言的熵计算式

如果一个随机过程分配给一个序列的概率对于时间指数的变化是不变的,那么这个随机过程就被认为是静止的,因此马尔科夫模型以及n-gram模型都是静止的。

Cross-entropy:存在一个不知道真实分布的分布p,采用模型m来近似分布p,使用p所产生的数据以及模型m来衡量m在p上的交叉熵,如图13所示。
请添加图片描述

图13 交叉熵计算式

即根据概率分布p抽取序列,但根据m对其概率的对数进行求和。

m与p的交叉熵是分布p熵的上限,因此可以用较简单的分布m来帮助估计p的真实熵,因此对于不同的m,交叉熵更小则说明更接近真实分布p

困惑度与交叉熵:首先需要找到将无限长改为有限长度,并基于此找到一个交叉熵的近似,则困惑度就可以改写为图14所示。

请添加图片描述请添加图片描述

图14 困惑度的改写式

3-9 总结

本章介绍了语言模型和n-gram,这是语言处理中最广泛使用的工具之一。

  • 语言模型提供了一种为句子或其他词语序列分配概率的方法,并从前面的词中预测后一个词。
  • n-grams是马尔可夫模型,它以固定窗口大小从前面的词来估计后一个词。n-gram概率可以通过在语料库中计数和归一化(最大似然估计)来估计。
  • n-gram语言模型可以在一些任务中进行外部评估,也可以用困惑度进行内部评估。
  • 测试集在语言模型上的困惑度是模型计算的概率的倒数的几何平均值。
  • 平滑技术提供了一种更复杂的方法来估计n-grams的概率。常用的n-grams平滑算法是通过退避或插值,依赖于低阶的n-gram计数。
  • 退避和插值都需要discounting来创建一个概率分布。
  • Kneser-Ney平滑利用了一个词作为新continuation的概率。内插的Kneser-Ney平滑算法将折扣概率与低阶延续概率混合起来。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值