当前位置:   article > 正文

BERT的变种_bert变种

bert变种

BERT

  1. 双向的Transformer Encoder。

  1. 2个任务:Masked LM、 Next Sentence Prediction (NSP)

  1. 3个输入:Token Embedding、Segment Embedding、Position Embedding

  1. 15%的词中,有10%不变,10%随机替换,只有80%的是真正被mask的。估计是想给模型增加扰动,或者理解为‘加噪’,有mask、有替换,也有不变的,让模型不要过分依赖mask标签,而要考虑它的上下文,甚至根据上下文进行 "纠错"。

  1. BERT的在预训练时会出现特殊的[MASK],但是它在下游的fine-tune中不会出现,这就造成了预训练和微调之间的不匹配。所以预训练时只将80%替换为[mask],缓解finetune没有[mask]时没有着力点的问题。

  1. BERT的BASE版有12层的Transformer,隐藏层Embedding的维度是768,head是12个,参数总数大概是一亿一千万。BERT的LARGE版有24层的Transformer,隐藏层Embedding的维度是1024,head是16个,参数总数大概是三亿四千万。

BERT的缺点:

  1. BERT得到的向量存在各向异性,向量值会收到词在语料中出现的频次影响,高词频编码的向量距离更近,更靠近原点。假如2个词本身语义是相同的,但由于出现的频次不同,最终的向量距离也会很大。

  1. BERT属于DAE LM的模式([Mask] 标记就相当于引入了噪音),在生成类NLP任务中,就面临训练过程和应用过程不一致的问题,导致生成类的NLP任务效果相对不是很好。

  1. 输入长度有限,只能512长度。

Transformer-XL

解决Transformer只能输入512的问题。

  • Segment-Level Recurrence Mechanism 段级递归

  • Relative Positional Encodings 相对位置编码

BERT-flow、BERT-whitening

在BERT基础上加入后处理,将向量映射到各向同性的分布上,缓解各向异性的问题。

XLNet

融合自回归LM和DAE LM两者的优点。

自回归LM(Autoregressive LM):常说的自左向右的语言模型任务,或者反过来也行,就是根据下文预测前面的单词。其优点是跟下游NLP任务有关,比如生成类NLP任务,比如文本摘要,机器翻译等,在实际生成内容的时候,就是从左向右的,自回归语言模型天然匹配这个过程。

自编码LM(Autoencoder LM):bert属于DAE模式,[Mask] 标记就相当于引入了噪音,然后根据上下文预测这些[mask]。

核心思路:采用自回归LM的思路,但是希望在预测某单词的时候,不仅仅是只看到上文信息,还希望可以看到下文信息。那怎么可以做到呢?将句子的单词打乱重新排列。

比如句子包含4个单词,x1、x2、x3和x4。当我们预测x3的时候,自回归LM是只能看到x1和x2,但看不到x4。如果我们将句子打乱成x4,x2,x3和x1后,在预测x3时就可以看到x4了。

但为了保持pre-train和finetune的一致性,finetune的时候是不可能将句子打乱排列的,所以在pretrain时我们仍需要保持x1、x2、x3、x4的顺序。那怎么做到句子打乱的效果呢?采用Attention掩码的机制。

建设当前的输入句子是X,要预测的单词Ti是第i个单词。从X中,包括Ti的上文(Context_before)和下文(Context_after)单词中,随机选择i-1个单词,然后把未选上的单词通过Attention Mask隐藏掉,不发生作用。这样就相当于把挑选到的i-1个单词放在了Ti的上文Context_before的位置上了。

RoBERTa

可以说是BERT的完整体。

  1. 更大的模型参数量

  1. 更大bacth size

  1. 更多的训练数据

  1. 去掉下一句预测(NSP)任务

  1. 动态掩码

DeBERTa

1)1.0版本在BERT的基础上有三个主要的改进点:

  • 更加解耦的self attention,上图中右边黄色部分;

  • 考虑绝对位置的MLM任务,上图中Enhanced Mask Decoder;

  • 预训练时引入对抗训练

2)后续又有了2.0和3.0版本

ALBERT

减少了参数量,但维持了BERT的性能。但它只是降低了空间复杂度,把参数量从108M降到了12M,但并没有降低时间复杂度。

  • Embedding 矩阵分解

  • 跨层参数共享

  • 替换 NSP(next sentence predict) 任务为 SOP 任务(sentence order predict)

TinyBERT

针对transformer-based模型的知识蒸馏方法。

  • 提供一种新的针对 transformer-based 模型进行蒸馏的方法,使得BERT中具有的语言知识可以迁移到TinyBERT中去。

  • 提出一个两阶段学习框架,在预训练阶段和fine-tuning阶段都进行蒸馏,确保TinyBERT可以充分的从BERT中学习到一般领域和特定任务两部分的知识。

FastBERT

在每层Transformer后都去预测样本标签(给每层后面接一个分类器student classifier),如果某样本预测结果的置信度很高,就不用继续计算了。论文把这个逻辑称为样本自适应机制(Sample-wise adaptive mechanism),就是自适应调整每个样本的计算量,容易的样本通过一两层就可以预测出来,较难的样本则需要走完全程。

StructBert

相对于bert增加了两个预训练任务和目标。

  • Word Structural Objective:对未MASK的词,随机抽选一个trigram,打乱顺序后重构该顺序,相应被打乱的节点接softmax后预测需要重构之前的顺序。

  • Sentence Structural Objective:预测下一个句子是在当前句子之前,或者之后,将NSP改成3分类问题

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小小林熬夜学编程/article/detail/573127
推荐阅读
相关标签
  

闽ICP备14008679号