BERT系列预训练语言模型简介

  1. BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding. Jacob Devlin, Ming-Wei Chang, Kenton Lee and Kristina Toutanova. NAACL 2019. [pdf] [code & model]

    • 贡献:
      1. BERT揭示了预训练时使用来自双向的信息相对于GPT式单向语言模型预训练跟ELMo式两个独立单向拼接的优越性。
      2. BERT展现了pretrain-finetuning模式可以在各种下游任务上取得SOTA的效果。
    • 模型:
      1. 输入:WordPiece Tokenize, Token Embedding + Segment Embedding + Position Embedding
      2. 预训练任务:
        1. Masked LM: 随机选15%的单词处理,在输出层需要预测出这些单词。这15%的token有80%的可能被替换成[MASK],有10%的可能被替换成另外一个随机的token,另有10%的可能会维持原样不变。这样做,可以让Transformer的encoder无法去知道哪个token是要被预测的,也不知道哪个词被替换成随机词了,使它不得不对每一个token都形成一个较好的向量表示,没法取巧。
        2. Next Sentence Prediction:判断两个句子是否相邻。在构造这个任务的数据集时,会有50%的概率,提供正样本,即某句句子和其下一句句子的组合,50%的概率在语料中选择任意一句句子构成负样本。
      3. 下游任务微调:
  2. ERNIE: Enhanced Language Representation with Informative Entities. Zhengyan Zhang, Xu Han, Zhiyuan Liu, Xin Jiang, Maosong Sun and Qun Liu. ACL 2019. [pdf] [code & model] (ERNIE (Tsinghua) )

    • 贡献:把大规模知识库融入到语言模型预训练中
    • 做法:
      1. 抽取并编码知识信息:识别文本中的命名实体,将其链接到知识库中对应的实体上,把其KG embedding取出作为模型输入。
      2. 异源信息融合:除MaskLM跟NSP两个预训练任务之外,添加一个预训练任务:随机mask掉文本中的一些命名实体,让模型从KG中预测出被mask掉的实体。
    • 效果:在知识库有关的实体分类和关系分类上涨了2个点,在CLUE上没怎么掉点。
  3. ERNIE: Enhanced Representation through Knowledge Integration. Yu Sun, Shuohuan Wang, Yukun Li, Shikun Feng, Xuyi Chen, Han Zhang, Xin Tian, Danxiang Zhu, Hao Tian and Hua Wu. Preprint. [pdf] [code] (ERNIE (Baidu) )

    • 贡献:提出了两种融入知识的mask策略
    • 做法:
      1. Phrase-Level Masking:中文用分词,英文用chunking得到phrase的边界信息,以phrase为单位做mask。
      2. Entity-Level Masking:好像是做NER,以命名实体为单位做mask。
  4. ERNIE 2.0: A Continual Pre-Training Framework for Language Understanding. Yu Sun, ShuohuanWang, Yukun Li, Shikun Feng, Hao Tian, Hua Wu, Haifeng Wang. Preprint. [pdf] [code] (ERNIE (Baidu) )

    • 贡献:将多个预训练任务融合到一个持续学习框架中
    • 做法:
      1. Continual Multi-task Learning:每引入一个新的预训练任务,都和已有的任务一起训练,每个任务都训练同样的轮数。
      2. Task Embedding:每个任务对应一个向量,预训练时把它和token embedding/segment embedding/position embedding加起来。
      3. Pre-training Tasks
        1. Word-aware Pre-training Tasks: Knowledge Masking Task, Capitalization Prediction Task, Token-Document Relation Prediction Task
        2. Structure-aware Pre-training Tasks: Sentence Reordering Task, Sentence Distance Task
        3. Semantic-aware Pre-training Tasks: Discourse Relation Task, IR Relevance Task
  5. Pre-Training with Whole Word Masking for Chinese BERT. Yiming Cui, Wanxiang Che, Ting Liu, Bing Qin, Ziqing Yang, Shijin Wang, Guoping Hu. Preprint. [pdf] [code & model] (Chinese-BERT-wwm)

    • 贡献:探索了Whole-Word Masking在中文上的应用
    • 做法:
      1. Whole-Word Masking:如果被mask的token是一整个词的一部分,那这个词的其他token也一并被mask
      2. 不是从头开始,而是从google发布的预训练模型开始预训练,100K step跑长度128的短句子,100K step跑长度512的长句子。
  6. NEZHA: Neural Contextualized Representation for Chinese Language Understanding. Junqiu Wei, Xiaozhe Ren, Xiaoguang Li, Wenyong Huang, Yi Liao, Yasheng Wang, Jiashu Lin, Xin Jiang, Xiao Chen, Qun Liu. Preprint. [pdf] [code & model] (NEZHA)

    • 贡献:新的位置编码方案Functional Relative Positional Encoding
    • 做法:
      1. Functional Relative Positional Encoding:位置编码是事先算好的,而不是学出来的;直接加到attention上,不是加在embedding上;值仅跟两个token的相对位置有关,跟绝对位置无关。
      2. 用了Whole Word Masking
      3. 混合精度训练:模型参数是float32,每个iteration,先把参数转成float16,前向传播计算loss,反向传播计算梯度,把梯度再转成float32,更新模型参数。这样做训练速度能提升2~3倍。
      4. LAMB Optimizer:使之更适合于大batch(180)训练
  7. MASS: Masked Sequence to Sequence Pre-training for Language Generation. Kaitao Song, Xu Tan, Tao Qin, Jianfeng Lu, Tie-Yan Liu. ICML 2019. [pdf] [code & model]

    • 贡献:预训练Seq2seq架构,在生成任务上有所涨点
    • 做法:encoder接受random mask掉一些连续片段的句子,decoder试图预测出这些被mask掉的片段;为了让decoder更关注于source端的表示,decoder把没有mask掉的输入token给mask掉
  8. Unified Language Model Pre-training for Natural Language Understanding and Generation. Li Dong, Nan Yang, Wenhui Wang, Furu Wei, Xiaodong Liu, Yu Wang, Jianfeng Gao, Ming Zhou, Hsiao-Wuen Hon. Preprint. [pdf] (UniLM)

    • 贡献:统一的预训练语言模型,既可用作自然语言理解,也可用作自然语言生成。
    • 做法:预训练时可以有三种目标函数:单向LM,双向LM,Seq2Seq预测单词,它们共享一个transformer,通过使用attention mask来控制模型看到的context,在预测时UniLM就可以被当成单向decoder、双向encoder或者是seq2seq模型来fine-tune。
      1. Unidirectional LM: 左到右、右到左分别来一遍,跟GPT不一样的是预训练不是自回归的,而是预测[MASK]位置对应的词
      2. Bidirectional LM:跟BERT一样加上NSP
      3. Sequence-to-Sequence LM:encoder部分像BERT,decoder部分像Unidirectional LM
    • 效果:在自然语言理解和自然语言生成任务上都有不错的提升
  9. XLNet: Generalized Autoregressive Pretraining for Language Understanding. Zhilin Yang, Zihang Dai, Yiming Yang, Jaime Carbonell, Ruslan Salakhutdinov, Quoc V. Le. NeurIPS 2019. [pdf] [code & model](XLNet)

    • 贡献:能利用到双向context的auto-regressive预训练模型
    • 做法:Permutation Language Modeling
      1. 目标函数:自回归不一定非得从左到右或者从右到左,也可以随机采用一个ordering,按这个ordering依次预测下个token
      2. 具体实现:一样也是通过在attention上加mask实现,具体来说原来transformer的hidden变成两个:
        1. content stream: 能看到自己,跟原来transformer的hidden一样
        2. query stream:只能看到自己前面的元素,用来预训练预测出自己
        3. 按ordering预测出所有token太难了,改为只预测后c个单词
        4. 使用transformer-xl,其中
          1. segment recurrence mechanism是说把上个窗口每层的状态保留下来给下个窗口初始化
          2. relative positional encoding scheme
        5. Relative Segment Encodings:两个token是否在同一个segment的信息加到attention上而不是embedding上。
  10. RoBERTa: A Robustly Optimized BERT Pretraining Approach. Yinhan Liu, Myle Ott, Naman Goyal, Jingfei Du, Mandar Joshi, Danqi Chen, Omer Levy, Mike Lewis, Luke Zettlemoyer, Veselin Stoyanov. Preprint. [pdf] [code & model]

    • 贡献:精心调节了BERT的各项预训练参数,找到比BERT更优的setting:
      1. 训练步数变长,batch size变大,训练数据变多
      2. 去掉next sentence prediction预训练任务
      3. 预训练所用句子长度变长
      4. 动态调整每个训练样本的mask策略
  11. SpanBERT: Improving Pre-training by Representing and Predicting Spans. Mandar Joshi, Danqi Chen, Yinhan Liu, Daniel S. Weld, Luke Zettlemoyer, Omer Levy. Preprint. [pdf] [code & model]

    • 贡献:更好地建模文本span的预训练方案
    • 做法:
      1. 随机mask掉一整个span而不是一个token:先采样span长度,再采样span开始位置
      2. 用span两边的可见token来预测span内的每个单词:
      3. 对BERT的改进:每个training instance送一整个长segment,而不是两个短segment;去掉NSP
  12. Exploring the Limits of Transfer Learning with a Unified Text-to-Text Transformer. Colin Raffel, Noam Shazeer, Adam Roberts, Katherine Lee, Sharan Narang, Michael Matena, Yanqi Zhou, Wei Li, Peter J. Liu. Preprint. [pdf] [code & model] (T5)

    • 贡献:提出了把所有NLP任务统一成text-to-text任务的统一框架
    • 做法:
      1. 模型:transformer的encoder-decoder架构,主要的改动是position embedding
        1. embedding是一个scalar,仅跟key和query的相对距离有关,直接加到attention结果的logits上。
        2. 总共只有32个position embedding:1~16每人一个,128及以上共享一个,17~127映射到剩下15个。
      2. 数据:The Colossal Clean Crawled Corpus:公网爬取的数据经过一系列启发式规则,筛选出750 GB。
      3. 下游任务:machine translation, question answering, abstractive summarization, and text classification没有序列标注
      4. 输入输出格式:为了把不同任务的数据都统一到encoder-decoder框架,我们在每个任务前面加一段prefix代表这个任务(比如traslate English to German),对于分类任务严格要求其输出对应的标签信息。
      5. 预训练任务:
    • 实验:
      1. 模型架构:Encoder-decoder、Language model、Prefix LM
      2. 预训练任务:
      3. 预训练所用数据集:C4、C4 unfiltered、RealNews-like、WebText-like、Wikipedia、Wikipedia + TBC
      4. 微调参数的方案:All parameters、Adapter layers、Gradual unfreezing
      5. 可扩展性:模型越大,训练步数越多,batch size越大,效果越好
  13. BART: Denoising Sequence-to-Sequence Pre-training for Natural Language Generation, Translation, and Comprehension. Mike Lewis, Yinhan Liu, Naman Goyal, Marjan Ghazvininejad, Abdelrahman Mohamed, Omer Levy, Ves Stoyanov, Luke Zettlemoyer. Preprint. [pdf] (BART)

    • 贡献:预训练encoder-decoder框架:输入端给input加随机噪音,输出端试图重建原文本
    • 做法:
      1. 架构:用基于transformer的encoder-decoder架构来重建损坏的句子,encoder部分类似于BERT但并不做单词预测,decoder部分类似于GPT但加上了对encoder部分的attention。
      2. 预训练:
        1. 目标是重建原句子,Teacher Forcing + cross entropy
        2. 五种给输入句子加噪音的方式如图
      3. 微调:
        1. 文本分类:原句子送入encoder和decoder,用decoder最后一个token的最后一层hidden vector做分类。
        2. 序列标注/QA:原句子送入encoder和decoder,用decoder所有token的最后一层hidden vector做分类。
        3. 文本生成(摘要,QA):原句子送入encoder,decoder阶段自回归地生成目标句子。
        4. 机器翻译:把整个预训练好的BART当成机器翻译的decoder,encoder使用随机初始化的transformer encoder,联合fine-tune,encoder的作用是把源语言转化为BART的embedding。
    • 实验:
      1. 对比不同的预训练目标
        1. Language Model:类似GPT,用Transformer decoder。
        2. Permuted Language Model:类似XLNet,打乱生成顺序,生成后1/6的token。
        3. Masked Language Model:类似BERT,把15%的token变成[MASK],用它预测原token。
        4. Multitask Masked Language Model:类似UniLM,多种self-attention mask放一起。
        5. Masked Seq-to-Seq:类似MASS,mask一个包含50%token的span,用decoder去预测出这些被mask掉的token。
      2. 对比不同的input corrupting方式
      3. 结论:
        1. 哪个预训练目标好跟任务相关:在LM等生成任务上有从左到右的decoder最重要;在语言理解任务上有双向的encoder最重要
        2. token masking在所有corrupting中最重要
  14. ELECTRA: Pre-training Text Encoders as Discriminators Rather Than Generators. Kevin Clark, Minh-Thang Luong, Quoc V. Le, Christopher D. Manning. ICLR 2020. [pdf][code&model] (ELECTRA)

    • 贡献:更加sample-efficient的预训练任务:replaced token detection(随机把一些token替换为Generator采样得到的词,再让discriminator去预测每个token是不是原句子的单词)因为discriminator对句子中的每个token都能得到监督信号,所以该模型训练起来更快。
    • 做法:
      1. generator G: 一个小的用MLM预训练的BERT,目标是把被[MASK]corrupt的句子还原回来。
      2. discriminator D:对每个位置,判断这个token是原句子的还是替换过的。
      3. 我们不是GAN,因为判别器的梯度无法回传给生成器;微调阶段只要判别器,跟BERT一样在上面添加一个全连接层就可以了。
      4. generator与discriminator参数(token embedding + position embedding)共享,因为generator对embedding训练得比较多。
      5. generator用小模型,generator太厉害会使得discriminator很难办。
      6. 训练方案:先训generator一定步数,再训discriminator一定步数,交替进行;或者GAN+Reinforcement Learning都比较差。
  15. StructBERT: Incorporating Language Structures into Pre-training for Deep Language Understanding. Wei Wang, Bin Bi, Ming Yan, Chen Wu, Jiangnan Xia, Zuyi Bao, Liwei Peng, Luo Si. ICLR 2020. [pdf] (StructBERT)

    • 贡献:为了融入句法和语义的结构信息,提出了两个额外的预训练任务:
      1. Word Structural Objective:单词交换顺序之后,希望输出还是原句子的单词顺序。
      2. Sentence Structural Objective:把NSP变成三分类,两句顺序为0,两句逆序为1,两句不相干为2。
发布于 2020-04-01 17:07