《自然语言处理综论》笔记

书名:自然语言处理综论
基础信息:Daniel Jurafsky James H. Martin / 2005 / 电子工业出版社
豆瓣评分:8.5
豆瓣链接:https://book.douban.com/subject/1390499/
阅读时间:2023-08-30 14:16:35
我的评分:4.0/5.0
我的标签:#2023,ipad
我的评论:370.「生数据稀疏(sparse data)的问题。对于任何的 N元语法,如果它的出现次数充分地大,我们就有可能很好地估计出它的概率。然而,由于任何语料库的规模都是有限的,一些完全可以接受的英语单词序列难免会在这些语料库中找不到。由于找不到这些数据,任何给定的训练语料库必定会存在着大量的公认为“零概率 N元语法”的情况,当然,实际上它们也会真的存在某些非零的概率,而当非零的计数很小的时候,最大似然估计 MLE 方法也会产生非常糟糕的估计值。 因此,我们需要一种方法能够帮助我们对于这些零概率或低概率的计数得到比较好的估计结果。这意味着,为了评测我们的语言模型,需要修改最大似然估计的方法,使得可以对于任何的 N元语法指派非零的概率,尽管其中有的是从来没有在训练中观察到的。」11.05d/b


阅读笔记:

近年来,人工智能与自然语言处理(NLP)领域取得了巨大的突破。以预训练语言模型为代表,如 BERT、GPT 系列模型等,逐步推动了机器与人类语言理解的结合。哲学与读书笔记作为我们思维与学习的重要环节,通过记录和结构化信息帮助我们更深刻地掌握复杂知识,并指导实际问题的解决。在这个过程中,读书笔记不仅是对信息的简单摘录,更是在信息、思考和新知之间建立联系的过程。而预训练模型的发展,则为这种信息与思考的融合提供了技术上的可能性。

这些大规模的预训练模型如同人类哲学思维中的“概念工具箱”,通过更多的数据和复杂的计算框架进行信息的综合理解。模型通过在语义层面建立联系,实现了对语言任务的高效处理,如自动翻译、情感分析、问答生成等,这与我们在写读书笔记时不断建立知识联系的过程有异曲同工之妙。以下内容将深入探讨这些模型的构建与改进过程,同时通过哲学的视角审视其内在逻辑,帮助我们从中挖掘出有益的知识。

基于超大规模的高精度模型

从 BERT 模型到 RoBERTa 模型、GPT 模型,再到 GPT-2 模型、GPT-3 模型,模型效果的提升已经证明了——用更多的数据可以“跑”出更强大、更通用的预训练模型。近年来,英伟达、谷歌、OpenAI 相继发布了“巨无霸”模型,如:

  • MegatronLM:83 亿个参数
  • T5:110 亿个参数
  • GPT-3:1500 亿个参数

这些模型不仅仅提升了精度,还通过语义交互直接完成 NLP 任务:

  • 英/德翻译:在输入“Thatis good”前加上“translate English to German”,将其转换为“translate English to German. Thatis good.”,然后输入模型,直接输出“Das ist gut.”
  • 情感分类:输入“sentiment:This movie is terrible!”直接得到结果“negative”。
  • 其他任务:GPT-3 还能输出前端代码或回答百科问题。

卷积操作的数学意义

卷积神经网络中的卷积操作与传统的卷积分有区别。卷积操作是在有限且不连续的对象上进行的,因此属于离散积分。微积分中的无限细分必须针对连续对象进行,如线段可以无限细分,而虚线不行。

MultiNLI

MultiNLI 任务中的两个文本关系分为三类:

  1. entailment(蕴含)
  2. contradiction(矛盾)
  3. neutral(中立)

池化层的作用

池化层通过降维处理卷积后的特征图,保留重要特征的同时减少计算量。常见的池化方式包括均值池化和最大值池化。

链式结构的理解

链式结构可通过以下例子理解:
【例子:当一个孩子背诵《三字经》时,如果被问及某句的上一句,他往往需要从头开始背诵。只有在背到该句时,他才能回答上一句。这说明人类的大脑并不是简单地存储信息,而是链式存储,并在需要时计算得出结果。】

BERT 的独立性假设

BERT 模型假设被 [MASK] 替换的子词与其他子词无关。然而,实际应用中这些词之间可能存在语义关联。这种假设导致 BERT 在微调阶段的表现受限,且在生成任务上效果欠佳。

NLP 任务的发展阶段

  1. 基础神经网络阶段:BERT 之前的阶段。
  2. BERTology 阶段:BERT 及之后模型的发展。

CNN 和 RNN 在 NLP 中的应用

  • CNN:将语言作为图像数据进行卷积处理。
  • RNN:按文本顺序学习连续语义。

BERT 模型的缺点

  1. 微调不匹配问题:预训练时的 [MASK] 不会在微调阶段出现。
  2. 独立性假设问题:忽略了如“New York”这种词汇之间的关联。
  3. 细颗粒度语义问题:BERT 的编码难以准确区分语义相近但不同的词汇。

XLNet 模型的改进

XLNet 基于 Transformer-XL,并结合了 BERT 的优点,克服了 BERT 的缺点:

  1. 无 MLM:避免了微调不匹配问题。
  2. 自回归模型:解决了独立性假设问题。

从效果上看,XLNet 模型在各方面均优于 BERT 模型。

6.4.6 弥补 XLNet 模型不足的模型——MPNet 模型

MPNet(Masked and Permuted Pre-training for Language Understanding) 模型是 2020 年南京大学和微软共同提出的预训练语言模型。该模型使用了 位置补偿(Position Compensation) 技术,在保留了 BERT 模型的 MLMXLNet 模型的 PLM 各自的优点的同时,又弥补了它们的不足。

1. 位置补偿技术的原理

  • 为缓解 BERT-Mask 可能丢失依赖信息的问题,MPNet 模型沿用了 XLNet 模型 的自回归结构,同时为弥补 XLNet 模型无法捕捉全部序列位置信息的缺陷,添加了位置信息进行补偿。
  • 具体做法是在面向要预测的子词额外添加它们的位置信息。这样在模型编码过程中,不仅可以看到之前部分的子词编码外,还能看到序列所有子词的位置信息(类似于 BERT 模型)。

2. MPNet 模型的价值

  • MPNet 模型的主要价值在于可以替代 XLNet 模型,在处理长文本时优于 XLNet 模型。
  • MPNet 模型的另一个价值是克服了一个位置补偿缺失。该技术能使得乱序语言模型的性能得到提升。
  • 在具体的训练实验中,MPNet 模型使用了全词掩码和相对位置编码等技巧,再加上采用了与 RoBERTa 模型(见 6.4.7 节)相同的 160GB 训练语料,取得了优于 XLNet 与 RoBERTa 模型的结果。

6.4.7 稳健性更好的模型——RoBERTa 模型

  • RoBERTa 模型 是对 BERT 模型 的进一步改进,是 BERT 模型发展的成熟产品,甚至可以看作 BERT 模型的一个替代品。在本质上,RoBERTa 模型可以代表 BERT 模型的更强大版本。
  • RoBERTa 模型 是人们在对原始 BERT 模型预训练的研究中,通过仔细调整参数训练集后开发出的结果。
  • 不同于原始 BERT 模型,RoBERTa 模型在更大数据集和更长训练周期下进行训练,并采用了无监督预训练
  • 具体来说,与 BERT 模型一样,RoBERTa 模型仍使用掩码语言模型,但模型的性能和稳健性都得到大幅提升。

MPNet 模型通过位置补偿技术弥补了 XLNet 的缺陷,提升了处理长文本的能力,并使用全词掩码与大规模训练语料,取得了更好的效果。而 RoBERTa 模型则通过优化 BERT 的预训练方法和使用更大数据集,进一步提高了模型的稳定性和性能。这两个模型代表了预训练语言模型在性能与稳健性方面的两个重要方向。

6.4.12 支持多种语言的翻译模型——XLM、XLM-Roberta 模型

XLM 是一种跨语言的 BERT 模型,它也是基于英文数据集实现的。它不仅可以应用在其他语言的 NLP 任务中。

1. 共享子词

  • 在支持多语言的模型中,词表的处理 是首要任务。所有的 BERTology 系列模型都依赖 字符编码(Byte-Pair Encoding, BPE) 来将子词转换成向量的量。XLM 模型 让多种语言共享一个词表,字符编码需要多次迭代才能获得最优的词表结果。
  • 该方式有两个缺点:
  • 词表过大问题:如果将多种语言的词表融合,则会使最终的词表过大,从而导致字符编码的运行效率降低。
  • 稀有语言问题:稀有语言的语料往往较少,可能导致在字符编码最后的结果中子词不足,无法支撑该语言的向量化处理。

XLM 模型采用采样的方式 来生成一个子数据集,然后在这个子数据集上运行字符编码算法,按照每个子数据集中的子词的词频进行采样。

2. XLM 模型的 3 种语言模型

  1. 跨语言模型:XLM 模型专注于处理多语言之间的文本转换和相互理解。
  2. 零样本学习:该模型能够在不提供具体训练样本的情况下进行推理,尤其适用于处理少样本或低资源语言的任务。
  3. 并行语料的利用:XLM 模型能够在多语言数据中利用并行语料,以实现更好的语义映射和翻译质量。

XLM-Roberta 是在 XLM 的基础上优化的版本,进一步提升了多语言处理的性能和翻译的准确性,尤其在面对复杂的多语言 NLP 任务时展现出了更优异的表现。

3. XLM 模型的训练步骤

XLM 模型主要使用了两种方法来训练跨语言模型:

  1. 无监督学习:仅依赖单语言数据。
  2. 有监督学习:依赖双语平行语料。

为了保证训练效果,这两种方式都需要用预训练好的词向量对权重进行初始化。

4. XLM 模型的后续版本——XLM-Roberta 模型

XLM-Roberta 模型在 XLM 模型 的基础上,使用大量的多语言语料对模型进行预训练,从而使性能得到显著提高。

XLM-Roberta 模型使用的是超过 2TB 的已过滤的 CommonCrawl 数据集,并在 100 种语言上进行了训练。在各种跨语言基准测试中,它的性能显著优于 XLM 模型。

7.3.1 在管道方式中指定 NLP 任务

Transformers 库的管道方式使用起来非常简单:

  1. 根据 NLP 任务对 pipeline 类进行实例化,得到能够使用的模型对象。
  2. 将文本输入模型对象,进行具体的 NLP 任务处理。

例如,在实例化过程中,向 pipeline 类传入字符串 “sentiment-analysis”。该字符串用于让 Transformers 库返回一个能够处理文本分类任务的模型。在得到模型后,便可以将其用于文本分类任务。

在管道方式所返回的模型中,除可以进行文本分类任务外,还可以进行如下几种任务:

  • feature-extraction:特征抽取任务。
  • sentiment-analysis:分类任务。
  • ner:命名实体识别任务。
  • question-answering:问答任务。
  • fill-mask:完形填空任务。
  • summarization:摘要生成任务。
  • translation:英法、英德等翻译任务(如 “translation_en_to_fr”)。
  • text2text-generation:文本到文本的生成任务。
  • text-generation:文本生成任务。
  • zero-shot-classification:零样本分类任务。
  • conversational:多轮聊天任务。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注