如何看待瘦身成功版BERT——ALBERT?
地址 | https://www.zhihu.com/question/347898375/answer/836722282
通常,增加预训练模型大小通常会提高模型在下游任务中的性能,但考虑到“GPU/TPU内存的限制、更长的训练时间以及意想不到的模型退化”等问题,作者提出了两种减少参数的方法:Factorized embedding parameterization 和 Cross-layer parameter sharing 。此外,还将BERT的 NSP 损失替换为句子顺序预测(SOP)损失,使模型关注于句子间一致性。最后,实验观察发现最大的模型在训练1M步后仍然没有过拟合,于是删除dropout,进一步提高模型能力。
Factorized embedding parameterization
作者首先将目光放到了 WordPiece 的嵌入矩阵上。
在BERT、XLNet以及RoBERTa中,嵌入文字大小与隐藏层大小
绑定。作者认为,从建模的角度来看,WordPiece 嵌入的目的是学习上下文无关的表示,而隐藏层嵌入的目的是学习上下文相关的表示。一旦二者始终绑定,就无法更好对两种表示的参数分别进行优化。当词汇量为时,如果,嵌入矩阵的大小始终为 ,一旦希望通过增大进而增强上下文相关的表示能力,就会产生和词汇表大小相关的参数量变化,并且其中大多数参数在训练期间只进行了少量的更新。因此,ALBERT对词嵌入参数进行因式分解,分解为两个小矩阵,将 one-hot 向量先投影到大小为的低维嵌入空间中,再投影到大小为的隐藏空间中,参数大小由原来的 变为,简单粗暴(有效)。
如上图所示,在全共享条件下,大小为128的嵌入似乎是最好的,之后的实验也是以此继续的。
Cross-layer parameter sharing
作者又将目光放到了层间参数贡献上:跨层共享前馈网络(FFN)参数,仅共享注意力机制参数或跨层共享所有参数。
如上图所示,ALBERT的层与层之间的转换要比BERT平滑得多。这表明权值共享对网络参数的稳定有一定的影响。虽然与BERT相比,这两个指标都有所下降,但是即使在24层之后,它们也不会收敛到0。这说明ALBERT参数的解空间与DQE的解空间有很大的不同。
句子顺序预测(SOP)损失
BERT使用的NSP损失,是预测两个片段在原文本中是否连续出现的二分类损失。目标是为了提高如NLI等下游任务的性能,但是最近的研究都表示 NSP 的作用不可靠,都选择了不使用NSP。
作者推测,NSP效果不佳的原因是其难度较小。将主题预测和连贯性预测结合在了一起,但主题预测比连贯性预测简单得多,并且它与LM损失学到的内容是有重合的。
SOP的正例选取方式与BERT一致(来自同一文档的两个连续段),而负例不同于BERT中的sample,同样是来自同一文档的两个连续段,但交换两段的顺序,从而避免了主题预测,只关注建模句子之间的连贯性。
运行一定步后删除Dropout
如上图所示,ALBERT的最大模型在训练1M步后仍然没有过拟合,于是作者决定删除dropout,进一步提高模型能力。
总的来说,这篇投稿至ICLR 2020的ALBERT,真的是很简单粗暴且有效,论文简洁明了的语言和丰富的实验告诉你,BERT还能打,Masked-LM还能打。不过在论文的最后,作者也表示虽然总的参数量减小了,但是最优模型ALBERT-xxlarge的结构更大,计算代价相较于BERT-large更大。下一步计划通过sparse attention 和 block attention 等方式,对计算进行优化。
P.S. 全文看上去真的很像是实验报告。以上浅薄个见,如有疏漏谬误,烦请指明~
关于本站
“机器学习初学者”公众号由是黄海广博士创建,黄博个人知乎粉丝23000+,github排名全球前110名(32000+)。本公众号致力于人工智能方向的科普性文章,为初学者提供学习路线和基础资料。原创作品有:吴恩达机器学习个人笔记、吴恩达深度学习笔记等。
往期精彩回顾