“瘦身成功”的ALBERT,能取代BERT吗?

      最后更新:2020-03-24 11:36:34 手机定位技术交流文章

      13来自凹非坦
      量子位报告|公共编号Qbita

      参数比BERT小80%,但性能有所提高

      这是——阿尔伯特,谷歌去年提出的“减肥成功的伯特”模型

      自发布以来就备受关注,两者之间的比较成为热门话题。

      。最近,网民Naman Bansal提出了一个问题:

      应该使用ALBERT而不是BERT吗?通过比较可知

      是否可以替换。

      BERT和ALBERT

      BERT型号是众所周知的

      |由谷歌在1992-018年提出,训练语料库非常大,包含33亿字

      模式的创新集中在预培训过程。采用掩蔽学习和下一句预测分别捕捉单词和句子的表达。

      BERT的出现完全改变了预训练产生的单词向量和下游特定的自然语言处理任务之间的关系。

      一年后,谷歌提出了ALBERT,也被称为“lite-BERT”。主干网类似于BERT。变压器编码器仍在使用,激活功能也是GELU。

      的最大成功在于参数比BERT小80%,同时取得了更好的结果。与BERT相比,

      的改进主要包括嵌入向量参数化的因式分解、跨层参数共享、句间相干性损失的SOP和脱落的消除

      下图显示了BERT和ALBERT在SqL和RACE数据集上的性能测试比较结果。

      可以看出,ALBERT的业绩取得了不错的成绩

      如何实现定制语料库(预培训)ALBERT?

      为了进一步理解ALBERT,接下来,ALBERT将在自定义语料库中实现。

      采用的数据集是“餐饮评论数据集”。目标是通过ALBERT模型识别菜肴的名称

      步骤1:下载数据集并准备文件

      1 #下载文件数据23!wget http://github . com/LydiaXiaohongLi/Albert _ Finetune _ with _ Pretain _ on _ Custom _ Corpors/raw/master/data _ toy/dish _ name _ train . CSV 4!wget http://github . com/LydiaXiaohongLi/Albert _ Finetune _ with _ Pretain _ on _ Custom _ Corpors/raw/master/data _ toy/dish _ name _ val . CSV 5!wget http://github . com/LydiaXiaohongLi/Albert _ Finetune _ with _ Pretain _ on _ Custom _ Corpors/raw/master/data _ toy/restaurant _ review . txt 6!wget http://github . com/LydiaXiaohongLi/Albert _ Finetune _ with _ Pretain _ on _ Custom _ Corpors/raw/master/data _ toy/restaurant _ review _ no unct . txt 7!wget http://github . com/LydiaXiaohongLi/Albert _ Finetune _ with _ Pretain _ on _ Custom _ Corpors/raw/master/models _ toy/Albert _ config . JSON 8!wget http://github . com/LydiaXiaohongLi/Albert _ Finetune _ with _ Pretain _ on _ Custom _ Corpors/raw/master/model _ check point/Finetune _ check point 9!创建文件并设置ALBERT 12 13!pip安装sentencepiece 14!git克隆https://github.com/google-research/ALBERT 15!巨蟒。/ALbert/create _ pretraining _ data . py-input _ file ' ' restaurant _ review . txt ' '-output _ file ' ' restaurant _ review _ train ' '-vocab _ file ' ' vocab . txt ' '-max _ seq _ length = 64 16!pip安装变压器17!Pip安装记录

      步骤2:使用变压器并定义层

      1 #定义层从变压器开始2 3。albertpretainedmodel 4 from transformers . configuration _ Albert import AlbertConfig 5 import torch . nn as nn 6 class AlbertSequenceOrderHead(nn .模块):7 def __init__(自我,配置):8 super()。__init__() 9 self.dense = nn。线性(配置隐藏大小,2) 10 self.bias = nn。参数(torch . zeros(2))11 12 def forward(self,hidden _ States):13 hidden _ States = self . dense(hidden _ States)14 prediction _ scores = hidden _ States+self . bias 15 16 return prediction _ scores 17 18 from torch . nn import CrossEntropyLoss 19 from transformers . modeling _ Bert import ACT2FN 20 class AlbertFortrein(AlbertPretainedModel):21 22 def _ init _ _(self,config): 23 super()。_ _ init _ _(config)24 25 self . Albert = AlbertModel(config)26 27 #对于掩码LM 28 #原始的大规模实现,通过密集层29 #创建了新的输出权重。线性(config.hidden_size,Config . embedding _ size)3self . predictions _ activation = act2f n

      ,我们可以看到模型成功地从膳食注释中提取了菜肴名称。

      型号竞赛

      可以从上面的实战应用中看出。艾伯特很瘦,但成绩很好

      那么,用很少的参数和很好的结果,可以代替BERT吗?

      我们可以仔细观察两者之间实验性能的比较,这里的加速指的是训练时间

      ALBERT训练速度更快,因为在分布式训练中数据和吞吐量更少但是推理时间仍然需要与BERT相同的变压器计算

      可以概括为:在相同的训练时间下,

      ALBERT比BERT效果更好在同样的推理时间下,ALBERT的基数和规模都不如BERT。

      此外,Naman Bansal认为,由于ALBERT的结构,实现ALBERT的计算成本高于BERT

      因此,这仍然是“鱼和熊掌不可兼得”的关系。如果艾伯特要完全超越和取代伯特,还需要进一步的研究和改进。

      门户

      博客地址:
      https://medium.com/@ namanbansal 9909/我们应该从伯特转向艾伯特-e6fbb 7779 d3e


      -end-

      qubit qbitai,负责人编号

      密切关注我们,了解

      的最新技术发展

      本文由 在线网速测试 整理编辑,转载请注明出处,原文链接:https://www.wangsu123.cn/news/2588.html

          热门文章

          文章分类