嘉兴网站建设技术开发,网页开发网站,网站备案证书查询,做网站都是需要什么作者#xff1a;amitness编译#xff1a;ronghuaiyang正文共#xff1a; 3116 字 21 图预计阅读时间#xff1a; 9 分钟原文链接#xff1a;BERT的youxiu变体#xff1a;ALBERT论文图解介绍mp.weixin.qq.comALBERT作为BERT的一个变体#xff0c;在保持性能的基础上amitness编译ronghuaiyang正文共 3116 字 21 图预计阅读时间 9 分钟原文链接BERT的youxiu变体ALBERT论文图解介绍mp.weixin.qq.comALBERT作为BERT的一个变体在保持性能的基础上大大减少了模型的参数使得实用变得更加方便是经典的BERT变体之一。考虑下面给出的句子。作为人类当我们遇到“apple”这个词时我们可以把“apple”这个词和我们对“apple”这个水果的表征联系起来根据上下文将“apple”与水果联系在一起而不是与公司联系在一起理解“he ate an apple”在字符级单词级和句子级理解它NLP最新发展的基本前提是赋予机器学习这些表示的能力。2018年谷歌发布了BERT试图基于一些新的想法来学习这个表示回顾: BERT1. 掩码语言建模语言建模包括预测单词的上下文作为一种学习表示的方法。传统上这包括到当给出前面的单词时预测句子中的下一个单词。相反BERT使用了一个掩码语言模型目标在这个模型中我们在文档中随机地对单词进行掩码并试图根据周围的上下文来预测它们。2. 下一个句子预测“下一个句子预测”的目的是检测两个句子是否连贯。为此训练数据中的连续句被用作一个正样本。对于负样本取一个句子然后在另一个文档中随机抽取一个句子放在它的旁边。在这个任务中BERT模型被训练来识别两个句子是否可以同时出现。3. Transformer结构为了解决上述两项任务BERT使用了多层Transformer模块作为编码器。单词向量被传递到各个层以捕获其含义并为基本模型生成大小为768的向量。Jay Alammar有一篇非常好的文章http://jalammar.github.io/bert/更深入地阐述了Transformer的内部机制。BERT的问题BERT发布后在排行榜上产生了许多NLP任务的最新成果。但是模型非常大导致了一些问题。“ALBERT”论文将这些问题分为两类1、内存限制和通信开销考虑一个包含一个输入节点、两个隐藏节点和一个输出节点的简单神经网络。即使是这样一个简单的神经网络由于每个节点的权重和偏差也会有7个参数需要学习。BERT-large模型是一个复杂的模型它有24个隐含层在前馈网络和注意头中有很多节点所以有3.4亿个参数。如果你想在BERT的基础上进行改进你需要大量的计算资源的需求来从零开始进行训练并在其上进行迭代这些计算需求主要涉及gpu和TPUs但是这些设备有内存限制。所以模型的大小是有限制的。分布式训练是解决这个问题的一种流行方法。我们以BERT-large上的数据并行性为例其中训练数据被分到两台机器上。模型在两台机器上对数据块进行训练。如图所示你可以注意到在梯度同步过程中要传输的大量参数这会减慢训练过程。同样的瓶颈也适用于模型的并行性即我们在不同的机器上存储模型的不同部分。2、模型退化最近在NLP研究社区的趋势是使用越来越大的模型以获得在排行榜上的最先进的性能。ALBERT 的研究表明这可能会导致收益退化。在论文中作者做了一个有趣的实验。如果更大的模型可以带来更好的性能为什么不将最大的BERT模型(BERT-large)的隐含层单元增加一倍从1024个单元增加到2048个单元呢?他们称之为“BERT-xlarge”。令人惊讶的是无论是在语言建模任务还是在阅读理解测试(RACE)中这个更大的模型的表现都不如BERT-large模型。从原文给出的图中我们可以看到性能是如何下降的。BERT-xlarge的性能比BERT-large差尽管它更大并且有更多的参数。从BERT到ALBERTALBERT在BERT 的基础上提出了一些新颖的想法来解决这些问题1、跨层参数共享BERT-large模型有24层而它的基础版本有12层。随着层数的增加参数的数量呈指数增长。为了解决这个问题ALBERT使用了跨层参数共享的概念。为了说明这一点让我们看一下12层的BERT-base模型的例子。我们只学习第一个块的参数并在剩下的11个层中重用该块而不是为12个层中每个层都学习不同的参数。我们可以只共享feed-forward层的参数只共享注意力参数也可以共享整个块的参数。论文对整个块的参数进行了共享。与BERT-base的1.1亿个参数相比ALBERT模型只有3100万个参数而使用相同的层数和768个隐藏单元。当嵌入尺寸为128时对精度的影响很小。精度的主要下降是由于feed-forward层的参数共享。共享注意力参数的影响是最小的。跨层参数策略对性能的影响2、句子顺序预测 (SOP)BERT引入了一个叫做“下一个句子预测”的二分类损失。这是专门为提高使用句子对如“自然语言推断”的下游任务的性能而创建的。基本流程为从训练语料库中取出两个连续的段落作为正样本从不同的文档中随机创建一对段落作为负样本像ROBERTA和XLNET这样的论文已经阐明了NSP的无效性并且发现它对下游任务的影响是不可靠的。在取消NSP任务之后多个任务的性能都得到了提高。因此ALBERT提出了另一个任务**“句子顺序预测”**。关键思想是:从同一个文档中取两个连续的段落作为一个正样本交换这两个段落的顺序并使用它作为一个负样本这使得模型能学习到更细粒度的关于段落级的一致性的区别。ALBERT推测NSP是无效的因为与掩码语言建模相比它并不是一项困难的任务。在单个任务中它混合了主题预测和连贯性预测。主题预测部分很容易学习因为它与掩码语言建模的损失有重叠。因此即使NSP没有学习连贯性预测它也会给出更高的分数。SOP提高了下游多句编码任务(SQUAD 1.1, 2.0, MNLI, SST-2, RACE)的性能。在这里我们可以看到在SOP任务上一个经过NSP训练的模型给出的分数只比随机基线略好一点但是经过SOP训练的模型可以非常有效地解决NSP任务。这就证明SOP能带来更好的学习表现。3、嵌入参数分解在BERT中使用的embeddings(word piece embeddings)大小被链接到transformer块的隐藏层大小。Word piece embeddings使用了大小为30,000的词汇表的独热编码表示。这些被直接投射到隐藏层的隐藏空间。假设我们有一个大小为30K的词汇表大小为E768的word-piece embedding和大小为H768的隐含层。如果我们增加了块中的隐藏单元尺寸那么我们还需要为每个嵌入添加一个新的维度。这个问题在XLNET和ROBERTA中也很普遍。ALBERT通过将大的词汇表嵌入矩阵分解成两个小的矩阵来解决这个问题。这将隐藏层的大小与词汇表嵌入的大小分开。这允许我们在不显著增加词汇表嵌入的参数大小的情况下增加隐藏的大小。我们将独热编码向量投影到E100的低维嵌入空间然后将这个嵌入空间投影到隐含层空间H768。结果比BERT-large模型缩小了18x的参数训练加速1.7x在GLUE, RACE和SQUAD得到SOTA结果RACE89.4%[提升45.3%]GLUE Benchmark89.4SQUAD2.0 f1 score92.2总结ALBERT标志着构建语言模型的重要一步该模型不仅达到了SOTA而且对现实世界的应用也是可行的。英文原文https://amitness.com/2020/02/albert-visual-summary/