16.6. 为序列级和词元级应用微调BERT
在 Colab 中打开 Notebook
在 Colab 中打开 Notebook
在 Colab 中打开 Notebook
在 Colab 中打开 Notebook
在 SageMaker Studio Lab 中打开 Notebook

在本章的前几节中,我们已经为自然语言处理应用设计了不同的模型,例如基于循环神经网络、卷积神经网络、注意力和多层感知机的模型。当存在空间或时间限制时,这些模型是很有帮助的。然而,为每个自然语言处理任务精心设计一个特定的模型实际上是不可行的。在 第 15.8 节中,我们介绍了一个预训练模型BERT,它只需要对各种自然语言处理任务进行最小的架构更改。一方面,在提出BERT时,它改进了各种自然语言处理任务的SOTA。另一方面,如 第 15.10 节所述,最初的BERT模型的两个版本分别带有1.1亿和3.4亿个参数。因此,当有足够的计算资源时,我们可以考虑微调BERT以用于下游的自然语言处理应用。

在下文中,我们将自然语言处理应用的子集概括为序列级和词元级。在序列级别上,我们介绍如何将文本输入的BERT表示转换为单文本分类和文本对分类或回归中的输出标签。在词元级别上,我们将简要介绍一些新的应用,如文本标记和问答,并阐明BERT如何表示它们的输入并转换为输出标签。在微调期间,BERT在不同应用中所需的“最小架构更改”是额外的全连接层。在下游应用的监督学习过程中,额外层的参数是从零开始学习的,而预训练BERT模型中的所有参数都将被微调。

16.6.1. 单文本分类

单文本分类将单个文本序列作为输入,并输出其分类结果。除了本章中研究的情感分析之外,语言可接受性语料库(Corpus of Linguistic Acceptability,CoLA)也是一个用于单文本分类的数据集,它判断一个给定的句子在语法上是否可接受 (Warstadt et al., 2019)。例如,“I should study.”是可以接受的,但“I should studying.”是不可接受的。

../_images/bert-one-seq.svg

图 16.6.1 为单文本分类应用(如情感分析和语言可接受性测试)微调BERT。假设输入的单个文本有六个词元。

第 15.8 节描述了BERT的输入表示。BERT输入序列明确地表示单个文本和文本对,其中特殊分类词元“<cls>”用于序列分类,特殊分类词元“<sep>”标记单个文本的结尾或分隔文本对。如 图 16.6.1所示,在单文本分类应用中,特殊分类词元“<cls>”的BERT表示编码了整个输入文本序列的信息。作为输入单个文本的表示,它将被送入一个由全连接(稠密)层组成的小型多层感知机,以输出所有离散标签值的分布。

16.6.2. 文本对分类或回归

我们还在本章中研究了自然语言推断。它属于文本对分类,这是一种对文本对进行分类的应用类型。

以一对文本作为输入但输出一个连续值,语义文本相似度是一项流行的文本对回归任务。此任务度量句子的语义相似度。例如,在语义文本相似度基准数据集中,一对句子的相似度得分是一个从0(没有意义重叠)到5(意义等同)的有序量表 (Cer et al., 2017)。目标是预测这些分数。语义文本相似度基准数据集的示例如下(句子1、句子2、相似度得分)

  • “A plane is taking off.”(一架飞机正在起飞。),“An air plane is taking off.”(一架飞机正在起飞。),5.000;

  • “A woman is eating something.”(一个女人正在吃东西。),“A woman is eating meat.”(一个女人正在吃肉。),3.000;

  • “A woman is dancing.”(一个女人正在跳舞。),“A man is talking.”(一个男人正在说话。),0.000。

../_images/bert-two-seqs.svg

图 16.6.2 为文本对分类或回归应用(如自然语言推断和语义文本相似度)微调BERT。假设输入的文本对分别有两个和三个词元。

图 16.6.1中的单文本分类相比,图 16.6.2中为文本对分类微调BERT在输入表示上有所不同。对于文本对回归任务(例如语义文本相似度),可以进行一些微小的更改,例如输出一个连续的标签值并使用均方损失:它们是回归任务的常用方法。

16.6.3. 文本标注

现在让我们考虑词元级任务,例如文本标注,其中每个词元都被分配一个标签。在文本标注任务中,词性标注根据词在句子中的作用,为每个词分配一个词性标记(例如,形容词和限定词)。例如,根据宾州树库II标记集,句子“John Smith 's car is new”应被标记为“NNP(名词,专有单数) NNP POS(所有格结尾) NN(名词,单数或不可数) VB(动词,基本形式) JJ(形容词)”。

../_images/bert-tagging.svg

图 16.6.3 为文本标注应用(如词性标注)微调BERT。假设输入的单个文本有六个词元。

为文本标注应用微调BERT如 图 16.6.3所示。与 图 16.6.1相比,唯一的区别在于,在文本标注中,输入文本的每个词元的BERT表示被送入相同的额外全连接层,以输出该词元的标签,例如词性标记。

16.6.4. 问答

作为另一个词元级应用,问答反映了阅读理解的能力。例如,斯坦福问答数据集(SQuAD v1.1)由阅读段落和问题组成,其中每个问题的答案只是问题所涉及段落中的一段文本(文本片段) (Rajpurkar et al., 2016)。为了解释,考虑一个段落“一些专家报告说,口罩的功效尚无定论。然而,口罩制造商坚称,他们的产品,如N95呼吸器口罩,可以抵御病毒。”和一个问题“谁说N95呼吸器口罩可以抵御病毒?”。答案应该是段落中的文本片段“口罩制造商”。因此,SQuAD v1.1中的目标是在给定一个问题和段落对的情况下,预测段落中文本片段的开始和结束位置。

../_images/bert-qa.svg

图 16.6.4 为问答任务微调BERT。假设输入的文本对分别有两个和三个词元。

为了微调BERT用于问答,问题和段落分别作为第一个和第二个文本序列打包到BERT的输入中。为了预测文本片段开始的位置,相同的额外全连接层将来自段落中位置 \(i\) 的任何词元的BERT表示转换为一个标量分数 \(s_i\)。所有段落词元的这些分数通过softmax操作进一步转换为概率分布,因此段落中的每个词元位置 \(i\) 被赋予一个作为文本片段开始的概率 \(p_i\)。预测文本片段的结尾与上述相同,只是其额外全连接层中的参数与预测开始的参数是独立的。在预测结尾时,任何位置为 \(i\) 的段落词元通过相同的全连接层转换为一个标量分数 \(e_i\)图 16.6.4描述了为问答任务微调BERT。

对于问答,监督学习的训练目标就像最大化真实开始和结束位置的对数似然一样直接。在预测片段时,我们可以计算从位置 \(i\) 到位置 \(j\)\(i \leq j\))的有效片段的分数 \(s_i + e_j\),并输出得分最高的片段。

16.6.5. 小结

  • 对于序列级和词元级自然语言处理应用,BERT需要最小的架构更改(额外的全连接层),例如单文本分类(如情感分析和语言可接受性测试)、文本对分类或回归(如自然语言推断和语义文本相似度)、文本标注(如词性标注)和问答。

  • 在下游应用的监督学习过程中,额外层的参数是从头开始学习的,而预训练BERT模型中的所有参数都将被微调。

16.6.6. 练习

  1. 让我们为新闻文章设计一个搜索引擎算法。当系统收到一个查询(例如,“冠状病毒爆发期间的石油工业”)时,它应该返回一个与查询最相关的新闻文章的排名列表。假设我们有一个巨大的新闻文章库和大量的查询。为了简化问题,假设已经为每个查询标记了最相关的文章。我们如何在算法设计中应用负采样(参见 第 15.2.1 节)和BERT?

  2. 我们如何利用BERT来训练语言模型?

  3. 我们可以在机器翻译中利用BERT吗?

讨论