会议: EMNLP 2022
相关出版物: Knowledge distillation transfer sets and their impact on downstream NLU tasks
知识蒸馏是一种将大型机器学习模型压缩至可管理大小的流行技术,使其适用于语音助手等低延迟应用。在蒸馏过程中,一个轻量级模型(称为学生模型)会在特定数据集(称为迁移集)上接受训练,以模仿源模型(称为教师模型)。迁移集的选择对生成高质量的学生模型至关重要,但如何进行选择远非易事。在自然语言理解应用中,教师模型通常在通用语料库上进行预训练,这可能与用于微调的特定任务语料库不同。这就引出了一个自然的问题:学生模型应该在通用语料库上进行蒸馏以学习高质量的教师预测,还是在更符合微调目标的特定任务语料库上进行蒸馏?
在提交给2022年自然语言处理经验方法会议的论文中,我们探讨了这个问题,并证明仅使用特定任务数据蒸馏的模型在其目标任务上的表现优于那些使用特定任务和通用数据混合进行蒸馏的模型。换句话说,在目标领域数据上进行蒸馏比单纯依赖教师知识能提供更好的性能。
然而,我们证实,即使是在混合数据上进行蒸馏也是有益的,学生模型的表现优于从头开始训练的同等规模模型。我们还研究了在教师模型完成预训练但尚未进行微调时进行蒸馏,这样只有学生模型会进行微调。我们发现,在蒸馏之前先让教师模型适应迁移集(这种成本更高的策略)能产生最佳的学生模型。
蒸馏多样性
在我们的实验中,我们使用通用数据和特定任务数据按三种不同比例混合,从一个大型多语言教师模型中蒸馏出一组多语言学生模型:
那么,什么是通用数据和特定任务数据?通用数据通常是公开可用的、与任何特定任务无关的非标注数据。在未标注数据上进行模型训练通常涉及自监督学习;在我们的案例中,这意味着遮蔽文本中的单词并训练模型进行填充(遮蔽语言建模)。
特定任务数据是经过标注以指示任务正确执行的数据。在我们的案例中,我们探索了两个下游任务:领域分类和联合意图分类与命名实体识别,我们的特定任务数据也相应进行了标注。
我们在两种类型的测试集(test 和 tail_test)以及四种感兴趣的语言(德语、法语、意大利语和西班牙语)上评估了我们的模型。test 集包含完整的测试拆分,而 tail_test 是 test 中那些出现频率为三或更低的数据点子集。tail_test 集允许我们衡量模型对在训练中罕见数据的泛化能力。
我们研究和评估的两个基线模型和四个实验模型的示意图。
我们所有的实验模型和基线模型都具有相同数量的参数。通用蒸馏基线是通过仅使用通用数据(比例1)蒸馏一个学生模型创建的。直接预训练基线是使用通用数据从头开始预训练,然后在特定任务数据上进行微调。
我们创建了四个蒸馏后的学生编码器,其中两个直接使用比例2和比例3的数据集进行蒸馏。其余两个以相同方式创建,但教师在蒸馏前使用特定任务数据集各进行了一百万步的微调。这使得我们能够对教师适应目标任务的情况进行基准测试。
在评估领域分类和联合意图分类与命名实体识别任务性能时,我们为每个编码器添加了一个相应的解码器。相对于基线,F1分数的变化被用作领域分类的改进指标,语义错误率的变化被用作联合意图分类与命名实体识别的改进指标。
针对通用蒸馏基线的每种蒸馏编码器和每种语言的百分比改进(领域分类任务)。F1分数变化正向表示更好。
联合意图分类与命名实体识别任务的结果。在这种情况下,负向表示更好。
在领域分类任务上,我们的结果表明,当迁移集中包含特定任务数据时,各方面都有改进,其中仅使用特定任务数据带来的改进最大。在联合意图分类与命名实体识别任务中,我们看到了类似的结果,仅使用特定任务数据蒸馏的编码器改进更大。
致谢: 我们要感谢论文的共同作者对此工作的贡献。
研究领域
标签
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。