Self-Distillation for Further Pre-training of Transformers

ICLR2023| Self-Distillation for Further Pre-training of Transformers基于自蒸馏的Transformer下游任务进一步微调改进算法

  • 论文链接:https://openreview.net/pdf?id=kj6oK_Hj40
  • 源码链接:https://openreview.net/attachment?id=kj6oK_Hj40&name=supplementary_material

简介

大型Transformer模型在大量未标注数据预训练标注数据集后在标注数据集微调的应用已经在各种视觉和自然语言处理下游任务上取得了巨大的成功。然而如果预训练域和微调域存在较大差异时,直接微调的方法可能获得次优性能。一些改进方法提出在微调前在目标未标注数据集上继续预训练的策略。然而这些方法只能在语言模型上使用,在视觉Transformer模型上容易出现过拟合问题。为了解决这个限制,本文提出一种自蒸馏作为正则化的策略。

本文方法

相关工作

问题定义

假定神经网络参数 ( θ i n i t , ϕ i n i t ) (\theta_{init},\phi_{init}) (θinit,ϕinit),神经网络参数由大容量未标注数据和掩蔽自编码策略(masked auto-encoding)预训练得到。 f θ i n i t f_{\theta_{init}} fθinit是用于抽取输入隐藏表示的编码器, g ϕ i n i t g_{\phi_{init}} gϕinit是重建掩蔽输入的解码器。主要目标是在标注数据集 D t r = { ( x ( i ) , y ( i ) ) } i = 1 n \mathcal{D}^{tr} = \{(\mathbf{x}^{(i)},\mathbf{y}^{(i)})\}_{i=1}^{n} Dtr={(x(i),y(i))}i=1n上微调带随机初始化特定任务头 h w h_{w} hw的预训练模型 f θ i n i t f_{\theta_{init}} fθinit。将预训练算法定义为 A \mathcal{A} A。优化目标可以描述为:
min ⁡ θ , w L C E ( θ , w , D t r ) \min_{\theta,w} L_{CE}(\theta,w,\mathcal{D}^{tr}) θ,wminLCE(θ,w,Dtr)

进一步微调策略

在少量特定域标注数据条件下微调容易过拟合。Don’t stop pretraining: Adapt language models to domains and tasks展示了在目标未标注数据集 D u = { x ( i ) } i = 1 n \mathcal{D}^{u} = \{\mathbf{x}^{(i)}\}_{i=1}^{n} Du={ x(i)}i=1n上预训练后在训练集 D t r \mathcal{D}^{tr} Dtr的方法在提升泛化性能上是有效的。其中 D u \mathcal{D}^{u} Du D t r \mathcal{D}^{tr} Dtr相同除了移除了标签。

掩蔽自编码

定义 x ( i ) = ( x 1 ( i ) , … , x K ( i ) ) \mathbf{x}^{(i)} = (x_{1}^{(i)},\ldots,x_{K}^{(i)}) x(i)=(x1(i),,xK(i))是一系列图像的补丁或固定长度 K K K的句子令牌。对于每一个 x k ( i ) x_{k}^{(i)} xk(i)独立地根据以 γ \gamma γ概率的伯努利分布得到二进制掩码 z ( i ) = ( z 1 ( i ) , … , z K ( i ) ) \mathbf{z}^{(i)} = (z_{1}^{(i)},\ldots,z_{K}^{(i)}) z(i)=(z1(i),,zK(i))。如果 z k ( i ) = 1 z_{k}^{(i)}=1 zk(i)=1 x k ( i ) x_{k}^{(i)} xk(i)被一个特殊的掩码令牌取代,否则在掩蔽输入使用相同的 x k ( i ) x_{k}^{(i)} xk(i)。定义 x ^ ( i ) = ( x ^ 1 ( i ) , … , x ^ K ( i ) ) \widehat{\mathbf{x}}^{(i)} = (\widehat{x}_{1}^{(i)},\ldots,\widehat{x}_{K}^{(i)}) x (i)=(x 1(i),,x K(i)),掩蔽自编码的最终目标可以描述为:
L M A E ( θ , ϕ ; D u ) = 1 n ∑ i = 1 n E z ( i ) ∼ p γ , T ( z ) [ − ∑ k = 1 K z k ( i ) Z ( i ) ⋅ log ⁡ p θ , ϕ ( x k ( i ) ∣ x ^ ( i ) ) ] , Z ( i ) = ∑ k = 1 K z k ( i ) \mathcal{L}_{\mathrm{MAE}}\left(\theta, \phi ; \mathcal{D}^{u}\right)=\frac{1}{n} \sum_{i=1}^{n} \mathbb{E}_{\mathbf{z}^{(i)} \sim p_{\gamma, T}(\mathbf{z})}\left[-\sum_{k=1}^{K} \frac{z_{k}^{(i)}}{Z^{(i)}} \cdot \log p_{\theta, \phi}\left(x_{k}^{(i)} \mid \hat{\mathbf{x}}^{(i)}\right)\right], Z^{(i)}=\sum_{k=1}^{K} z_{k}^{(i)} LMAE(θ,ϕ;Du)=n1i=1nEz(i)pγ,T(z)[k=1KZ(i)zk(i)logpθ,ϕ(xk(i)x^(i))],Z(i)=k=1Kzk(i)

基于自蒸馏的进一步微调策略

给定预训练模型 g ϕ i n i t ∘ f θ i n i t g_{\phi_{init}}\circ f_{\theta_{init}} gϕinitfθinit,继续基于目标未标注数据集 D u \mathcal{D}^{u} Du和掩蔽自编码策略训练模型获得编码器 f θ 0 f_{\theta_{0}} fθ0 g ϕ 0 g_{\phi_{0}} gϕ0。丢弃解码器考虑使用编码器 f θ 0 f_{\theta_{0}} fθ0作为自蒸馏的教师模型。复制预训练初始网络参数 g ϕ i n i t ∘ f θ i n i t g_{\phi_{init}}\circ f_{\theta_{init}} gϕinitfθinit作为学生模型,进一步使用掩蔽自编码策略预训练学生模型,且强制学生模型 f θ i n i t f_{\theta_{init}} fθinit编码器的隐藏表示接近教师模型的隐藏表示:
L D i s t i l l ( θ ; θ 0 , D u ) = 1 n ∑ i = 1 n ∣ ∣ f θ ( x ( i ) ) − StopGrad ( x 0 ( i ) ) ∣ ∣ 2 2 \mathcal{L}_{Distill}(\theta;\theta_{0},\mathcal{D}^{u}) = \frac{1}{n}\sum_{i=1}^{n}||f_{\theta}(\mathbf{x}^{(i)}) - \text{StopGrad}(\mathbf{x}_{0}^{(i)})||_{2}^{2} LDistill(θ;θ0,Du)=n1i=1n∣∣fθ(x(i))StopGrad(x0(i))22
本文算法可以重复这个过程执行多轮自蒸馏,其中前一轮自蒸馏的学生称为教师模型。新的学生模型用预训练的权重初始化。经验发现,第一轮的自蒸馏在提升下游任务的最终范围性能方便发挥了最重要的作用。在自蒸馏之后,丢弃解码器 g θ 1 g_{\theta_{1}} gθ1,使用初始化 θ 1 \theta_{1} θ1权重和随机初始化的特定任务头 h ω h_{\omega} hω微调学生编码器 f θ 1 f_{\theta_{1}} fθ1

猜你喜欢

转载自blog.csdn.net/qgh1223/article/details/131624342