ALBERT:一种轻量型的BERT模型.
ALBERT是在BERT的基础上设计的一个轻量化预训练语言模型,相比于BERT,ALBERT做了如下改进:
- 降低特征维度:BERT使用的词嵌入维度是$768$,使得Embedding占有较大参数量;而ALBERT使用的词嵌入维度是$128$,输出层使用$128 \times 768$的矩阵变回$768$维,在不影响输出结果的情况下降低了参数量;
- 更改预训练任务:BERT使用NSP(Next Sentence Prediction)作为预训练任务,即预测两个句子是否具有邻接关系;而ALBERT使用SOP(Sentence-Order Prediction)作为预训练任务,即预测两个句子的先后顺序;
- 参数共享:BERT使用$12$层Transformer模块堆叠而成,表示为$y=f_n(f_{n-1}(…(f_1(x))))$;而ALBERT使用共享参数的Transformer模块,表示为$y=f(f(…(f(x))))$,如下图所示
ALBERT中的参数共享是一种模型正则化方法,能够有效防止模型过拟合,但也会限制模型的表达能力。参数共享使得ALBERT的参数量大大减小,模型训练时间和显存也会减少。由于参数共享的存在,ALBERT并没有使用dropout。
BERT和ALBERT的结构对比如下表所示:
BERT和ALBERT的实验结果对比如下表所示。在同样的规格下(比如都是base),尽管ALBERT具有更小的参数量,但BERT和ALBERT的前向传播计算复杂度是类似的,甚至ALBERT还多一个矩阵运算。因此同样的模型规格下,ALBERT的推理时间并不占优势。当模型规模较小时,ALBERT的表现比BERT差,只有当ALBERT规格特别大时才能够超过BERT。