文章目录
- 摘要
 - 算法
 - BERT预训练
 - Masked LM
 - NSP
 
- Fine-tune BERT
 
- 实验
 - GLUE
 - SQuAD v1.1
 - SQuAD v2.0
 - SWAG
 - 消融实验
 - 预训练任务影响
 - 模型大小影响
 - BERT基于特征的方法
 
- 结论
 
论文: 《BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding》
github: https://github.com/google-research/bert
摘要
BERT利用左右双向上下文表征在无标注文本进行预训练,通过增加额外输出层,应用于下游任务,在多个任务取得SOTA性能;
本文主要贡献:
 1、通过MLM(masked language models)进行双向表征预训练;
 2、BERT通过finetune而不需特定结构即可达到SOTA;
算法
BERT分为两步:
 预训练、finetune;如图1所示,
 
 模型结构:
 
    
     
      
       
        B
       
       
        E
       
       
        R
       
       
        
         T
        
        
         
          b
         
         
          a
         
         
          s
         
         
          e
         
        
       
       
        (
       
       
        L
       
       
        =
       
       
        12
       
       
        ,
       
       
        H
       
       
        =
       
       
        768
       
       
        ,
       
       
        A
       
       
        =
       
       
        12
       
       
        ,
       
       
        T
       
       
        o
       
       
        t
       
       
        a
       
       
        l
       
       
        P
       
       
        a
       
       
        r
       
       
        a
       
       
        m
       
       
        e
       
       
        t
       
       
        e
       
       
        r
       
       
        s
       
       
        =
       
       
        110
       
       
        M
       
       
        )
       
      
      
       BERT_{base} (L=12, H=768, A=12, Total Parameters=110M)
      
     
    BERTbase(L=12,H=768,A=12,TotalParameters=110M)
 
    
     
      
       
        B
       
       
        E
       
       
        R
       
       
        
         T
        
        
         
          l
         
         
          a
         
         
          r
         
         
          g
         
         
          e
         
        
       
       
        (
       
       
        L
       
       
        =
       
       
        24
       
       
        ,
       
       
        H
       
       
        =
       
       
        1024
       
       
        ,
       
       
        A
       
       
        =
       
       
        16
       
       
        ,
       
       
        T
       
       
        o
       
       
        t
       
       
        a
       
       
        l
       
       
        P
       
       
        a
       
       
        r
       
       
        a
       
       
        m
       
       
        e
       
       
        t
       
       
        e
       
       
        r
       
       
        s
       
       
        =
       
       
        340
       
       
        M
       
       
        )
       
      
      
       BERT_{large} (L=24, H=1024, A=16, Total Parameters=340M)
      
     
    BERTlarge(L=24,H=1024,A=16,TotalParameters=340M)
 输入输出:
 单个句子(任意范围)或成对句子(比如问答),输入表征由对应token、segment及位置编码构成,如图2。
 
BERT预训练
Masked LM
双向模型比单向模型或两单向模型concate后模型表达能力要强;标准有条件语言模型只能单向训练,双向将导致每个单词间接看到自己;
 因此作者对输入token进行随机mask(15%),然后预测这些token,该过程为MLM(masked LM),最终mask token对应中间向量送入输出softmax与标准LM一致;
 但是这样会导致预训练与finetuen不一致,因为finetune时没有mask token,为缓和此问题,作者使用仍随机选择15% token,若第i个token被选中,则其有80%概率替换为[MASK],10%概率选择随机token,10%概率保持不变。
NSP
为理解句子之间相关关系,比如问答系统(QA)、自然语言推理(NLI),作者增加下句话预测(NSP)任务,具体而言,每个训练样例选择句子A和句子B,句子B有50%概率紧跟句子A,有50%概率为语料库中随机选取,如图1中C用于预测B是否为A的下一句,预训练中可达到97%-98%精度;
 作者使用文档级语料库而非打乱句子级别语料库,用于提取长连续序列;
Fine-tune BERT
对于每个具体任务,插入任务相关输入、输出,训练BERT所有参数;sequence-level任务如图4a、4b;token-level任务如图4c、4d。
 
实验
GLUE
利用最后一层向量
    
     
      
       
        C
       
       
        ∈
       
       
        
         R
        
        
         H
        
       
      
      
       C \in R^H
      
     
    C∈RH,为输入token[CLS]对应的聚合特征,通过分类层输出需要结果;
 结果如表1,BERT大幅超越现有方法;
 
SQuAD v1.1
任务:给出问题及来自维基百科包含该问题答案的一段话,该任务可以预测答案在段落中范围;
 作者引入起始位置向量
    
     
      
       
        S
       
       
        ∈
       
       
        
         R
        
        
         H
        
       
      
      
       S \in R^H
      
     
    S∈RH及结束位置向量
    
     
      
       
        E
       
       
        ∈
       
       
        
         R
        
        
         H
        
       
      
      
       E\in R^H
      
     
    E∈RH;位置i,j为答案区域得分
    
     
      
       
        S
       
       
        c
       
       
        o
       
       
        r
       
       
        e
       
       
        =
       
       
        S
       
       
        ⋅
       
       
        
         T
        
        
         i
        
       
       
        +
       
       
        E
       
       
        ⋅
       
       
        
         T
        
        
         j
        
       
      
      
       Score=S·T_i + E·T_j
      
     
    Score=S⋅Ti+E⋅Tj
 实验结果如表2,BERT集成系统超越top1方案1.5F1、单系统超越1.3F1;
 
SQuAD v2.0
SQuAD v2.0允许提供段落中可能不存在答案;作者在【CLS】token设置start和end标志位,根据
    
     
      
       
        
         s
        
        
         
          n
         
         
          u
         
         
          l
         
         
          l
         
        
       
       
        =
       
       
        S
       
       
        ⋅
       
       
        C
       
       
        +
       
       
        E
       
       
        ⋅
       
       
        C
       
      
      
       s_{null} = S·C + E·C
      
     
    snull=S⋅C+E⋅C判断是否有答案;实验结果如表3,超越最佳方案5.1F1。
 
SWAG
任务:给出一个句子,从四个选择中选择最可能的下一句;
 实验结果如表4,
    
     
      
       
        B
       
       
        E
       
       
        R
       
       
        
         T
        
        
         
          l
         
         
          a
         
         
          r
         
         
          g
         
         
          e
         
        
       
      
      
       BERT_{large}
      
     
    BERTlarge超越最优方案GPT 8.3
 
消融实验
预训练任务影响
结果如表5,移除NSP对QNLI、MNLI、SQuAD 1.1任务影响比较大;在所有任务上LTR比MLM结果更糟糕;
 
模型大小影响
ppl越小,模型越好
 表6展示BERT不同模型大小影响,
 
BERT基于特征的方法
如图7,
    
     
      
       
        B
       
       
        E
       
       
        R
       
       
        
         T
        
        
         
          l
         
         
          a
         
         
          r
         
         
          g
         
         
          e
         
        
       
      
      
       BERT_{large}
      
     
    BERTlarge基于预训练方案比整个模型finetune的SOTA方法低0.3
 
结论
作者提出的双向网络结构,可将同一预训练模型成功处理多个NLP任务。





![[Android Studio]Android 数据存储-文件存储学习笔记-结合保存QQ账户与密码存储到指定文件中的演练](https://img-blog.csdnimg.cn/24b696d76d374a9992017e1625389592.gif)











