R-Drop:Regularized Dropout for Neural Networks

《R-Drop: Regularized Dropout for Neural Networks》(2021年NeurIPS)

摘要

  • Dropout用于正则化深度神经网络的训练,引入的随机性导致训练和推理之间不可忽视的不一致
  • 本文引入一种简单的一致性训练策略R-Drop来正则化dropout——迫使由dropout产生的不同子模型的输出分布彼此一致
  • 具体来说,对于每个训练样本,R-Drop最小化由dropout采样的两个子模型输出分布之间的KL-散度
  • 5个学习任务(总共18个数据集)的实验——包括神经机器翻译、抽象概括、语言理解、语言建模和图像分类——表明R-Drop普遍有效的
  • 当应用于微调大规模预训练模型(例如ViT、RoBERTa-large和BART)时,具有实质性的改进,在多个任务上实现SOTA

介绍

  • 现有文献[41,81]揭示了dropout的可能副作用,即dropout模型的训练和推断阶段之间存在不可忽视的不一致,训练期间随机抽样的子模型(dropout造成的)与推断期间的完整模型(无dropout)不一致
  • 通过对不一致的隐藏状态施加L2正则化可以在一定程度上缓解不一致问题
  • 本文方法为R-Drop,在每个batch训练中,每个数据样本经历两次前向传递,每次传递由不同的子模型通过随机丢弃一些隐藏单元来获得。R-Drop通过最小化两个分布之间的双向KL散度来强制两个分布相同,使两个子模型输出的数据样本彼此一致
  • 与传统神经网络训练中的dropout策略相比,R-Drop只增加了KL-散度损失,而没有任何结构修改
  • R-Drop对隐藏单元和Drop采样的子模型的输出都起作用
  • 对5个任务和18个数据集的广泛实验表明R-Drop非常有效

方法

image-20211210004104148

  • 具体框架如图1所示
  • 给定数据集$D={(x_i,y_i)}_{i=1}^n$,训练目标是学习一个模型$P^w(y|x)$,$n$为训练样本数目,$(x_i,y_i)$为标记数据
  • 两个分布的KL散度表示为:$D_{KL}(P_1||P_2)$

R-Drop正则化

  • 深度学习模型的主要学习目标是最小化负对数似然损失

    image-20211210122403731

  • 给定每个步骤的输入数据$x_i$,前向传播两次获得$P^w_1(y_i|x_i)$和$P^w_2(y_i|x_i)$,由于dropout存在,两个其实是不同的子模型,如图1右边所示。R-Drop试图最小化相同样本的这两个输出的双向KL散度,即:

    image-20211210123140634

  • 再加上样本的负对数似然损失:

    image-20211210123223367

  • 最终训练目标为最小化数据$(x_i,y_i)$的$L^i$,即

    image-20211210123307078

  • 其中权重$\alpha$用于控制KL散度

训练算法

image-20211210004126159

  • 实际训练中,不需要重复输入相同的数据两次,而是可以重复、连接输入数据为$[x; x]$,即,将batch-size放大一倍
  • 后文的实验显示,R-Drop需要更多的训练才能收敛,但性能也更好

理论分析

实验

NMT的应用

image-20211210004157998

  • 在Fairseq上进行

语言理解的应用

image-20211210004222798

  • 在GLUE上实验
  • 对比BERT-base和RoBERTa-large

摘要的应用

image-20211210004251475

  • 对比BART模型
  • 超参数同原文,$\alpha$为0.7

语言建模的应用

image-20211210004318860

  • 对比Transformer decoder与Adaptive Input Transformer——在Transformer中引入自适应输入的嵌入

图像分类的应用

image-20211210004334950

  • 使用Vision Transformer做对比

其他研究

正则化和成本分析

  • 如图2所示,随着训练的进行,Transformer很快变得过拟合,并且train与valid的loss的的差距较大,而Transformer R-Drop的valid loss较低——证明了R-Drop可以在训练过程中提供持久的正则化

  • 早期训练阶段,Transformer快速提高BLEU得分,Transformer R-Drop逐渐提高BLEU分数,并取得了优越得多的性能,但需要更多的训练才能收敛

    image-20211210130432902

k-step R-Drop

  • 由上知,R-Drop的训练次数更多,因此改为每$k$步执行一次R-Drop来提高训练效率——使用[1,2,5,10]
  • valid的BLEU曲线以及训练更新次数和训练时间如图3所示
  • 虽然用较大的$k$收敛更快,但训练没有进入最优解,很快过拟合,并且增加$k$时,BLEU分数越来越低

m-time R-Drop

  • 上面是将同样数据输入两次,本节测试输入$m$此,此时KL散度为:$L_{KL}=\frac{\alpha}{m*(m-1)}\sum_{i、j\in 1,…,m}^{i \neq j}D_{KL}(P_i^w(y|x)||P_j^w(y|x))$
  • $m=3$时效果类似于$m=2$,表明在两个分布之间已经具有较好的正则化效果,不需要更强的正则化

权重的影响

image-20211210131135548

  • $\alpha$过大,则表明过于关注KL正则化
  • 每个任务的数据大小和模型大小导致过拟合发生的程度,决定$\alpha$的选择

总结

  • 本文提出一种简单而又非常有效的基于dropout的一致性训练方法
  • 在18个流行的深度学习数据集上的实验结果表明,R-Drop不仅能有效增强强模型,而且在大规模数据集上也能很好地工作,甚至达到SOTA性能