图解N (图解女右手)

admin 2024-11-19 48 0

本文目录导航:

图解N-gram语言模型的原理--以kenlm为例

本文解析基于N-gram的语言模型原理,以KenLM为例深入探讨。

N-gram模型,包括SRILM、IRSTLM、BerkeleyLM和KenLM等,其核心算法思想基本一致,具体实现细节有所差异。

本文聚焦于KenLM,一种在速度与内存使用方面表现卓越的训练工具。

所采用的平滑技术为Modified Kneser-ney smoothing,其在当前属于标准且广泛采用的最佳平滑算法。

为了清晰地阐述训练过程,本文以简单文本为例进行bigram操作,具体文本为:我 你 我 他 我 你。

通过执行特定命令,我们可以生成如图1所示的bigram结果。

让我们逐步解析生成结果的过程。

首先,对文本进行处理,增加表示句子开头和结尾的标记符。

接下来,将每个词映射为唯一的数字id,但本文为直观描述,省略了此步骤。

接着,进行原始计数,即将相同的字合并并排序,形成1-gram和2-gram的原始计数。

调整计数阶段,核心思路关注于lower-gram的计数调整,以反映不同词作为连续词的可能性。

例如,York在语料中出现次数较高,但作为New York的连续词可能性较低,因此需要进行计数调整。

公式(1)详细展示了调整过程,其中涉及原始计数、调整后的计数等关键要素。

对1-gram调整计数进行深入计算,基于特定原则,我们得到调整后计数的结果。

2-gram的调整计数保持不变,遵循公式(1)中的特定条件。

接着是Discounting步骤,旨在将常见N-Gram的概率分配给未出现的N-gram,通过减少常见N-Gram的概率来实现。

公式(2)和(3)提供了不同折扣方法的计算方式,其中涉及k值、n值等变量。

Normalization分为两部分:计算n-gram的概率,称作pseudo probability;计算回退权重,衡量词后面能接不同词的能力。

具体概率计算与回退权重的计算方法,本文以实例进行说明。

Interpolation结合bigram和unigram,以提高概率估计的准确性。

通过公式(4)和(5),我们可以计算每个词的插值概率,实现对未登录词的处理。

通过实例,本文详细解释了N-gram语言模型的训练过程,包括计数、调整计数、Discounting、Normalization和Interpolation等关键步骤,旨在帮助读者深入理解基于N-gram的过程。

参考文献[1]提供了更深入的理论基础,供读者进一步研究。

图解N (图解女右手)

语言模型

1、链式法则(chain rule):P(ABCD)=P(A)·P(B|A)·P(C|AB)·P(D|ABC) (竖杠后面是给定的条件,即条件概率分布) 2、概率稀疏问题:给定的短句越长,越不容易找到,因为大部分概率都是零 3、马尔科夫假设,可解决概率稀疏(sparsity)问题:只以离它最近的若干词为指定词,假设离得近的词影响大。

如1st order markov assumption第一顺序马尔科夫假设,只考虑离得最近的前面的第一个单词、2st order只考虑前面的两个单词、3st…… 语言模型用来判断:是否一句话从语法上通顺。

用来计算一个句子的概率的模型,也就是判断一句话是否是人话的概率。

N元模型就是假设当前词的出现概率只与它前面的N-1个词有关: 1、unigram(一元模型) 最简单的模型,假定所有词互相独立,相当于0st order假设,不考虑单词之间的顺序。

2、bigram(二元模型) 最常用的模型,相当于1st order马尔科夫假设,只考虑前一个单词 3、trigram(三元模型) 常用模型,相当于2st order马尔科夫假设,只考虑前两个单词 4、N-gram 当N>3时,统称为higher order,比较复杂 高于四元的用的非常少,由于训练它须要更庞大的语料,数据稀疏严重,时间复杂度高,精度却提高的不多。

用于评价语言模型的好坏,困惑度越低,模型越好。

其基本思想是:给测试集的句子赋予较高概率值的语言模型较好。

当语言模型训练完之后,测试集中的句子都是正常的句子,那么训练好的模型就是在测试集上的概率越高越好,公式如下: 由公式可知,句子概率越大,语言模型越好,迷惑度越小。

评估句子的可能性就是计算一句话整体的概率,由各个单词出现的概率相乘得到。

若有一个单词未在语料库中出现,则其概率为零,致使整个句子的概率为零(最大似然估计)。

语料库即训练库,未包含的词不代表实际使用中不会出现,所以要尽量避免这种情况,可用“平滑”来解决: 1、 Add-one平滑,又称laplace smoothing 最简单最经典的平滑方法,在朴素贝叶斯中经常使用。

最大似然估计(maximum likelihood estimation,MLE),最大可能性估计,即看到什么就是什么,没有概率就是0,明确使用概率模型。

Add-1平滑,将概率计算公式的分子+1,分母+V,V是词典库的大小 分母+V的原因是:最后计算完所有可能性加起来概率=1 2、Add-K平滑 稍灵活一些,将概率计算公式的分子+K,分母+KV。

K为超参数,需要不断调整,或者让机器帮助选择一个比较合理的值 比如评估模型好坏的方法,Perplexity相当于K的函数,找到一个K,使得Perplexity最小即可。

3、 Interpolation(插值) 同时使用unigram、bigram、N-gram,比如用bigram时,第一个词需要用到unigram。

核心思路:在计算trigram的同时,考虑unigram、bigram、trigram出现的频次,各给一个权重,权重相加=1 4、 Good-turning smoothing 即便现在的语料库中没有,但不代表未来不会出现。

假设未出现的词与现在语料库中出现一次的单词概率一致。

大型语言模型的训练和微调具体是怎样进行的?

大型语言模型的训练和微调是一个复杂的过程,涉及到多个步骤和技术。

以下是一般流程的概述:1. 数据准备:- 收集大量的文本数据,这些数据可以是书籍、新闻文章、网站内容等。

- 对数据进行预处理,包括清洗(去除无关字符、特殊符号等)、分词、去除停用词等。

2. 模型架构设计:- 设计模型的结构,如Transformer架构,它已经成为许多大型语言模型的基础。

- 确定模型的参数,如层数、隐藏层大小、注意力头的数量等。

3. 预训练:- 使用无监督学习的方式训练模型,通常通过预测文本中的下一个词(语言模型任务)。

- 在预训练阶段,模型会学习语言的通用特征和模式,而不需要针对特定任务进行优化。

4. 微调(Fine-tuning):- 在预训练的基础上,针对特定任务(如问答、文本分类、机器翻译等)进行有监督学习。

- 通过调整模型的权重,使其更好地适应目标任务。

5. 优化和调参:- 使用不同的优化算法(如Adam、SGD等)来更新模型的参数。

- 调整超参数(如学习率、批次大小、正则化项等)以提高模型性能。

6. 评估和迭代:- 在验证集上评估模型性能,使用指标如准确率、F1分数等。

- 根据评估结果调整模型结构或训练策略,进行迭代优化。

7. 部署和应用:- 将训练好的模型部署到生产环境中,提供服务。

- 监控模型在实际应用中的表现,并根据反馈进行进一步的优化。

在实际应用中,这个过程可能会更加复杂,包括使用更高级的技术如迁移学习、多任务学习、模型压缩等,以及考虑到计算资源和训练时间的优化。

此外,为了提高模型的泛化能力和避免过拟合,还可能使用数据增强、正则化等技术。

评论(0)