Press "Enter" to skip to content

利用Test Adaptation提高模型泛化性

本站内容均来自兴趣收集,如不慎侵害的您的相关权益,请留言告知,我们将尽快删除.谢谢.

来自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的):

 

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

 

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

Be First to Comment

发表评论

电子邮件地址不会被公开。 必填项已用*标注