本文探究了一种知识蒸馏和一种skipping sub-layer方法去实现将深层模型所学的知识转移到一个浅层网络当中。
Compression of Deep Transformer
本文的核心思想:将一个大型网络所学习到的知识转移到一个小的轻型网络当中。具体来说,本文使用的方式是知识蒸馏,即使小的模型学习大的模型的输出分布,作者所基于的知识蒸馏并不是传统的知识蒸馏的形式,而是equence-level knowledge distillation (SKD)。同时作者具体的训练策略为:
- 1、在训练teacher模型时,使用组置换策略。具体来说即在训练encoder时,将encoder的层分为多个组,这要求teacher模型层数正好是student模型层数的整数倍,这样就对应了student中的第i层对应teacher的第j组。该方法的核心是使用选定的单层模拟其组输出的行为。这样就避免了使用额外项的引入。
- 2、生成SKD训练数据。在训练teacher模型时会同时生成SKD训练集,具体过程如下:给定数据对{x,y},teacher模型将x翻译为z从而生成SKD数据{x,z}
- 3、训练student模型
Skipping Sub-Layers for Deep Transformer
深层的大型网络极易出现过拟合现象,为了解决这个问题,Skipping Sub-Layers被作为一种正则化手段引入到深层网络的训练过程当中,该手段可被视为一种垂直的dropout策略。
但作者发现,直接使用该策略并不会促进性能的提升,反而会损害模型的性能,故作者提出了两阶段的训练:第一阶段先训练原始模型至收敛,在启动第二阶段,即加入skipping策略后继续训练。