MobileBERT: 一种适用于资源有限设备的紧凑型任务无关BERT

摘要

近年来,自然语言处理(NLP)通过使用具有数亿参数的巨大预训练模型取得了巨大成功。然而,这些模型存在模型体积庞大和延迟高的问题,使得它们无法部署到资源有限的移动设备上。在本文中,我们提出了MobileBERT,用于压缩和加速流行的BERT模型。与原始BERT一样,MobileBERT是任务无关的,即它可以通过简单的微调广泛应用于各种下游NLP任务。基本上,MobileBERT是BERTLARGE的瘦身版,同时配备了瓶颈结构,并在自注意力和前馈网络之间进行了精心设计的平衡。为了训练MobileBERT,我们首先训练了一个特别设计的教师模型,即一个结合了倒置瓶颈的BERTLARGE模型。然后,我们从这个教师模型向MobileBERT进行知识转移。实证研究表明,MobileBERT比BERTBASE小4.3倍,快5.5倍,同时在知名基准测试中取得了竞争性的结果。在GLUE的自然语言推理任务上,MobileBERT取得了77.7的GLUE分数(比BERTBASE低0.6),并在Pixel 4手机上实现了62毫秒的延迟。在SQuAD v1.1/v2.0问答任务上,MobileBERT取得了90.0/79.2的开发F1分数(比BERTBASE高1.5/2.1)。

1 引言

NLP社区见证了预训练自监督模型的革命。这些模型通常具有数亿参数(Peters等,2018;Radford等,2018;Devlin等,2018;Radford等,2019;Yang等,2019)。在这些模型中,BERT(Devlin等,2018)显示出显著的准确性提升。然而,作为NLP中最大的模型之一,BERT存在模型体积庞大和延迟高的问题,使得在资源有限的移动设备上部署BERT的力量变得不切实际,例如在移动机器翻译、对话建模等方面。

已有一些努力将BERT特定任务地蒸馏成紧凑模型(Turc等,2019;Tang等,2019;Sun等,2019;Tsai等,2019)。据我们所知,目前还没有任何工作用于构建一个任务无关的轻量级预训练模型,即一个可以像原始BERT一样在不同下游NLP任务上进行通用微调的模型。在本文中,我们提出了MobileBERT来填补这一空白。实际上,BERT的任务无关压缩是可取的。特定任务的压缩需要首先将原始的大型BERT模型微调为特定任务的教师模型,然后进行蒸馏。这样的过程比直接微调一个任务无关的紧凑模型要复杂得多(Wu等,2019)且成本更高。

乍一看,获得一个任务无关的紧凑BERT似乎很简单。例如,可以只取一个更窄或更浅的BERT版本,并通过最小化预测损失和蒸馏损失的凸组合来训练它直到收敛(Turc等,2019;Sun等,2019)。不幸的是,实证结果表明,这种直接的方法会导致显著的准确性损失(Turc等,2019)。这可能并不令人惊讶。众所周知,浅层网络通常没有足够的表示能力,而窄而深的网络难以训练。

我们的MobileBERT设计为与BERTLARGE一样深,同时通过采用瓶颈结构并在自注意力和前馈网络之间进行平衡,使每一层变得更窄(图1)。为了训练MobileBERT,一个深而薄的模型,我们首先训练了一个特别设计的教师模型,即一个结合了倒置瓶颈的BERTLARGE模型(IB-BERT)。然后,我们从IB-BERT向MobileBERT进行知识转移。在我们的实证研究中,仔细研究了各种知识转移策略。

实证评估1表明,MobileBERT比BERTBASE小4.3倍,快5.5倍;同时它仍然可以在知名的NLP基准测试中取得竞争性的结果。在GLUE的自然语言推理任务上,MobileBERT可以取得77.7的GLUE分数,仅比BERTBASE低0.6,在Pixel 4手机上的延迟为62毫秒。在SQuAD v1.1/v2.0问答任务上,MobileBERT取得了90.3/80.2的开发F1分数,甚至比BERTBASE高1.5/2.1。
在这里插入图片描述

2 相关工作

最近,BERT的压缩引起了广泛关注。Turc等人(2019)提出预训练较小的BERT模型以改进特定任务的知识蒸馏。Tang等人(2019)将BERT蒸馏成一个极小的LSTM模型。Tsai等人(2019)在序列标注任务上将多语言BERT蒸馏成较小的BERT模型。Clark等人(2019b)使用多个单任务BERT模型来教导一个多任务BERT。Liu等人(2019a)将来自多个BERT模型集合的知识蒸馏到单个BERT中。

与我们的工作同时,Sun等人(2019)通过知识蒸馏和多个中间层隐藏状态的额外知识转移,将BERT蒸馏成更浅的学生模型。Jiao等人(2019)提出了TinyBERT,它也在预训练和微调阶段使用了分层蒸馏策略。Sanh等人(2019)提出了DistilBERT,通过在预训练阶段和可选的微调阶段进行知识蒸馏,成功地将BERT模型的深度减半。

与这些现有文献相比,我们仅在预训练阶段使用知识转移,并且在下游任务中不需要微调的教师或数据增强(Wu等人,2019)。另一个关键区别是,这些先前的工作试图通过减少BERT的深度来压缩它,而我们则专注于通过减少BERT的宽度来压缩它,这已被证明更为有效(Turc等人,2019)。

3 MobileBERT

在本节中,我们介绍了MobileBERT的详细架构设计以及有效训练MobileBERT的训练策略。具体模型设置总结在表1中。这些设置是通过广泛的架构搜索实验获得的,将在第4.1节中介绍。

在这里插入图片描述

3.1 瓶颈与倒置瓶颈

MobileBERT的架构如图1©所示。它与BERTLARGE一样深;但每个构建块都变得更小。如表1所示,每个构建块的隐藏维度仅为128。另一方面,我们为每个构建块引入了两个线性变换,以将其输入和输出维度调整为512。根据(He等,2016)中的术语,我们将这种架构称为瓶颈。

训练这样一个深而薄的网络具有挑战性。为了克服训练问题,我们首先构建一个教师网络并训练它直到收敛,然后从这个教师网络向MobileBERT进行知识转移。我们发现这比直接从零开始训练MobileBERT要好得多。各种训练策略将在后面的章节中讨论。在这里,我们介绍教师网络的架构设计,如图1(b)所示。实际上,教师网络就是BERTLARGE,同时增加了倒置瓶颈结构(Sandler等,2018)以将其特征图大小调整为512。在下文中,我们将教师网络称为IB-BERTLARGE。请注意,IB-BERT和MobileBERT具有相同的特征图大小,即512。因此,我们可以直接比较IB-BERT和MobileBERT之间的逐层输出差异。这种直接比较在我们的知识转移策略中是必要的。

值得指出的是,同时引入的瓶颈和倒置瓶颈结构导致了相当灵活的架构设计。可以仅对MobileBERT使用瓶颈结构(相应地教师变为BERTLARGE)或仅对IB-BERT使用倒置瓶颈结构(那么MobileBERT中没有瓶颈)来对齐它们的特征图。然而,当同时使用它们时,我们可以让IB-BERTLARGE保持BERTLARGE的性能,同时使MobileBERT足够紧凑。

3.2 堆叠前馈网络

MobileBERT的瓶颈结构引入的一个问题是多头注意力(MHA)模块和前馈网络(FFN)模块之间的平衡被打破。MHA和FFN在Transformer架构中扮演不同的角色:前者允许模型共同关注来自不同子空间的信息,而后者增加了模型的非线性。在原始BERT中,MHA和FFN中的参数数量比例始终为1:2。但在瓶颈结构中,MHA的输入来自更宽的特征图(块间大小),而FFN的输入来自更窄的瓶颈(块内大小)。这导致MobileBERT中的MHA模块相对包含更多参数。

为了解决这个问题,我们建议在MobileBERT中使用堆叠前馈网络来重新平衡MHA和FFN之间的相对大小。如图1©所示,每个MobileBERT层包含一个MHA但有几个堆叠的FFN。在MobileBERT中,我们在每个MHA之后使用4个堆叠的FFN。

3.3 操作优化

通过模型延迟分析2,我们发现层归一化(Ba等,2016)和gelu激活函数(Hendrycks和Gimpel,2016)占总延迟的相当大比例。因此,我们提出在MobileBERT中用新的操作替换它们。

移除层归一化 我们将n通道隐藏状态h的层归一化替换为逐元素的线性变换:

N o N o r m ( h ) = γ ∘ h + β , (1) \mathbb { N o N o r m } ( \mathbf { h } ) = \gamma \circ \mathbf { h } + \beta , \tag{1} NoNorm(h)=γh+β,(1)

其中, γ , β   ∈   R n \gamma, \beta \, \in \, \mathbb { R } ^ { n } γ,βRn,o表示哈达玛积。请注意,即使在测试模式下,NoNorm与LayerNorm具有不同的性质,因为原始的层归一化对于一批向量来说不是线性操作。

使用relu激活函数 我们用更简单的relu激活函数(Nair和Hinton,2010)替换gelu激活函数。

3.4 嵌入分解

BERT模型中的嵌入表占据了模型大小的很大一部分。为了压缩嵌入层,如表1所示,我们在MobileBERT中将嵌入维度减少到128。然后,我们在原始词嵌入上应用核大小为3的一维卷积,以生成512维的输出。

3.5 训练目标

我们提出使用以下两个知识转移目标,即特征图转移和注意力转移,来训练MobileBERT。图1展示了所提出的逐层知识转移目标。我们最终的逐层知识转移损失 L K T ℓ \mathcal { L } _ { K T } ^ { \ell } LKT是以下两个目标的线性组合:

特征图转移(FMT)
由于BERT中的每一层仅将前一层的输出作为输入,因此在逐层知识转移中,最重要的是每一层的特征图应尽可能接近教师的特征图。具体来说,使用MobileBERT学生和IB-BERT教师之间特征图的均方误差作为知识转移目标:

L F M T ℓ = 1 T N ∑ t = 1 T ∑ n = 1 N ( H t , ℓ , n t r − H t , ℓ , n s t ) 2 , (2) \mathcal { L } _ { F M T } ^ { \ell } = \frac { 1 } { T N } \sum _ { t = 1 } ^ { T } \sum _ { n = 1 } ^ { N } ( H _ { t , \ell , n } ^ { t r } - H _ { t , \ell , n } ^ { s t } ) ^ { 2 } , \tag{2} LFMT=TN1t=1Tn=1N(Ht,,ntrHt,,nst)2,(2)

其中 ℓ \ell 是层的索引, T T T是序列长度, N N N是特征图大小。在实践中,我们发现将此损失项分解为归一化特征图差异和特征图统计差异有助于稳定训练。

注意力转移(AT)
注意力机制极大地提升了NLP的性能,并成为Transformer和BERT中的关键构建模块(Clark等,2019a;Jawahar等,2019)。这促使我们使用来自优化良好的教师的自注意力图来帮助MobileBERT的训练,作为特征图转移的补充。具体来说,我们最小化MobileBERT学生和IB-BERT教师之间每个注意力头的自注意力分布的KL散度:

L A T ℓ = 1 T A ∑ t = 1 T ∑ a = 1 A D K L ( a t , ℓ , a t r ∣ ∣ a t , ℓ , a s t ) , (3) \mathcal { L } _ { A T } ^ { \ell } = \frac { 1 } { T A } \sum _ { t = 1 } ^ { T } \sum _ { a = 1 } ^ { A } D _ { K L } \big ( a _ { t , \ell , a } ^ { t r } \big | \big | a _ { t , \ell , a } ^ { s t } \big ) , \tag{3} LAT=TA1t=1Ta=1ADKL(at,,atr at,,ast),(3)

其中 A A A是注意力头的数量。

预训练蒸馏(PD)
除了逐层知识转移外,我们还可以在预训练MobileBERT时使用知识蒸馏损失。我们使用原始掩码语言建模(MLM)损失、下一句预测(NSP)损失和新的MLM知识蒸馏(KD)损失的线性组合作为我们的预训练蒸馏损失:

KaTeX parse error: \tag works only in display equations

其中 α \alpha α是(0, 1)范围内的超参数。

3.6 训练策略

根据上述定义的目标,训练中可以有不同的组合策略。本文讨论了三种策略。

辅助知识转移
在这种策略中,我们将中间知识转移视为知识蒸馏的辅助任务。我们使用单一损失,该损失是所有层的知识转移损失以及预训练蒸馏损失的线性组合。
在这里插入图片描述

联合知识转移
然而,IB-BERT教师的中间知识(即注意力图和特征图)可能并不是MobileBERT学生的最佳解决方案。因此,我们建议将这两个损失项分开,首先通过所有层的知识转移损失联合训练MobileBERT,然后通过预训练蒸馏进一步训练它。

渐进式知识转移
有人可能会担心,如果MobileBERT不能完美地模仿IB-BERT教师,较低层的错误可能会影响较高层的知识转移。因此,我们建议在知识转移中逐步训练每一层。渐进式知识转移分为L个阶段,其中L是层数。

三种策略的图示
图2展示了这三种策略的图示。对于联合知识转移和渐进式知识转移,在逐层知识转移阶段,初始嵌入层和最终分类器没有知识转移。它们是从IB-BERT教师复制到MobileBERT学生的。此外,对于渐进式知识转移,当我们训练第 ℓ \ell 层时,我们冻结了下面所有层中的可训练参数。在实践中,我们可以通过以下方式软化训练过程:在训练某一层时,我们以较小的学习率进一步调整较低层,而不是完全冻结它们。

4 实验

在本节中,我们首先介绍了导致表1中模型设置的架构搜索实验,然后展示了MobileBERT和各种基线在基准测试中的实证结果。
在这里插入图片描述

4.1 模型设置

我们进行了大量实验,以搜索适合IB-BERT教师和MobileBERT学生的模型设置。我们从SQuAD v1.1开发集的F1分数作为性能指标开始,进行模型设置的搜索。在本节中,我们仅训练每个模型125,000步,批量大小为2048,这相当于原始BERT(Devlin等,2018;You等,2019)训练计划的一半。

IB-BERT的架构搜索
我们对教师模型的设计理念是尽可能使用较小的块间隐藏大小(特征图大小),只要没有精度损失。在这一指导原则下,我们设计了实验来调整BERTLARGE大小的IB-BERT的块间大小,结果如表2中标签(a)-(e)所示。我们可以看到,减少块间隐藏大小不会损害BERT的性能,直到它小于512。因此,我们选择块间隐藏大小为512的IB-BERTLARGE作为教师模型。

在这里插入图片描述

有人可能会想知道是否也可以缩小教师的块内隐藏大小。我们进行了实验,结果如表2中标签(f)-(i)所示。我们可以看到,当块内隐藏大小减小时,模型性能显著下降。这意味着块内隐藏大小(代表非线性模块的表示能力)在BERT中起着至关重要的作用。因此,与块间隐藏大小不同,我们没有缩小教师模型的块内隐藏大小。

MobileBERT的架构搜索
我们寻求对BERTBASE进行4倍的压缩,因此我们设计了一组MobileBERT模型,所有模型都具有大约25M参数,但MHA和FFN中参数数量的比例不同,以选择一个好的MobileBERT学生模型。表3显示了我们的实验结果。它们在MHA和FFN之间具有不同的平衡。从表中可以看出,当MHA和FFN中的参数比例为0.4∼0.6时,模型性能达到峰值。这可能解释了为什么原始Transformer选择MHA和FFN的参数比例为0.5。

考虑到模型精度和训练效率,我们选择块内隐藏大小为128和4个堆叠FFN的架构作为MobileBERT学生模型。我们还相应地设置教师模型中的注意力头数为4,为逐层知识转移做准备。表1展示了我们的IB-BERTLARGE教师和MobileBERT学生的模型设置。

有人可能会想知道减少头数是否会损害教师模型的性能。通过比较表2中的(a)和(f),我们可以看到将头数从16减少到4不会影响IB-BERTLARGE的性能。

4.2 实现细节

遵循BERT(Devlin等,2018),我们使用BooksCorpus(Zhu等,2015)和英文维基百科作为预训练数据。为了使IB-BERTLARGE教师达到与原始BERTLARGE相同的精度,我们在256个TPU v3芯片上训练IB-BERTLARGE,共500,000步,批量大小为4096,并使用LAMB优化器(You等,2019)。为了与原始BERT进行公平比较,我们没有使用其他BERT变体中的训练技巧(Liu等,2019b;Joshi等,2019)。对于MobileBERT,我们在预训练蒸馏阶段使用相同的训练计划。此外,我们使用渐进式知识转移来训练MobileBERT,这在24层上额外花费了240,000步。在消融研究中,我们将MobileBERT的预训练蒸馏计划减半以加速实验。此外,在知识转移策略的消融研究中,为了公平比较,联合知识转移和辅助知识转移也额外花费了240,000步。对于下游任务,所有报告的结果都是通过像原始BERT那样简单地微调MobileBERT获得的。为了微调预训练模型,我们在搜索空间中搜索优化超参数,包括不同的批量大小(16/32/48)、学习率 ( ( 1 − 10 ) ∗ e − 5 ) ( ( 1 { - } 1 0 ) * \mathbf { e } { - } 5 ) ((110)e5)和训练轮数(2-10)。搜索空间与原始BERT不同,因为我们发现MobileBERT在微调时通常需要更大的学习率和更多的训练轮数。我们根据开发集上的性能选择测试模型。

4.3 GLUE上的结果

通用语言理解评估(GLUE)基准(Wang等,2018)是一个包含9个自然语言理解任务的集合。我们将MobileBERT与BERTBASE和一些在GLUE排行榜上的最新预BERT模型进行比较:OpenAI GPT(Radford等,2018)和ELMo(Peters等,2018)。我们还与最近提出的三个压缩BERT模型进行比较:BERT-PKD(Sun等,2019)和DistilBERT(Sanh等,2019)。为了进一步展示MobileBERT相对于最近的小型BERT模型的优势,我们还评估了我们模型的一个较小变体,称为MobileBERTTINY4,具有大约15M参数,它减少了每层中的FFN数量并使用更轻量级的MHA结构。此外,为了验证MobileBERT在现实世界移动设备上的性能,我们使用TensorFlow Lite5 API导出模型,并在4线程Pixel 4手机上测量固定序列长度为128的推理延迟。结果列在表4中。
在这里插入图片描述

在这里插入图片描述

从表中可以看出,MobileBERT在GLUE基准上非常有竞争力。MobileBERT实现了77.7的整体GLUE分数,仅比BERTBASE低0.6,同时比BERTBASE小4.3倍,快5.5倍。此外,它以4.3倍小的模型大小优于强大的OpenAI GPT基线0.8 GLUE分数。它还优于所有其他具有较小或相似模型大小的压缩BERT模型。最后,我们发现引入的操作优化略微损害了模型性能。如果没有这些优化,MobileBERT甚至可以以0.2 GLUE分数优于BERTBASE。

在这里插入图片描述

4.4 SQuAD上的结果

SQuAD是一个大规模的阅读理解数据集。SQuAD1.1(Rajpurkar等,2016)仅包含在给定上下文中始终有答案的问题,而SQuAD2.0(Rajpurkar等,2018)包含无法回答的问题。我们仅在SQuAD开发数据集上评估MobileBERT,因为在SQuAD测试排行榜上几乎没有单一模型提交。我们将MobileBERT与BERTBASE、DistilBERT以及一个强大的基线DocQA(Clark和Gardner,2017)进行比较。
在这里插入图片描述

如表5所示,MobileBERT在模型规模较小或相近的情况下,显著优于所有其他模型。

4.5 量化

我们对MobileBERT应用了TensorFlow Lite中的标准训练后量化技术。结果如表6所示。我们发现,量化可以进一步将MobileBERT压缩4倍,而性能几乎没有下降。这表明MobileBERT在压缩方面仍有很大的空间。

4.6 消融研究

4.6.1 操作优化

我们评估了第3.3节中引入的两种操作优化的有效性,即用NoNorm替换层归一化(LayerNorm)以及用relu激活函数替换gelu激活函数。我们使用与第4.6.1节相同的实验设置报告推理延迟。从表7中可以看出,NoNorm和relu在减少MobileBERT的延迟方面非常有效,尽管这两种操作优化并未减少浮点运算次数(FLOPS)。这揭示了实际推理延迟与理论计算开销(即FLOPS)之间的差距。

4.6.2 训练策略

我们还研究了训练策略的选择(即辅助知识转移、联合知识转移和渐进式知识转移)对MobileBERT性能的影响。如表8所示,渐进式知识转移始终优于其他两种策略。我们注意到,辅助知识转移与其他两种策略之间存在显著的性能差距。我们认为原因是来自教师的中间层知识(即注意力图和特征图)可能对学生来说并非最优,因此学生需要一个额外的预训练蒸馏阶段来微调其参数。

在这里插入图片描述

4.6.3 训练目标

我们最后进行了一组关于注意力转移(AT)、特征图转移(FMT)和预训练蒸馏(PD)的消融实验。在这些实验中,操作优化(OPT)被移除,以便在MobileBERT和原始BERT之间进行公平比较。结果列于表9中。

我们可以看到,提出的特征图转移对MobileBERT的性能提升贡献最大,而注意力转移和预训练蒸馏也起到了积极作用。我们还可以发现,我们的IB-BERTLARGE教师模型与原始IB-BERTLARGE一样强大,而MobileBERT与其教师相比性能下降较多。因此,我们相信MobileBERT仍有很大的改进空间。

5 结论

我们提出了MobileBERT,它是BERT的一种任务无关的紧凑变体。在流行的NLP基准测试中的实证结果表明,MobileBERT与BERTBASE相当,同时更小更快。MobileBERT可以使各种NLP应用7轻松部署在移动设备上。

在本文中,我们展示了以下几点:1)保持MobileBERT的深度和薄度至关重要;2)瓶颈/倒置瓶颈结构能够实现有效的逐层知识转移;3)渐进式知识转移可以高效地训练MobileBERT。我们相信我们的发现是通用的,可以应用于其他模型压缩问题。

附录:“MobileBERT:一种适用于资源有限设备的紧凑型任务无关BERT”

A 关于知识转移的额外相关工作

利用知识转移来压缩模型大小最早由Bucilu等人(2006)提出。这一思想随后被知识蒸馏(Hinton等,2015)采用,要求较小的学生网络模仿较大教师网络的类别分布输出。Fitnets(Romero等,2014)让学生模仿教师的中间隐藏层,以训练窄而深的网络。Luo等人(2016)表明,教师的知识也可以从顶部隐藏层的神经元中获取。与我们提出的渐进式知识转移方案类似,Yeo等人(2018)提出了一种顺序知识转移方案,以顺序方式将知识从深层教师蒸馏到浅层学生中。Zagoruyko和Komodakis(2016)提出转移教师在图像上的注意力图。Li等人(2019)提出将隐藏状态的相似性和词对齐从自回归Transformer教师转移到非自回归学生中。

B 关于紧凑架构设计的额外相关工作

尽管最近许多研究致力于改进高效的卷积神经网络(CNN)以用于移动视觉应用(Iandola等,2016;Howard等,2017;Zhang等,2017,2018;Sandler等,2018;Tan等,2019;Howard等,2019),但这些方法通常是为CNN量身定制的。流行的轻量级操作(如深度卷积(Howard等,2017))不能直接应用于Transformer或BERT。在NLP文献中,最相关的工作可能是分组LSTM(Kuchaiev和Ginsburg,2017;Gao等,2018),它将分组卷积(Zhang等,2017,2018)的思想引入循环神经网络(RNN)。

C 注意力分布的可视化

我们可视化了消融研究中一些模型的第1层和第12层的注意力分布,以进一步研究。结果如图3所示。我们发现,提出的注意力转移可以帮助学生很好地模仿教师的注意力分布。令人惊讶的是,我们发现“MobileBERT(bare)+PD+FMT”的注意力头中的注意力分布与“MobileBERT(bare)+PD+FMT+AT”(也是教师模型)的注意力分布完全一致,即使它没有通过注意力转移目标进行训练。这一现象表明,多头注意力是BERT非线性的关键且独特的部分。此外,这可以解释消融研究表中注意力转移的微小改进,因为特征图的对齐导致了注意力分布的对齐。
在这里插入图片描述

D 额外实验设置

为了与原始BERT进行公平比较,我们遵循与BERT相同的预处理方案,即在每个序列中随机掩码15%的WordPiece(Kudo和Richardson,2018)标记,并使用下一句预测。请注意,MobileBERT可以通过最近引入的几种训练技术(如跨度预测(Joshi等,2019)或移除下一句预测目标(Liu等,2019b))进一步改进。我们将其留待未来工作。

在预训练蒸馏中,超参数α用于平衡原始掩码语言建模损失和蒸馏损失。遵循(Kim和Rush,2016),我们将α设置为0.5。

E MobileBERTTINY的架构

我们为MobileBERTTINY使用了更轻量级的MHA结构。如图4所示,我们使用缩减的块内特征图作为MHA中的键、查询和值,而不是使用来自块间特征图的隐藏状态作为MHA的输入。这可以有效减少MHA模块中的参数,但可能会损害模型容量。

F GLUE数据集

在本节中,我们简要描述了GLUE基准(Wang等,2018)中的任务。

CoLA
语言可接受性语料库(Warstadt等,2018)是从语言学理论的书籍和期刊文章中提取的英语可接受性判断集合。任务是预测一个例子是否是合乎语法的英语句子,并通过Matthews相关系数(Matthews,1975)进行评估。
在这里插入图片描述

SST-2
斯坦福情感树库(Socher等,2013)是来自电影评论的句子集合及其情感的人工标注。任务是预测给定句子的情感,并通过准确率进行评估。

MRPC
微软研究释义语料库(Dolan和Brockett,2005)是从在线新闻源中自动提取的句子对集合。这些句子对通过人工标注来判断句子在语义上是否等价。性能通过准确率和F1分数进行评估。

STS-B
语义文本相似性基准(Cer等,2017)是从新闻标题、视频和图像字幕以及自然语言推理数据中提取的句子对集合。每个句子对通过人工标注,给出1到5的相似性分数。任务是预测这些分数,并通过皮尔逊和斯皮尔曼相关系数进行评估。

QQP
Quora问题对数据集(Chen等,2018)是从社区问答网站Quora收集的问题对集合。任务是判断一对问题在语义上是否等价,并通过准确率和F1分数进行评估。

MNLI
多类型自然语言推理语料库(Williams等,2018)是带有文本蕴含标注的句子对集合。给定一个前提句子和一个假设句子,任务是预测前提是否蕴含假设(entailment)、与假设矛盾(contradiction)或两者都不是(neutral),并通过测试数据的匹配(域内)和不匹配(跨域)部分的准确率进行评估。

QNLI
问答自然语言推理数据集是从斯坦福问答数据集(SQuAD)(Rajpurkar等,2016)转换而来。任务是判断上下文句子是否包含问题的答案,并通过测试准确率进行评估。

RTE
识别文本蕴含(RTE)数据集来自一系列年度文本蕴含挑战赛(Bentivogli等,2009)。任务是预测句子对中的句子是否具有蕴含关系,并通过准确率进行评估。

WNLI
Winograd模式挑战(Levesque等,2011)是一项阅读理解任务,系统必须阅读一个带有代词的句子,并从选项列表中选择该代词的指代对象。我们遵循Devlin等(2018)的做法,在实验中跳过此任务,因为之前的工作很少能比预测多数类表现得更好。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/984895.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【C】初阶数据结构9 -- 直接插入排序

前面我们学习了数据结构二叉树,接下来我们将开启一个新的章节,那就是在日常生活中经常会用到的排序算法。 所谓排序算法就是给你一堆数据,让你从小到大(或从大到小)的将这些数据排成一个有序的序列(这些数据…

OpenPose初体验

最近机器人的热度有点高,想着要做些应用技术储备,偶然的机会发现了OpenPose,就从它开始吧!OpenPose是由卡内基梅隆大学开发的开源实时多人姿态估计库。它基于深度学习算法,能精确识别图像或视频中的人体姿态&#xff0…

从0开始的操作系统手搓教程33:挂载我们的文件系统

目录 代码实现 添加到初始化上 上电看现象 挂载分区可能是一些朋友不理解的——实际上挂载就是将我们的文件系统封装好了的设备(硬盘啊,SD卡啊,U盘啊等等),挂到我们的默认分区路径下。这样我们就能访问到了&#xff…

游戏辅助技术培训班教程【A001-初级班】

课程概述: 本教程为游戏辅助技术培训班的初级班课程,本章为第二阶段,旨在帮助学员系统掌握游戏辅助技术的核心技能。课程内容从C/C编程基础到高级内存操作、代码注入、DLL注入及MFC编程,全面覆盖游戏辅助开发的关键知识点。 课程…

day1 redis登入指令

[rootlocalhost data]# redis-cli -h ip -p 6379 -a q123q123 Warning: Using a password with -a or -u option on the command line interface may not be safe. ip:6379> 以上, Bigder

vue3深入组件——依赖注入

一、场景介绍:一般父子间信息传递是通过props,但是一个多层嵌套的组件,必须将其沿着组件逐级的传递下去,这就是props的逐级透传。 二、上述情况下,就需要用到provide 和 inject;一个父组件相对于其所有的后代组件,会作为依赖提供者。任何后代的组件树,无论层级有多…

VUE3开发-9、axios前后端跨域问题解决方案

VUE前端解决跨域问题 前端页面需要改写 如果无效,记得重启服务器 后端c#解决跨域问题 前端js取值,后端c#跨域_c# js跨域-CSDN博客

国产编辑器EverEdit - 设置文件类型关联为EverEdit

1 设置-文件关联 1.1 应用场景 文件关联是指在文件管理器中双击某类型的文件,操作系统自动调用可以打开该文件的应用程序,比如:用户双击XXXX.txt文件,系统默认会使用记事本打开该文件。   由于各行各业都会定义特有的文件类型&…

【测试框架篇】单元测试框架pytest(4):assert断言详解

一、前言 用例三要素之一就是对预期结果的断言。 何为断言?简单来说就是实际结果和期望结果去对比,符合预期就测试pass,不符合预期那就测试 failed。断言内容就是你要的预期结果。断言包含对接口响应内容做断言、也包含对落DB的数据做断言。…

十七、从0开始卷出一个新项目之瑞萨RZN2L定时器(GPT)+DMA生成PWM的运动控制

一、概述 嵌入式科普(34)通过对比看透DMA的本质 分享瑞萨RZN2L使用DMA生成PWM的运动控制的例程源码 rzn2l必要的外设资源: rzn2l拥有32-bit timer General PWM Timer (GPT) with 18 channels CPU、GPT最高频率400Mhz DMAC0 and DMAC1 8 channels 8 channels 还…

CI/CD—Jenkins配置Poll SCM触发自动构建

Poll SCM简介 在 Jenkins 等持续集成工具中,“Poll SCM” 是一种用于轮询软件配置管理(SCM)系统以检查代码变更的机制,以下是对它的详细介绍: 作用 “Poll SCM” 允许 Jenkins 定期检查指定的 SCM 系统(如 …

Javaweb后端文件上传@value注解

文件本地存储磁盘 阿里云oss准备工作 阿里云oss入门程序 要重启一下idea,上面有cmd 阿里云oss案例集成 优化 用spring中的value注解

命名管道的创建和通信实现

目录 命名管道的创建 使用函数创建命名管道的通信 预备创建 makefile设计 server.hpp设计 clent.hpp设计 comm.hpp设计 server.cc设计 clent.cc设计 测试运行 今天我们来学习命名管道 由于匿名管道(pipe())无法在两个毫不相干的进程之间进行通…

密码学 网络安全 科普 网络安全密码技术

网络加密包括密码技术和网络加密方法两个方面。 一、 密码技术   密码技术一般分为常规密码和公钥密码。   常规密码是指收信方和发信方使用相同的密钥,即加密密钥和解密密钥是相同或等价的。比较著名的常规密码算法有DES及其各种变形、IDEA、FEAL、Skipjack…

LLM run

lmstudio lmstudio ollama ollama N 卡使用自带UI gpu加速推理 ,选择满足条件的, ds模型选择列表 https://ollama.com/library/deepseek-r1 a卡当前支持的显卡型号 I卡 gpu加速配置 2025.3 intel Official project optimization https://www.modelscope.cn/m…

[Java]使用java进行JDBC编程

首先要从中央仓库下载api(类似驱动程序),为了链接java和mysql 下载jar包,需要注意的是jar包的版本要和mysql保持一致 下面是新建文件夹lib,把jar包放进去,并添加为库 sql固定的情况下运行 import com.mysql.cj.jdbc.MysqlDataSo…

小程序事件系统 —— 32 事件系统 - 事件分类以及阻止事件冒泡

在微信小程序中,事件分为 冒泡事件 和 非冒泡事件 : 冒泡事件:当一个组件的事件被触发后,该事件会向父节点传递;(如果父节点中也绑定了一个事件,父节点事件也会被触发,也就是说子组…

某些网站访问很卡 or 力扣网站经常进不去(2025/3/10)

很早之前就感觉力扣很卡,但是以为很正常,今天偶然感觉很不对劲,其他网站都能打开,就力扣打不开,很烦人,这里还是记录一下(截止 2025/3/10 方法有效)。 问题原因 DNS解析错误&#x…

【网络安全工程】任务10:三层交换机配置

CSDN 原创主页:不羁https://blog.csdn.net/2303_76492156?typeblog三层交换机是指在OSI(开放系统互连)模型中的第三层网络层提供路由功能的交换机。它不仅具备二层交换机的交换功能,还能实现路由功能,提供更为灵活的网…

SpringMVC-全局异常处理

文章目录 1. 全局异常处理2. 项目异常处理方案2.1 异常分类2.2 异常解决方案2.3 异常解决方案具体实现 1. 全局异常处理 问题:当我们在SpingMVC代码中没有对异常进行处理时,三层架构的默认处理异常方案是将异常抛给上级调用者。也就是说Mapper层报错会将…