【深度学习】BERT变体—ALBERT
创始人
2024-05-29 19:02:20
0

        ALBERT的初衷是想解决BERT中参数量过多的问题,论文全称为:ALBERT: A Lite BERT for Self-supervised Learning of Language Representations。 

        相较于BERT,ALBERT模型减少BERT模型的参数量;预训练中的Next Sentence Prediction(NSP)任务使用了Sentence Order Prediction(SOP)进行代替;增加了n-gram mask,使用了LAMB优化器来代替AdamW,该优化器在batch size较大时效果更佳。

1 减少模型参数量

1-1 嵌入层参数分解(Factorized embedding layer parameterization )

        在BERT中,使用WordPiece分词器创建WordPiece Token。其WordPiece Token的Embedding大小被设成和隐藏层Embedding大小(向量表示大小)一样。而WordPiece  Embedding是上下文无关(context-independent)的表征,它是从词表中的独热编码向量学习的。隐藏层中的Embeddings则相反,学习一种上下文相关(context-dependent)的表征,是编码器返回的有上下文信息的表示,BERT这类模型的表征能力更多是来自这些上下文相关的表征学习。

        BERT和RoBERTa模型中,WordPiece拆分的词表映射的词向量维度E是与Transformer中的隐藏层大小H是绑定的,即E=H。为了编码更多的信息到隐藏层嵌入中,我们通常需要设置一个很大的隐藏层嵌入大小。比如,在BERT-base中,其隐藏层嵌入大小 H为768。那么隐藏层嵌入的维度是 V × H = 30000 × 768 。因为WordPiece嵌入大小E被设成预隐藏层嵌入大小一样,它的大小也为768。这样,WordPiece嵌入层的维度为 V × E = 30000 × 768 。也就是说,增加隐藏层嵌入大小H也会同时增加WordPiece嵌入大小E。解绑词向量的维度隐藏层大小,可以根据模型的需要更加有效得利用模型的所有参数,这意味着H可以远大于E,H>>E。

        ALBERT中使用嵌入层参数分解方法将嵌入矩阵分解为更小的矩阵。将 WordPiece  Embedding 和 Hidden  Embedding分离。首先将独热向量投影到低维嵌入空间 V × E ,然后再将该低维嵌入投影到隐藏空间 E × H ,而不是直接投影独热向量到隐藏空间( V × H )。不是直接投影 V × H ,而是将这步分解为 V × E 和 E × H 。

        举个例子,假设我们词表大小 V = 30000 ,我们将 E 和 H 分离。假设我们将WordPiece嵌入大小设置为较小的维度,假设 E = 128。同时隐藏层大小保持不变,还是 H=768。现在我们通过以下步骤来投影 V × H :

        (1)将one-hot向量投影到低维WordPiece嵌入向量空间 V × E = 30000 × 128 ;
        (2)投影WordPiece嵌入空间到隐藏空间 E × H = 128 × 768 ;
        (3)将 V × H = 30000 × 768 分解为 V × E = 30000 × 128 和 E × H = 128 × 768 。如此一来,可以随意调整隐藏层维度,而无需担心导致模型参数量增加过多。

1-2 跨层参数共享(Cross-layer parameter sharing)

         BERT包含 N 个编码器层。比如BERT-base包含12个编码器层,在训练时,需要学习所有编码器层的参数。而使用跨层参数共享的方法,我们只需要学习第一个编码器层的参数,然后让其他所有层共用这套参数。

        编码层中每一层的结构都是相同的,它们都包含多头注意力和前馈神经网络的子层。在应用跨层参数共享时有几种不同的方式:

        1.All-shared: 共享第一个编码器层的所有子层参数到其他编码器层
        2.Shared feedforward network:只共享第一个编码器层的前馈神经网络层参数到其他编码器层(的前馈神经网络)
        3.Shared attention:只共享第一个编码器层的多头注意力层参数到其他编码器层(的多头注意力层)
        ALBERT模型使用All-shared模式。如下图为BERT和ALBERT的参数对比。

2 Sentence Order Prediction(SOP)

        BERT中提出,next-sentence prediction (NSP)任务是为了提升预训练模型在下流任务的表现,比如那些需要理解句子对之间的关系的自然语言任务推理。然而,RoBERTa研究表明NSP的效果是不可靠的,消除这个预训练任务反而能够提升一些下流任务的效果。并且,NSP结合了主题预测和连贯性预测到一个任务中。为了解决这个问题,ALBERT中引入了SOP任务,SOP(句子顺序预测)基于句子间的连贯性而不是主题预测。

        从NSP的设计来看:负样本是从不同的文档中提取的语料,意味着负样本在主题和连贯性上(topic and coherence)都是偏离的。NSP是将主题预测和连贯性预测两个任务进行合并了,但是主题预测相比连贯性预测简单许多,而主题预测与MLM是存在更多的重叠了。

        在此理论基础上,ALBERT仍然认为句子间的建模能力是语言理解中一个重要部分,但是要避开主题预测,并且更关注于句子间连贯性的建模能力,提出了另外一种任务:sentence-order prediction (SOP) :类似NSP,SOP也是一个二分类任务。在NSP中,我们训练模型去预测某个句子对是属于isNext还是notNext类别,而在SOP任务中,我们训练模型去预测给定句子对中的句子顺序是否被交换过正样本仍然是与BERT一样,从相同的文档中提取两个连续的片段;负样本则与BERT不同,首先依旧是相同的文档中提取两个连续的片段,但是调换这个片段的顺序。

Sentence 1: She cooked pasta
Sentence 2: It was delicious 

        Sentence1和Sentence2是有连续关系的,因此我们把它们分为正例。现在我们创建一个负例,只要简单地交换这两个句子的顺序即可: 

Sentence 1: It was delicious
Sentence 2: She cooked pasta 

 3 N-gram MASK

        ALBERT在数据处理时,增加了n-gram mask。比如tokens序列为a b c d,按照原mask方法,仅存在这些mask选项:[a, b, c, d]。以3-gram为例举例可以mask的对象:mask_list = [a, b, c, d, a b, b c, c d, a b c, b c d]。

4 其他调整

    与BERT类似,ALBERT模型也使用英文维基百科和Toronto BookCorpus数据集。在预训练过程中,训练ALBERT还另外进行了一些调整:

  1. 输入序列会以10%的概率让它低于最大长度512;
  2. 使用LAMB优化器(针对大batch size的优化器),batch size为4096,学习率为0.00176

5  ALBERT 使用

from transformers import AlbertTokenizer, AlbertModel
model = AlbertModel.from_pretrained('albert-base-v2')
tokenizer = AlbertTokenizer.from_pretrained('albert-base-v2')sentence = "Paris is a beautiful city" 
inputs = tokenizer(sentence, return_tensors="pt")
print(inputs)

Reference:

https://helloai.blog.csdn.net/article/details/120499194?spm=1001.2101.3001.6650.1&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-1-120499194-blog-124881981.pc_relevant_3mothn_strategy_recovery&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-1-120499194-blog-124881981.pc_relevant_3mothn_strategy_recovery&utm_relevant_index=2https://helloai.blog.csdn.net/article/details/120499194?spm=1001.2101.3001.6650.1&utm_medium=distribute.pc_relevant.none-task-blog-2~default~CTRLIST~Rate-1-120499194-blog-124881981.pc_relevant_3mothn_strategy_recovery&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2~default~CTRLIST~Rate-1-120499194-blog-124881981.pc_relevant_3mothn_strategy_recovery&utm_relevant_index=2

相关内容

热门资讯

流年伤感的句子 有关流年伤感的句子  看樱花满天,悲伤在流转,却掩不住斑驳的流年。下面是小编为大家整理的伤感的句子,...
运用夸张手法的句子有哪些 运用夸张手法的句子有哪些(精选50句)  无论是身处学校还是步入社会,大家都接触过很多优秀的句子吧,...
法语句子唯美后悔精选232句 法语句子唯美后悔 精选64句1. 命运的手摆弄着流年的琴弦,迷失在历史的长河中,却弹不出完整的曲调。...
看破红尘的句子 看破红尘的句子看破红尘的句子1  1 、毁灭人只要一句话,培植一个人却要千句话,请你多口下留情。  ...
二十年后的精彩句子精选54句 二十年后的精彩句子 精选46句1. 泾溪石险人兢慎,终岁不闻倾覆人。——杜荀鹤《泾溪》2. 花有重开...
带有落落大方的句子精选101... 带有落落大方的句子 精选80句1. 客人有些吃惊,但马上又恢复了落落大方的风度。2. 只见这簪子雕刻...
有仇必报的狠句子精选108句 有仇必报的狠句子 精选44句1. 恨没有错、错的是恨一辈子。有仇恨也没有错、错的是有仇也不去报。2....
安静淡然的意境句子 安静淡然的意境句子  无论在学习、工作或是生活中,大家都收藏过自己喜欢的句子吧,在不同类型的文章里,...
夸女孩儿的句子精选126句 夸女孩儿的句子 精选29句1. 你也许没有一簇樱唇两排贝齿,但你的谈吐也应该高雅脱俗,机智过人。2....
劝女人去看医生的句子精选28... 劝女人去看医生的句子 精选29句1. 一笑烦恼跑;二笑怨憎消;三笑憾事了;四笑病魔逃;五笑永不老;六...
晚安正能量的句子分享   世上只有一种英雄主义,就是在认清生活真相之后依然热爱生活,晚安正能量的句子分享。下面是YJBYS...
西游记每一章好句 西游记每一章好句  《西游记》为明代小说家吴承恩所著。取材于《大唐西域记》和民间传说、元杂剧。下面小...
大爱优美句子精选474句 大爱优美句子 精选125句1. 成熟的人不问过去;聪明的人不问现在;豁达的人不问未来。2. 那些我们...
你若安好便是晴天 林徽因传 导语:《你若安好便是晴天》林徽因传的优美句子很多,下面是小编整理的里面的句子,欢迎赏析。你若安好便是...
烂漫婚礼的句子精选365句 烂漫婚礼的句子 精选113句1. 有一种幸福叫做:你们。2. 我二十多年前的人生你没有参与,今后的人...
描述房间乱的句子精选362句 描述房间乱的句子 精选56句1. “和床睡有什么意思?”2. 君子千里同舟,小人隔墙易宿。3. 孩子...
形容很快乐的唯美句子精选22... 形容很快乐的唯美句子 精选69句1. 快乐像涟漪一样在心中轻轻荡漾,开怀大笑,喜地欢天,嬉皮笑脸。2...
对别人的狠句子精选254句 对别人的狠句子 精选85句1. 狗叫嚣算什么本事,真咬到我才算你狠。2. 花开终是落,花落终成空。3...
讽刺有钱人高傲的句子精选21... 讽刺有钱人高傲的句子 精选52句1. 你还梦不梦,你还痛不痛,回忆这么重,你怎么背得动。2. 我一直...
简短的聚会感言句子 简短的聚会感言句子(精选50句)  在日常学习、工作或生活中,我们难免会萌生一些新的感悟,这时应该马...