ALBERT 原理解析

An ALBERT configuration similar to BERT-large has 18x fewer parameters and can be trained about 1.7x faster.

ALBERT (A Lite BERT) 采用与 BERT 相同的 Transformer 架构,对其作了三点改进,使得用比 BERT 极少的参数量却实现了比 BERT 更好的效果。
论文:ALBERT: A Lite BERT for Self-supervised Learning of Language Representations

相比于 BERT 的改进

首先,作者通过实验证实了“自然语言中表示学习的按比例放大模型并不是简单的增加模型尺寸”,为后文 ALBERT 与 BERT 相比较做了铺垫。并介绍了模型参数共享与句子顺序任务(语篇连贯性)的相关工作。下面我们就来逐一介绍 ALBERT 的几点改进。

基本参数

  1. 编码器:Transformer encoder;
  2. 激活函数:GELU;
  3. 词 embedding 维度:E;
  4. Encoder 层数:L;
  5. Hidden size:H;
  6. FFN 层大小:4H;
  7. Attention 头大小:H/64

1. Factorized embedding parameterization

在 BERT 与后续的一些模型如 XLNet 和 RoBERTa 中,词语的 embedding 维度 E 与 hidden size H 是相同的,即$E\equiv H$。
从建模的角度来看,字嵌入意味着学习上下文无关的表示,而隐藏层嵌入意味着学习上下文相关的表示。实验证明,BERT 类方法的语言表示能力来自于上下文相关的信号。所以应该$H\gg E$。
从实验的角度来看,NLP 中的词表通常比较大,如果$E\equiv H$,那随着模型宽度 H 的增加,词嵌入矩阵$V\times E$将会变得非常大,然而词嵌入矩阵通常是稀疏地更新的。
综上两点原因,ALBERT 提出了一种因式分解式的方法来降低参数量。首先将 one-hot 向量映射到一个低维的嵌入空间中(大小为 E),再将这个低维嵌入空间映射到高维的隐藏空间中(大小为 H)。这样一来,嵌入的参数量就从$O(V\times H)$减少到了$O(V\times E+E\times H)$,当$H\gg E$时,这种策略效果明显。
ALBERT-factorized-embedding-effect.png

2. Cross-layer parameter sharing

为了减少参数量,ALBERT 采用了 Transformer block 间参数共享的方式。理论上,可以只共享 Attention 部分的参数或者只共享 FFN 部分的参数,ALBERT 默认选择了完全的参数共享,实际上效果是有所下降的,但大幅减少了参数量,提升了训练速度。
ALBERT-params-sharing-effect.png

另外,作者发现 BERT 的参数最终是趋于震荡的,而不是趋于收敛,但使用了参数共享之后,ALBERT 相比于 BERT 的参数震荡幅度要小一些,即有稳定参数的作用。
ALBERT-params-stabilization.png

3. Inter-sentence coherence loss

BERT 的 NSP 任务被证明过于简单,并没有对下游的 NLI 任务起到明显的作用。NSP 任务其实隐式地包含了两个子任务,主题预测与连贯性预测,但是主题预测相比于连贯性预测简单太多了,并且在 MLM 任务中其实也有类型的效果。
NSP 任务包含了主题预测的原因是 NSP 正负样本的构建方式决定的。正样本是在同一个文档中选取的连续两个分段,负样本是在不同的文档选取的。若负样本的两个文档主题不一致,则包含了主题预测。
在 ALBERT 中,为了更加关注句内连贯性并摒弃主题预测任务,提出了新的 sentence-order prediction (SOP) 任务。其正样本的获取方式与 NSP 一致,负样本直接将正样本的两个分段顺序颠倒即可。
ALBERT-SOP-effect.png

表中也可以看出,SOP 能解决 NSP 任务,但是 NSP 并不能解决 SOP 任务(52.0 相当于盲猜)。

4. Removing dropout

作者发现,即使最大的模型在训练了 1M 步之后,也没有出现过拟合。所以通过移除 dropout 来提升模型能力。
ALBERT-removing-dropout-effect.png

其他

  1. 通过实验证实了模型的深度和宽度并不是简单的增加就能增加模型的效果,存在一个合理的中间值;
  2. 通过实验证实了在非常宽的模型中,在 ALBERT 的共享参数框架下,模型深度不需要超过 12 层。

结果

模型设置

ALBERT-steup.png

GLUE

ALBERT-GLUE.png

参考

官方 GitHub:https://github.com/google-research/ALBERT
https://blog.csdn.net/u012526436/article/details/101924049
ALBERT 的一种改进策略:https://spaces.ac.cn/archives/7187