介绍
预训练语言模型取得了令人惊艳的效果,但也导致模型参数越来越大,很难在实际生活中使用。ALBERT尝试解决这一问题,具体参考论文《ALBERT: A Lite BERT For Self-Supervised Learning of Language Representations》
ALBERT
ALBERT的架构采用BERT作为backbone,E作为词表embedding的维度,L作为transformer encoder的层数,hidden size为H,feed-forward size为4H,attention heads个数为H/64.
为了降低模型的复杂度,减少模型参数ALBERT做了以下改进
Factorized embedding parameterization
对于词表大小 V V V,词向量参数共有 V ∗ H V*H V∗H, 采用矩阵分解的方式降低参数量,将较高维度H映射到低维度的E空间中,参数量变化从O(V × H) 至 O(V × E + E × H) 当E<<H时参数量减少的很明显。
Cross-layer parameter sharing
Transformer中共享参数有多种方案,可共享全连接层和attention层,ALBERT结合了上述两种方案,全连接层与attention层都进行参数共享,虽然实际上效果是有下降的,但是参数量减少了很多,训练速度也提升了很多。
Inter-sentence coherence loss
ALBERT论文中认为BERT的二分类预训练任务即NSP(next sentence prediction)其实包含了两个子任务,主题预测与关系一致性预测,但是主题预测相比于关系一致性预测简单太多了,并且在MLM任务中其实也有类型的效果。所以提出了SOP(sentence order prediction)这个loss不关注主题预测只关注句子连贯性预测。SOP任务正样本和NSP一致;负样本NSP是随机是从挑选一个句子,而SOP是将正样本反转即可。综上,NSP不能解决SOP的任务,而SOP可能可以因为不一致的连贯线索从某种程度来解决NSP的任务
Remove dropout
We also note that, even after training for 1M steps, our largest models still do not overfit to their training data. As a result, we decide to remove dropout to further increase our model capacity.
作者发现训练100万步后模型没有收敛,删除dropout后,模型开始收敛,因此dropout可能对预训练有影响,需要后续验证。
结论
ALBERT相对于BERT的主要区别是更少的参数量,性能和训练速度的提升。主要采用了以下方法
- 对词向量因式分解,降低参数量
- 多层共享参数,降低参数量
- 增加SOP任务损失,专注句子的连贯性
另外需要注意,尽管参数量和训练速度性能都获得提升,但实际ALBERT的inference速度和BERT几乎无区别