摘要

    预训练语言模型(PLMs)通过预训练和微调的范式在各种自然语言处理(NLP)任务中取得了巨大成功,但是由于参数量巨大,PLMs需要大量的计算和资源。因此,业界通过引入模型剪枝来对大规模的PLMs进行压缩。然而,大多数现有的方法只考虑了下游具体任务相关的知识,而忽略了与任务无关的通用知识的保留,这可能会导致灾难性遗忘问题,并导致较差的泛化能力。为了在剪枝模型中同时保留这两种知识,文献[1]在预训练和微调的范式下提出了对比剪枝(CAP,ContrAstive Pruning)。它是一个通用框架,能够兼容结构化和非结构化剪枝。统一于对比学习,CAP使剪枝模型能够从预训练模型学习通用知识,从微调模型中学习具体任务相关知识。并且为了更好地保持剪枝模型的性能,快照(即每个剪枝迭代中的中间模型)也用作剪枝过程中的有效监督。大量实验表明,采用CAP性能提升显著,尤其是在极高稀疏度的场景中:在仅保留3%的模型参数(即97%的稀疏度)情况下,CAP在QQP和MNLI的任务中成功地达到了原始BERT模型性能的99.2%和96.3%。此外,探测实验表明,经过CAP剪枝后的模型可获得更好的泛化能力。接下来让我们详细解读一下CAP。

1 引言

    预训练语言模型(PLMs),如BERT,在各种自然语言处理(NLP)任务中取得了巨大成功。PLMs以自监督的方式进行预训练,然后通过微调适应下游任务。尽管取得了成功,但PLMs通常需要大量的参数,从数百万(例如BERT)到数十亿(例如GPT-3),这导致了极高的内存消耗和计算开销。
 

Fig.1 使用和不使用CAP的BERT模型的剪枝比较

    事实上,最近的研究发现,PLMs被许多冗余权重过度参数化了。为了压缩大规模的PLMs并加速推理,一个主要的方法就是模型剪枝,它专注于识别和去除那些不重要的参数。然而,当将预训练模型应用于下游任务时,大多数研究只是简单地采用原始的剪枝方法,没有充分利用预训练和微调的范式。具体而言,大多数工作在剪枝时只关注对于下游具体任务的知识,而忽略了在原始PLM中的通用知识,这会导致严重的灾难性遗忘问题,影响剪枝模型的泛化能力。当面对极高的稀疏模型场景(例如,97%的稀疏性,仅保留3%的参数)时,剪枝模型的性能将急剧下降。

    本文提出了对比剪枝(CAP),这是一种在预训练和微调范式下的通用剪枝框架。CAP的核心是鼓励剪枝模型从多个角度学习,以来保留不同类型的知识。本文采用对比学习,通过PrC、SnCFiC三个模块实现上述目标。这些模块将从剪枝模型得到的语句表征与来自于其他模型的语句表征作对比,以便剪枝模型能够向其他模型学习。具体而言,PrCFiC分别努力将剪枝模型拉向原始的预训练模型及微调模型,以分别学习通用知识和具体的任务知识。而SnC作为一种桥接机制,努力在剪枝期间将剪枝模型拉向中间模型(称为快照),以获取历史和多样化的知识,从而使高度稀疏的模型仍然可以保持可比的性能。CAP框架具有以下优点:

  • CAP使剪枝模型可以保留通用知识与具体任务的知识,用于缓解灾难性遗忘问题,在剪枝过程中保持模型性能,尤其是在高度稀疏场景下;
  • CAP基于对比学习实现,其被证明是一种强大的表征学习技术;
  • CAP是一种框架,而不是一种特定方法。因此,它可以与各种剪枝方式(包括结构化和非结构化剪枝)灵活集成。

    CAP在实验中表现优秀,如图1所示,通过为不同的剪枝方法配备CAP,几个任务的平均得分有提升。在更高的稀疏度下,提升更大:CAP在QQP和MNLI任务中只用3%的模型参数成功地实现了原始BERT模型99.2%和96.3%的性能。通过任务转移探测实验,可以发现,CAP显著增强了剪枝模型的泛化能力。

2 背景

2.1 模型压缩

    预训练语言模型(PLMs)在NLP领域中取得了显著的成功,但其需要更大的内存和更为严格的延迟限制。目前已经提出了不同的压缩方法,如模型剪枝、知识蒸馏、量化和矩阵分解。在本文中,主要关注模型剪枝,它主要实现识别和去除模型中不重要的权重。剪枝可以分为两类,即修剪单个权重的非结构化剪枝和修剪结构化权重块的结构化剪枝。

    对于非结构化剪枝,基于幅度的方法是根据其绝对值对权重进行剪枝,而基于运动的方法考虑的是在模型微调期间权重的变化大小。此外,还有使用L0、L1范数正则化的方法来进行剪枝。

    对于结构化修剪,一些研究使用一阶泰勒展开,基于移除权重时损失的变化计算重要性得分。

    不同的剪枝方法可以one-shot方式(一次剪枝),也可以迭代方式(一步一步剪枝)。然而,大多数现有方法只考虑了下游具体任务的知识,而忽略了在剪枝模型中保留通用知识,这将导致灾难性遗忘问题。

2.2 对比学习

    对比学习是表征学习的有效机制。将相似的例子视为正例,不相似的例子视为反例,对比学习旨在将正例聚在一起,分离反例,通常使用InfoNCE损失。有学者在计算机视觉中提出了自监督对比学习,将图形的不同视角作为正例,不同图形为反例。它还被成功地引入了NLP社区,如句子表征、文本摘要等。

    假设,有一个例子xi,它通过模型ø被编码成向量zi=ø(xi)Rd。此外为了与zi对比,还有N个示例被编码为。假设这里有一个或多个正例,剩余的作为zi反例。对比训练的目标(对于xi)定义为:

其中,是指zi的正例集合,指余弦相似函数,τ代表温度超参数。

3 方法

    本文提出了一种通用的剪枝框架,即对比剪枝(CAP),它在预训练模型、微调模型、快照模型的监督下来对模型剪枝,以获得不同类型的知识。在迭代剪枝后,将预训练的模型øpre逐步(øpreør1ør2→···→øR)压缩到预期的稀疏率R%。图 2表示CAP的整体实现结构,它由三个基于对比学的模块组成:PrC、SnCFiC。表1中显示了构建正例的不同方法。

Fig.2 CAP实现框架

3.1 PrC:与预训练模型的对比学习

    在向一个指定下游任务使用迁移学习时,原始PLM中的通用知识易于丢失,这将导致灾难性遗忘问题。因此在本节,基于对比学习通过引入PrC模块来保留通用语言知识(如图2中的绿线)。

    假设例子xi在稀疏度为r%下被模型ø编码为zi=ør(xi)Rd。一个好的想法是,可以将zi与由预训练模型øpre编码后的作对比,以驱使该模型正确识别那些语义上相似(正)的例子。通过这种方式,当前的剪枝模型ør能够模拟预训练模型的建模能力,从而保留模型中的的通用知识。 

    具体而言,可以将对比学习用于无监督和有监督的场景下。对于无监督场景下的PrCøpre(xi)被视为ør(xi)的正例,{øpre(xj)}j=1为反例。然后根据式1 计算损失。对于监督场景下的PrC,利用数据的标签注释,例如,在MNLI任务中,句子被标记为隐含、中性或矛盾。因此,将那些与$x_{i}$具有相同标签的词视为正例,而其他词则视为反例,正例集合可表示为 {øpre(xj)|yj=yi},其中yi表示xi的标签,然后根据式1 计算损失。因此PrC的最终训练目标为

 3.2 SnC:与快照模型的对比学习

    剪枝可以使用one-shot方式或者迭代的方式进行。其中one-shot方式是通过只对模型进行一次重训练来去除权重。相比之下迭代的方式进行剪枝是一步一步地去除权重,直至达到预期的稀疏度,每次迭代的中间模型称为快照。在本文中,采用迭代剪枝,因为它更适合高稀疏性场景。然而,与先前的研究不同,本文在对比学习的基础上提出SnC模块来使当前的剪枝模型能从这些快照中学习(图 2中的黄线)。

    具体而言,假设逐步(øpreør1ør2→···→ør)将模型剪枝为r%$的稀疏度,其中{ør}r<r={ør1,ør2,···}称为快照。这些快照可以拟合稀疏模型(ør)和稠密模型(øpreøfine)之间的差距,并提供具有不同稀疏结构的多样化监督。在无监督场景下,对于通过当前剪枝模型ør编码为ør(xi)Rd的例子xi,将来自相同示例,但由快照 {ør(xi)|r<r}编码表示的视为正例,将 {ør(xj)|ji,r<r}视为反例。在监督场景下,通过标签注释将具有相同标签实例当做正例。最后根据式(1)计算SnC的损失:。如表3 所示,快照模型在剪枝过程中起到了有效的指导作用,MNLI、QQP和SQuAD的平均增长为0.58-2.47,特别是在高稀疏度区域。

3.3 FiC:与微调模型的对比学习

    为了更好地适应下游任务,剪枝模型ør还可以从包含丰富特定任务知识的微调模型øfine中学习。为此,本文提出了一个FiC模块,它在当前剪枝模型ør和微调模型øfine之间进行对比学习。它几乎与PrC模块相同,只是目标模型øpre替换为微调模型øfine(图 2中的蓝线)。因此,基于等式(1),训练损失计算为:。除了表示空间中的对比监督信号,还可以通过知识蒸馏机制在标签空间中引入蒸馏监督。

3.4 使用CAP框架修剪

    将PrC、SnCFiC组合一起即可实现CAP框架。需要注意的是,CAP框架可以灵活的与不同剪枝方法集成。本文对结构化剪枝和非结构化剪枝均作了尝试。

    对于结构化剪枝,一个经典的方法是:假设将一个元素删除,基于损失的变化得出该元素的重要性得分。将这种方法表示为一阶剪枝,并将其吸收到CAP框架中,叫做CAP-f。

对于非结构化剪枝,使用基于移动的剪枝方法,该方法计算参数ω的重要性得分如下: 

其中t是训练步数。基于此,分别使用Top-k选择策略与预定义阈值策略来保留参数,将其与CAP框架融合分别表示为CAP-m和CAP-soft。

    最后使用目标:来对模型进行剪枝训练,其中是面向下游任务的交叉损失熵。

4 额外的内存开销

    在本文提出的CAP框架中,剪枝模型从预训练、快照和微调模型中学习。然而,没有必要在GPU中加载所有这些模型,全部加载可能会导致较大的GPU内存开销。事实上,因为在对比学习中,等式(1)只需要示例的句子表示,并且它们也不会反向传播梯度,所以可以简单地对示例进行预编码并将其存储在CPU中。当正常输入批次到达时,获取N个预编码的示例用于对比学习。在本文中,默认使用N=4096,BERTbase的句子表示维数为768。因此,额外的GPU内存开销总计为4096×768=3.15M,仅占BERTbase内存消耗的3.15M/110M=2.86%$,这是足够低且可接受的。

5 实验

5.1 数据集

    本文在各种任务上进行了实验,以说明CAP的有效性,包括:

  • MNLI,多类型自然语言推理语料库,带有域内测试集的自然语言推理任务(MNLI-m)和跨域推理任务(MNLI mm);
  • QQP,Quora问题对数据集,成对的语义等价任务;
  • SST-2,斯坦福情绪树库,针对单个句子的情绪分类任务;
  • SQuAD v1.1,斯坦福问答数据集,提取式问答任务。

 根据大多数已有的工作,报告了其验证集的结果。

5.2 实验设置

    本文基于BERTbase进行110M参数的实验[2],并遵循其设置,除非另有说明。按照Sanh、Wolf和Rush(2020)的做法[3],基于编码器的权重来进行剪枝和报告稀疏度比率。对于CAP-f,逐步步修剪10%的参数,并重新训练模型以恢复性能,直到达到预期的稀疏度。对于CAP-m和CAP-soft,本文的做法与原始论文中相同。对比学习的示例数量为N=4096。本文使用[CLS]的最终隐藏状态作为句子表示,这在探索实验中被证明稍微优于均值池化。本文将从 τ= {0.05,0.1,0.2,0.3}搜索温度。

5.3 实验结果

    在本节中,将CAP与以下模型压缩方法进行了比较:1)知识蒸馏:DistilleBERT、BERT-PKD、TinyBERT和MiniLM。需要注意的是为了保证试验结果公平,TinyBert的结果并未使用数据增强。2)结构化剪枝:CAP-f基于的最标准的一阶剪枝、Top-drop、SNIP和 schuBERT。3) 非结构化剪枝:基于幅度剪枝、基于L0正则化剪枝,以及CAP-m和CAP-Soft所基于的最先进的移动剪枝和软移动剪枝。表2说明了主要结果,其中有一些重要的观察结果:

  • CAP在保证性能的前提下去除了很大一部分BERT模型的参数。在50%的稀疏率下,CAP-f在 MNLI-m中 的性能与原始BERT相同,甚至在MNLI-mm、QQP和SQuAD任务中提高了0.3-0.7个点。更重要的是,仅使用3%的编码器参数(即97%的稀疏率),CAP-soft在QQP(90.9→90.2)和MNLI mm(84.4→81.3)中成功达到了99.2%和96.3%的原始BERT性能;
  • CAP在不同的剪枝方法下均有提升,同时在更高的稀疏度上也获得性能提升。与结构化的一阶剪枝相比,CAP-f在50%和90%的稀疏率下的所有任务中,平均性能提高了1.9(85.6→87.5)个点和4.1(78.7→82.8)个点。同样,与非结构化运动剪枝相比,当稀疏率增长50%→90%→97%时,CAP-m也相应提高了1.0(85.2→86.2)、1.3(82.7→84.0)和2.0(77.8→79.8)个点;
  • CAP始终优于其他剪枝方法。例如,在50%的稀疏率下,CAP-f在MNLI-mm和QQP任务中比SNIP高出2.2和2.7分。此外,在更高的稀疏度下,90%稀疏率的CAP-f甚至可以击败75%稀疏率的SNIP,在MNLI-mm和QQP任务中分别高出2.9和2.4个点;
  • CAP优于知识蒸馏方法。例如,与稀疏率为66.7%的TinyBERT相比,稀疏率为90%的CAP-f在MNLI-m任务中仍然可以超过它0.5个点。

    上述观察结果支持了本文的主张,即CAP有助于剪枝模型保持通用知识与指定下游任务知识,有利于剪枝,尤其是在极高稀疏性场景下。 

 5.4 泛化能力

    与现有方法不同,CAP可以在剪枝模型中保留通用的知识,从而增强其泛化能力。为了证明该说法,本文冻结了从MNLI或QQP任务上训练得到的剪枝模型,然后只在模型上训练一个线性分类器用于另一个任务。除了MNLI、QQP和SST-2任务外,本文还将QNLI和MRPC作为目标任务。

Fig.3 泛化能力对比

    在50%和90%稀疏率下的结果如图 3所示,其中前两行表示于CAP-f相对于一阶剪枝的改进,后两行表示CAP-m相对于移动剪枝修剪的改进。每个单元格都显示了改进,括号中显示了CAP的性能分数。由图可见,CAP在绝大多数情况下都有所改善。例如,在90%稀疏率下,CAP-m在从QQP任务转移的QNLI中的得分高达28.75,大大优于移动剪枝。实验结果表明,CAP可以更好地保持通用知识,并增强剪枝模型的泛化能力。

6 讨论

6.1 理解不同的对比模块

    CAP主要由三个主要的对比模块构成,PrC用于学习预训练模型,SnC用于学习快照模型,FiC用于学习微调模型。为了更好地研究它们的效果,从CAP中删除其中一个,并在不同的稀疏率下使用CAP-f 和CAP-m 方法对模型进行剪枝。

    本文报告了在MNLI-m、QQP的F1和SQuAD任务上的准确率,以及平均变化。如表3所示,删除任何对比模块都会导致模型性能降低。例如,对于90%的稀疏率,去除PrC、SnCFiC会导致CAP-f的平均性能降低1.83-2.59,CAP-m平均性能降低0.58-1.07。此外,一般来说,稀疏度越高,性能退化越大。这对于CAP-f尤其明显。例如,对于不含PrC模块的CAP-f,当稀疏率从50%到90%变化时,性能减低从0.55增加到2.59。结果表明,所有对比模块在CAP中发挥重要作用,并且彼此具有互补优势,特别是在高度稀疏的情况下。

6.2 理解有监督和无监督的对比目标

    在CAP中,由不同模型编码的相同示例被认为是无监督(unsup)对比学习的正例。如果句子级标签注释可用,还可以通过将具有相同标签的示例作为正例来进行监督对比学习(sup)。为了探究其影响,本文在消融研究中将其中一个删除。

    如表4所示,如果没有监督或无监督的对比学习目标,剪枝模型的性能将显著下降。具体而言,去除受监督的对比学习目标会导致CAP性能降低0.53-0.91,而去除无监督的CAP也会有0.49-1.25的性能下降。这表明,有监督和无监督的目标对于CAP来说都是必要的。

6.3 不同稀疏比下的性能

    在本节中,将CAP-f和CAP-m与它们的基准剪枝方法(一阶剪枝和移动剪枝)进行比较,稀疏率从50%到97%不等。QQP和SQuAD任务中性能的变化如图 4 所示。所有方法的剪枝模型性能都随着稀疏率的增加而降低。然而,可以观察到CAP-f始终优于一阶剪枝,并且在更稀疏的情况下,改进甚至更大。CAP-m和移动剪枝之间也存在类似的趋势。这些结果表明,使用三个核心对比模块,CAP可以在剪枝期间更好地保持模型性能。

Fig.4  CAP与其基准剪枝方法对比

6.4 池化方法与温度系数的探讨

    等式(1)中的对比损失函数涉及两个重要点,即句子表示zi和温度τ。对于句子表示zi,本文探索了由模型编码的隐藏状态的两种池化方法,使用[CLS]表示或平均池化表示。对于温度τ,探索了从0.05到0.7的不同值。如图 5所示,使用[CLS]作为句子表示稍微优于平均池方法。此外,在大多数温度下,CAP可以表示实现比其基本剪枝方法更好的性能,并且设置τ=0.1在大多数情况下趋于实现最佳性能。

Fig.5 不同池化方法与温度系数的性能

6.5 学习微调模型的探索

    为了获得模型的通用知识,本文对微调模型(FiC)中的句子表示进行对比学习。为了探究知识蒸馏(KD)的效果,本文在表 5中进行了进一步的实验。结果表明,KD提高了CAP在词语级别的任务(SQuAD)性能,而对句子级别的任务(QQP)几乎没有影响。原因可能是对句子表示的对比学习足以捕捉句子级别任务的特征,但在词语级别的任务上会损失信息。因此,对于词语级别任务最好基于KD使用CAP方法。

7 总结

    本文在预训练和微调的范式下提出了一个通用的剪枝框架,即对比修剪(CAP)。基于对比学习,通过将剪枝模型拉向预训练模型和微调模型的表示来增强剪枝模型,以保持模型中的通用知识与指定任务知识。此外,剪枝过程中的快照也被充分利用,以提供历史性和多样化的监督,来保持剪枝模型的性能,特别是在高稀疏性状态下。CAP始终对不同的剪枝方式产生显著的改进,并在不同的剪枝方式中中实现最先进的性能。实验还表明,CAP增强了剪枝模型的泛化能力。

 

参考文献

1 R. Xu, F. Luo, C. Wang, B. Chang, J. Huang, S. Huang and F. Huang, From Dense to Sparse: Contrastive Pruning for Better Pre-trained Language Model Compression, Proceedings of the AAAI Conference on Artificial Intelligence, 2022, 36, 11547–11555.
2 J. Devlin, M.-W. Chang, K. Lee and K. Toutanova, Bert: Pre-training of deep bidirectional transformers for language understanding, arXiv preprint arXiv:1810.04805, 2018.
3 V. Sanh, T. Wolf and A. Rush, Movement pruning: Adaptive sparsity by fine-tuning, Advances in Neural Information Processing Systems, 2020, 33, 20378–20389.
Logo

更多推荐