ALBERT

​ALBERT: A Lite BERT For Self-Supervised Learning Of Language Representations​

  • 主要优化在参数的减少

Factorized embedding parameterization

  • 作者实验发现,把bert的hidden state增大效果会降低,所以反向考虑将参数减少(BERT-xlarge是hidden-state较大的)
  • 设embedding的维度为E,hidden state的维度为H,在bert中ALBERT_ALBERT,不过embedding学的是单词与上下文无关的表示,hidden state学习的是上下文相关的表示,理论上ALBERT_NLP_02
  • 所以作者打破H和E之间的关系,将embedding matrix分解ALBERT_ALBERT_03的矩阵,取代原来的ALBERT_ALBERT_04的矩阵,原来的E=H,所以会很大
  • 先讲词汇表V投射到低维的embedding空间,再将其投射到高维的hidden state空间,相当于空间从ALBERT_人工智能_05变成ALBERT_人工智能_06,当ALBERT_人工智能_07是变化很明显

Cross-layer parameter sharing

  • 本文另一个方法就是:层之间的参数共享,多个层使用相同的参数
  • 参数共享有三种方式:1、共享feed-forward network的参数;2、共享attention的参数;3、共享全部参数
  • ALBert默认是全部参数共享
  • 实验发现参数共享之后,每层的输入embedding和输出embedding的L2距离和余弦相似度都稳定了很多

对NSP进行修改->SOP(Sentence-order prediction)

  • Bert中NSP的正例是文章中连续的两个句子,负例是从两篇文章中各选择一句构造成的
  • 先前的研究,证明了NSP不适合预训练。
  • 本文推测原因:模型在判断两个句子的关系时不仅考虑了两个句子之间的连贯性,还会考虑到两个句子的话题)。而两篇文档的话题通常不同,模型会更多的通过话题去分析两个句子的关系,而不是句子间的连贯性,这使得NSP任务变成了一个相对简单的任务
  • Sentence-order prediction(SOP)
  • 正例与NSP相同,但负例是通过选择一篇文档中的两个连续的句子并将它们的顺序交换构造的。这样两个句子就会有相同的话题,模型学习到的就更多是句子间的连贯性。

技巧

像VGG一样,先训练浅层网络,再将浅层网络的参数初始化给深层网络加快收敛

效果

ALBERT_BERT_08

参数共享问题

  • 不参数共享时:E越大越好
  • 共享参数后:E太大会使模型效果变差,E=128表现最好

ALBERT_人工智能_09

共享参数对模型有负面影响,但是能大幅降低参数量,且影响不是很大

SOP效果

ALBERT_自然语言处理_10

SOP指标整体上升

额外数据和dropout层的影响

ALBERT_ALBERT_11

  • 结论
  • 1、加入了XLNet和RoBERTa训练时用的额外数据(W additional data),模型效果提升
  • 2、因为一直没有过拟合,去除dropout效果更好

当时NLU上的SOTA

ALBERT_ALBERT_12

训练速度并没有多大提升

  • 因为引入了额外的矩阵运算,所以训练速度只有1.2倍的提升