0%

利用Test Adaptation提高模型泛化性

Fully Test Time Adaptation by Entropy Minimization

来自ArXiv,by DeepAI和伯克利,ICLR’21高分论文。

一、Motivation:

  • 1.focus on一个独特的任务设置,这篇工作希望解决的setting是,当模型训练好之后,在没有任何监督信息的测试数据上使用时,只有parameter和test data,如何自适应的进行预测从而在测试数据上表现最佳。下表展示了fully test-time adaptation和之前的几种setting的区别。
  • 2.之前的类似任务上的方法为什么不能直接应用过来,它们的不足(fine-tune着力于训练阶段,领域自适应也需要训练数据,TTT比较相似但是在训练&测试同时进行adaption)。

背景知识:

1.高熵代表不确定性(根据最大熵原理在满足已知条件的模型中,预测熵最大的模型是最好的模型)【label smoothing或者dropout都可以看作是一种软最大熵约束】;低熵代表高置信度。

2.领域自适应的方法一般是应用在训练时,主要利用特征对齐、对抗不变性、共享代理目标等学习一个目标领域的表示。即使是最近的source-free的方法也需要利用生成建模和伪标签等、效率比较低。

二、创新点&设计思路:

  • 引入测试熵

    • 熵非常general与任务无关,但相比于自监督学习,熵又是task-specific的不需要手工设计目标。(自监督:补全context、rotation预测、添加噪声的自编码目标)而且,熵和performance具有反向相关性。

  • 测试阶段的normalization

    • 从测试数据中以滑动平均的方式估计μ和σ,利用熵作为目标函数学习β和γ。adaption一个Epoch。

三、实验设计

1.数据:不同规模图像分类数据 & 图像分类的领域自适应/迁移学习数据集 & 语义分割迁移学习数据集,训练数据被使用多种方式corruption,比如增加对比度、增加高斯噪声等。

2.结论

  • Tent不仅能够提升鲁棒学习和迁移学习的效果,而且开销很低
  • 测试集entropy和loss之间有一定的正相关
  • ablation:不normalization只re-scale比不过BN,直接修正所有参数没效果,但没放出数据
  • 比较:与BN相比,BN倾向于修复corrupt的feature,而Tent倾向于生成接近Oracle的feature分布。

四、几个了解或者Survey的相关工作:

  • 训练时使用预测熵:

    • pseudo labeling(PL,2013):训练时利用置信度修正标签并利用修正后的标签继续训练
    • ProSelfLC(2020): Progressive Self Label Correction for Training Robust Deep Neural Networks,利用模型的预测熵来反映模型对预测置信度,在噪声标签和模型预测分布之间找到平衡
  • 利用测试熵,同期的两个工作:

    • 测试时利用熵进行归一化的工作-BN(2020,https://arxiv.org/pdf/2006.16971.pdf NIPS’20,https://arxiv.org/pdf/2006.10963.pdf)

    • 第一个工作很直接,把训练集的一阶距和二阶距作为先验,利用测试数据估计一个新的均值和方差,并增加一个超参数决定先验的权重。

    • 第二个工作也很直接,用测试时的一个batch的统计信息作为均值和方差。
  • robust learning和自适应学习的baseline:

    • 鲁棒学习和噪声学习的区别:前者标签是对的,只是输入被部分破坏了;后者输入是对的,但标签打错了。
    • UDA-SS(2019):自监督的领域自适应方法,通过交叉训练试图学习到corruption鲁棒的表示。
    • ANT(2019,ICCV’20):对抗学习的框架,训练一个噪声生成器生成尽量能fool网络的噪声,网络需要尽量判别出改生成器生成的噪音图像。
    • TTT(2019,ICML’20):找到一个良好定义而且不简单的代理任务(比如识别图像的旋转),增加一个feature extractor模块,而后在训练时增加原始域中样本的代理任务判别,在测试时通过自监督的方式更新feature extractor模块的参数。
  • 神经网络的Normalization,比如Layer Norm、Batch Norm或者instance Norm。

    • batch norm,在激活层之前进行,首先使用滑动窗口得到的μ和σ归一化,而后使用训练后的参数β和γ进行re-scale只保留高阶信息。测试时使用训练数据的μ和σ,β和γ不变。参数是channel-wise的(对图像来说)。

启发:

模型训练时学到的分布不仅仅是预测结果,也表明了模型的confidence,这些信息不仅在训练时而且在预测时都是有用的。(迁移学习、领域自适应、少样本or零样本学习、元学习)

疑问(包括reviewer的):

测试集的统计信息(即使只是输入特征的均值的滑动平均)能否被用于模型调整。

在什么情况下会失效?熵是否总是(或大部分时间)提供了正确的信息。