领域数据在NLU模型蒸馏中胜于教师知识

4 阅读4分钟

知识蒸馏是一种将大型机器学习模型压缩为更小、更适合低延迟应用(如语音助手)的流行技术。在蒸馏过程中,一个轻量级模型(称为学生)被训练去模仿一个源模型(称为教师)在特定数据集(称为迁移集)上的行为。

迁移集的选择对于训练出高质量的学生模型至关重要,但如何做出这一选择却远非显而易见。在自然语言理解(NLU)应用中,教师模型通常在大规模通用语料库上进行预训练,这与微调阶段使用的任务特定语料库可能不同。这就引出了一个自然的问题:学生模型应该使用通用语料库进行蒸馏,以便从高质量的教师预测中学习,还是应该使用与微调更一致的任务特定语料库?

在发表于2022年自然语言处理经验方法会议(EMNLP)的论文中,我们探讨了这个问题,并证明仅使用任务特定数据蒸馏出的模型,在目标任务上的表现优于使用任务特定和通用数据混合蒸馏出的模型。换句话说,在目标域数据上进行蒸馏比仅仅依赖教师知识能提供更好的性能。

我们确认,即使在混合数据上蒸馏也是有益的,学生模型的性能优于从零开始训练的同等规模模型。我们还研究了在教师模型完成预训练但尚未微调时进行蒸馏的情况,即仅对学生模型进行微调。我们发现,在蒸馏前让教师模型适应迁移集的策略成本更高,但能训练出最好的学生模型。

蒸馏的多样性

在我们的实验中,我们从一个大型多语言教师模型中蒸馏出一组多语言学生模型,使用了三种不同比例的通用数据和任务特定数据混合:

  • 比例1: 仅通用数据(基线)
  • 比例2: 通用数据与任务特定数据比例为7:3(模拟低资源场景)
  • 比例3: 仅任务特定数据

那么,什么是通用数据和任务特定数据呢?通用数据通常是公开可用的、未标注的、与任何特定任务无关的数据。在未标注数据上的模型训练通常涉及自监督学习;在我们的案例中,这意味着屏蔽文本中的单词并训练模型去预测它们(掩码语言建模)。

任务特定数据是已经过标注,以指示如何正确执行任务的数据。在我们的案例中,我们探索了两个下游任务:领域分类(DC)以及意图分类和命名实体识别联合任务(ICNER),并且我们的任务特定数据也相应地被标注。

我们在两种类型的测试集——测试集(test)和尾部测试集(tail_test)——以及四种目标语言(德语、法语、意大利语和西班牙语)上评估了模型。测试集包含完整的测试数据,而尾部测试集是测试集中出现频率为三次或更少的数据点子集。尾部测试集使我们能够衡量模型对训练期间极少见到数据的泛化能力。

所有实验模型和基线模型都具有相同的参数数量。通用蒸馏基线是通过仅使用通用数据(比例1)蒸馏学生模型创建的。直接预训练基线是使用通用数据从零开始预训练,然后在任务特定数据上进行微调。

我们创建了四个蒸馏学生编码器,其中两个是直接使用比例2和比例3的数据集进行蒸馏。另外两个以相同方式创建,但在蒸馏之前,教师模型使用任务特定数据集分别进行了一百万步的微调。这使得我们能够评估教师模型对目标任务的适应性。

在评估DC和ICNER任务的性能时,我们为每个编码器添加了相应的DC或ICNER解码器。F1分数(综合了假阴性和假阳性率)相对于基线的变化被视为DC任务的改进,而语义错误率(SemER)相对于基线的变化被视为ICNER任务的改进。

在DC任务上,结果表明当迁移集中包含任务特定数据时,各项指标均有改善,而最大的改进来自于仅使用任务特定数据。在ICNER任务中也观察到了类似的结果,仅使用任务特定数据蒸馏的编码器获得了更大的改进。

致谢:感谢论文的共同作者 Lizhen Tan、Turan Gojayev、Pan Wei 和 Gokmen Oz 对本研究的贡献。FINISHED