Dropout 是一种能够有效缓解过拟合的正则化技术,被广泛应用于深度神经网络当中。但是被 dropout 所丢掉的位置都有助于缓解过拟合的吗?
中山大学 和 Meta AI 在 NeurIPS 2022 接收的论文在研究了注意力中的 dropout 后发现:不同注意力位置对过拟合的作用并不一致,如果丢弃了不恰当的位置甚至会加速过拟合。基于这一发现,我们提出了一种归因驱动的 Dropout(AD-DROP),该方法选择高归因的位置进行 Drop,从而实现更具针对性的 dropout。
论文标题:
AD-DROP: Attribution-Driven Dropout for Robust Language Model Fine-Tuning
论文链接:
https://arxiv.org/abs/2210.05883
代码链接:
GitHub - TaoYang225/AD-DROP: Source code of NeurIPS 2022 accepted paper "AD-DROP: Attribution-Driven Dropout for Robust Language Model Fine-Tuning"
介绍
本文涉及两个方面的背景知识:1)Dropout;2)归因分析(Attribution)。
虽然随机采样的 dropout 被证明是一种能够有效缓解过拟合的手段,但是现有的工作缺乏深入地探究这些所丢弃的 units 对缓解过拟合的作用。在这项工作中,我们结合自注意力归因 [8] 来尝试研究这一问题。
前置实验
自注意力归因可以为注意力位置分配不同的归因分数(代表对预测的贡献程度,通常认为归因分数越高,对预测越重要)。那么一个自然而言的想法就是:如果按归因分数的大小来丢掉注意力位置,会发生什么?因此,我们在三个数据集(MRPC/SST-2/QNLI)上做了一个实验(附录B):
1. 首先微调好一个 roberta-base 模型;
2. 然后,在验证集上,计算注意力每个位置的归因分数(注意:为了计算方便,直接采用梯度本身,而非积分梯度,实验中发现积分梯度也有一致的现象;此外,采用真实标签对应的逻辑输出进行归因。)
3. 设置不同的比例,把注意力矩阵中每一行中的位置,按“归因分数低到高/归因分数高到低”的位置通过添加 attention mask 来 drop 掉,结果如下:
在三个数据集上,观察到了几乎一致的现象:
1. 从低到高 drop,一开始模型会快速拟合标签(接近 100% 准确率),随后趋势保持平稳,最后由于丢弃掉过多的信息准确率大幅度的下降;
2. 从高到低 drop,模型性能首先快速下降,随后趋势变缓,最后由于丢弃掉过多的信息可能存在一个上升趋势。可以理解:基于真实标签的梯度归因“泄露”了标签信息,从而使得丢弃掉归因分数“低/高”的位置可以快速“拟合/远离”真实标签。这一实验恰恰说明,不同注意力位置的作用是不一致的。
上述实验是基于微调好的模型做的,为了进一步验证这两种 mask 策略对模型训练的影响,我们在训练过程中也应用了两种 mask 策略,并与原始微调和随机 Dropout 比较(具体实现细节见论文 2.2 节),结果如下:
▲ MRPC中训练集与验证集的loss曲线,除红色线外,丢弃率设置为0.3
红色线代表不施加注意力的 dropout(原始微调)。绿色线为施加随机 dropout,与红色线相比,轻微缓解了过拟合,验证集的最小 loss 更低;蓝色线代表 drop 掉 30% 低归因的位置,可以看到模型快速过拟合训练集,但是在验证集上没有收敛(loss 震荡)。
黄色线代表 drop 掉 30% 高归因的位置,与红色线和绿色线相比,这种策略显著降低了模型的收敛速度,同时验证集能正常收敛,但是验证集最小 loss 要略高于红色线和绿色线(存在欠拟合)。上述实验说明:
基于上述发现,我们设计了一种新的 dropout 模式:AD-DROP(Attribution-Driven Dropout)。AD-DROP 与原生 dropout 的区别如下:
▲ 原生 dropout 与 AD-DROP 的注意力图比较,位置颜色越深代表归因分数越大,位置交叉的圆圈代表被 drop 的位置,红色框线代表高归因的候选丢弃区域(如Top-3)
原始 dropout 在每一行中随机的丢弃位置,高归因与低归因位置的丢弃率相同;而 AD-DROP 中,首先选定一个高归因分数的候选区域,然后从中再随机的 drop(施加随机的好处在于,不至于丢弃全部的高归因信息,导致缺乏必要的预测信息无法收敛)。AD-DROP 关注于 drop 高归因的区域,以达到缓解过拟合的目的,实现过程包含如下四个步骤:
▲ AD-DROP的实现步骤
这里采用伪标签进行归因的原因有两点:1)如果采用真实标签归因会泄露标签信息,并导致训练和推理不一致;2)AD-DROP 的目的是抑制模型对当前预测而言高归因位置的依赖,可能能够纠正预测错误的样本。
我们进一步设计了一种交叉微调(Cross-tuning)策略,以防止在应用 AD-DROP 时,高归因的位置被过度丢弃,从而提升训练的稳定性。交叉微调策略即交替执行原始的微调 epoch 与带有 AD-DROP 的 epoch。算法如下:
我们主要在 GLUE 基准上验证了 AD-DROP 的有效性,并做了许多的消融分析实验。
此外还做了重复性实验、数据量的影响、小样本场景、大模型的影响等。这里就不一 一详细介绍了,感兴趣的朋友请移步原文查看。