0%

BERT解剖综述

翻译A Primer in BERTology: What we know about how BERT works一文,系统的介绍了近年来对于BERT可解释性以及扩展性方面的研究。 原论文arxiv pdf

BERT embeddings

  • BERT作为一个NLU编码器,其生成的embedding是上下文相关的,关于embedding的研究有
    • BERT embedding形成了明显的聚类,与word sense相关
    • 也有人发现,相同单词的embedding随着Position不同有差别,且该现象貌似与NSP任务有关
    • 有人研究了同一单词在不同层的representation,发现高层的表示更加与上下文相关,且越高层,embedding在高维空间中越密集(occupy a narrow cone in the vector space),在各向同性的情况下,两个随机单词之间的cosine距离比想象中的更为接近

Syntactic knowledge

  • BERT的表示是层次而非线性的,其捕捉到的更像是句法树的信息而不是词序信息。
  • BERT编码了pos,chunk等信息,但是并没有捕捉完整的句法信息(有些远距离的依赖被忽略)
  • 句法信息没有直接编码在self attention weight当中,而是需要转换
  • BERT在完形填空任务中考虑了主谓一致(subject-predicate agreement)
  • BERT不能理解否定,对于malformed input不敏感
  • 其预测不会因为词序颠倒、句子切分、主谓语移除而改变
  • 即BERT编码了句法信息,但是没有利用上

Semantic knowledge

  • 通过在MLM任务中设置探针,一些研究表明BERT能编码一些语义角色信息
  • BERT编码了实体类型、关系、语义角色和proto-roles
  • 由于wordpiece的预处理,BERT在数字编码、推理上表现的并不好

World knowledge

  • 在某些关系中,BERT比基于知识库的方法更好,只要有好的模板句,BERT可以用于抽取知识
  • 但是BERT不能利用这些知识进行推理
  • 另外有研究发现BERT的知识是通过刻板的字符组合猜出来的,并不符合事实it would predict that a person with an Italian-sounding name is Italian, even when it is factually incorrect.

Self-attention heads

  • 研究发现attention heads可以分成几类
    • attend to自己、前后单词、句子结尾
    • attend to前后单词、CLS、SEP,或者在整个序列上都有分布
    • 或者是以下5种 3Wlqsg.png
  • attention weight的含义:计算该词的下一层表示时,其他的单词如何加权
  • self attention并没有直接编码语言学信息,因为大部分的head都是heterogeneous或者vertical的,与参数量过多有关
  • 少数的head编码了词的句法角色
  • 单一的head无法捕捉完整的句法树信息
  • 即便一些head能够捕捉语义关系,它们也不是带来相关任务上的提升的必须条件

layers

  • 底层包含了最多的线性词序关系,越高层,词序信息越弱,知识信息越强
  • BERT的中间层包含最强的句法信息,甚至可以设法还原句法树
  • BERT中间层的迁移表现和性能最好 3WJDg0.png
  • 但是该结论存在冲突,有些人发现底层做chunking更好,高层做parsing更好,有些人则发现中间层做tagging和chunking都是最好的
  • fine-tune时,底层不变对性能影响不大;最后一层在微调时变化最大
  • 语义信息在各个层中都存在

pre-training

  • 原始的任务是MLM和NSP,有研究提出了更好的训练目标
    • NSP移除影响不大,尤其在多语言版本中
    • NSP可以扩展为预测前后两句,也可以将前后翻转的句子作为negative sample,而不是从其他的文档中随便找一句作为negative sample
    • dynamic mask可以改善性能
    • Beyond-sentence MLM,将句子替换为任意字符串
    • Permutation language modeling,即XLNET当中的打乱单词顺序,再从左往右预测,结合了非回归和自回归的特点,既考虑了上下文,又不会有mask导致pre-training和fine-tune目标不一致
    • Span boundary objective,只用span边界的词来预测span
    • Phrase masking and named entity masking
    • Continual learning,持续学习
    • Conditional MLM,将segmentation embedding替换为label embedding以适应序列标注任务
    • replacing the MASK token with [UNK] token
  • 另外一条改进路线是数据集,有些研究试图将结构化数据融入BERT的pre-training,更为常见的融入常识信息的是加入entity embedding或者semantic role information,例如E-BERT、ERNIE、SemBERT
  • 关于是否需要预训练,预训练使得模型更鲁棒,但是依然看任务,有些任务从头训练和预训练差别不大

Model architecture

  • 层数比head数更重要
  • 大的batch能加速模型的收敛,with a batch size of 32k BERT’s training time can be significantly reduced with no degradation in performance
  • A robustly optimized BERT pretraining approach 公开了一些最优的参数设定
  • 因为高层的一些self attention weight和底层很像,所以可以先训练浅层,在把浅层参数复制到深层,能带来25%的训练效率提升

fine-tuning

  • 有人认为fine-tuning是告诉BERT该忽略哪些信息
  • 一些fine-tune的建议
    • 考虑多层的加权输出,而不仅仅使用最后一层去predict
    • Two-stage fine-tuning
    • Adversarial token perturbations
  • 可以插入adapter modules来加速fine-tune
  • 初始化很重要,但没有论文针对初始化系统的试验过

Overparametrization

  • BERT没有很好的利用其庞大的参数,大部分head可以被裁剪掉
  • 一层的head大部分相似,甚至可以将一层的head数裁剪为一个
  • 有些层和head会降低模型的性能
  • 在主谓一致、主语检测任务上,大的BERT模型表现反而不如小的
  • 同一层使用同一个MLP、attention dropout可能导致了这样的head冗余现象

Compression

  • 主要两种方式:量化与知识蒸馏
  • 还有一些方式例如progressive model replacing、对embedding矩阵做分解、化多层为循环单层等等。

Multilingual BERT

  • 多语言版本的BERT在许多任务的零次学习迁移上表现非常好,但是在语言生成任务上表现不佳
  • 一些改进mBERT的手段
    • fine-tune时固定低层
    • translation language modeling
    • improving word alignment in fine-tuning
    • combine 5 pre-training tasks (monolingual and cross-lingual MLM, translation language modeling, cross-lingual word recovery and paraphrase classification)