《Transformers for Natural Language Processing》第五章:使用变换器进行下游NLP任务

在使用预训练模型并观察它们在下游自然语言理解(NLU)任务中的性能时,变换器揭示出了它们的全部潜力。虽然预训练和微调一个变换器模型需要大量的时间和精力,但当我们看到一个拥有数百万参数的变换器模型在各种NLU任务上的表现时,这些努力是值得的。

本章将从追求超越人类基线开始。人类基线代表人类在NLU任务上的表现。人类在早期就学会了传导,迅速发展了归纳思维。我们人类直接用我们的感官感知世界。机器智能完全依赖于我们的感知被转录成单词,以理解我们的语言。

然后,我们将看到如何衡量变换器的性能。衡量自然语言处理(NLP)任务仍然是一种基于真假结果的准确度得分的直接方法。这些结果是通过基准任务和数据集获得的。例如,SuperGLUE是谷歌DeepMind、Facebook AI、纽约大学、华盛顿大学等多家机构共同努力设立了高标准来衡量NLP性能的出色示例。

最后,我们将探索几个下游任务,如标准情感树库(SST-2)、语言可接受性和Winograd模式。

通过在精心设计的基准任务上优于其他模型,变换器正在迅速推动NLP进入下一个水平。替代的变换器架构将继续涌现和演进。

本章涵盖以下主题:

  • 机器与人类智能的传导和归纳
  • NLP传导和归纳过程
  • 衡量变换器性能与人类基线
  • 测量方法(准确性、F1分数和MCC)
  • 基准任务和数据集
  • SuperGLUE下游任务
  • 与CoLA的语言可接受性
  • SST-2情感分析
  • Winograd模式

让我们首先了解人类和机器如何表示语言。

变换和变换器的归纳继承

自动化机器学习(AutoML)的出现,即自动化云AI平台中的API,已经深刻地改变了每个AI专业人员的工作描述。例如,Google Vertex宣称减少了实现机器学习所需开发工作的80%。这是否意味着任何人都可以使用现成的系统实施机器学习?我认为不是。我认为一个工业4.0时代的AI专家会组装具有附加价值的AI,以完成项目。

变换器具有独特的能力,可以将它们的知识应用于它们没有学到的任务。例如,BERT变换器通过序列到序列和掩码语言建模获得语言知识。然后,可以对BERT变换器进行微调,以执行它没有从头学习的下游任务。

在本节中,我们将进行一次思想实验。我们将使用变换器的图形来表示人类和机器如何使用语言理解信息。机器以与人类不同的方式理解信息,但能够达到非常高效的结果。

图5.1是一个使用变换器架构层和子层设计的思想实验,展示了人类和机器之间令人误以为相似的地方。让我们研究变换器模型的学习过程,以了解下游任务:

在我们的示例中,N=2。这个概念性表示中有两个层。这两个层表明人类在一代一代中积累的知识的基础上构建。机器只处理我们提供给它们的信息。机器使用我们的输出作为输入。

人类智能堆栈

在图5.1的左侧,我们可以看到对人类而言,第0层的输入是感知原始事件,而输出是语言。我们从小开始首先通过感官感知事件。逐渐地,输出变成了含糊的语言,然后是结构化的语言。

对于人类来说,跨越(transduction)是经历一种试错的过程。跨越意味着我们拿到我们感知到的结构,然后用模式来表示它们,例如。我们对世界做出我们能应用于归纳思维的表示。我们的归纳思维依赖于我们的跨越的质量。

例如,儿童时期,我们经常被迫在下午早些时候午睡。著名的儿童心理学家皮亚杰发现,这可能导致一些儿童说,例如,"我没睡午觉,所以现在还不是下午。" 孩子看到两个事件,通过跨越创建了它们之间的联系,然后进行了推理以归纳和概括。

首先,人类通过跨越注意到这些模式,并通过归纳将它们概括出来。我们通过试错来理解许多事件相关:

已经训练过的相关事件 = {日出 - 光,日落 - 黑暗,乌云 - 雨,蓝天 - 奔跑,食物 - 好,火 - 温暖,雪 - 寒冷}

随着时间的推移,人们接受了对数百万个相关事件的训练。新一代人类不需要从头开始。他们只需要通过前一代的许多任务进行微调。他们被教育"火会烧伤你",例如。从那时起,孩子知道这个知识可以应用于任何形式的"火":蜡烛、野火、火山,以及"火"的每个实例。

最后,人类把他们知道的、想象的或预测的一切都转录成书面语言。第0层的输出就诞生了。

对于人类,下一层(第1层)的输入是大量经过训练和微调的知识。此外,人类感知了大量的事件,然后通过子层的跨越、归纳、训练和微调,以及之前转录的知识,加工这些事件。

其中许多事件源自气味、情感、情境、经验,以及构成每个人独特之处的一切。机器无法获得这种个体身份。人类以一种特定于每个个体的均匀方式对词语有个人感知。

机器接收我们通过大量的异质、不加过滤的非个人化数据提供的信息。机器的目标是执行一个非个人化、高效的任务。人类的目标是个人的幸福。

我们的无限的方法循环从第0层到第1层再返回第0层,带来了更多原始和经过处理的信息。

结果令人着迷!我们不需要从头学习(训练)我们的母语来获得总结能力。我们使用我们预训练的知识来进行总结任务的微调。

变压器通过不同的方式经历了相同的过程。

机器智能栈

机器学习的基本任务就像本章中描述的一样,然后使用它们学会如何预测它们学会如何预测的序列来执行数百个任务。

在图5.1的右侧,我们可以看到机器的输入是语言形式的二手信息。我们的输出是机器分析语言的唯一输入。

在人类和机器历史的这一点上,计算机视觉能够识别图像,但不包含语言的语法结构。语音识别将声音转化为单词,这使我们回到了书面语言。音乐模式识别不能引导到用单词表达的客观概念。

机器从一开始就处于劣势。我们对它们施加了人为的不利条件。机器必须依赖于我们的随机语言输出来:

  • 执行连接在语言序列中一起出现的所有标记(子词)的转导
  • 从这些转导中建立归纳
  • 基于标记来训练这些归纳以生成标记的模式

让我们在这一点上停下来,窥视一下注意子层的过程,它们努力产生有效的归纳:

  • 变换器模型排除了以前基于循环的学习操作,使用自我注意来增强模型的视野
  • 注意子层在这一点上优于人类:它们可以为它们的归纳思维操作处理数百万个示例
  • 像我们一样,它们通过转导在序列中找到模式,然后通过归纳操作归纳
  • 通过使用存储在其模型中的参数,记住这些模式
  • 通过大量的数据,出色的NLP变换算法和计算能力,它们已经掌握了语言理解的能力。由于对语言的深刻理解,它们准备运行数百个它们没有接受培训的任务。
  • 像人类一样,变换器通过有限数量的任务获得了语言理解。像我们一样,他们通过转导检测连接,然后通过归纳操作对其进行概括。
  • 当变换器模型达到机器智能的微调子层时,它的反应与我们一样。它不会从头开始培训以执行新任务。就像我们一样,变换器模型只需微调它的参数。
  • 在这一部分中,我们看到变换器模型在学习方式上与我们的方式相似。他们从一开始就有一个劣势,因为他们依赖于我们的感知被转录成语言。然而,他们可以访问比我们更多的数据,拥有庞大的计算能力。

接下来,让我们看看如何衡量变换器性能与人类基线相比。

变换器性能与人类基线对比

变换器与人类一样,可以通过继承预训练模型的属性来进行微调,以执行下游任务。预训练模型通过其参数提供其体系结构和语言表示。

预训练模型在关键任务上进行训练,以获取语言的一般知识。微调模型在下游任务上进行训练。并非每个变换器模型都使用相同的任务进行预训练。潜在地,可以对所有任务进行预训练或微调。

每个自然语言处理(NLP)模型都需要使用标准方法进行评估。

本节首先将介绍一些主要的度量方法。然后,我们将讨论一些主要的基准任务和数据集。

让我们首先了解一些主要的度量方法。

使用度量标准评估模型

要比较一个transformer模型与另一个transformer模型(或其他任何NLP模型),我们需要使用度量标准的通用测量系统。

在本节中,我们将分析GLUE和SuperGLUE使用的三种度量得分方法。

准确性得分(Accuracy score)

准确性得分,无论使用哪个变种,都是一种实用的评估方法。该得分函数为给定样本集的子集samples_i,计算每个结果的简单的true(真)或false(假)值,即模型的输出与正确的预测是否匹配。基本函数如下:

如果对于给定的子集结果是正确的,我们将获得1,如果错误,则获得0。

现在让我们来看看更灵活的F1分数。

F1分数

F1分数引入了一种更灵活的方法,可帮助处理包含不均匀类分布的数据集。

F1分数使用精度和召回的加权值。它是精度和召回值的加权平均:
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block"> F 1 s c o r e = 2 ∗ ( p r e c i s i o n ∗ r e c a l l ) / ( p r e c i s i o n + r e c a l l ) F1score= 2* (precision * recall)/(precision + recall) </math>F1score=2∗(precision∗recall)/(precision+recall)

在这个公式中,真正例(T),假正例(F),和假负例(N)被插入精度(P)和召回(R)的公式中:

因此,F1分数可以被看作是精度(P)和召回(R)的调和平均数(算术平均数的倒数):

现在让我们来看看MCC的方法。

马修斯相关系数(Matthews Correlation Coefficient,MCC)

MCC在第3章"Fine-Tuning BERT Models"中的"使用马修斯相关系数进行评估"部分有详细描述和实现。MCC通过真正例(TP,true positives)、真负例(TN,true negatives)、假正例(FP,false positives)和假负例(FN,false negatives)计算度量。

MCC可以用以下方程来总结:

MCC为二元分类模型提供了一个出色的度量标准,即使类别的大小不同也可以。

现在,我们已经很好地了解了如何衡量给定的变压器模型的结果,并将其与其他变压器模型或NLP模型进行比较。

有了度量评分方法的概念,现在让我们来看看基准任务和数据集。

基准任务和数据集

要证明transformers达到了最先进的性能水平,需要三个前提条件:

  1. 一个模型
  2. 一个数据集驱动的任务
  3. 如本章"使用指标评估模型"部分所述的指标

我们将从探索SuperGLUE基准任务开始,以说明评估transformer模型的过程。

从GLUE到SuperGLUE

SuperGLUE基准是由Wang等人(2019年)设计并公开发布的。Wang等人(2019年)首次设计了通用语言理解评估(GLUE)基准。

GLUE基准的动机是要展示,为了有用,自然语言理解必须适用于各种任务。相对较小的GLUE数据集旨在鼓励NLU模型解决一系列任务。

然而,由于transformer模型的出现,NLU模型的性能开始超过平均水平,正如我们可以在GLUE排行榜(2021年12月)中看到的。GLUE排行榜可以在gluebenchmark.com/leaderboard上找到,它展示了NLU领域的杰出表现,保留了一些以前的RNN/CNN思想,但主要关注了具有突破性的transformer模型。

以下排行榜摘录显示了顶级领袖和GLUE的人类基线位置:

新模型和人类基线的排名将不断变化。这些排名只是给我们一个关于经典自然语言处理和transformer模型的发展程度的概念!

首先,我们注意到GLUE的人类基线并未占据前列,这表明NLU模型已经在GLUE任务上超过了非专家人类。人类基线代表了我们人类可以达到的水平。人工智能现在能够胜过人类。在2021年12月,人类基线只排在第17位。这是一个问题。没有标准可供超越,盲目寻找基准数据集以改进我们的模型将充满挑战。

我们还注意到transformer模型已经领先。

我喜欢将GLUE和SuperGLUE视为语言理解将词语从混乱转化为有序的时刻。对我来说,理解是使词语相互配合形成语言的粘合剂。

GLUE排行榜将随着NLU的发展而不断发展。然而,Wang等人(2019年)引入了SuperGLUE,以建立更高的人类基线标准。

引入更高的人类基线标准

Wang等人(2019)认识到GLUE的局限性。他们为更具挑战性的NLU任务设计了SuperGLUE。

SuperGLUE立即将人类基线重新确立为第一名(2020年12月),如下图所示,链接为super.gluebenchmark.com/leaderboard...

然而,随着我们创建了更好的NLU模型,SuperGLUE排行榜也在不断发展。到了2021年,变换器模型已经超越了人类基线。截至2021年12月,人类基线已下降至第5名,如图5.4所示:

人工智能算法的排名将随着新的创新模型的出现而不断变化。这些排名只是让我们大致了解自然语言处理的霸权之争有多激烈!

现在让我们看看评估过程是如何运作的。

SuperGLUE评估流程

Wang等人(2019)为他们的SuperGLUE基准选择了八项任务。这些任务的选择标准比GLUE更为严格。例如,这些任务不仅需要理解文本,还需要进行推理。推理的水平并不是顶级人类专家的水平。然而,性能水平足以取代许多人类任务。

这八个SuperGLUE任务如下:

每个任务都包含指向执行该任务所需信息的链接:

  • Name 是预训练模型的下游任务的名称。
  • Identifier 是名称的缩写或简称。
  • Download 是数据集的下载链接。
  • More Info 通过指向设计数据集驱动任务的团队的论文或网站的链接提供更多详细信息。
  • Metric 是用于评估模型的测量分数。

SuperGLUE提供任务说明、软件、数据集以及描述待解决问题的论文或网站。一旦一个团队运行基准任务并进入排行榜,结果将被显示出来。

SuperGLUE显示了总体得分以及每个任务的得分。

例如,让我们看一下Wang等人在他们的论文中为Choice of Plausible Answers (COPA)任务提供的说明(在他们的论文的表6中)。

第一步是阅读Roemmele等人(2011)撰写的卓越论文。简而言之,目标是让NLU模型展示其机器思维潜力(当然不是人类思维)。在我们的情况下,变压器必须选择对问题最有可能的答案。数据集提供了一个前提,变压器模型必须找到最有可能的答案。

例如:

Premise: I knocked on my neighbor's door.
What happened as a result?
Alternative 1: My neighbor invited me in.
Alternative 2: My neighbor left his house.

这个问题需要人类花一两秒的时间来回答,这表明它需要一些常识性的机器思维。COPA.zip,一个现成的数据集,可以直接从SuperGLUE任务页面下载。提供的度量标准使整个基准竞赛过程对所有参与者都是公平和可靠的。

这些示例可能看起来很难。然而,如果考虑所有任务,变压器模型已经接近COPA人类基准(图5.7),即使在所有任务中也只排名第5:

尽管似乎难以置信,变压器模型在很短的时间内就攀升了排行榜!而这只是一个开始。几乎每个月都会涌现出新的想法!

我们已经介绍了COPA任务。现在让我们定义其他七个SuperGLUE基准任务。

定义SuperGLUE基准任务

一个任务可以是一个生成经过训练的模型的预训练任务。同一个任务可以成为另一个将进行微调的模型的下游任务。然而,SuperGLUE的目标是展示给定的NLU模型可以通过微调执行多个下游任务。多任务模型证明了变压器的思维能力。

任何变压器的强大之处在于它能够使用预训练模型执行多个任务,然后将其应用于微调的下游任务。原始的变压器模型及其变种现在在所有GLUE和SuperGLUE任务中领先。我们将继续关注SuperGLUE的下游任务,其中人工基线难以超越。

在上一节中,我们介绍了COPA。在这一节中,我们将继续介绍王等人在他们的论文中定义的另外七个任务。

让我们继续看一个布尔问题任务。

BoolQ

BoolQ是一个布尔型的是或否回答任务。根据SuperGLUE的定义,数据集包含15,942个自然产生的示例。train.jsonl数据集的第3行的原始示例包含一个段落、一个问题和答案(true):

{"question": "is windows movie maker part of windows essentials" "passage": "Windows Movie Maker -- Windows Movie Maker (formerly known as Windows Live Movie Maker in Windows 7) is a discontinued video editing software by Microsoft. It is a part of Windows Essentials software suite and offers the ability to create and edit videos as well as to publish them on OneDrive, Facebook, Vimeo, YouTube, and Flickr.", "idx": 2, "label": true}

提供的数据集可能会随时间而变化,但概念保持不变。

现在,让我们来看一下CB,这是一个要求人类和机器都要集中注意力的任务。

承诺银行(CB)

承诺银行(CB)是一个困难的蕴涵任务。我们要求变压器模型阅读一个前提,然后检查基于前提构建的假设。例如,假设将确认前提或与其矛盾。然后,变压器模型必须将假设标记为与前提中性、蕴涵或矛盾,例如。

数据集包含自然对话。

以下示例#77,摘自train.jsonl训练数据集,展示了CB任务有多难:

{"premise": "The Susweca. It means ''dragonfly'' in Sioux, you know. Did I ever tell you that's where Paul and I met?" "hypothesis": "Susweca is where she and Paul met," "label": "entailment", "idx": 77}

现在,让我们看看多句子问题。

多句子阅读理解(Multi-Sentence Reading Comprehension,MultiRC)

多句子阅读理解(Multi-Sentence Reading Comprehension,MultiRC)要求模型阅读文本并从多个可能的选项中进行选择。这个任务对于人类和机器都很困难。模型会被呈现一段文本,几个问题,以及每个问题的可能答案,每个答案都带有一个0(假)或1(真)的标签。

让我们看看train.jsonl中的第二个示例:

"Text": "text": "The rally took place on October 17, the shooting on February 29. Again, standard filmmaking techniques are interpreted as smooth distortion: "Moore works by depriving you of context and guiding your mind to fill the vacuum -- with completely false ideas. It is brilliantly, if unethically, done." As noted above, the "from my cold dead hands" part is simply Moore's way to introduce Heston. Did anyone but Moore's critics view it as anything else? He certainly does not "attribute it to a speech where it was not uttered" and, as noted above, doing so twice would make no sense whatsoever if Moore was the mastermind deceiver that his critics claim he is. Concerning the Georgetown Hoya interview where Heston was asked about Rolland, you write: "There is no indication that [Heston] recognized Kayla Rolland's case." This is naive to the extreme -- Heston would not be president of the NRA if he was not kept up to date on the most prominent cases of gun violence. Even if he did not respond to that part of the interview, he certainly knew about the case at that point. Regarding the NRA website excerpt about the case and the highlighting of the phrase "48 hours after Kayla Rolland is pronounced dead": This is one valid criticism, but far from the deliberate distortion you make it out to be; rather, it is an example for how the facts can sometimes be easy to miss with Moore's fast pace editing. The reason the sentence is highlighted is not to deceive the viewer into believing that Heston hurried to Flint to immediately hold a rally there (as will become quite obvious), but simply to highlight the first mention of the name "Kayla Rolland" in the text, which is in this paragraph. "

这个示例包含四个问题。为了阐明这个任务,我们只研究其中两个问题。模型必须预测正确的标签。请注意,模型被要求获取的信息分布在整个文本中:

"question": "When was Kayla Rolland shot?" "answers": [{"text": "February 17", "idx": 168, "label": 0}, {"text": "February 29", "idx": 169, "label": 1}, {"text": "October 29", "idx": 170, "label": 0}, {"text": "October 17", "idx": 171, "label": 0}, {"text": "February 17", "idx": 172, "label": 0}], "idx": 26}, {"question": "Who was president of the NRA on February 29?", "answers": [{"text": "Charleton Heston", "idx": 173, "label": 1}, {"text": "Moore", "idx": 174, "label": 0}, {"text": "George Hoya", "idx": 175, "label": 0}, {"text": "Rolland", "idx": 176, "label": 0}, {"text": "Hoya", "idx": 177, "label": 0}, {"text": "Kayla", "idx": 178, "label": 0}], "idx": 27},

此时,人们只能钦佩单一的、经过微调的预训练模型在这些困难的下游任务上的性能。

现在,让我们看看阅读理解任务。

使用常识推理数据集(ReCoRD)

使用Commonsense Reasoning Dataset(ReCoRD)的阅读理解任务代表了另一个具有挑战性的任务。该数据集包含来自超过70,000篇新闻文章的120,000多个查询。变压器必须使用常识推理来解决这个问题。

让我们看一个来自train.jsonl的样本:

"source": "Daily mail" A passage contains the text and indications as to where the entities are located. A passage begins with the text: "passage": { "text": "A Peruvian tribe once revered by the Inca's for their fierce hunting skills and formidable warriors are clinging on to their traditional existence in the coca growing valleys of South America, sharing their land with drug traffickers, rebels and illegal loggers. Ashaninka Indians are the largest group of indigenous people in the mountainous nation's Amazon region, but their settlements are so sparse that they now make up less than one per cent of Peru's 30 million population. Ever since they battled rival tribes for territory and food during native rule in the rainforests of South America, the Ashaninka have rarely known peace.\n@highlight\nThe Ashaninka tribe once shared the Amazon with the like of the Incas hundreds of years ago\n@highlight\nThey have been forced to share their land after years of conflict forced rebels and drug dealers into the forest\n@highlight\n. Despite settling in valleys rich with valuable coca, they live a poor pre-industrial existence",

这些实体如下所示:

"entities": [{"start": 2,"end": 9}, ...,"start": 711,"end": 715}]

最后,模型必须通过找到占位符的正确值来回答查询:

{"query": "Innocence of youth: Many of the @placeholder's younger generations have turned their backs on tribal life and moved to the cities where living conditions are better", "answers":[{"start":263,"end":271,"text":"Ashaninka"},{"start":601,"end":609,"text":"Ashaninka"},{"start":651,"end":659,"text":"Ashaninka"}],"idx":9}],"idx":3}

一旦变换器模型解决了这个问题,它现在必须面对一个蕴涵任务。

文本蕴涵识别(RTE)

在文本蕴涵识别(RTE)任务中,变换器模型必须阅读前提,审查假设,并预测蕴涵假设状态的标签。

让我们来看看train.jsonl数据集的样本#19:

{"premise": "U.S. crude settled <math xmlns="http://www.w3.org/1998/Math/MathML"> 1.32 l o w e r a t 1.32 lower at </math>1.32lowerat42.83 a barrel.", "hypothesis": "Crude the light American lowered to the closing 1.32 dollars, to 42.83 dollars the barrel.", "label": "not_entailment", >"idx": 19}

RTE任务需要理解和逻辑。现在让我们来看看上下文中的单词任务。

上下文中的单词(Words in Context,WiC)

上下文中的单词(Words in Context,WiC)和接下来的Winograd任务测试模型处理歧义单词的能力。在WiC中,多任务变换器将需要分析两个句子,并确定目标单词在这两个句子中是否具有相同的含义。

让我们来看一下train.jsonl数据集的第一个示例。

首先,指定了目标单词:

"word": "place"

模型必须阅读包含目标单词的两个句子:

"sentence1": "Do you want to come over to my place later?", "sentence2": "A political system with no place for the less prominent groups."

train.jsonl指定了样本索引、标签值,以及句子1(sentence1)和句子2(sentence2)中目标单词的位置(start1、end1、start2、end2):

json 复制代码
  "idx": 0,
  "label": false,
  "start1": 31,
  "start2": 27,
  "end1": 36,
  "end2": 32,

完成这项艰巨的任务后,变压器模型必须面对Winograd任务。

Winograd模式挑战(WSC)

Winograd模式任务以特里·温诺格(Terry Winograd)的名字命名。如果一个Transformer经过充分训练,应该能够解决消歧问题。

数据集包含针对代词性别的微小差异的句子。

这构成了一个指代消解问题,这是执行的最具挑战性的任务之一。然而,允许自我注意的Transformer体系结构非常适合这项任务。

每个句子都包含一个职业、一个参与者和一个代词。需要解决的问题是找出代词是否与职业或参与者具有共指关系。

让我们看一下从train.jsonl中取出的一个样本:

{"text": >"I poured water from the bottle into the cup until it was full.", The WSC ask the model to find the target pronoun token number 10 starting at 0: "target": {"span2_index": 10, Then it asks the model to determine if "it" refers to "the cup" or not: "span1_index": 7, "span1_text": "the cup", "span2_text": "it"}, For sample index #4, the label is true: "idx": 4, "label": true}

我们已经了解了一些主要的SuperGLUE任务。还有许多其他任务。

然而,一旦你理解了Transformer的架构和基准任务的机制,你将能够迅速适应任何模型和基准。

现在让我们运行一些下游任务。

运行下游任务

在这个部分,我们将随便选一些变压器模型并运行它们,看看它们的表现。有很多模型和任务。在这一节中,我们会运行其中一些任务。一旦你了解了运行一些任务的过程,你会很快理解所有任务。毕竟,所有这些任务的人类基线都是我们自己!

下游任务是继承了从预训练的变压器模型中的模型和参数的微调任务。

因此,下游任务是从预训练模型的角度运行微调任务。这意味着,根据模型的不同,如果一个任务没有被用来完全预训练模型,那么它就是下游任务。在本节中,我们将考虑所有任务都是下游任务,因为我们没有对它们进行预训练。

模型会不断发展,数据库也会如此,基准方法、准确度测量方法和排行榜标准也会如此。但是,通过本章中的下游任务反映出来的人类思维结构将保持不变。

让我们从 CoLA 任务开始。

语言可接受性语料库(CoLA)

语言可接受性语料库(CoLA)是一个GLUE任务,包含了成千上万个英语句子的样本,这些句子被标注为语法可接受性。

Alex Warstadt等人(2019)的目标是评估自然语言处理模型的语言能力,以判断一个句子的语法可接受性。NLP模型需要对这些句子进行分类。

这些句子被标记为语法正确或不正确。如果句子在语法上不可接受,那么它的标签是0。如果句子在语法上可接受,那么它的标签是1。例如:

对于 'we yelled ourselves hoarse.',分类标签是1。

对于 'we yelled ourselves.',分类标签是0。

您可以查看"第3章,BERT模型微调"的"BERT_Fine_Tuning_Sentence_Classification_GPU.ipynb"文件,了解我们如何在CoLA数据集上微调BERT模型。我们使用了CoLA数据:(以下内容无法提供详细的代码示例)

CoLA数据是用于评估模型在语法接受性任务上的性能的重要资源。这个任务旨在测试模型对语法规则的理解和应用,是自然语言处理中的一个重要挑战。

ini 复制代码
#@title Loading the Dataset
#source of dataset : https://nyu-mll.github.io/CoLA/
df = pd.read_csv("in_domain_train.tsv", delimiter='\t', header=None, names=['sentence_source', 'label', 'label_notes', 'sentence'])
df.shape

我们还加载了一个预训练的BERT模型:

ini 复制代码
#@title Loading the Hugging Face Bert Uncased Base Model 
model = BertForSequenceClassification.from_pretrained("bert-base-uncased", num_labels=2)

最后,我们使用的度量方法,或者评价指标,是MCC,它在第3章"Fine-Tuning BERT Models"和本章前面的"Evaluating using Matthews Correlation Coefficient"部分中有描述。

您可以参考那一部分了解MCC的数学描述,必要时可以重新运行源代码。

一个句子可以在语法上不可接受,但仍然传达情感。情感分析可以为机器增加一些形式的共情。

斯坦福情感树库(Stanford Sentiment TreeBank,简称SST-2)

斯坦福情感树库(Stanford Sentiment TreeBank,简称SST-2)包含电影评论。在这一部分,我们将描述SST-2(二元分类)任务。不过,数据集还远不止这些,它可以用于对情感进行从0(负面)到n(正面)的范围内分类。

Socher等人(2013年)将情感分析扩展到了二元的积极-消极NLP分类之外。我们将在第12章"检测客户情感以进行预测"中,使用一个变换器模型来探索SST-2多标签情感分类。

在这一部分,我们将运行SST中的一个示例,使用Hugging Face变换器管道模型来进行二元分类。打开Transformer_tasks.ipynb,运行以下单元格,其中包含了从SST中获取的正面和负面电影评论:

python 复制代码
#@title SST-2 Binary Classification
from transformers import pipeline
nlp = pipeline("sentiment-analysis")
print(nlp("If you sometimes like to go to the movies to have fun , Wasabi is a good place to start."),"If you sometimes like to go to the movies to have fun , Wasabi is a good place to start.")
print(nlp("Effective but too-tepid biopic."),"Effective but too-tepid biopic.")

输出结果准确:

css 复制代码
[{'label': 'POSITIVE', 'score': 0.999825656414032}] If you sometimes like to go to the movies to have fun , Wasabi is a good place to start .
[{'label': 'NEGATIVE', 'score': 0.9974064230918884}] Effective but too-tepid biopic.

SST-2任务使用准确性指标进行评估。

我们对一个序列的情感进行分类。现在让我们看看一个序列中的两个句子是否是释义或不是。

Microsoft Research Paraphrase Corpus (MRPC)

Microsoft Research Paraphrase Corpus (MRPC) 是一个 GLUE 任务,包含了从网络新闻来源中提取的句子对。每个句子对都由人工进行注释,以指示这些句子是否在两个相关属性上等效:

1.释义等效

2.语义等效

让我们运行一个使用 Hugging Face BERT 模型的示例。打开 "Transformer_tasks.ipynb" 并转到下面的单元,然后运行来自 MRPC 的示例:

ini 复制代码
#@title Sequence Classification : paraphrase classification
from transformers import AutoTokenizer, TFAutoModelForSequenceClassification
import tensorflow as tf
tokenizer = AutoTokenizer.from_pretrained("bert-base-cased-finetuned-mrpc")
model = TFAutoModelForSequenceClassification.from_pretrained("bert-base-cased-finetuned-mrpc")
classes = ["not paraphrase", "is paraphrase"]
sequence_A = "The DVD-CCA then appealed to the state Supreme Court."
sequence_B = "The DVD CCA appealed that decision to the U.S. Supreme Court."
paraphrase = tokenizer.encode_plus(sequence_A, sequence_B, return_tensors="tf")
paraphrase_classification_logits = model(paraphrase)[0]
paraphrase_results = tf.nn.softmax(paraphrase_classification_logits, axis=1).numpy()[0]
print(sequence_B, "should be a paraphrase")
for i in range(len(classes)):
    print(f"{classes[i]}: {round(paraphrase_results[i] * 100)}%")

输出是准确的,尽管你可能会收到警告消息,指出模型需要进行更多的下游训练:

css 复制代码
The DVD CCA appealed that decision to the U.S. Supreme Court. should be a paraphrase
not paraphrase: 8.0%
is paraphrase: 92.0%

现在让我们运行一个Winograd模式任务。

Winograd模式

在这章的"Winograd schema挑战(WSC)"部分我们已经介绍了Winograd模式。训练集是英文的。

但是如果我们要求一个变压器模型在英法翻译中解决一个代词性别问题会发生什么呢?法语对具有语法性别(阴性、阳性)的名词有不同的拼写。

以下句子包含代词"it",它可以指的是"car"或"garage"。一个变压器能否消除这个代词的歧义?

打开Transformer_tasks.ipynb,转到#Winograd单元格,并运行我们的示例:

ini 复制代码
#@title Winograd
from transformers import pipeline
translator = pipeline("translation_en_to_fr")
print(translator("The car could not go in the garage because it was too big.", max_length=40))

这个翻译是完美的:

css 复制代码
[{'translation_text': "La voiture ne pouvait pas aller dans le garage parce qu'elle était trop grosse."}]

变压器检测到单词"it"指的是单词"car",而"car"是女性形式。女性形式适用于"it"和形容词"big"。

"elle"在法语中意味着"she",这是"it"的翻译。而男性形式应该是"il",它翻译为"he"。

"grosse"是"big"的女性形式的翻译。否则,男性形式将是"gros"。

我们给变压器一个困难的Winograd模式来解决,它产生了正确的答案。

还有许多其他基于数据集的自然语言理解任务可供使用。在本书中,我们将探索其中一些,以丰富我们的变压器工具箱。

总结

本章分析了人类语言表达过程与机器智能执行的递推方式之间的差异。我们看到变压器必须依赖于我们以书面语言表达的极其复杂的思维过程的输出。语言仍然是表达大量信息的最精确方式。机器没有感官,必须将语音转换为文本,以从原始数据集中提取含义。

然后,我们探讨了如何度量多任务变压器的性能。变压器在下游任务中获得顶级成绩的能力在自然语言处理历史上是独一无二的。我们经历了困难的SuperGLUE任务,这些任务将变压器带到了GLUE和SuperGLUE排行榜的顶部。

BoolQ、CB、WiC和我们涵盖的其他许多任务对于人类来说也绝不容易处理。我们通过运行Google Colaboratory笔记本中的Hugging Face的变压器管道,演示了几个下游微调任务的示例,展示了变压器模型在证明其效率方面所面临的困难。

变压器通过胜过以前的NLU架构证明了其价值。为了说明实施下游微调任务有多简单,我们随后在Google Colaboratory笔记本中运行了几个任务,使用了Hugging Face的变压器管道。

在下一章,第6章《使用转换器进行机器翻译》中,我们将进一步进行翻译任务,并使用Trax构建一个翻译模型。

相关推荐
人工智能技术咨询.20 分钟前
张雪峰谈人工智能技术应用专业的就业前景!
人工智能·学习·计算机视觉·语言模型
sp_fyf_20241 小时前
计算机前沿技术-人工智能算法-大语言模型-最新研究进展-2024-10-05
人工智能·深度学习·神经网络·算法·机器学习·语言模型·自然语言处理
EterNity_TiMe_1 小时前
【机器学习】智驭未来:探索机器学习在食品生产中的革新之路
人工智能·python·机器学习·性能优化·学习方法
知来者逆1 小时前
探索大型语言模型在文化常识方面的理解能力与局限性
人工智能·gpt·深度学习·语言模型·自然语言处理·chatgpt·llm
Python极客之家1 小时前
基于深度学习的乳腺癌分类识别与诊断系统
人工智能·深度学习·分类
mftang2 小时前
TMR传感器的实现原理和特性介绍
人工智能
吃什么芹菜卷2 小时前
深度学习:词嵌入embedding和Word2Vec
人工智能·算法·机器学习
chnyi6_ya2 小时前
论文笔记:Online Class-Incremental Continual Learning with Adversarial Shapley Value
论文阅读·人工智能
中杯可乐多加冰2 小时前
【AI驱动TDSQL-C Serverless数据库技术实战】 AI电商数据分析系统——探索Text2SQL下AI驱动代码进行实际业务
c语言·人工智能·serverless·tdsql·腾讯云数据库
萱仔学习自我记录4 小时前
PEFT库和transformers库在NLP大模型中的使用和常用方法详解
人工智能·机器学习