6.4 ALBERT全面理解

2023-11-02 15:59
文章标签 全面 理解 6.4 albert

本文主要是介绍6.4 ALBERT全面理解,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

    • 1简介
    • 2相关工作
      • 2.1扩大自然语言的表征学习
      • 2.2跨层参数共享
      • 2.3句子排序目标
    • 3 ALBERT基本原理
      • 3.1模型架构选择
      • 分解式嵌入参数化
      • 跨层参数共享
      • 句子顺序预测
      • 3.2模型设置
    • 4实验结果
      • 4.1实验装置
      • 4.2评价基准
        • 4.2.1内在准备评估
        • 4.2.2下游评价
      • 4.3 BERT和ALBERT的总体比较
      • 4.4因式分解嵌入参数化
      • 4.7如果我们训练同样的时间呢?
    • 5讨论
    • 参考

在预训练自然语言表示时增加模型大小通常会提高下游任务的性能。 ALBERT提出了两种参数减少技术来降低内存消耗并提高BERT的训练速度,还使用了一种自我监督的损失,该损失集中于对句子之间的连贯性进行建模,并表明它始终可以通过多句子输入帮助下游任务。

可以在https://github.com/google-research/ALBERT上找到代码和预先训练的模型。

1简介

全面的网络预训练在语言表示学习方面取得了一系列突破。许多非平凡的NLP任务,包括那些训练数据有限的任务,都从这些预 训练的模型中受益匪浅。这些突破最令人信服的迹象之一是针对中国的中学和高中英语考试而设计的阅读理解任务RACE测试上机器性能的演变:该论文最初描述了这项任务,并制定了建模挑战报告,然后最先进的机器精度为44.1%;最新公布的结果显示,他们的模型性能为83.2% ;我们在这里展示的工作将其进一步提高到89.4%,一个惊人的45.3%的改进,这主要归功于我们当前构建高性能预训练语言表示的能力。

这些改进的证据表明,大型网络对于实现最新性能至关重要。大型预训练模型并将其提炼成较小的模型已成为常见的实际应用。考虑到模型大小的重要性,我们问:拥有更好的NLP模型是否像拥有更大的模型一样容易?

回答此问题的障碍是可用硬件的内存限制。鉴于当前最先进的模型通常具有数亿甚至数十亿个参数,当我们尝试扩展模型时,很容易遇到这些限制。由于开销与模型中参数的数量成正比,因此在分布式训练中,训练速度也可能受到很大的阻碍。

解决上述问题的现有解决方案包括模型并行化和内存管理。

这些解决方案解决了内存限制问题,但没有解决通信开销。 在本文中,我们通过设计具有比传统BERT架构更少的参数的Lite BERT(ALBERT)架构来解决所有上述问题。

ALBERT结合了两种参数减少技术,这些技术可消除预训练模型时的主要障碍。第一个是分解式嵌入参数化。通过将大的词汇嵌入矩阵分解为两个小的矩阵,我们将隐藏层的大小与词嵌入层的大小分开。这种分解使得在不显着增加词汇表的嵌入参数大小的情况下,更容易增加隐藏的大小。第二种技术是跨层参数共享。此技术可防止参数随着网络的深度而增长。与BERT-large相似的ALBERT配置参数减少了18倍,并且训练速度提高了约1.7倍。参数减少技术还可以充当正则化的形式,从而稳定训练并有助于泛化。

为了进一步提高ALBERT的性能,我们还引入了一种自监督的句子顺序预测(SOP)损失。 SOP主要关注句子间的连贯性,旨在解决原始BERT中提出的下一个句子预测(NSP)的无效性。

这些设计决定的结果是,我们能够扩展到更大的ALBERT配置,这些配置的参数仍然比BERT-large少,但性能却明显好于BERT。

2相关工作

2.1扩大自然语言的表征学习

已经证明,学习自然语言的表示形式对广泛的自然语言处理很有用任务并已被广泛采用等。最重大的变化之一在过去的两年中,无论是标准的或情境化,进行全网络预训练,然后进行针对特定任务的微调。在这方面的工作中,通常显示出更大的模型尺寸可以改善性能。例如,Devlin等。 显示了三种选定的自然语言理解任务,使用更大的hidden size,更多hidden layers和更多attention heads导致更好的性能。但是,它们的隐藏大小为1024,可能是因为模型大小和计算成本问题。

由于计算限制,尤其是在GPU / TPU内存限制方面,很难对大型模型进行实验。 鉴于当前最先进的模型通常具有数亿甚至数十亿个参数,我们可以轻松达到内存限制。 为了解决这个问题,Chen等。 提出了一种称为梯度检查点的方法,以减少额外的前向通过为代价的亚线性存储需求。 Gomez等。 提出了一种从下一层重建每个层的激活的方法,这样它们就不需要存储中间激活。 两种方法都以速度为代价减少了内存消耗。 Raffel等。建议使用模型并行化来训练巨型模型。 相反,我们的参数减少技术可减少内存消耗并提高训练速度。

2.2跨层参数共享

具有跨层参数共享的网络(Universal Transformer,UT)在语言建模和主谓词一致方面比标准转换器具有更好的性能。 最近,提出了transformer网络的Deep Equilibrium Model(DQE),并表明DQE可以达到一个平衡点,对于该平衡点,某层的输入嵌入和输出嵌入保持相同。 将参数共享transformer与标准transformer相结合,这进一步增加了标准transformer的参数数量。

2.3句子排序目标

ALBERT根据预测两个连续文本段的顺序使用预训练损失。话语中的连贯性和衔接性已得到广泛研究,并且已经发现许多现象将相邻的文本片段连接起来。在实践中发现大多数有效的目标都非常简单。 句子嵌入通过使用句子编码来预测相邻句子中的单词来学习。句子嵌入学习的其他目标包括预测未来的句子而不是仅预测邻居和预测显式话语标记。ALBERT的损失与句子排序目标最相似, 学习句子嵌入以确定两个连续句子的顺序。但是,与上述大多数工作不同,ALBERT的损失是按文本段而不是句子来定义的。 BERT使用损失的依据是预测对中的第二个片段是否已与另一个文档中的一个片段交换。排序是一项更具挑战性的预训练任务,并且对某些下游任务更有用, 还尝试预测文本的两个连续段的顺序,将其与原始的下一句预测结合在三向分类任务中。

3 ALBERT基本原理

3.1模型架构选择

ALBERT架构的主干与BERT相似,因为它使用具有GELU非线性的transformer encoder。将词汇embedding size表示为E,将encoder layers层数表示为L,将hidden size表示为H,将feed forward/filter size设置为4H,attention heads数设置为H / 64。

ALBERT对BERT的设计选择有三个主要的贡献。

分解式嵌入参数化

在BERT中,以及随后的建模改进(例如XLNet和RoBERTa)中,单词 embedding size E与hidden layer size H捆绑在一起,即 E ≡ H E≡H EH 出于建模和实际原因,此决定似乎不是最佳选择,如图 1 所示。

从建模角度来看,单词 embeddings旨在学习上下文无关的表示,而 hidden-layer embeddings 旨在学习上下文相关的表示。 类似BERT是使用上下文来获得表示,以提供学习此类依赖于上下文的表示的信号。 这样,将单词 embedding size E与hidden layer size H脱开,就可以使我们更有效地利用由建模需求所决定的总模型参数,从而决定了 H ≫ E H \gg E HE

从实际的角度来看,自然语言处理通常需要词汇量V很大。如果 E ≡ H E ≡H EH ,则增加H会增加embedding矩阵的大小,其大小 V × E V\times E V×E 。这很容易产生一个拥有数十亿参数的模型,其中大多数参数在训练期间只进行少量更新。

因此,对于ALBERT,我们对embedding参数使用因式分解,将它们分解成两个更小的矩阵。我们不直接将one-hot vectors投影到大小为 H H H的hidden space中,而是先将其投影到大小为 E E E的低尺寸的embedding space中,然后再将其投影到隐藏空间中。即分解 O ( V × H ) O(V×H) O(V×H) O ( V × E + E × H ) O(V×E + E×H) O(V×E+E×H)

H ≫ E H \gg E HE时,此参数的减少意义重大。我们选择对所有单词使用相同的E,因为与全词embedding相比,它们在文档中的分布要均匀得多。具有不同embedding大小对于不同的单词很重要。

因式分解过程

图 1 因 式 分 解 过 程 图 1 因式分解过程 1

参数减少:
V ∗ H = 30000 ∗ 768 = 23 , 040 , 000 V ∗ E + E ∗ H = 30000 ∗ 256 + 256 ∗ 768 = 7 , 876 , 608 V∗H=30000∗768=23,040,000\\ V∗E+E∗H=30000∗256+256∗768=7,876,608 VH=30000768=23,040,000VE+EH=30000256+256768=7,876,608

跨层参数共享

有多种共享参数的方式,例如,仅跨层共享前馈网络(FFN)参数,或仅共享attention参数。 ALBERT的默认决定是跨层共享所有参数

传统 Transformer 的每一层参数都是独立的,包括各层的 self-attention、全连接。这样就导致层数增加时,参数量也会明显上升。之前有工作试过单独将 self-attention 或者全连接层进行共享,都取得了一些效果。ALBERT 作者尝试将所有层的参数进行共享,相当于只学习第一层的参数,并在剩下的所有层中重用该层的参数,而不是每个层都学习不同的参数

跨层共享所有参数

图 2 跨 层 共 享 所 有 参 数 图 2 ~跨层共享所有参数 2 

(Universal Transformer,UT)和 (2019)(Deep Equilibrium Models,DQE)也探索了类似的策略. 他们的DQE达到了平衡点,对于该平衡点,特定层的输入和输出嵌入保持不变。 我们对L2距离和余弦相似度的测量表明,bert的embeddings 是振荡的,而不是收敛的。

图3

$$
图3:BERT-large和ALBERT-large的各层输入和输出embeddings的L2距离和余弦相似度(以度表示)。

$$
图3显示了使用BERT-large和ALBERT-large配置的每一层的输入和输出embeddings的L2距离和余弦相似度(见表1)。结果表明,权值共享对网络参数的稳定有一定的影响。尽管与BERT相比,这两个指标都有下降,但即使在24层之后,它们也不会收敛到0。这说明ALBERT参数的解空间与DQE的解空间有很大的不同。

句子顺序预测

除了掩蔽语言建模(MLM)损失之外,BERT还使用了另一种损失,称为下一句话预测(NSP)。NSP是预测两个片段在原文中是否连续出现的二分类损失,具体如下:从训练语料库中提取连续片段,生成正例;负面的例子是由来自不同文档的片段配对产生的;正、负样本的抽样概率相等。NSP的目标是为了提高下游任务的性能,比如自然语言推理,这些任务需要对句子对之间的关系进行推理。然而,后续研究发现NSP的影响不可靠,并决定消除它,这一决定在多个任务之间的下游任务性能得到了提升。

我们推测,与MLM相比,NSP失效的主要原因是其缺乏任务难度。 按照规定,NSP将主题预测和连贯性预测合并为一个任务。然而,与一致性预测相比,主题预测更容易学习,也与使用MLM损失学习到的知识有更多的重叠。

我们坚持说句间建模是语言理解的一个重要方面,但是我们提出了一个主要基于连贯性的损失。也就是说,对于ALBERT,我们使用句子顺序预测(Sentence-Order Prediciton)(SOP)损失,该方法避免了主题预测,而侧重于建模句子间的连贯性。

  • SOP损失使用与BERT(同一文档中的两个连续段)相同的技术作为肯定示例
  • 并使用相同的两个连续段(但顺序互换)作为否定示例

图 4 句 子 顺 序 预 测 图 示 图4 句子顺序预测图示 4

这迫使模型学习关于话语级连贯性的细粒度区别。正如我们在第二节中所示。 4.6,事实证明NSP根本无法解决SOP任务(即,它最终学习了更容易的主题预测信号,并在SOP任务上以随机基线水平执行),而SOP可以在一定程度上解决NSP任务,大概是基于分析错位的相干线索。结果,ALBERT模型持续提高了多语句编码任务的下游任务性能。

3.2模型设置

表1给出了BERT和ALBERT模型在超参数设置上的差异。由于以上讨论的设计选择,ALBERT模型的参数尺寸比相应的BERT模型要小得多

表 1 : 本 文 分 析 的 主 要 B E R T 和 A L B E R T 模 型 的 配 置 表1:本文分析的主要BERT和ALBERT模型的配置 1BERTALBERT

例如,与BERT-large相比,ALBERT-large少了大约18倍的参数,前者是18M,后者是334M。H = 2048的ALBERT-xlarge配置只有60M参数和H = 4096的ALBERT-xxlarge配置有233M参数,即,约70%的参数。请注意,对于ALBERT-xxlarge,我们主要报告12层网络上的结果,因为24层网络(具有相同的配置)可以获得类似的结果,但在计算上更昂贵。

这种参数效率的提高是ALBERT设计选择的最重要的优势。在我们能够量化这一优势之前,我们需要更详细地介绍我们的实验设置。

4实验结果

4.1实验装置

为了使比较尽可能有意义,我们遵循BERT 的设置,使用BOOKCORPUS 和英语Wikipedia 进行训练前基线模型。这两个语料库由大约16GB的未压缩文本组成。我们将输入格式化为“ [ C L S ] x 1 [ S E P ] x 2 [ S E P ] [CLS] x_1 [SEP] x_2 [SEP] [CLS]x1[SEP]x2[SEP] ”,其中 x 1 = x 1 , 1 , x 1 , 2 ⋅ ⋅ ⋅ , x 2 = x 1 , 1 , x 1 , 2 ⋅ ⋅ ⋅ x_1 = x_{1,1}, x_{1,2}···,x_2 = x_{1,1}, x_{1,2}··· x1=x1,1,x1,2x2=x1,1,x1,2 是两个句段(句段通常由一个以上的自然句子组成,Liu等人已证明这对提高表现很有帮助。 我们总是将最大输入长度限制为512,并随机生成小于512的输入序列,概率为10%。和BERT一样,我们使用的词汇量是30,000,语句标识使用同XLNet。

我们使用n-gram mask为MLM目标生成 mask输入,每个n-gram mask的长度是随机选择的。 长度为n的概率为

我们将n-gram(即n)的最大长度设置为3(即,MLM 目标最多可以包含3个完整的单词,例如“White House correspondents”)。

所有的模型更新都使用batch size为4096和一个具有学习率0.00176的LAMB优化器 。除非另有说明,我们对所有型号进行125,000步的培训。在Cloud TPU V3上进行培训。根据模型大小,用于训练的TPUs数量从64到512不等。

4.2评价基准

4.2.1内在准备评估

为了监控培训进度,根据SQuAD和RACE的开发集创建了一个开发集。 我们报告MLM和句子分类任务的准确性。 注意,我们仅使用此集合来检查模型如何收敛; 它的使用方式不会影响任何下游评估的性能,例如通过模型选择。

4.2.2下游评价

我们在三个流行的基准上评估我们的模型:通用语言理解评估(GLUE)基准,两个版本的斯坦福问答数据集,以及考试的复习理解(RACE)数据集(Lai等人,2017)。 为了完整起见,我们在附录A.3中提供了这些基准的描述。 我们对开发集执行早期停止操作,除了基于任务排行榜的最终比较(我们还报告测试集结果)之外,我们会报告所有比较。 对于开发集上存在较大差异的GLUE数据集,我们报告了5次运行的中位数。

4.3 BERT和ALBERT的总体比较

我们现在准备量化第3节中描述的设计选择的影响,特别是关于参数效率的选择。参数效率的提高体现了ALBERT设计选择最重要的优势,如表2所示:只有约70%的BERT-large的参数,ALBERT-xxlarge比BERT-large取得了显著的改进,这是通过几个代表性下游任务的开发集得分的差异来衡量的:SQuAD v1.1 (+1.9%), SQuAD v2.0 (+3.1%), MNLI (+1.4%), SST-2 (+2.2%), and RACE (+8.4%)

另一个有趣的发现是,在相同的训练配置(相同数量的TPUs)下,训练时的数据吞吐量的速度。因为交流少,计算少,与相应的BERT模型相比,ALBERT模型具有更高的数据吞吐量。如果我们使用BERT-large作为基线,我们观察到ALBERT-large在遍历数据时大约快1.7倍,而ALBERT-xxlarge由于结构更大,大约慢3倍。

接下来,我们进行切除实验,量化每个设计选择对ALBERT的贡献。

4.4因式分解嵌入参数化

表3显示了使用ALBERT-base配置设置更改词汇表嵌入大小E的效果(参见表1),使用的是同一组具有代表性的下游任务。在非共享条件下(BERT-style),更大的嵌入大小提供更好的性能,但并不是很多。在全共享条件下(albert风格),大小为128的嵌入似乎是最好的。基于这些结果,我们在以后的所有设置中使用嵌入大小E = 128,作为进一步扩展的必要步骤。

表2

表 2 表2 2

表2:Dev设置了基于BOOKCORPUS和Wikipedia的125k步预训练模型的结果。在这里和其他地方,Avg列的计算方法是对其左侧的下游任务的得分进行平均(每个SQuAD的F1和EM两个数字首先进行平均)。

表3

表 3 : 词 汇 表 嵌 入 大 小 对 A L B E R T − b a s e 性 能 的 影 响 表3:词汇表嵌入大小对ALBERT-base性能的影响 3:ALBERTbase

4.5跨层参数共享

表4

表 4 : 跨 层 参 数 共 享 策 略 的 效 果 , A L B E R T − b a s e 配 置 表4:跨层参数共享策略的效果,ALBERT-base配置 4:ALBERTbase

表4展示了各种跨层参数共享策略的实验,使用了一个ALBERT-base配置(表1),包含两个embedding 大小(E = 768和E = 128)。我们比较了全共享策略(albert风格)、非共享策略(bert风格)和中间策略,在这些策略中,只有attention参数是共享的(但不包括FNN参数)或只有FFN参数是共享的(但不包括attention参数)。

全共享策略在两种情况下都会影响性能,但在E = 128(- 1.5 on Avg)时影响不那么严重与E = 768相比(-2.5 on Avg)。此外,性能下降主要来自共享FFN-layer参数,而共享attention参数在E = 128 (+0.1 on Avg)时没有下降,在E = 768 (-0.7 on Avg)时略有下降。

还有其他跨层共享参数的策略。例如,我们可以将L层划分为N个大小为M的组,每个大小为M的组共享参数。总的来说,我们的实验结果表明,组规模M越小,我们得到的性能越好。然而,减小组大小M也会显著增加总体参数的数量。我们选择共享策略作为默认选择。

4.6句子顺序预测(SOP)

我们比较了句子间附加损失的三个实验条件:none (XLNet- and RoBERTa-style), NSP (BERT-style), and SOP (ALBERT-style),使用ALBERTbase配置。结果如表5所示,包括内在的(MLM, NSP, and SOP tasks的准确性)和下游任务。

img

表 5 : 句 子 预 测 损 失 、 N S P 和 S O P 对 内 在 任 务 和 下 游 任 务 的 影 响 。 表5:句子预测损失、NSP和SOP对内在任务和下游任务的影响。 5:NSPSOP

固有任务的结果表明,NSP损失对SOP任务没有任何判别能力(准确性为52.0%,类似于“None”条件下的随机猜测性能)。 这使我们可以得出结论,NSP最终仅对主题转移建模。 相反,SOP损失确实可以较好地解决NSP任务(准确度为78.9%),而SOP任务甚至更好(准确度为86.5%)。 更重要的是,SOP损失似乎可以持续改善多句编码任务的下游任务性能(SQuAD1.1大约为+ 1%,SQuAD2.0为+ 2%,RACE为+ 1.7%),从而提高了平均得分 大约+ 1%。

4.7如果我们训练同样的时间呢?

表2中的加速结果表明,与ALBERT-xxlarge相比,BERT-large的数据吞吐量大约高3.17倍。 由于更长的训练通常会带来更好的性能,因此我们进行比较,而不是控制数据吞吐量(训练步骤数),而是控制实际训练时间(即让模型训练相同的小时数) 。 在表6中,我们比较了在进行了400k训练步骤(训练34h)之后,BERT-large模型的性能,大致相当于训练有125k训练步骤(训练32h)的ALBERT-xxlarge模型所需的时间。

经过大致相同的时间训练后,ALBERT-xxlarge明显优于BERT-large:平均水平提高+ 1.5%,RACE的差异高达+ 5.2%

表6

表 6 : 训 练 时 间 控 制 的 效 果 , B E R T − l a r g e 对 比 A L B E R T − x x l a r g e 配 置 。 表6:训练时间控制的效果,BERT-large对比ALBERT-xxlarge配置。 6:BERTlargeALBERTxxlarge

4.8附加训练数据和DROPOUT效应

至此,完成的实验仅使用Wikipedia和BOOKCORPUS数据集。 在本节中,我们报告了XLNet)和RoBERTa所使用的附加数据的影响的测量结果。

图2a绘制了在没有附加数据和有附加数据的情况下,两种情况下的开发集MLM精度,其中后一种情况有明显的提高。 除了SQuAD基准(基于Wikipedia,因此受到域外培训材料的负面影响)之外,我们还观察到了表7中下游任务的性能改进。

表7

表 7 : 使 用 A L B E R T − b a s e 配 置 的 附 加 训 练 数 据 的 效 果 表7:使用ALBERT-base配置的附加训练数据的效果 7:使ALBERTbase

我们还注意到,即使在训练了100万步之后,我们最大的模型仍然没有对训练数据进行过度拟合。因此,我们决定删除dropout,以进一步增加我们的模型容量。

图2

图 5 : 训 练 中 添 加 数 据 和 删 除 d r o p o u t 的 效 果 。 图5:训练中添加数据和删除dropout的效果。 5:dropout

图5b中的曲线显示,去除dropout可以显着提高MLM的准确性。 在大约1M的培训步骤中对ALBERT-xxlarge进行的中间评估(表8)还证实,删除dropout有助于下游任务。 有经验(Szegedy等,2017)和理论(Li等,2019)的证据表明,卷积神经网络中batch normalization和dropout相结合可能会产生有害的结果。 据我们所知,我们是第一个表明dropout会损害大型基于Transformer的模型的性能的人。 但是,ALBERT的基础网络结构是transformer的一种特殊情况,需要进一步试验以查看这种现象是否在其他基于transformer-based的体系结构中出现。

表8

表 8 : 去 除 d r o p o u t 的 效 果 , 测 量 的 A L B E R T − x x l a r g e 配 置 表8:去除dropout的效果,测量的ALBERT-xxlarge配置 8:dropoutALBERTxxlarge

4.9 NLU任务的最新进展

我们在本节中报告的结果利用了Devlin等人使用的训练数据。 (2019),以及Liu等人使用的其他数据。 (2019)和Yang等。 (2019)。 我们在两种设置下报告了最新的结果,以进行fine-tuning:single-model和ensembles。 在这两种设置中,我们仅执行单任务fine-tuning。 在开发集上,我们报告了五次运行的中位数结果。

表9

表 9 : G L U E 基 准 测 试 的 最 新 结 果 。 对 于 s i n g l e − t a s k s i n g l e − m o d e l 结 果 , 我 们 报 告 A L B E R T 在 1 M 步 ( 与 R o B E R T a 相 当 ) 和 在 1.5 M 步 。 A L B E R T e n s e m b l e 使 用 的 是 经 过 1 米 、 1.5 米 和 其 他 步 数 训 练 的 模 型 表9:GLUE基准测试的最新结果。对于single-task single-model结果\\,我们报告ALBERT在1M步(与RoBERTa相当)和在1.5M步。\\ALBERT ensemble使用的是经过1米、1.5米和其他步数训练的模型 9:GLUEsingletasksinglemodelALBERT1M(RoBERTa)1.5MALBERTensemble使11.5

单模型ALBERT配置结合了所讨论的最佳性能设置:ALML-xxlarge配置(表1)结合了MLM和SOP损耗,并且没有dropout。

根据开发集性能选择有助于最终整体模型的检查点; 根据任务的不同,为此选择考虑的检查点数量在6到17之间。 对于GLUE(表9)和RACE(表10)基准,我们对集合模型的模型预测取平均,其中使用12层和24层架构从不同的训练步骤对候选者进行fine-tuned。 对于SQuAD(表10),我们对那些具有多个概率的跨度的平均预测得分进行平均。 我们还将“无法回答”的决定的得分平均。

single-model结果和ensemble结果均表明,ALBERT对于所有三个基准均显着改善了最新技术水平,GLUE得分为89.4,SQuAD 2.0测试F1得分为92.2,RACE测试准确性为89.4。 后者似乎是一个特别强大的改进,绝对值比BERT跃升+ 17.4%,比XLNet增长7.6%, 比RoBERTa高出6.2%,比DCMI +高出5.3%,这是专门为阅读理解任务设计的多种模型的集合。 我们的单一模型可达到86.5%的准确度,仍比最新的集成模型高2.4%。

表10

表 10 : 最 先 进 的 结 果 , 对 S Q u A D 和 R A C E 的 基 准 。 表10:最先进的结果,对 SQuAD和RACE的基准。 10:SQuADRACE

5讨论

尽管ALBERT-xxlarge的参数比BERT-large的参数少,并且获得了明显更好的结果,但由于其较大的结构,计算量更大。因此,重要的下一步是通过稀疏注意力(Child等,2019)和阻止注意力(Shen等,2018)之类的方法来加快ALBERT的训练和推理速度。可以提供更多表示能力的正交研究包括硬示例挖掘(Mikolov等,2013)和更有效的语言建模培训(Yang等,2019)。此外,尽管我们有令人信服的证据表明句子顺序预测是一种更一致有用的学习任务,可以带来更好的语言表示,但我们假设当前的自我监督训练损失可能尚未捕捉到更多维度,这可能会产生更多的表示形式结果表示的能力。

论文:

https://arxiv.org/pdf/1909.11942.pdf

参考

https://blog.csdn.net/weixin_37947156/article/details/101529943

https://zhuanlan.zhihu.com/p/84559048

https://zhuanlan.zhihu.com/p/91501094

https://blog.csdn.net/weixin_43301333/article/details/104861975?utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7Edefault-7.control&dist_request_id=1328767.59867.16176209524239993&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7Edefault-7.control

用深度矩阵分解给词向量矩阵瘦身

这篇关于6.4 ALBERT全面理解的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/331720

相关文章

认识、理解、分类——acm之搜索

普通搜索方法有两种:1、广度优先搜索;2、深度优先搜索; 更多搜索方法: 3、双向广度优先搜索; 4、启发式搜索(包括A*算法等); 搜索通常会用到的知识点:状态压缩(位压缩,利用hash思想压缩)。

【生成模型系列(初级)】嵌入(Embedding)方程——自然语言处理的数学灵魂【通俗理解】

【通俗理解】嵌入(Embedding)方程——自然语言处理的数学灵魂 关键词提炼 #嵌入方程 #自然语言处理 #词向量 #机器学习 #神经网络 #向量空间模型 #Siri #Google翻译 #AlexNet 第一节:嵌入方程的类比与核心概念【尽可能通俗】 嵌入方程可以被看作是自然语言处理中的“翻译机”,它将文本中的单词或短语转换成计算机能够理解的数学形式,即向量。 正如翻译机将一种语言

【C++高阶】C++类型转换全攻略:深入理解并高效应用

📝个人主页🌹:Eternity._ ⏩收录专栏⏪:C++ “ 登神长阶 ” 🤡往期回顾🤡:C++ 智能指针 🌹🌹期待您的关注 🌹🌹 ❀C++的类型转换 📒1. C语言中的类型转换📚2. C++强制类型转换⛰️static_cast🌞reinterpret_cast⭐const_cast🍁dynamic_cast 📜3. C++强制类型转换的原因📝

6.4双边滤波

目录 实验原理 示例代码1 运行结果1 实验代码2 运行结果2 实验原理 双边滤波(Bilateral Filtering)是一种非线性滤波技术,用于图像处理中去除噪声,同时保留边缘和细节。这种滤波器结合了空间邻近性和像素值相似性的双重加权,从而能够在去噪(平滑图像)的同时保留图像的边缘细节。双边滤波器能够在的同时,保持边缘清晰,因此非常适合用于去除噪声和保持图像特征。在Op

深入理解RxJava:响应式编程的现代方式

在当今的软件开发世界中,异步编程和事件驱动的架构变得越来越重要。RxJava,作为响应式编程(Reactive Programming)的一个流行库,为Java和Android开发者提供了一种强大的方式来处理异步任务和事件流。本文将深入探讨RxJava的核心概念、优势以及如何在实际项目中应用它。 文章目录 💯 什么是RxJava?💯 响应式编程的优势💯 RxJava的核心概念

如何通俗理解注意力机制?

1、注意力机制(Attention Mechanism)是机器学习和深度学习中一种模拟人类注意力的方法,用于提高模型在处理大量信息时的效率和效果。通俗地理解,它就像是在一堆信息中找到最重要的部分,把注意力集中在这些关键点上,从而更好地完成任务。以下是几个简单的比喻来帮助理解注意力机制: 2、寻找重点:想象一下,你在阅读一篇文章的时候,有些段落特别重要,你会特别注意这些段落,反复阅读,而对其他部分

从状态管理到性能优化:全面解析 Android Compose

文章目录 引言一、Android Compose基本概念1.1 什么是Android Compose?1.2 Compose的优势1.3 如何在项目中使用Compose 二、Compose中的状态管理2.1 状态管理的重要性2.2 Compose中的状态和数据流2.3 使用State和MutableState处理状态2.4 通过ViewModel进行状态管理 三、Compose中的列表和滚动

深入理解数据库的 4NF:多值依赖与消除数据异常

在数据库设计中, "范式" 是一个常常被提到的重要概念。许多初学者在学习数据库设计时,经常听到第一范式(1NF)、第二范式(2NF)、第三范式(3NF)以及 BCNF(Boyce-Codd范式)。这些范式都旨在通过消除数据冗余和异常来优化数据库结构。然而,当我们谈到 4NF(第四范式)时,事情变得更加复杂。本文将带你深入了解 多值依赖 和 4NF,帮助你在数据库设计中消除更高级别的异常。 什么是

分布式系统的个人理解小结

分布式系统:分的微小服务,以小而独立的业务为单位,形成子系统。 然后分布式系统中需要有统一的调用,形成大的聚合服务。 同时,微服务群,需要有交流(通讯,注册中心,同步,异步),有管理(监控,调度)。 对外服务,需要有控制的对外开发,安全网关。

Java IO 操作——个人理解

之前一直Java的IO操作一知半解。今天看到一个便文章觉得很有道理( 原文章),记录一下。 首先,理解Java的IO操作到底操作的什么内容,过程又是怎么样子。          数据来源的操作: 来源有文件,网络数据。使用File类和Sockets等。这里操作的是数据本身,1,0结构。    File file = new File("path");   字