当我们释放预训练模型并观察它们执行下游自然语言理解NLU ) 任务时,Transformers 会显示出它们的全部潜力。预训练和微调 Transformer 模型需要花费大量时间和精力,但是当我们看到数百万参数的 Transformer 模型在一系列 NLU 任务上运行时,这种努力是值得的。

我们将从超越人类基线的追求开始这一章。人类基线代表人类在 NLU 任务上的表现。人类从小就学习转导,并迅速发展归纳思维。我们人类直接用我们的感官感知世界。机器智能完全依赖于我们将感知转录成文字来理解我们的语言。

然后我们将看到如何测量变压器的性能。测量自然语言处理NLP ) 任务仍然是一种简单的方法,涉及基于真假结果的各种形式的准确度分数。这些结果是通过基准任务和数据集获得的。例如,SuperGLUE 是 Google DeepMind、Facebook AI、纽约大学、华盛顿大学和其他机构如何合作制定衡量 NLP 性能的高标准的一个很好的例子。

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

Transformers 通过在精心设计的基准任务上超越其他模型,正在迅速将 NLP 提升到一个新的水平。替代变压器架构将继续出现和发展。

本章涵盖以下主题:

  • 机器与人类智能的转导和感应
  • NLP转导和诱导过程
  • 测量变压器性能与人工基线
  • 测量方法(准确度、F1 分数和 MCC)
  • 基准任务和数据集
  • SuperGLUE 下游任务
  • CoLA 的语言可接受性
  • 使用 SST-2 进行情绪分析
  • Winograd schemas

让我们从了解人类和机器如何表示语言开始。

换能器和Transformers的感应继承

自动化机器学习AutoML )的出现,即自动化云 AI 平台中的 API,已经深入更改了职位描述每个 AI 专家。例如,Google Vertex 吹嘘减少实施机器学习所需的 80% 的开发。这表明任何人都可以使用现成的系统来实现 ML。这是否意味着开发人员的劳动力减少了 80%?我不这么认为。我看到一位工业 4.0 人工智能专家将人工智能组装到一个项目中来增加价值。


工业 4.0。NLP AI 专家在源代码上投入更少,在知识上投入更多,成为团队的 AI 大师。


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

在本节中,我们将做一个心智实验。我们将使用变压器图来表示人类和机器如何使用语言来理解信息。机器以不同于人类的方式理解信息,但可以达到非常有效的结果。

图 5.1心智实验设计有变压器架构层和子层,显示了人和机器之间具有欺骗性的相似性。让我们研究一下transformer模型的学习过程来理解下游任务:

nlp 上下游 nlp下游任务_自然语言处理

图 5.1:人类和机器学习方法

对于我们的示例,N=2. 这个概念表示有两层。这两层表明人类建立在积累的知识之上从一代到一代。机器只处理我们给它们的东西。机器使用我们的输出作为输入。

人类智能堆栈

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

对于人类来说,转导经历了一个试错过程。转导意味着我们采用我们感知和代表的结构例如,它们带有图案。我们对世界进行表征,并将其应用于我们的归纳思维。我们的归纳思维依赖于我们的转导质量。

例如,作为孩子,我们经常被迫在下午早些时候打个盹。著名儿童心理学家皮亚杰发现,这可能会导致一些孩子说,例如,“我还没有午睡,所以现在不是下午。” 孩子看到两个事件,通过转导在它们之间建立联系,然后进行推断以进行概括和归纳。

起初,人类通过转导注意到这些模式,并通过归纳概括它们。我们通过反复试验来了解许多事件是相关的:

Trained_related events = {sunrise – light, sunset – dark, dark clouds – rain, blue sky – running, food – good, fire – warm, snow – cold}

随着时间的推移,我们被训练去理解数以百万计的相关事件。新一代的人类不必从头开始。它们只是前几代针对许多任务进行了微调。例如,他们被教导“火会烧伤你”。从那时起,一个孩子知道这种知识可以微调到任何形式的“火”:蜡烛、野火、火山,以及每一个“火”的实例。

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

对于人类来说,下一层,即第 1 层的输入是大量经过训练和微调的知识。最重要的是,人类感知大量事件,然后通过子层的转导、归纳、训练和微调,以及先前的转录知识。

许多这些事件源于气味、情感、情境、经历以及使人类独一无二的一切。机器无权访问此个人身份。人类以特定于每个人的同质方式对单词有个人感知。

一台机器通过大量异构的未经过滤的非个人数据获取我们给它的东西。机器的目标是执行非个人的、高效的任务。人类的目标是个人幸福。

我们的无限接近循环从第 0 层到第 1 层,然后返回到第 0 层,其中包含更多原始和处理过的信息。

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

变形金刚经历了相同的过程,但方式不同。

机器智能堆栈

机器学习基础类似本章中描述的任务,然后使用他们学会如何预测的序列执行数百个任务。

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

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

机器从一个障碍开始。我们对他们施加了人为的劣势。机器必须依靠我们随机质量的语言输出来:

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

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

  • Transformer 模型排除了之前基于递归的学习操作,使用 self-attention 来提升模型的视野
  • 在这一点上,注意力子层比人类有一个优势:他们可以处理数百万个例子来进行归纳思维操作
  • 和我们一样,他们通过转导和诱导在序列中找到模式
  • 他们使用与他们的模型一起存储的参数来记住这些模式

他们已经掌握了语言通过使用他们的能力来理解:大量的数据、出色的 NLP 转换器算法和计算机能力。由于他们对语言的深刻理解,他们已经准备好运行数百个他们没有接受过培训的任务

变形金刚和人类一样,通过有限数量的任务获得语言理解。像我们一样,它们通过转导检测连接,然后通过归纳操作将它们概括。

当 Transformer 模型到达机器智能的微调子层时,它会像我们一样做出反应。它不会从头开始训练来执行新任务。和我们一样,它认为它是一个只需要微调的下游任务。如果它需要学习如何回答问题,它不会从头开始学习一门语言。变压器模型只是像我们一样微调它的参数。

在本节中,我们看到 Transformer 模型很难以我们的方式学习。从他们依赖我们的感知被转录成语言的那一刻起,他们就从一个障碍开始。但是,他们可以访问比我们拥有强大计算能力的无限多的数据。

现在让我们看看如何测量变压器性能与人类基线。

变压器性能与人类基线

变形金刚和人类一样可以微调通过继承执行下游任务预训练模型的属性。预训练模型通过其参数提供其架构和语言表示。

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

每个 NLP 模型需要用标准来评估方法。

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

让我们从一些关键的度量方法开始。

使用指标评估模型

无法比较一个变压器模型到另一个变压器没有使用度量的通用测量系统的模型(或任何其他 NLP 模型)。

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

准确度得分

准确度得分,无论如何您使用的变体,是一个实际的评估。score 函数为每个结果计算一个简单的真或假值。对于一组样本的给定子集样本i ,模型的输出nlp 上下游 nlp下游任务_transformer_02是否匹配正确的预测。基本功能是:nlp 上下游 nlp下游任务_深度学习_03

nlp 上下游 nlp下游任务_深度学习_04

我们将获得1如果结果因为子集是正确的,0如果它是错误的。

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

F1分数

F1分数介绍一种更灵活的方法,可以在面对包含不均匀类分布的数据集时提供帮助。

F1 分数使用精度和召回率的加权值。它是准确率和召回率的加权平均值:

F1score= 2* (precision * recall)/(precision + recall)

在这个等式中,将真 ( T ) 正例 ( p )、假 ( F ) 正例 ( p ) 和假 ( F ) 负例 ( n ) 插入精度 ( P ) 和召回率 ( R ) 方程:

nlp 上下游 nlp下游任务_深度学习_05

                                                                

nlp 上下游 nlp下游任务_深度学习_06

因此,F1 分数可以被视为精度 ( P ) 和召回率 ( R ) 的调和平均值(算术平均值的倒数):

nlp 上下游 nlp下游任务_自然语言处理_07

现在让我们回顾一下 MCC 方法。

马修斯相关系数 (MCC)

描述了 MCC并在第 3 章微调BERT 模型的使用 Matthews 相关系数进行评估部分中实现。MCC 计算具有真阳性 ( P )、真阴性 ( N )、假阳性 ( P ) 和假阴性 ( N ) 的测量值。

MCC 可以用以下等式概括:

nlp 上下游 nlp下游任务_自然语言处理_08

MCC 为二元分类模型提供了出色的度量,即使类的大小不同。

我们现在有关于如何测量给定变压器模型的结果并将其与其他变压器模型或 NLP 模型进行比较的好主意。

考虑到测量评分方法,现在让我们看看基准任务和数据集。

基准任务和数据集

需要三个先决条件证明变压器已达到最先进的性能水平:

  • 一个模型
  • 数据集驱动的任务
  • 本章的使用指标评估模型部分中描述的指标

我们将从探索 SuperGLUE 基准开始,以说明变压器模型的评估过程。

从胶水到超级胶水

设计了 SuperGLUE 基准并由等人公开。(2019)。等人。(2019)第一设计了通用语言理解评估GLUE ) 基准。

GLUE 基准测试的动机为了证明 NLU 有用,它必须适用于广泛的任务。相对较小的 GLUE 数据集旨在鼓励 NLU 模型解决一组任务。

然而,由于 Transformer 的到来,NLU 模型的性能开始超过平均水平人类,正如我们在 GLUE 排行榜(2021 年 12 月)中看到的那样。GLUE 排行榜,可在https://gluebenchmark.com/leaderboard获得,展示了 NLU 人才的非凡展示,保留了一些以前的 RNN/CNN 想法,同时主要关注突破性的 Transformer 模型。

以下排行榜摘录显示了 GLUE 人类基线的最高领导者和位置:

nlp 上下游 nlp下游任务_自然语言处理_09

图 5.2:GLUE 排行榜——2021 年 12 月

新模型和人类基线排名将不断变化。这些排名只是让我们了解了经典 NLP 和 Transformer 带我们走了多远!

我们首先注意到 GLUE Human Baselines 不在首位,这表明 NLU 模型在 GLUE 任务上已经超过了非专家人类。人类基线代表我们人类可以实现的目标。人工智能现在可以超越人类。2021 年 12 月,人类基线仅处于第 17 位。这是一个问题。如果没有一个可以超越的标准,要想盲目地寻找基准数据集来改进我们的模型是很有挑战性的。

我们还注意到,变压器模型处于领先地位。

我喜欢想到 GLUE 和 SuperGLUE当话语从混乱到有序的时候与语言理解。对我来说,理解是让单词组合在一起并成为一种语言的粘合剂。

GLUE 排行榜将随着 NLU 的进展而不断发展。然而,等人。(2019) 引入 SuperGLUE 为人类基线设定了更高的标准。

引入更高的人类基线标准

等人。(2019) 认可胶水的极限。他们为更困难的 NLU 任务设计了 SuperGLUE。

SuperGLUE立即重新建立了排名#1的Human Baselines(2020年12月),如下图排行榜摘录,https ://super.gluebenchmark.com/leaderboard :

nlp 上下游 nlp下游任务_nlp 上下游_10

图 5.3:SuperGLUE 排行榜 2.0 – 2020 年 12 月

然而,SuperGLUE 排行榜随着我们产生更好的 NLU 模型而不断发展。2021 年,变形金刚已经超过了人类基线。2021 年 12 月,Human Baselines 下降到排名第 5,如图 5.4所示:

nlp 上下游 nlp下游任务_数据集_11

图 5.4:SuperGLUE 排行榜 2.0 – 2021 年 12 月

随着新的创新模型的出现,人工智能算法排名将不断变化。这些排名只是让您了解争夺 NLP 霸权的战斗有多艰难!

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

SuperGLUE 评估流程

王等人。(2019)入选八SuperGLUE 基准测试的任务。这些任务的选择标准比 GLUE 更严格。例如,任务不仅要理解文本,还要推理。推理水平不是人类顶级专家的水平。但是,性能水平足以取代许多人工任务。

八项 SuperGLUE 任务以即用型列表的形式呈现:

nlp 上下游 nlp下游任务_深度学习_12

图 5.5:SuperGLUE 任务

任务清单是交互式的:https ://super.gluebenchmark.com/tasks 。

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

  • Name是经过微调的预训练模型的下游任务的名称
  • 标识符是名称的缩写或短版本
  • 下载是数据集的下载链接
  • 更多信息通过链接到设计数据集驱动任务的团队的论文或网站提供更多详细信息
  • Metric是用于评估模型的测量分数

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

nlp 上下游 nlp下游任务_nlp 上下游_13

图 5.6:SuperGLUE 任务分数

SuperGLUE 显示总分和每项任务的分数。

例如,让我们采取等人的指示。(2019)在他们论文的表 6中提供了合理答案的选择COPA)任务。

第一步是阅读Roemmele等人撰写的非凡论文。(2011)。简而言之,NLU 模型的目标是展示其机器思维(当然不是人类思维)的潜力。在我们的例子中,变压器必须为问题选择最合理的答案。数据集提供了一个前提,transformer 模型必须找到最合理的答案。

例如:

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 位:

nlp 上下游 nlp下游任务_数据集_14

图 5.7:COPA 的 SuperGLUE 结果

难以置信看起来,变形金刚在很短的时间内就登上了排行榜的阶梯!而这仅仅是个开始。几乎每个月都有新的想法出现!

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

定义 SuperGLUE 基准测试任务

任务可以是预训练任务生成经过训练的模型。同样的任务可以是另一个模型的下游任务,它将对其进行微调。然而,SuperGLUE 的目标是证明给定的 NLU 模型可以通过微调执行多个下游任务。多任务模型是证明变形金刚思维能力的模型。

任何 Transformer 的强大之处在于它能够使用预训练模型执行多项任务,然后将其应用于微调的下游任务。最初的 Transformer 模型及其变体现在在所有 GLUE 和 SuperGLUE 任务中处于领先地位。我们将继续专注于人类基线难以击败的 SuperGLUE 下游任务。

在上一节中,我们通过了 COPA。在本节中,我们将介绍其他七个Wang等人定义的任务。(2019)在他们论文的表 2中。

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

布尔Q

BoolQ 是一个布尔值是或否回答任务。定义的数据集在 SuperGLUE 上,包含 15,942 个自然发生的示例。#3数据集的原始样本行train.jsonl包含一个段落、一个问题和答案 ( 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,这是一项需要人和机器都集中注意力的任务。

Commitment Bank (CB)

Commitment Bank(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}

我们现在来看看多句问题。

多句阅读理解(MultiRC)

Multi-Sentence Reading Comprehension ( MultiRC ) 要求模型阅读文本并从多个文本中进行选择可能的选择。任务对人和机器来说都很难。该模型带有一个文本、几个问题,以及每个问题的可能答案,带有0(false) 或1(true)标签

让我们取第二个样本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)

使用常识推理数据集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),转换器模型必须阅读前提、检验假设并预测蕴涵假设状态的标签

#19让我们检查数据集的样本train.jsonl

{"premise": "U.S. crude settled $1.32 lower at $42.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 中,多任务Transformer 将不得不分析两个句子并确定目标词在两个句子中是否具有相同的含义。

让我们检查数据集的第一个样本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指定样本索引、标签值以及目标词在sentence1(start1, end1)和中的位置sentence2(start2, end2)

"idx": 0,
  "label": false,
  "start1": 31,
  "start2": 27,
  "end1": 36,
  "end2": 32,

在完成这项艰巨的任务之后,transformer 模型必须面对 Winograd 任务。

Winograd 模式挑战 (WSC)

Winograd 模式任务以特里·维诺格拉德的名字命名。如果变压器训练有素,它应该能够解决歧义问题。

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

这构成了一个共指解决问题,这是最具挑战性的任务之一。然而,允许自我注意的变压器架构非常适合这项任务。

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

让我们检查一个取自 的样本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 任务。还有许多其他任务。

然而,一旦你明白转换器的架构和基准任务的机制,您将快速适应任何模型和基准。

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

运行下游任务

在本节中,我们将只跳进入一些变压器车,然后驾驶它们四处转转,看看它们在做什么。有许多模型和任务。我们将在本节中运行其中的一些。一旦您了解了运行几个任务的过程,您将很快了解所有这些任务。毕竟,所有这些任务的人类基线是我们!

下游任务是经过微调的转换器任务,它从预训练的转换器模型中继承模型和参数。

因此,下游任务是运行微调任务的预训练模型的视角。这意味着,根据模型,如果任务未用于完全预训练模型,则该任务处于下游。在本节中,我们将所有任务视为下游,因为我们没有对它们进行预训练。

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

让我们从 CoLA 开始。

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

语言可接受性语料库( CoLA ),一个 GLUE 任务,包含数千个样本英语句子注释的语法可接受性。

Alex Warstadt等人的目标。(2019)旨在评估 NLP 模型的语言能力,以判断句子的语言可接受性。NLP 模型有望对句子进行相应的分类。

句子被标记作为符合语法或不符合语法的。0如果句子在语法上不可接受,则标记该句子。1如果句子在语法上可接受,则标记该句子。例如:

分类 = 1'我们叫自己声音嘶哑'。

分类 = 0'我们大喊大叫'。

您可以BERT_Fine_Tuning_Sentence_Classification_GPU.ipynb第 3 章微调 BERT 模型中查看我们在 CoLA 数据集上微调的 BERT 模型。我们使用了 CoLA 数据:

#@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 模型:

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

最后,我们使用的测量方法或度量是 MCC,它在第 3 章微调BERT 模型和本章前面的使用 Matthews 相关系数的评估部分中进行了描述。

您可以参考该部分以了解 MCC 的数学描述,并在必要时花时间重新运行源代码。

一个句子在语法上可能是不可接受的,但仍能传达一种情感。情绪分析可以为机器增加某种形式的同理心。

斯坦福情绪树库 (SST-2)

Stanford Sentiment TreeBank ( SST-2 ) 包含电影评论。在本节中,我们将描述 SST-2(二进制分类)任务。然而,数据集超出了这个范围,并且可以分类情绪在0(负面)到n(正面)的范围内。

索切尔等人。(2013)将情感分析超越了二元正负 NLP 分类。我们将在第 12 章检测客户情绪以进行预测”中探索 SST-2 多标签情绪分类和变压器模型。

在本节中,我们将在 Hugging Face 转换器管道模型上运行取自 SST 的样本,以说明二进制分类。

打开Transformer_tasks.ipynb并运行以下单元格,其中包含取自 SST 的正面和负面电影评论:

#@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.")

输出是准确的:

[{'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 任务使用准确度指标进行评估。

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

微软研究院释义语料库 (MRPC)

Microsoft Research Paraphrase Corpus ( MRPC )是一项 GLUE 任务,包含提取的句子对来自网络上的新资源。每对都经过人工注释,以基于两个密切相关的属性来指示句子是否等效:

  • 释义等效
  • 语义等价

让我们使用 Hugging Face BERT 模型运行一个示例。打开Transformer_tasks.ipynb并转到以下单元格,然后运行从 MRPC 获取的示例:

#@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)}%")

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

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

MRPC 任务使用 F1/准确度评分法测量。

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

Winograd schemas

我们在本章的Winograd 模式挑战 (WSC)部分中描述了 Winograd 模式。培训套装是英文的。

但是,如果我们让 Transformer 模型解决英法翻译中的代词性别问题,会发生什么呢?法语对具有语法性别(女性、男性)的名词有不同的拼写。

下面的句子包含代词it,可以指代词cargarage。变压器可以消除这个代词的歧义吗?

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

#@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))

翻译很完美:

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

变压器检测到指的是单词car,这是一个女性形式。阴性形式适用于和形容词big

elle在法语中是she的意思,是的翻译。男性的形式应该是il,这意味着

Grosse是big一词翻译的阴性形式。否则,阳性形式将是gros

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

有许多更多数据集驱动的 NLU 任务可用。我们将在本书中探索其中的一些,为我们的转换器工具箱添加更多构建块。

概括

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

然后,我们探讨了如何衡量多任务转换器的性能。Transformers 为下游任务获得一流结果的能力在 NLP 历史上是独一无二的。我们经历了艰巨的 SuperGLUE 任务,这些任务使变形金刚跻身 GLUE 和 SuperGLUE 排行榜的前列。

BoolQ、CB、WiC 以及我们涵盖的许多其他任务绝不容易处理,即使对人类来说也是如此。我们通过几个下游任务的示例展示了 Transformer 模型在证明其效率方面面临的困难。

Transformers 通过优于以前的 NLU 架构证明了自己的价值。为了说明实现下游微调任务是多么简单,我们随后使用 Hugging Face 的转换器管道在 Google Colaboratory 笔记本中运行了几个任务。

Winograd 模式中,我们给了转换器解决英法翻译的 Winograd 消歧问题的艰巨任务。

在下一章,第 6章,使用 Transformer 进行机器翻译,我们将把翻译任务更进一步,并使用 Trax 构建翻译模型。