TENT:熵最小化的Fully Test-Time Adaption

论文:https://arxiv.org/abs/2006.10726

代码:https://github.com/DequanWang/tent

摘要

在测试期间,模型必须自我调整以适应新的和不同的数据。在这种完全自适应测试时间的设置中,模型只有测试数据和它自己的参数。我们建议通过test entropy minimization (tent[1])来适应:我们通过其预测的熵来优化模型的置信度。我们的方法估计归一化统计量,并优化通道仿射变换,以在线更新每个批次。Tent降低了ImageNet和CIFAR-10/100上图像分类的泛化误差,并在ImageNet- c上达到了新的最先进的误差。Tent处理从SVHN到MNIST/MNIST- m /USPS的数字识别的source-free domain 适应,从GTA到cityscape的语义分割,以及在VisDA-C基准上。这些结果是在不改变训练的情况下在测试时间优化的一个epoch中获得的。

背景

当训练(源)数据与测试(目标)数据不同时,准确性会受到影响,这种情况称为dataset shift.在测试期间,模型可能对训练期间不知道的变化很敏感,无论是自然变化还是损坏,例如意外的天气或传感器退化。然而,可能有必要在不同的数据分布上部署模型,因此需要进行调整。

在测试过程中,模型必须只适应给定的参数和目标数据。这种完全的测试时适应(fully test-time adaptation)设置不能依赖于源数据或监督。

任务需求:

1. 可用性。出于带宽、隐私或利润的考虑,模型可能在没有源数据的情况下发布。
2. 效率。在测试期间(重新)处理源数据在计算上可能不实用。
3. 准确性。如果不进行adaption,模型可能太不准确,无法达到其目的。

为了适应测试过程,我们将模型预测的熵最小化。我们称这个目标为test entropy,并以此为我们的方法命名tent。我们选择熵是因为它与error和shift的联系

熵与error有关,因为更有信心的预测总体上更正确(图1)。

熵与由于损坏引起的shift有关,因为损坏越多导致熵越大,随着损坏程度的增加,与图像分类损失的等级相关性很强(图2)。

TENT:熵最小化的Fully Test-Time Adaption_第1张图片TENT:熵最小化的Fully Test-Time Adaption_第2张图片
 

为了最小化熵,tent通过估计statistics 和optimizing affine parameters(仿射参数) batch-by-batch 对目标数据的推理进行归一化和转换。这种选择的low-dimensional, channel-wise feature modulation 在测试期间的adapt是有效的,即使是在线更新。Tent不限制或改变模型训练:它独立于给定模型参数的源数据。如果模型可以运行,就可以进行调整。最重要的是,tent不仅有效地减少了熵,还减少了误差。

affine parameters 
通常用来描述一种线性变换,该变换包括平移、旋转、缩放和剪切等操作。在神经网络中,仿射变换常常用于定义神经网络层的权重矩阵和偏置向量,从而实现输入数据的线性变换

相关工作

Train-Time Adaptatv

领域自适应通过跨域损失L(x s, xt)对源和目标进行联合优化,以减轻偏移。这些损失优化特征融合,adversarial invariance, 或者共享代理任务。Transduction 对训练和测试进行联合优化,以更好地拟合特定的测试实例。虽然在它们的设置中有效,但当拒绝源/训练和目标/测试的联合使用时,两者都不适用。Tent只会在target上adapt。这些无源方法对多个epoch进行多损失离线优化,这比tent需要更多的调优和计算,但可以通过更多的计算获得更高的精度。Tent在线优化,只有一个损耗和调制的有效参数化,以强调在推理期间充分适应测试时间。我们鼓励在没有原始数据的情况下,在改编的前沿研究这些作品。

Test-Time Adaptation

Tent adapt 通过test-time optimization and normalization去更新模型。

(Test-time adaptation of predictions),即根据较容易和特定的情况调整较困难和不确定的情况(Jain & Learned-Miller, 2011),为像我们这样基于确定性的模型适应方案提供了灵感。

测试时间训练Test-time training(TTT) (Sun et al., 2019b)也在测试期间优化,但其损失不同,必须改变训练。TTT依赖于一个代理任务,比如识别图像的旋转,因此它的损失取决于代理的选择。

TTT改变训练,在适应目标之前优化源上的代理损失。Tent 适应没有代理任务和不改变训练

对特征统计进行规范化是domain adaption的常用方法。批量归一化Li et al. (2017);Carlucci et al.(2017)在训练过程中分离源统计和目标统计。Schneider et al. (2020);Nado等人(2020)在测试期间估计目标统计量以提高泛化。Tent建立在测试时间规范化的基础上,以进一步减少泛化错误。

Entropy Minimization

熵最小化是域自适应的关键正则化器(Carlucci et al., 2017;Shu et al., 2018;Saito等人,2019;Roy等人,2019),半监督学习(Grandvalet & Bengio, 2005;李,2013;Berthelot et al., 2019)和few-shot learning (Dhillon et al., 2020)。正则化熵惩罚数据分布中高密度的决策,以提高不同类别的准确性(Grandvalet & Bengio, 2005)。这些方法在训练过程中与其他有监督和无监督的附加数据损失一起使熵正则化。Tent是第一个去在测试中最小化熵的方法。为适应数据集的变化,没有其他损失或数据。熵损失很常见;我们的贡献是展示熵作为完全测试时间适应的唯一损失。

Feature Modulation

调制使模型随其输入而变化。我们优化了比完整模型更简单的调制,以实现稳定和有效的适应。我们对通道仿射变换进行调制,使其与规范化相结合(Ioffe & Szegedy, 2015;Wu & He, 2018),以及他们对不同任务的调节灵活性(Perez et al., 2018)。这些归一化和调节方法在训练期间通过监督损失优化调制,但在测试期间保持固定。我们在测试过程中利用无监督损失对调制进行优化,使其能够适应不同的目标数据。

贡献

1)我们强调只有目标数据而没有源数据的完全测试时间适应设置。为了强调推理过程中的实际适应性,我们对离线和在线更新进行基准测试。

2)我们将熵作为自适应目标进行研究,并提出了一种测试时间熵最小化方案,通过减少测试数据上模型预测的熵来减少泛化误差。

3)对于损坏的鲁棒性,tent在ImageNet-C上达到44.0%的错误率,优于最先进的鲁棒训练(50.2%)和测试时间标准化的强基线(49.9%)。

4)对于领域自适应,tent能够online和source free 地适应数字分类和语义分割,甚至可以与使用源数据并进行更多优化的方法相媲美

Fully Test-Time Adaption

一组输入数据和标签:X,Y

source distribution: Xs, Ys

target distribution: Xt, Yt

带参数 θ的模型fθ(x)Xs, Ys 上训练的不一定会生成当在偏移的目标数据 Xt 上

我们的fully test-time adaptation 设置只需要模型fθ(x)和未标记的目标数据Xt在推理过程中进行自适应。

TENT:熵最小化的Fully Test-Time Adaption_第3张图片

方法:TEST ENTROPY MINIMIZATION VIA FEATURE MODULATION

我们在测试期间优化模型,通过调节其特征来最小化其预测的熵。我们把我们的方法tent称为测试熵(test entropy)。Tent需要一个兼容的模型compatible model、最小化目标an objective to minimize (章节3.1)和优化参数parameters to optimize over(章节3.2)来完全定义算法(章节3.3)。图3概述了我们完全适应测试时间的方法。

在测试期间没有提供监督,因此模型必须已经经过训练。测量预测的熵需要预测的分布,所以模型必须是概率性的。

快速迭代优化需要梯度,因此模型必须是可微的。用于监督学习的典型深度网络满足这些模型要求。

3.1 ENTROPY OBJECTIVE

我们的test-time 目标L(xt) 是去最小化模型预测 yˆ = fθ(xt)的熵  H(yˆ)  

特别的,我们参考信息熵 

用于类c的yˆc

熵是一个无监督的目标,因为它只依赖于预测而不是注释。然而,作为预测的度量,它与被监督的任务和模型直接相关。

相比之下,自监督学习的代理任务与监督任务没有直接关系。

代理任务从输入xt  在没有标签y的情况下 派 生出一个自监督标签y'。这些代理的例子包括旋转预测(Gidaris等人,2018)、上下文预测(Doersch等人,2015)和跨通道自动编码(Zhang等人,2017)。代理任务的太多进展可能会干扰监督任务的性能,自监督适应方法必须相应地限制或混合更新(Sun et al., 2019b;a)。因此,需要谨慎选择与领域和任务兼容的代理,为代理模型设计体系结构,并在任务和代理目标之间平衡优化。我们的熵目标不需要这样的努力。

3.2 MODULATION PARAMETERS

模型参数θ是test-time优化的自然选择,也是训练时间熵最小化的先验选择。然而,θ是我们设置中训练/源数据的唯一表示,改变θ可能会导致模型偏离其训练。此外,f可能是非线性的,θ可能是高维的,这使得优化对测试时间的使用过于敏感和低效。

为了稳定性和效率,我们只更新线性(scales and shifts)和低维(通道方向)的特征调制。

本图展现了我们调制的两个步骤

TENT:熵最小化的Fully Test-Time Adaption_第4张图片

1)normalization by statistics

输入x

输出 x¯ = (x − µ)/σ

其中平均值µ和标准差σ

2)transformation by parameters

输入 x¯

输出 x‘ = γx¯ + β

仿射参数  scale γ, shift β

注意,统计量µ,σ是从数据中估计的,而参数γ, β是通过损失优化的

3.3 ALGORITHM

Initialization

优化器对于源模型中的每个归一化层l和通道k收集仿射变换参数{γl,k, βl,k},其余参数θ\ {γl,k, βl,k}被放回原处。源数据的归一化统计{µl,k, σl,k}被丢弃。

Iteration

每一步更新一个batch的数据的normalization statistics 和 transformation parameters。在向前传递期间,依次估计每层的归一化统计量。在反向传播的过程中transformation参数 γ, β由预测熵∇H(y^)的梯度更新。注意这里的transformation更新遵循当前批的预测,因此它只影响下一个批(除非forward重复)。每个额外的计算点只需要一个梯度,所以我们默认使用这个方案来提高效率。

Termination

对于在线adaption,不需要终止,只要有测试数据,迭代就会继续。对于离线adaption,首先更新模型,然后重复推理。当然,适应可以通过多个epoch的更新来继续

实验

数据集

corruption robustness:

CIFAR-10/CIFAR-100

ImageNet

domain adaptation:

SVHN

MNIST/MNIST-M/USPS

模型

corruption:

residual networks(R-26) CIFAR-10/CIFAR-100  (R-50)ImageNet

domain adaption: (R-26)


 

实验结果

TENT:熵最小化的Fully Test-Time Adaption_第5张图片

TENT:熵最小化的Fully Test-Time Adaption_第6张图片

TENT:熵最小化的Fully Test-Time Adaption_第7张图片TENT:熵最小化的Fully Test-Time Adaption_第8张图片

TENT:熵最小化的Fully Test-Time Adaption_第9张图片

总结

Tent通过最小化测试时间熵来减少移位数据的泛化误差。在最小化熵的过程中,模型根据自己预测的反馈进行自我调整。这才是真正的自我监督的自我提升。这种类型的自我监督完全由被监督任务定义,不像代理任务旨在从数据中提取更多的监督,但它仍然显著地减少了错误。然而,由于corruption 和其他变化造成的错误仍然存在,因此需要更多的适应。接下来的步骤应该追求测试时间适应更多和更困难类型的转移,在更一般的参数,并通过更有效和高效的损失。

Shifts 

Tent减少了各种转换的错误,包括图像损坏,数字外观的简单变化以及模拟到真实的差异。

Parameters

Tent通过规范化和转换来调整模型,但模型的大部分保持固定。test-time adaption可以更新更多的模型,但问题是要确定既具有表现力又可靠的参数,这可能与损失的选择相互作用。

Losses

Tent使熵最小化。对于更强的adaption,对于一般的但偶然的测试时间优化是否有有效的损失?熵在任务中是通用的,但在范围上是有限的。它需要批量优化,并且不能一次在一个点上偶然更新。

你可能感兴趣的:(1500深度学习笔记,人工智能,机器学习)