训练集结束以后, 部署输入仍可能偏离源分布. 摄像头、天气、传感器和图像压缩改变 , 训练好的模型却只能用当前无标签输入调整自己. Test-Time Adaptation 的朴素做法是为模型准备一个不依赖标签的损失, 在预测前或预测过程中更新少量参数. 它把监督缺失的问题转成了一个更尖锐的条件: 测试时代理目标下降, 是否真的意味着主任务风险下降.
记源模型为 , 测试 batch 为 . 一次适应写成
随后用 预测. 如果每个样本或域都从 重新开始, 更新是 episodic 的;状态跨 batch 保留时, 就进入下一路线的持续适应. 二者使用相同损失也会产生不同风险, 因为后者的错误能影响未来输入.
1. 自监督任务提供哪里来的梯度
Sun 等提出的 Test-Time Training 在共享特征提取器上连接主任务头和自监督头. 训练阶段同时优化分类与图像旋转预测, 测试时没有类别标签, 仍可旋转当前图像并更新共享特征. Y 形结构的关键在于训练时让代理梯度与主任务需要的表征对齐;旋转只是论文选择的代理任务. 如果代理任务只关注与分类无关的纹理, 测试时更新可能让代理 loss 下降、主任务变差.
相关性需要受控验证. 可以测两个损失的梯度夹角, 比较只更新共享层、自监督头或归一化参数, 再把测试图像替换为不同 corruption. 正相关只说明局部方向一致, 不能保证多步更新;最直接的证据仍是同一输入在更新前后的主任务表现, 标签只用于离线评测, 不进入适应.
TTT++ 用对比学习和特征分布对齐增强代理信号. 它需要源域统计或特征, 因而获得的信息多于完全无源数据的方法. 比较时要说明是否能访问源样本、源特征、类别先验和任务边界, 否则提升可能来自额外状态.
2. 熵最小化不需要额外任务
TENT 直接最小化预测熵
并只更新 batch normalization 的仿射参数, 同时重估统计量. 低熵推动决策边界离开测试样本密集区, 与半监督学习的 cluster assumption 相呼应. 当模型大致正确、偏移主要影响表面统计时, 这条梯度有用;当初始预测系统性错误, 它会让错误更自信.
只更新归一化参数限制了破坏范围, 也限制了适应能力. batch 很小或样本时间相关时, 均值和方差估计不可靠. 语言模型常用 LayerNorm, 不具备同样的跨样本统计路径, 因而不能把视觉领域的 BN 适配结论直接迁移过去.
MEMO 对单个样本生成多种增强, 最小化平均预测的边缘熵. 它绕开大 batch 依赖, 代价是每个样本多次前向和一次反向;增强必须保持语义. 如果裁剪删掉关键物体, 一致性目标会训练模型忽略真正信息.
3. episodic 更新也有风险
每次从 重置, 避免错误跨样本累积, 却不能保证当前预测安全. 单个恶意输入可以操纵梯度, 多次增强也可能放大特定模式. 更新发生在预测前还是预测后同样重要: 若先用输入训练再对同一输入预测, 模型获得了 transductive 信息;先预测后更新则只影响未来样本.
batch 组成构成隐含通信. 一个样本通过统计量和梯度影响同批其他样本, 因此离线随机 batch 与线上到达 batch 不是同一算法. 评测应扫描 batch size、类别比例、到达相关性与顺序, 并分别报告延迟和准确率. 只在独立同分布大 batch 上有效的方法, 可能无法用于低流量或单请求服务.
选择更新层、步数和学习率时不能使用测试标签. 合法配置从源验证集、构造 corruption 或独立开发流中确定. 每个测试域事后挑最好步数会把标签信息带进结论. 同时报告更新前基线、只更新统计量、只更新仿射参数与完整代理损失, 才能定位收益来源.
4. 它与持续学习、序列内 TTT 的边界
episodic TTA 的状态只服务当前样本或 batch, 不追求把知识永久写入模型. 状态跨测试流延续后, 旧输入与新输入开始共享参数, 灾难性遗忘、误差反馈和攻击传播重新出现. 这就是 持续适应 单独成路线的原因.
TTT layer 也在 TestingTime 更新, 更新对象却是序列模型内部的快速权重;其初始化和写入损失由外循环端到端训练, 状态通常在序列边界清空. 单批 TTA 的目标是修复部署分布偏移, TTT layer 的目标是把长上下文压进状态. 形式上都有梯度步, 研究问题和证据不能混用.
经典 TTT 与自监督适应 会展开 Y 形网络、TENT、TTT++、熵梯度与实验协议. 选择这类方法时, 先检查代理信号与主任务是否对齐、batch 语义是否符合部署、更新成本能否接受, 再讨论具体算法.
5. 推理成本与收益发生在同一个请求
普通推理只需前向, TTA 增加增强、反向和参数写入. 若每个样本更新后立即重置, 这些计算无法摊到未来请求;收益必须在当前样本上覆盖延迟与能耗. 对实时任务, 一个百分点准确率提升可能不值得数倍延迟. 报告应分开前向、适应和预测时间, 而不是只给总体吞吐.
混合策略可以先用便宜的不确定性或漂移检测决定是否适应. 检测器漏掉偏移会失去收益, 误报则在正常样本上承担成本并可能伤害预测. 因而触发策略与适应算法需要端到端比较. 总是适应、从不适应和 oracle 触发构成三个参照, 能显示检测还有多少改进空间.
源模型输出与适应后输出的差异也可以用作风险信号. 差异大不一定错误, 但值得限制步数或回退;差异很小又可能说明更新没有实际作用. 在无标签部署中不能直接知道哪一个正确, 所以真正的安全保证依赖状态隔离与有限作用域. episodic 设定的价值正在于把最坏影响控制在一个样本或 batch 内.
适应步数也构成一条风险曲线. 第一步可能修正归一化偏移, 更多步骤开始追逐当前样本噪声. 在多个 corruption 强度上画主任务表现随步数变化, 再与代理 loss 对照, 能看出二者何时脱钩. 如果最优步数依赖未知标签, 方法无法按论文中的 oracle 点部署;稳定的早停信号必须来自熵、梯度或源锚定等可见量.
批内类别比例则检验方法是否利用了隐藏先验. 平衡测试 batch 上稳定, 单类 batch 上崩溃, 说明更新依赖类别混合而非单个输入的信息. 这项条件应写进适用范围, 不能由平均 corruption 准确率代替.
部署流的到达率还会改变实际 batch, 因而同一模型应在多个组批上限和等待时间下复测.
参考文献
- Sun, Y. et al. (2020). Test-Time Training with Self-Supervision.
- Liu, Y. et al. (2021). TTT++.
- Wang, D. et al. (2021). Tent.
- Zhang, M. et al. (2022). MEMO.