少样本轻量化:多个小模型互学习会比大模型好么?
来源 | ACTBIGDATA
作者 | 毛乾任、蒋为峰等
大型预训练语言模型(PLM),如 BERT、GPT-3,在自然语言处理应用的发展中扮演着至关重要的角色。为了将这些 PLM 应用于广泛的下游任务中,我们需要对其进行微调,以便将预训练阶段的知识泛化到具体的任务中去。然而,尽管预训练和下游任务微调的范式为自然语言处理任务带来了显著的进步,在现实应用中,我们仍会面对一些资源上的限制,这就需要低资源技术的参与。例如,半监督学习解决了标注样本有限的挑战,而知识蒸馏(KD)则帮助缓解计算资源上的限制。
本文讨论了一种满足这两种低资源场景的技术策略,能够同时应对标注样本有限和计算资源受限设备的挑战。然而,直接将半监督学习与知识蒸馏结合起来存在挑战。首先,较浅的网络通常具有 有限的模型容量,从而使得其相比于大型 PLM 更难优化。此外,有限的标注数据 进一步限制了小模型有效优化的能力。
为了应对这些挑战,我们提出了半监督协同训练框架 DisCo(Distilled Student Models Co-training for Semi-supervised Text Mining)。该框架旨在通过使用蒸馏的小模型和少量标注样本来增强模型 SSL 性能。
我们提出的半监督协同训练(SSL)框架 DisCo,通过知识蒸馏的方式从大型 PLM 生成一组小型学生模型用于下游任务的微调。
具体而言,小型学生模型利用不同蒸馏策略产生的模型视图和由各种输入增强产生的数据视图分享互补知识,以提升它们的 SSL 效果。我们在半监督文本分类和摘要提取任务上评估了 DisCo。实验结果表明,利用 DisCo 框架产生的学生模型比基线 PLM 小 7.6 倍,推理速度快 4.8 倍,同时保持了可比的性能。我们还展示了利用 DisCo 框架生成的学生模型在不同任务中的表现优于同等大小的微调模型,同时互学习的学生越多,最终单个小模型的性能越好。
本节介绍我们提出的半监督协同训练框架 DIsCo。如下图所示,DisCo 协同训练一组蒸馏学生,以多样化的视图互补地提高框架中学生模型的性能。作为例子,我们使用双学生模型的 DisCo 框架来介绍所提出的方法。DisCo 在协同训练过程中引入了两种初始化视图。第一种是模型视图,即从教师模型蒸馏出的不同学生模型变体;第二种是数据视图,即由训练输入产生的不同数据增强实例。
模型视图多样性。利用队列中学生模型的不同初始化。通过从教师模型中提取不同的任务无关知识来实现。
数据视图多样性。利用队列中的学生模型输入不同噪声样本。通过对输入样本进行不同的基于嵌入层的数据增强来实现。
图 1 左侧展示了 DisCo 首先使用同一教师蒸馏得到两个学生模型变体,这个过程帮助我们为之后的半监督协同训练预编码模型视图。此后,我们复制单个学生模型的副本,以便分别接收监督和非监督数据。在监督学习阶段,DisCo 使用标注样本优化两个学生。在非监督学习阶段,每个学生模型与其对应的通过监督学习训练的副本同时共享参数。随后使用无标注样本,通过一致性训练损失优化学生。
图 1 右侧展示了仅配备模型视图的 DisCo 变体,以便对 DisCo 进行消融比较。在这种变体中,标注和无标注数据是重复的,并直接输入给两个学生模型。DisCo 及其变体保证了蒸馏学生模型之间的相互协作,并通过一致性约束增强了学生模型的泛化能力。在本节的介绍中,我们将从知识蒸馏和协同训练策略两个方面来介绍 DisCo 框架。
在我们的框架中,知识蒸馏过程具有两个主要目的:
首先,我们希望完成模型规模的压缩。我们通过知识蒸馏的方式从大型 PLM 生成小型学生模型。与 TinyBERT 的任务不可知蒸馏一样,我们使用未经微调的原始 BERT 作为教师模型来生成至少两个学生模型。任务不可知的蒸馏方法方便我们直接使用任何现有的预训练 PLM 作为教师模型。
我们使用大规模通用领域语料库 WikiText-103 作为蒸馏的训练数据。学生通过 BERT 层的表示蒸馏来模仿老师的行为:(i) 嵌入层的输出,(ii) 隐藏状态,(iii) 注意力矩阵。
然后,我们需要为之后的协同训练过程编码模型视图。为了确保不同的学生模型能够从教师模型中获取不同的知识,我们从教师模型 BERT 的不同层向学生模型蒸馏知识。模型视图编码通过利用教师的不同知识使学生个体多样化。
我们为知识蒸馏过程提出了两种不同的策略:
(i) 间隔层 KD (SKD): 如下图左侧所示,学生从教师间隔的 k 层学习。例如,{3,6,9,12}是 BERT 的 4 个间隔层。
(ii) 连续层 KD (CKD): 如下图右侧所示,学生从教师连续的 k 层学习。例如,{1,2,3,4}是 BERT 的 4 个连续层。在双学生 DisCo 情况下,具有两种知识蒸馏策略的两个学生分别表示为和。协同训练框架将鼓励不同的学生模型在模型视图初始化的基础上以互补的方式相互教导。通过一致性约束,我们的协同训练框架可以在模型视图上获得有效的归纳偏差,使学生同伴能够相互教学并推广未见过的数据。
在我们的框架中,协同训练策略过程同样有两个主要目的:
首先,我们在嵌入层利用各种数据增强技术来生成多样化的数据视图。我们的直觉是,高级数据增强可以引入额外的归纳偏差,因为它们是基于词符嵌入层的随机抽样,语义影响最小。如下图所示,受 ConSERT 和 SimCSE 的启发,我们采用了四种的数据增强方法:
对抗性攻击 (AD)。我们使用平滑诱导对抗正则化 (SIAR) 来实现它,它鼓励模型在向输入注入小扰动时,其输出不会改变太多。
词序打乱 (TS)。我们通过将打乱后的词符位置 Id 传递给嵌入层,同时保持词符 id 的顺序不变来实现它。
词符剪切 (CO)。该方法在嵌入矩阵中随机擦除一些词符以进行词符剪切。
Dropout(DO)。与 BERT 一样,该方案以特定的概率随机丢弃元素,并将其值设置为零。
DisCo 在协同训练中结合了两种形式的数据视图:硬形式 和 软形式。以双学生网络为例,我们使用两种不同的数据增强方法,如 AD 和 DO,来实现硬形式的数据视图。对于软形式的数据视图,我们应用相同的数据增强方法,如 AD 和 AD,但使用不同的初始化以确保不同的数据视图。在 DisCo 中,每个学生通过硬形式和软形式的各种组合来获得扰动差异。
形式上,我们提供了一个半监督数据集,。是标注数据,相同的将用于两个学生模型的有监督训练中。是无标注数据,我们为两种学生制作两份相同的无标注数据副本。对于,令和表示数据的两个数据视图。和是两个蒸馏得到的学生模型,我们将其视为双学生DisCo的模型视图。学生只使用,学生只使用。通过与学生和的协同训练,其优化目标使他们能够共享互补信息,从而提高网络的泛化能力。
对于监督部分,我们分别使用分类交叉熵 (CE) 损失函数来优化学生和学生。它们使用从 S 中采样的标注数据进行训练:
对于无监督部分,在标准的协同训练中,我们期望多个分类器对无标注数据提供一致的预测。无标注数据 的一致性损失利用两个学生输出和中计算。我们使用均方误差(MSE)来鼓励两个学生进行类似的预测:
最后的总优化目标,我们将有监督交叉熵损失与无监督一致性损失结合起来,通过最小化联合损失来训练模型:
DisCo框架还可以自然地扩展到更多学生模型的协同训练中。给定个模型, ..., ),则所有 ()的优化目标函数为:
如下表所示,本文在多个数据集上进行了实验。对于摘要提取任务,我们使用了 CNN/DailyMail 数据集。对于文本分类任务,我们使用了 Agnews、Yahoo!Answers 和 DBpedia 数据集。我们将提出的方法与一系列基线模型进行了严格的比较。
对于 文本分类任务,我们的实验结果如下表所示:
从表中可以观察到:
DisCo 产生的两个学生模型(使用 6 层 BERT 的学生模型和)在所有文本分类任务中始终优于 TinyBERT 和 UDATinyBERT。
与 FLiText 相比,DisCo 在使用比 FLiText 少 0.7M 参数量的学生模型时,平均分类准确率提高了 1.9%。
对于 摘要抽取任务,我们的实验结果如下表所示:
从表中可以观察到:
在半监督摘要提取任务中,我们的双学生 DisCo 超越了所有基线。
尽管使用了较小的 4 层模型,DisCo 的表现仍然优于 12 层的 BERTSUM、UDA 和 CPSUM。
无论是使用 10 个还是 1000 个标注数据,DisCo 在摘要提取中都取得了卓越的性能。
下表展示了通过 DisCo 框架训练得到的学生模型的 推理速度。可以看到,与教师模型 BERTBASE相比,所有 4 层学生模型在两个任务上的推理速度达到了 4.80 倍至 7.52 倍的提升。
我们还尝试在 DisCo 协同训练框架中 加入更多学生 进行训练,将学生数量扩展到四个。下表可以看出,每个单独学生的性能相比于双学生的情况都有所提升。
从表格和图片中可以观察到:
在 DisCo 中,硬形式的数据视图带来了最佳效果,即 DO 和 AD 编码数据视图的组合。
在相同的模型视图下,结合软形式数据视图的 DisCo 略优于使用硬形式数据视图的 DisCo。
通过模型视图和数据视图训练获得的最优解比仅通过模型视图获得的最优解更平坦。
本文提出了 DisCo,这是一个使用有限标注数据的半监督蒸馏学生协同训练框架,用于针对半监督文本挖掘的轻量级模型。DisCo: Distilled Student Models Co-training for Semi-supervised Text Mining,已被 EMNLP 2023 接收。
paper: https://arxiv.org/abs/2305.12074
code: https://github.com/LiteSSLHub/DisCo
今日荐文
碾压前辈!Meta发布“最大、性能最好”的开源Code Llama 70B,但开发者纷纷喊穷:玩不起!
OpenAI出手后,GPT-4真的不懒了?网友不买账:只靠打补丁恐怕无济于事!
贾扬清新作被某印度创始人内涵借鉴,懒得纠缠:巧了,正准备开源,GitHub 见
向微软“复仇”!支持OpenAI、Copilot 的Zed编辑器要干掉VS Code:Rust+少插件,速度贼快
代码屎山噩梦加速来袭,都是AI生成代码的锅?
微软战略AI产品发布一周就翻车!网友:跟ChatGPT Plus 比,简直就是垃圾
你也「在看」吗? 👇
微信扫码关注该文公众号作者