TENT:熵最小化的Fully Test-Time Adaption
摘要
在测试期间,模型必须自我调整以适应新的和不同的数据。在这种完全自适应测试时间的设置中,模型只有测试数据和它自己的参数。我们建议通过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通过估计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在推理过程中进行自适应。
方法: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)和低维(通道方向)的特征调制。
本图展现了我们调制的两个步骤
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通过最小化测试时间熵来减少移位数据的泛化误差。在最小化熵的过程中,模型根据自己预测的反馈进行自我调整。这才是真正的自我监督的自我提升。这种类型的自我监督完全由被监督任务定义,不像代理任务旨在从数据中提取更多的监督,但它仍然显著地减少了错误。然而,由于corruption 和其他变化造成的错误仍然存在,因此需要更多的适应。接下来的步骤应该追求测试时间适应更多和更困难类型的转移,在更一般的参数,并通过更有效和高效的损失。
Shifts
Tent减少了各种转换的错误,包括图像损坏,数字外观的简单变化以及模拟到真实的差异。
Parameters
Tent通过规范化和转换来调整模型,但模型的大部分保持固定。test-time adaption可以更新更多的模型,但问题是要确定既具有表现力又可靠的参数,这可能与损失的选择相互作用。
Losses
Tent使熵最小化。对于更强的adaption,对于一般的但偶然的测试时间优化是否有有效的损失?熵在任务中是通用的,但在范围上是有限的。它需要批量优化,并且不能一次在一个点上偶然更新。
相关文章:
TENT:熵最小化的Fully Test-Time Adaption
摘要 在测试期间,模型必须自我调整以适应新的和不同的数据。在这种完全自适应测试时间的设置中,模型只有测试数据和它自己的参数。我们建议通过test entropy minimization (tent[1])来适应:我们通过其预测的熵来优化模型的置信度。我们的方法估计归一化…...
研发日记,Matlab/Simulink避坑指南(五)——CAN解包 DLC Bug
文章目录 前言 背景介绍 问题描述 分析排查 解决方案 总结 前言 见《研发日记,Matlab/Simulink避坑指南(一)——Data Store Memory模块执行时序Bug》 见《研发日记,Matlab/Simulink避坑指南(二)——非对称数据溢出Bug》 见《…...
机器人3D视觉引导半导体塑封上下料
半导体塑封上下料是封装工艺中的重要环节,直接影响到产品的质量和性能。而3D视觉引导技术的引入,使得这一过程更加高效、精准。它不仅提升了生产效率,减少了人工操作的误差,还为半导体封装技术的智能化升级奠定了坚实的基础。 传统…...
(十二)Head first design patterns代理模式(c++)
代理模式 代理模式:创建一个proxy对象,并为这个对象提供替身或者占位符以对这个对象进行控制。 典型例子:智能指针... 例子:比如说有一个talk接口,所有的people需要实现talk接口。但有些人有唱歌技能。不能在talk接…...
C++从零开始的打怪升级之路(day21)
这是关于一个普通双非本科大一学生的C的学习记录贴 在此前,我学了一点点C语言还有简单的数据结构,如果有小伙伴想和我一起学习的,可以私信我交流分享学习资料 那么开启正题 今天分享的是关于vector的题目 1.删除有序数组中的重复项 26. …...
《设计模式的艺术》笔记 - 观察者模式
介绍 观察者模式定义对象之间的一种一对多依赖关系,使得每当一个对象状态发生改变时,其相关依赖对象皆得到通知并被自动更新。 实现 myclass.h // // Created by yuwp on 2024/1/12. //#ifndef DESIGNPATTERNS_MYCLASS_H #define DESIGNPATTERNS_MYCLA…...
Java如何对OSS存储引擎的Bucket进行创建【OSS学习】
在前面学会了如何开通OSS,对OSS的一些基本操作,接下来记录一下如何通过Java代码通过SDK对OSS存储引擎里面的Bucket存储空间进行创建。 目录 1、先看看OSS: 2、代码编写: 3、运行效果: 1、先看看OSS: 此…...
ModuleNotFoundError: No module named ‘half_json‘
问题: ModuleNotFoundError: No module named ‘half_json’ 原因: 缺少jsonfixer包 解决方法: pip install jsonfixerjson修正包地址: https://github.com/half-pie/half-json...
深入探究 Android 内存泄漏检测原理及 LeakCanary 源码分析
深入探究 Android 内存泄漏检测原理及 LeakCanary 源码分析 一、什么是内存泄漏二、内存泄漏的常见原因三、我为什么要使用 LeakCanary四、LeakCanary介绍五、LeakCanary 的源码分析及其核心代码六、LeakCanary 使用示例 一、什么是内存泄漏 在基于 Java 的运行时中࿰…...
Linux CentOS使用Docker搭建laravel项目环境(实践案例详细说明)
一、安装docker # 1、更新系统软件包: sudo yum update# 2、安装Docker依赖包 sudo yum install -y yum-utils device-mapper-persistent-data lvm2# 3、添加Docker的yum源: sudo yum-config-manager --add-repo https://download.docker.com/linux/cen…...
第六课:Prompt
文章目录 第六课:Prompt1、学习总结:Prompt介绍预训练和微调模型回顾挑战 Pre-train, Prompt, PredictPrompting是什么?prompting流程prompt设计 课程ppt及代码地址 2、学习心得:3、经验分享:4、课程反馈:5、使用Mind…...
网络安全(初版,以后会不断更新)
1.网络安全常识及术语 资产 任何对组织业务具有价值的信息资产,包括计算机硬件、通信设施、IT 环境、数据库、软件、文档 资料、信息服务和人员等。 漏洞 上边提到的“永恒之蓝”就是windows系统的漏洞 漏洞又被称为脆弱性或弱点(Weakness)&a…...
开始学习Vue2(脚手架,组件化开发)
一、单页面应用程序 单页面应用程序(英文名:Single Page Application)简 称 SPA,顾名思义,指的是一个 Web 网站中只有唯一的 一个 HTML 页面,所有的功能与交互都在这唯一的一个页面内完成。 二、vue-cli …...
平替heygen的开源音频克隆工具—OpenVoice
截止2024-1-26日,全球范围内语音唇形实现最佳的应该算是heygen,可惜不但要魔法,还需要银子;那么有没有可以平替的方案,答案是肯定的。 方案1: 采用国内星火大模型训练自己的声音,然后再用下面…...
【自动化测试】读写64位操作系统的注册表
自动化测试经常需要修改注册表 很多系统的设置(比如:IE的设置)都是存在注册表中。 桌面应用程序的设置也是存在注册表中。 所以做自动化测试的时候,经常需要去修改注册表 Windows注册表简介 注册表编辑器在 C:\Windows\regedit…...
php二次开发股票系统代码:腾讯股票数据接口地址、批量获取股票信息、转换为腾讯接口指定的股票格式
1、腾讯股票数据控制器 <?php namespace app\index\controller;use think\Model; use think\Db;const BASE_URL http://aaaaaa.aaaaa.com; //腾讯数据地址class TencentStocks extends Home { //里面具体的方法 }2、请求接口返回内容 function juhecurl($url, $params f…...
uniapp 在static/index.html中添加全局样式
前言 略 在static/index.html中添加全局样式 <style>div {background-color: #ccc;} </style>static/index.html源码: <!DOCTYPE html> <html lang"zh-CN"><head><meta charset"utf-8"><meta http-…...
acrobat调整pdf的页码和实际页码保持一致
Acrobat版本 具体操作 现在拿到pdf的结构如下: pdf页码实际页码1-10页无页码数11页第1页 操作,选择pdf第10页,右键点击 具体设置 最终效果...
ctfshow-命令执行
大佬文章 L i n u x \rm Linux Linux 下空格绕过 无参数 r c e \rm rce rce 无字符 r c e \rm rce rce web29 通配符: *:匹配任意多个字符 ?:匹配任意一个字符 []:匹配某个范围的字符( [ a d ] [ad] [ad] 表示 …...
【Python基础015】集合的用法
1、定义 集合是无序可变,元素不能重复。实际上,集合底层是字典实现,集合的所有元素都是字典中的 “ 键对象”,因此是不能重复的且唯一的。 2、创建 (1)使用{}创建 a {1, 2, 3} # 集合存储整数b {1, 2,…...
解密神经网络:深入探究传播机制与学习过程
解密神经网络:深入探究传播机制与学习过程 文章目录 解密神经网络:深入探究传播机制与学习过程一、引言二、基础理论1. 人工神经元:构建块的定义2. 神经网络的结构3. 激活函数的作用 三、前向传播1. 数据流动:输入到输出2. 加权和…...
linux usb设备网络共享 usb/ip
USB设备的网络共享可以通过USB/IP来实现, USB/IP把USB I/O信息封装成TCP/IP格式在网络端传输 ,可以实现usb的全部功能,且跨平台,是个透明的设备共享机制。 一、服务端 $sudo modprobe usbip-core$sudo modprobe usbip_host$usbip…...
如何通过系统命令排查账号安全?
如何通过系统命令排查账号安全 query user 查看当前登录账号 logoff id 注销用户id net user 查看用户 net user username 查看用户登录情况 lusrmgr.msc 查看隐藏账号 winR打开regedit注册表 找到计算机\HEKY_LOCAL_MACHINE\SAM\SAM\右键给与用户读写权限 刷新打开 HKEY…...
《WebKit 技术内幕》学习之九(3): JavaScript引擎
3 JavaScriptCore引擎 3.1 原理 JavaScriptCore引擎是WebKit中的默认JavaScript引擎,也是苹果在开源WebKit项目之后,开源的另外一个重要的项目。同其他很多引擎一样,在刚开始的时候它的主要部分是一个基于抽象语法树的解释器,这…...
IS-IS:05 ISIS开销值和协议优先级
IS-IS 协议为路由器的每个 IS-IS 接口定义并维护了一个 level-1 开销值和一个 level-2开销值。开销值可以在接口上或者全局上手动配置,也可以使用 auto-cost自动计算确定。 修改接口cost: int g0/0/0 isis cost 50修改全局cost: isis cir…...
群辉NAS的远程访问
群辉NAS是私有云存储,局域网访问很容易【详见:网上邻居访问设置、其它设备的访问设置】,远程访问相对复杂,涉及很多关键因素,现将过程记录如下: 目录 1、互联网接入 2、绑定MAC与IP地址 3、路由器开启5…...
构建未来学堂:在线教育系统开发技术实践
在当今数字化时代,在线教育系统的开发越发显得至关重要。本文将带你深入了解在线教育系统的开发,涉及到关键的技术实践和代码示例。我们将采用现代化技术栈,为未来学堂的搭建提供实用的指南。 技术栈选择 在开始实际的开发之前,…...
EMQX 单机及集群搭建
目录 1. 通过 Yum 源安装(CentOS7 单机安装) 1.1. 通过以下命令配置 EMQX Yum 源: 1.2. 运行以下命令安装 EMQX: 1.3. 运行以下命令启动 EMQX: 1.4. 访问 http://192.168.88.130:18083,默认用户名: adm…...
SpringMVC-对静态资源的访问
1.工程中加入静态资源 在webapp下创建static文件夹,此文件夹专门放入静态资源 2.使项目可以处理静态资源的请求 在SpringMVC配置文件中添加以下语句 1.引入命名空间 xmlns:mvc"http://www.springframework.org/schema/mvc" xsi:schemaLocation“http…...
形参和实参
目录 形参(形式参数): 实参(实际参数): 形参和实参的区别和联系 具体实例: 当我们谈论"形参"和"实参"时,可以用以下类比来解释它们之间的关系: 形参…...
打广告型的营销网站/网站卖链接
1. 首先卸载已经安装的旧版的CMake apt-get autoremove cmake 2.跳转到/usr cd /usr 3.下载: wget http://www.cmake.org/files/v3.2/cmake-3.2.2.tar.gz 4. 解压: tar zxvf cmake-3.2.2.tar.gz 5.跳转到cmake-3.2.2下 cd cmake-3.2.2 6.sudo ./…...
wordpress 做cms/网站推广开户
使用Chrome自带的Javascript调试工具。 1. 将写好的Javascript代码用chrome打开 在页面,单击右键,并且选择“审查元素” 弹出窗体,如图所示: 2. 然后,点击“Resources”标签,如图所示: 3. 然…...
长沙公司网站开发/世界营销大师排名
提出问题: 回调函数是基于C编程的Windows SDK的技术,不是针对C的,程序员可以将一个C函数直接作为回调函数,但是如果试图直接使用C的成员函数作为回调函数将发生错误,甚至编译就不能通过。分析原因:普通的C成…...
做网站设计制作的/google网页版
阅读本文前,请您先点击上面的“蓝色字体”,再点击“关注”,这样您就可以继续免费收到文章了。每天都会有分享,都是免费订阅,请您放心关注。注:本文转载自网络,不代表本平台立场,仅供…...
石家庄做网站邮箱电话/怎么免费创建个人网站
前言 前几天tensorflow1.0发布,想学习一下,感受一下深度学习的魅力(捂脸 安装环境 ubuntu14.04 64位Anacondapython 2.7tensorflow 1.0 安装步骤 主要是参考了这篇文章里面的:http://blog.csdn.net/tina_ttl/article/details/51762471,链…...
济南网站建站推广/chatgpt 链接
Kafka的安装和简单实例测试_厦大数据库实验室博客 ps:上边文章的kafka版本有点老,是0.10.1.0版本的。 最新的kafka版本启动和创建topic等命令有所改变。 核心概念 下面介绍Kafka相关概念,以便运行下面实例的同时,更好地理解Kafka. 1. Broker Kafka集群…...