ALBERT 思想简介

      前段时间简单看了下 ALBERT 的paper(ALBERT: A LITE BERT FOR SELF-SUPERVISED LEARNING OF LANGUAGE REPRESENTATIONS), 简单记录下论文的思想,穿插一点点个人想法。

      1  背景

        1.1 从BERT以来,NLP的预训练模型变得越来越大,占用的 GPU/TPU显存越来越高。

              记得XLNET出来的时候,其各个效果提升因素(引入PLM,引入Transformer-XL的主要思路,增加预训练阶段使用的数据规模)中,经过分析,估计训练数据量的增加带来的提升,在阅读理解任务中的作用占比为30%-40%.   模型朝着更多的训练数据,更深的层数,更大的模型参数方向发展,相应的对硬件的要求也越来越高。

       1.2  预训练的时间变得越来越长

       1.3  意料之外的模型退化

              这里论文中举了个栗子,在 BERT-large 中,当把 Hidden Size从1024 升到 2048时,模型在RACE 任务(阅读理解数据集)上的准确率却大幅下降,从72.0%到54.3%,说明并不是模型越大越好。

      2 目的

        因此想法就比较简单了,现在模型变得越来越大,需要的硬件资源越来越多,那能不能缩减一下模型的参数量?   

        当然了,也不能不关注模型的效果,能够在模型参数量大幅缩减的情况下,还让模型的效果稳定或者有提升呢?

        模型做出的改进的目的基本上围绕以上2点。

      3  ALBERT的做法

          3.1  嵌入向量参数的因式分解

              在ALBERT中,对embedding参数进行因式分解,将其分解成2个更小的矩阵。 通过分解,我们将 embedding参数从 O(V*H) 减少到 O(V*E+E*H),这个参数减少在 H>>E 的时候有重要意义。

         

          3.2  跨层参数共享

               很直观的,跨层参数共享可以减少模型参数。

               跨层参数共享可以分别3个模式,只共享attention相关参数,只共享FFN相关参数,和共享所有参数。

               all-shared 之后,ALBERT-BASE的参数量,直接从 89M到12M了,毕竟这个策略就相当于把12个完全相同的层摞起来了。

               从最后一列来看,如果只共享attention参数,不仅可以降低模型参数,还可以保持模型性能不掉。  

               不过能看出,只共享attention参数,对模型参数量的降低的量有些少。作者为了追求轻量级,把FFN也共享了。

               但是这样虽然减少了参数量,但是模型的效果指标是明显的掉了,因此要加上其他工作来把模型指标提上去。

          问题来了,以上2个减参数的方法谁作用大呢?          

          

           通过以上2个图,可以明显的看出,跨层参数共享对于模型参数量的缩减所用 比 嵌入参数因式分解的 作用大得多。

           对比下图中,ALBERT base not-shared 的E为768 和 E为128时候,模型的参数量为 108M 和 89M,参数的减少量为 19M。

           而对比下上图中Embedding 大小为128 的ALBERT  和 Embedding大小为768的BERT,在加了参数共享之后,参数量降低有 96M,相比与原参数量108M,大量的参数量降低为 跨层参数共享的左右。

          3.3  句间连贯性损失 SOP

           BERT中除了使用MLM loss以外,还使用了 NSP损失。然后后续的研究发现,NSP的影响并不可靠并且决定去掉它,这个观点也得到了后续的任务数据所证明。

           NSP是预测两个片段在原文中是否连续出现的二分类损失,具体如下:从训练语料库中提取连续片段,生成正例;负面的例子是由来自不同文档的片段配对产生的;正、负样本的抽样概率相等。NSP的目标是为了提高下游任务的性能,比如自然语言推理,这需要对句子对之间的关系进行推理。          

            NSP的无效的主要原因是,和MLM相比,这个任务缺乏难度.NSP将主题预测和连贯性预测合并在一起,然而,topic预测相比连贯性预测简单,而且和使用MLM loss学习的内容有很多重叠.

            SOP损失使用与BERT相同的技术作为正例(同一文档中的两个连续片段),作为否定的例子使用相同的两个连续的句子,但顺序互换。这就迫使模型学习关于语篇级一致性属性的更细粒度的区别。

            如上图所示,NSP根本无法解决SOP任务(即它最终学习更容易的主题预测信号,并在SOP任务上执行随机基线水平),而SOP可以在分析未对齐的相干线索的基础上,预先将NSP任务解决到一个合理的程度。看对下游任务的影响,ALBERT模型不断地改进多句编码任务的下游任务性能。

      4  ALBERT 的效果      

          4.1 ALBERT在 GLUE上的表现

            

      4.2 ALBERT 在 SQuAD和RACE上的表现

             

            可以看到,在阅读理解任务RACE上,ALBERT的提升比较明显。   从BERT的70%多,到 ALBERT的将近90%,可见现在对语义级别的任务,提升巨大。

5   总结

     ALBERT的主要目的是为了缩减模型参数量。

    具体做法包括:

    嵌入参数的因式分解

    跨层参数共享(对参数减少的作用最大)

    NSP替换为SOP(模型效果的提升因素)

©️2020 CSDN 皮肤主题: 编程工作室 设计师:CSDN官方博客 返回首页