1. 从单次偏移到长流
问题: 从一个偏移变成一条流. 4.1 里在线 TTT 和 TENT online 的收益, 来自同一种偏移在整条流上持续存在, 前面样本带来的更新对后面的样本也成立. 部署环境不满足这一点. 一辆车早上在晴天开, 中午进隧道, 晚上下雨; 一个摄像头的输入随天气, 光照, 镜头污损连续变化. 这种设定叫持续 TestingTime 适应 (continual test-time adaptation): 目标域按顺序变化, 模型在整条流上持续更新, 没有人告诉它什么时候换了域.
CoTTA (Wang, Fink, Van Gool & Dai, 2022) 把这种设定下的失败归为两类. 第一类是误差积累: 熵最小化和伪标签都以模型自己的预测为监督, 预测错了就会朝错误方向更新, 更新后的模型给出更多错误的伪标签. 第二类是遗忘: 参数在一串目标域上一路漂移, 离源模型越来越远, 原来会的东西丢掉了, 回到源域时精度下降.
单一偏移评测还漏掉两条失败路径. 测试流不独立时, 同一时间段的样本类别高度相关, 批统计量和熵梯度会被少数类别主导. 测试流不可信时, 别人的样本和你的样本进入同一个批, 通过共享统计量和参数改变彼此的预测. 对应的四类机制是:
- 误差积累和遗忘: CoTTA, EATA (Niu 等, 2022).
- 小批, 失衡和梯度爆炸: SAR (Niu 等, 2023).
- 时间相关的流: RoTTA (Yuan, Xie & Li, 2023), NOTE (Gong 等, 2022).
- 恶意输入: DIA (Wu 等, 2023).
这些更新机制最终都要落到重置策略, 评测泄漏和部署监控上. TENT 在长流上怎么退化. CoTTA 论文的实验协议是: 源模型在干净的 CIFAR 上训好, 然后依次喂入 15 种 corruption 的第 5 级数据, 每种 corruption 一个域, 域之间不重置, 不告诉模型域边界. 每个域内的样本只看一遍, 每个批更新一步. CIFAR-10-C (WideResNet-28) 上的平均误差 (%, 论文 Table 2):
| 方法 | 15 个域平均误差 |
|---|---|
| Source (不适应) | 43.5 |
| BN 统计量适配 | 20.4 |
| 伪标签 (PL) | 19.8 |
| TENT-online* (按真实域边界重置) | 18.6 |
| TENT-continual (不重置) | 20.7 |
| CoTTA | 16.2 |
TENT-online* 带星号, 因为它用到了域边界信息, 每进一个新 corruption 就重置一次. 这个信息在部署中拿不到, 所以它只能当参考上限, 没法直接部署. 从 18.6 到 20.7 的差, 就是不重置带来的退化. CIFAR-100-C (ResNeXt-29) 上退化更严重: 不适应 46.4, BN 适配 35.4, 伪标签 46.2, TENT-continual 60.9, 而且 TENT 的误差随域推进持续上升, 第 15 个域达到 90.4, 接近 100 类上的随机水平. CoTTA 为 32.5.
EATA 论文给出了同一现象的另一种测法 (lifelong 设定): 让 TENT 在 ImageNet-C 的 corruption 序列上持续适应, 同时周期性在干净验证集上测精度. 三种 corruption 之后, TENT 的干净精度接近 0%. 也就是说, TENT 不只在目标域上越来越差, 它在源域上的能力被一路改写到几乎全丢. 这正是第 1 章讲的灾难性遗忘, 只是这里的「新任务」是无标签的目标域流. 错误怎样沿时间传下去. 持续适应与普通无标签微调的关键差别, 是第 步的模型同时充当第 步的预测器和监督来源. 用 表示当前模型预测, 熵最小化的一步可以写成
若当前最大概率类别已经错了, 熵梯度仍会继续拉大这个错误类别与其他类别的间隔. 设二分类 logit 差为 , , 则
当错误类别概率 时, 导数约为 ; 梯度下降会让 继续增大, 把 0.7 推向 1. 模型并不知道类别选错了, 它只知道当前分布还不够尖. 下一批伪标签由更新后的模型产生, 错误由此进入闭环. 把参数误差记为 , 其中 是当前域有标签时的理想参数. 在局部线性近似下,
是代理损失的局部 Hessian, 是伪标签偏差, 末项来自真实分布变化. CoTTA 的慢教师主要压低 的瞬时波动, EATA 的 Fisher 项限制重要方向上的 , SAR 避开曲率过大的 , RoTTA 与 NOTE 则减少相关采样造成的统计偏差. 五种方法分别作用在监督偏差、参数漂移、局部曲率和输入统计上.
1.1. 教师模型与样本筛选: CoTTA 和 EATA
CoTTA 的三个组件. CoTTA 用教师模型、增强平均和随机恢复控制长流中的误差积累. 设学生模型参数为 , 教师模型参数为 , 源模型参数为 . 教师伪标签. 学生用教师的软预测做交叉熵:
是学生的预测, 是教师的预测. 教师参数是学生参数的指数滑动平均:
接近 1, 教师变化慢, 单个批的错误更新不会直接进入伪标签. 这和 4.1 里 TENT 用学生自己的熵做监督相比, 把「生成监督」和「接收监督」拆到了两个时间尺度上. 增强平均. 若源模型对当前样本的置信度低于阈值 , 教师的伪标签换成 次随机增强下教师预测的平均. 置信度高时直接用教师的单次预测. 论文用源模型的置信度来估计当前样本离源域有多远, 这个判据不随适应过程漂移. 随机恢复. 每次梯度更新之后, 对每个权重独立抽一个伯努利变量 , 按 把权重拉回源模型:
是该权重在源模型里的值, 是逐元素乘法. 论文取 . 随机恢复的手算. 意味着每一步每个权重有 1% 的概率被拉回源值. 一个权重连续 步都没被恢复的概率是 :
| 步数 | 从未被恢复的概率 |
|---|---|
| 10 | 0.904 |
| 100 | 0.366 |
| 300 | 0.049 |
| 500 | 0.0066 |
所以每个权重平均每 100 步被重置一次, 几百步之后几乎所有权重都至少回过一次源值. 这个机制限制了任何一处参数能漂离源模型的时间长度; 代价是适应得到的有用变化也会以同样的速率被抹掉, 必须靠后续批不断重新学回来.
CoTTA 一步里三份参数的顺序也不能颠倒. 输入先由教师 产生软目标, 学生 对这个目标走梯度得到 , 教师再吸收更新后的学生, 随机恢复则把学生的部分坐标换回 . 最终在线预测取教师输出, 不是刚走完一步、噪声更大的学生输出. 若先用学生更新教师再生成当前伪标签, 当前样本会通过同一步更新反过来影响自己的监督; 若只恢复教师而不恢复学生, 漂移仍会在后续 EMA 中重新进入教师.
EMA 的时间尺度可由 直接估算. 第 步学生参数在当前教师中的权重为 , 半衰期约为 . 时约 693 步, 教师过滤单批噪声的同时也会滞后于突然发生的新域. 低置信样本使用 32 次增强平均, 进一步降低预测方差, 但增强若破坏类别语义, 平均只会稳定地给出错误目标. 源模型置信度门控让这个开关不随学生漂移, 仍然依赖源模型的校准质量. 消融, 其他数据和代价. CIFAR-10-C 的消融 (论文 Table 2) 逐步加组件: TENT-continual 20.7, 换成教师加权平均伪标签 18.3, 再加增强平均 17.4, 再加随机恢复 16.2 (±0.1). 论文还做了「渐变」设定: 每个 corruption 的严重度在 1 到 5 之间先升后降, 域变化平滑. 此时 Source 24.8, BN 13.7, TENT 30.7, CoTTA 10.4. TENT 在渐变设定下比 Source 还差, 说明误差积累不需要剧烈的域切换, 时间足够长就会发生. ImageNet-C (10 种 corruption 排列顺序取平均): Source 82.4, BN 72.1, 测试增强 71.4, TENT 66.5, CoTTA 63.0 ±1.8. 语义分割上, Cityscapes 训练的 Segformer-B5 在 ACDC 的四种天气上循环 10 轮, mIoU: Source 56.7, BN 52.0, TENT 52.3 (其中夜间从 40.2 掉到 29.8), CoTTA 58.6.
这些提升的代价也不小. CoTTA 更新全部参数 (WRN-28, Adam, 学习率 1e-3, 每批一步), 要维护教师和源模型两份额外的参数副本, 低置信样本要做 32 次前向. 显存是 TENT 的数倍, 每批的计算也是. EATA: 只用有用的样本, 再加锚定. EATA 的出发点是两个观察. 第一, 不是每个测试样本都值得反向传播: 高熵样本的梯度不可靠, 与之前样本高度相似的样本的梯度是冗余的. 第二, 遗忘可以用持续学习里的参数正则化来压, 例如 EWC 的 Fisher 加权. 第一个观察落成两道样本过滤. 熵过滤与加权. 设样本 的预测熵为 , 阈值 . 权重为
是指示函数, 熵超过阈值的样本权重为 0, 不参与更新; 熵越低, 权重越大. 论文取 , 是类别数. 代入 ImageNet 的 : , . 均匀分布的熵是 6.908, 阈值相当于最大熵的 40%. 三个样本的权重:
| 样本熵 | 权重 | |
|---|---|---|
| 1.0 | ||
| 2.5 | ||
| 3.0 | 0 (被过滤) |
熵 1.0 的样本比熵 2.5 的样本权重大 4.5 倍. 这把更新集中在模型已经比较有把握的样本上. 冗余过滤. 维护模型输出的指数滑动平均 (系数 ). 当前样本输出 与 的余弦相似度小于阈值 才参与更新:
总权重 . Fisher 锚定. 适应前, 在少量源域样本上计算每个参数的重要性. 这些样本没有标签, 用源模型的预测作伪标签, 对伪标签交叉熵求梯度, 取平方的平均作为 . 正则项为
是源模型参数. 论文用 2000 个样本估计 , 并报告 300 个样本已经足够. 最终目标是
和 TENT 一样, EATA 只更新 BN 的仿射参数. 式 (10) 对第 个可训练参数的梯度是
第二项像一根各向异性的弹簧. 若两个参数都偏离源值 0.1, , Fisher 权重分别是 20 和 0.2, 拉回梯度就是 4 和 0.04, 相差 100 倍. 重要参数被强力约束在源模型附近, 小 Fisher 参数承担主要适应. EATA 的允许区域由 Fisher 对角线定义成椭球, 各参数方向的半径并不相同。
样本被熵或冗余规则过滤后, , 当前样本不产生熵梯度; 实现中也就可以跳过这次反向. Fisher 正则的意义仍体现在所有真正执行的更新里. 因此「减少反向次数」来自样本门控, 「防遗忘」来自参数门控, 两者不要混成一个机制. 低熵过滤也有明确盲点: 模型若对错误类别高度自信, 样本会得到更大的 , 这时 Fisher 只能限制步幅, 无法纠正监督方向. 反向次数, 精度和内存. 只做样本选择不加锚定的版本叫 ETA. CIFAR-10-C 上, ETA 误差 19.4, TENT 20.2, ETA 做了 8,192 次反向传播, TENT 是 10,000 次. ImageNet-C 第 3 级, 平均反向次数 ETA 31,741, TENT 50,000, MEMO 是 50,000 × 64. 高斯噪声上 ETA 的误差 65.0, TENT 71.6. 实测墙钟时间 TENT 113 秒 (精度 28.6%), EATA 102 秒 (35.1%). 额外内存 9.8MB, 主要是 Fisher 权重. lifelong 设定下, TENT 的干净精度三种 corruption 后接近 0, EATA 的干净精度基本保持. 这个差别由式 (9) 的锚定项带来: 熵过滤减少了错误更新, 但不能阻止参数长时间的单向漂移.
1.2. 小批, 失衡与时间相关流: SAR, RoTTA, NOTE
SAR: 小批, 失衡和崩溃. SAR 把三种部署中常见的条件放到一起测: 一个批里混着多种偏移; 批大小为 1; 在线的类别分布失衡 (一段时间里集中出现少数类别). 在这三种条件下, 论文观察到 BN 是主要的祸根: 批统计量在小批和失衡流上不可靠. 换成 GN 或 LN 的模型 (ResNet-50-GN, ViT-B-LN) 在统计量上更稳, 但熵最小化仍然会崩溃: 某个时刻梯度范数突然变大, 模型此后对所有输入都给出同一类. SAR 针对这几种情况加了三个组件. 可靠样本过滤. 与 EATA 相同的阈值, 只保留熵低于 的样本:
是可更新参数. 这里不做加权, 只做过滤. sharpness-aware 熵. 不直接最小化熵, 而是最小化参数邻域内熵的最大值:
内层最大化用一阶近似求解, 取 , 再在 处求梯度更新 . 论文取 . 这一步的意图是让参数停在熵曲面平坦的区域; 在尖锐区域, 一个噪声样本的梯度就能把模型推出很远, 这是梯度范数突然变大的来源之一.
这个近似来自 . 在 的球内, 柯西不等式给出 , 等号恰好在 处取得. SAR 先沿熵增长最快的方向走到邻域边缘, 再从那里计算下降梯度. 一次更新因此需要两轮梯度相关计算, 代价高于 TENT; 得到的方向则避开只有原点熵低、周围立刻恶化的尖锐解. 模型恢复. 维护熵的滑动平均 . 当 低于一个很小的阈值 时, 判定模型已经崩溃到平凡解 (对所有输入都很确定), 把可更新参数恢复成源模型的值. SAR 的消融. ImageNet-C 第 5 级, 在线类别失衡设定, 各组件逐步加入后的精度 (%): ViT-B-LN 从 TENT 式熵最小化的 47.6, 加可靠过滤 53.1, 加 sharpness-aware 54.5, 加恢复 58.2; ResNet-50-GN 从 24.6 升到完整 SAR 的 37.0.
SAR 的恢复和 CoTTA 的随机恢复针对同一个问题, 方式不同: CoTTA 每步都随机拉回一点, 不管模型状态; SAR 平时不拉, 检测到崩溃信号才整体拉回. 前者开销固定, 会持续抹掉有用的适应; 后者保留适应, 但依赖崩溃检测的阈值, 检测晚了, 崩溃期间的预测已经输出. 时间相关的流里批统计量为什么会坏. 先手算一个一维的例子. 设某一层特征是标量, A 类的特征均值为 , B 类为 , 类内方差都是 1. 独立同分布的批里两类各半. 批均值 , 批方差 (类内方差 1 加上类间方差 1). 一个 A 类样本 归一化后是 , B 类样本 是 , 两类仍然分得开. 时间相关的批里全是 A 类. 批均值 , 批方差 . 同一个 A 类样本 归一化后是 , 分类所需的信息被减掉了. 后面的层看到的是一个「不像 A 也不像 B」的特征.
这就是相关采样下 BN 失效的机制: 批统计量里混进了类别构成. 统计量越依赖当前批, 损失越大. 熵最小化在这样的批上还会把所有样本推向批内的多数类. BN, LN 与 GN 改变了哪条耦合. 设激活 . BN 对固定通道 在 batch 与空间维求均值,
一个样本改变统计量后, 同批其他样本的归一化结果也会变. batch size 为 1 时仍能在空间维估计统计量, 但估计里混进单张图的内容; 图像分类到了空间分辨率很小的深层, 样本数还会进一步减少. LayerNorm 对单个样本、单个 token 的特征维归一化,
GroupNorm 则在单个样本内部按通道组与空间位置归一化. 二者都切断了「一个请求通过统计量改变另一个请求」这条路径, 所以 SAR 在 ResNet-50-GN 与 ViT-B-LN 上能处理 batch size 1. 代价是 TENT 原本最便宜的域适配旋钮也消失了: LN/GN 没有跨 batch 的 running mean/variance 可重估, 只能更新仿射参数或更多网络权重. SAR 的可靠样本、sharpness-aware 梯度和恢复机制, 正是在这个更稳的归一化底座上控制参数更新.
归一化层解决的是统计耦合, 不负责保证伪标签正确。 LN 模型仍会因为熵最小化进入过度自信的平凡解, 所以 ViT-B-LN 仍需要 SAR. 反过来, CoTTA 即使有教师和随机恢复, 只要底层继续依赖相关 batch 的统计量, RoTTA 表里的性能仍会大幅下降. RoTTA. RoTTA 把这种设定叫 PTTA (practical TTA): 分布持续变化, 同时样本按类别相关地到达. 论文用 Dirichlet 分布 (参数 ) 控制类别相关的强度, 越小越相关. RoTTA 有三个组件:
- RBN (robust BN). 不用当前批的统计量, 而是维护全局统计量的滑动平均 ( 同理), 是当前批的统计量, 归一化时用 和 . 滑动平均把统计量的时间窗口拉长, 稀释单个时段的类别偏斜.
- CSTU (类别平衡的记忆库). 容量为 的记忆库, 按伪标签分类别存放样本, 每类配额相同. 每个样本有一个分数, 同时考虑存放时间 (越旧越该替换) 和不确定度 (越不确定越该替换): , 论文取 . 记忆库满了以后, 新样本只能替换多数类里分数最高的样本, 使各类数量保持平衡.
- 时效加权的教师-学生更新. 教师参数是学生的 EMA. 学生在记忆库样本上训练, 损失为教师在弱增强下的预测与学生在强增强下的预测之间的交叉熵, 每个样本按时效 加权, 越旧的样本权重越低.
RBN 的滑动平均也能直接换算成记忆长度. 当前统计…9863 tokens truncated…额、去重与年龄上限能限制占位,代价是降低真实突发域的写入速度. 方法组合的交互. 教师、筛选、锚定、恢复与记忆并非简单相加. 筛选降低教师看到的数据,教师更慢;记忆提高多样性,也让筛选阈值分布变化;Fisher 锚定限制学生,EMA 教师随后继承受限状态;随机恢复会打断 optimizer 矩与参数的对应.
完整组合优于单组件不说明每项必要. 用小型析因实验估计主效应和交互:教师×筛选、记忆×统计、锚定×恢复. 若两个保护机制互相冗余,保留更便宜的一项;若存在负交互,堆叠防御可能降低正常适应. 优化器状态也需随恢复处理. 参数坐标回源而 Adam 矩保留旧方向,下一步会再次把它推走. 同时恢复相应矩更一致,却增加实现复杂度. 对比只恢复参数、参数加矩和整体重建 optimizer,测恢复持久性.
4.2. 评测、监控与事故复盘
在线风险的时间指标. 整流平均误差会掩盖短时崩溃. 需要滑动窗口最差误差、连续越界时长、切域后恢复时间、源回访损失与污染移除后的半衰期. 同样平均 20%,一条轨迹始终稳定,另一条曾连续一千请求接近全错,部署风险不同. 累积后悔可将在线模型与每时段 oracle 参照比较,但 oracle 如何训练要写清. 参照若使用目标标签和完整域边界,只是上限;若用源模型,则衡量适应的净收益. 两种参照可以并列,不能混成一个量. 源锚点与隐私约束. 少量源锚点能直接监控遗忘,却可能因许可或隐私无法保留. 可保存合成样本、特征原型或源模型在公共探针上的 logits;每种替代物覆盖有限. 声称 source-free 时,任何源统计、Fisher、原型或生成器都应列入可访问状态.
锚点长期重复查询会被方法间接适配. 若更新规则根据锚点表现停止或回滚,锚点已经是验证集. 定期轮换密封探针,限制查询次数,并另留最终源测试集. 无标签监控的误报. 熵、置信度、预测类别比例、梯度范数和参数位移都可无标签计算,却都只是代理. 熵降低可能是改善或塌缩;类别集中可能是攻击或真实流;梯度增大可能是新域或异常输入. 单指标阈值无法可靠判定.
监控器也需要在多种正常流和事故流上评测,报告检测率、误报率与延迟. 它使用哪些历史、是否跨用户、状态如何恢复,同样属于动力系统. 一个不断误报并触发回滚的监控器会制造自己的性能问题. 灰度与影子状态.
上线前可让候选在影子状态中接收真实输入并更新,但输出仍由稳定模型提供. 比较候选预测、状态变化与安全探针,达到门槛后再小流量启用. 影子模式降低用户风险,也无法获得所有反馈标签,仍需抽样人工或延迟真值. 灰度分桶按会话或用户固定,防止同一用户跨版本导致状态互相污染. 候选与基线使用独立状态,不能共享 BN 或记忆库. 工具、检索与解码配置保持一致,才能把差异归给 TTA. 事故时间线. 事故复盘从首个异常输入、状态版本、监控触发、回滚动作到恢复完成建立时间线. 保存受影响请求范围、参数/统计差异、记忆库快照与攻击证据. 只保存事故后的模型,无法判断污染从哪里进入.
复盘将原因分成代理失真、统计污染、实现故障、资源越界、恶意攻击与监控误报. 每类修补对应新的压力测试. 例如 BN 污染后增加跨样本反例,恢复遗漏 optimizer 后增加状态完整性检查. 可复现的状态快照. 每个发布状态记录源模型哈希、学生、教师、归一化统计、optimizer、记忆库、筛选器和监控器. 只保存学生参数不能重放下一步. 快照与数据 offset、时间和租户范围绑定. 恢复测试在任务中部、域切换、记忆淘汰和教师更新后主动中断. 重启轨迹与连续轨迹比较样本序列、伪标签、状态与指标. 非确定环境使用预先容差,并检查差异没有固定方向.
最终可证伪清单。 每条主张给出失败条件. 「抗误差积累」要求长流最差窗口与源回访不恶化;「抗时间相关」要求类排序和视频流优于相同组件的 IID 版本;「抗攻击」要求在预定污染预算下成功率上界过门槛;「可回滚」要求故障注入后在时限内恢复完整状态.
「样本筛选有效」要求真实可靠样本优于等数量随机样本,且少数类入选没有系统性下降;「教师有效」要求伪标签方差下降并通过系统错误反例;「Fisher 有效」要求优于等强度 L2 与随机重要性;「记忆有效」要求在等容量下优于简单 FIFO 或蓄水池.
结果边界写入结论:支持的流类型、batch、标签空间、模型归一化、攻击权限、状态共享粒度与资源预算. 超出边界时退回 episodic 或源模型,是合法安全策略. 连续更新的价值来自可控积累,而非让模型在任何输入上永久自改.
一个完整的手算例子可以把这些量连接起来. 假设源模型在干净集准确率 90%,进入域 A 后 TENT 在一百步内升到 85%,源回访降到 84%;随后进入域 B,目标准确率先跌到 45%,五十步后升到 75%,源回访继续降到 70%. 只对两个目标域终点取平均得到 80%,看起来优于源模型在目标域的 65%;轨迹却经历 45% 的低谷,源能力损失二十点. 若服务每步都输出,终点均值无法代表用户经历.
加入 EATA 式筛选与锚定后,域 A 可能只升到 82%,域 B 五十步后为 72%,源回访保持 85%. 目标均值低三点,源保持高十五点. 哪个更好取决于源请求仍占多少流量、低谷能否接受和恢复成本. 将目标、源、安全与资源压成一个平均会掩盖这个选择,Pareto 前沿和硬门槛更合适.
再加入一次十步污染. 无保护模型的目标精度从 75% 降到 20%,污染移除两百步后才回到 70%;带恢复模型在第三步触发,降到 60%,回源后重新适应六十步到 72%. 这里需要四个指标:最低点、受影响请求数、恢复时间与恢复后的稳态. 仅报告攻击成功率或整流平均,无法比较防御代价.
教师的错误尾巴也可从概率直接估计. 若污染让学生目标类概率保持 1,持续十步, 的教师从 0 增到 . 污染结束后学生立刻回零,教师还需约 69 步才衰减到一半. 若决策阈值很低,这段尾巴仍能影响伪标签. 增大 会降低十步写入,也让真实域切换更慢,权衡无法由单个攻击结果决定.
样本筛选存在相反的尾巴. 一批困难类初始熵高,连续被拒绝更新,模型对它的熵始终不降,形成吸收状态. 可以每隔固定时间允许少量探索样本,以低学习率更新,或让教师一致性而非绝对熵决定入选. 探索会重新引入错误梯度,安全比例需要在开发流中确定. 完全贪心筛选更稳定,也可能永久失去新能力.
记忆库的公平性也可量化. 设容量一千,九成流量来自常见类,均匀蓄水池期望只保留一百个少数类样本;类别均衡库可保留五百个,却把部署先验改成一比一. 对宏平均准确率,均衡可能更好;对概率校准与总错误率,真实比例可能更合适. 报告两种聚合,避免用一种任务权重证明唯一正确的记忆分布.
时间相关评测还要控制标签延迟. 在线系统可能在数小时或数天后拿到少量真值,这些标签能用于监控、回滚或未来更新. 一旦使用,它就不再是纯无监督 TTA. 可以定义无标签主轨迹和延迟监督辅助轨迹,分别报告. 将延迟标签偷偷用于阈值调整,会让方法看起来比真实无标签设定稳定.
如果允许人工确认,状态发布可采用两阶段流程:快层即时适应,只影响低风险请求;慢层更新收集到足够证据后,由延迟标签或审计集批准,再进入全局状态. 这牺牲适应速度,换取跨用户安全. 论文中的完全自动流是能力上限,生产系统可以有更严格权限.
跨用户隔离的实验可构造两个分布相反的租户. 租户 A 主要是类别 0,租户 B 主要是类别 1;交替请求时,全局 TTA 容易随最近租户摆动. 分租户状态应降低互相干扰,代价是每个状态样本少. 再加入第三个低流量租户,检验隔离是否因冷启动伤害小用户. 这种实验比随机混合平均更接近服务边界.
攻击者还可能利用状态探测. 连续提交候选输入,观察正常查询输出变化,便能估计哪些输入对状态影响大. 限制单身份更新额度、随机延迟状态发布和隐藏适应反馈能提高成本,也会降低正常个性化. 威胁模型应说明攻击者是否能读取概率、只看标签,或能与受害请求同批.
模型并行与副本会带来状态一致性问题. 多个服务副本各自适应,流量路由变化让同一用户遇到不同模型;定期合并状态又可能把污染传播到全局. 若使用参数平均,需验证不同副本是否位于可合并盆地;若只同步教师或统计量,明确哪些历史被共享. 线上评测固定路由,不能假设单副本论文结果自然适用于分布式服务.
状态合并还涉及时间顺序. 副本 A 在域 A 适应,副本 B 在域 B 适应,简单平均可能两域都下降. 更安全的做法是用密封验证流评估候选合并、保留域专属状态并路由,或只聚合经过裁剪的低风险增量. 每种方案增加存储、验证或路由成本.
回滚日志必须覆盖外部依赖. 模型状态回到版本 ,若预处理、tokenizer、归一化代码或增强库仍是新版本,行为未必回到旧系统. 发布清单将模型、代码、配置和状态绑定为原子版本. 回滚演练从真实服务入口发请求,而非只加载旧权重做离线推理.
源锚点测试也可能泄漏敏感数据. 可将锚点放在隔离评测服务,只返回是否越过门槛,不向在线适应器暴露样本或梯度. 查询频率受限,防止适应器通过反复反馈拟合锚点. 这种设计把监控证据和训练权限分开.
对于无法保存任何源数据的场景,可以用源模型与候选模型在当前无标签流上的预测 KL 作为保守代理. KL 小只说明候选接近源行为,源行为在目标域可能本来错误;KL 大也可能是必要适应. 它适合检测突变,不能证明源能力保持. 结论必须保留这个限制.
连续 TTA 的数值稳定性也需要压力测试. 长流中 optimizer 矩可能累积到极端尺度,混合精度 scaler 会多次下降,BN 方差可能接近零. 监控非有限值、最小方差、更新/参数范数比和 scaler 状态. 发生异常时丢弃候选 step,不能让部分张量已经更新、部分未更新的状态继续服务.
更新频率可低于推理频率. 每 批聚合一次梯度,降低计算和噪声,也增加适应延迟;事件触发更新只在漂移信号出现时反向,依赖监控可靠性. 将 从一到较大值扫描,画性能、攻击面积与成本. 更新越少不总是越安全,单次聚合梯度可能被一段相关或污染数据主导.
状态寿命提供另一种控制. 即使没有检测到崩溃,也在固定时长后回到源点或健康锚点,限制最坏污染持续时间. 短寿命接近 episodic,长寿命接近无限 continual. 寿命与域持续时间共同决定收益,采用多个周期测试而非只选最优周期.
当流包含周期性域,保留域专属 checkpoint 可能比每次从源重新适应更快. 这需要域识别,错路由会加载错误状态. 评测加入相似域混淆,报告路由矩阵和错路由代价. 域库不断增长时还要有合并、淘汰和容量上限,否则动态状态本身失去可扩展性.
所有这些机制都应回到一个简单问题:当前请求是否获得了可接受预测,且它对未来请求写入了什么. 第一部分由在线任务、安全与校准指标衡量,第二部分由状态差、传播范围、寿命和可撤销性衡量. 只评当前准确率会漏掉未来风险,只限制状态又会让适应失去意义.
最终报告可为每种方法画「收益—传播范围—恢复时间—资源」四维摘要. episodic 方法传播范围最小、计算高;无约束 continual 方法收益积累快、恢复风险大;教师、筛选、锚定和记忆位于中间不同位置. 这比把所有方法排成单一准确率榜更符合其真实取舍.
当证据不足时,安全默认是冻结更新并使用已验证模型. TTA 的总体价值可以保留,同时承认无标签代理无法为每次状态改变提供真值保证. 通过轨迹、反例、攻击和回滚实验建立可信工作区间后,连续自适应才适合获得跨请求写权限.
还应区分「模型已经适应」与「环境已经恢复」. 一段 corruption 消失后,输入重新接近源域,模型状态却停留在目标域. 若监控只观察当前熵,模型可能在错误参数下依然自信,无法触发回滚. 定期源探针、双模型分歧和状态年龄可以补充环境信号. 将输入漂移检测与模型健康检测分开,避免两者相互替代.
双模型分歧可用源模型 与适应模型 的 KL 或预测翻转率表示. 分歧突然增大说明状态或输入发生变化,无法单独判断谁更正确. 如果目标性能同时改善,分歧是必要适应;如果源探针下降且目标代理没有可靠证据,分歧更像风险. 监控规则需要联合观察,而不能把接近源模型当作唯一安全标准.
状态年龄也有两种定义:距源初始化的步数,以及每个参数或记忆样本距最近恢复的时间. CoTTA 坐标随机恢复后,不同权重年龄不同;记忆库样本也有年龄分布. 报告平均年龄会掩盖长尾,最老分位数更能表示潜伏历史. 攻击者可能专门影响很少恢复的坐标或长期保留样本.
可以设计一组「相同终点、不同历史」实验. 两条流在当前 batch 分布完全相同,一条此前经历干净域,另一条经历污染域. 若当前预测不同,差异完全来自状态历史. 再执行整体回源、只恢复学生、只清记忆、只重置统计,观察哪部分解释差异. 这比单独查看各状态范数更直接地定位污染载体.
相反的「不同终点、相同历史」实验固定状态,将当前 batch 换成类别均衡、单类、相关视频和含攻击样本四种构成. 预测与更新差异来自即时输入. 两组实验组合起来,将历史效应与当前 batch 效应分离,适合验证 NOTE、RoTTA 与 DIA 所针对的机制.
对教师学生方法,回滚语义必须明确. 只回滚学生、保留教师,下一步教师会重新把旧状态教回学生;只回滚教师、保留学生,EMA 又会迅速污染教师. 可靠回滚通常需要二者与 optimizer 一致恢复,或者明确将源教师作为不可变锚点. 记忆库也要同步,否则旧伪标签会重新注入.
Fisher 锚定的状态较小,却有版本依赖. 底座参数、可更新层或归一化结构改变后,旧 Fisher 坐标不再对应. 加载时核对参数名、shape 和源模型哈希;缺失坐标不能默认零后继续,因为这会无声放松保护. 重新估计 Fisher 形成新的安全配置版本.
动态 batch 与弹性服务还会改变归一化路径. 高流量时 batch 大、统计稳定,低流量时 batch 小、更新噪声大;系统恰在夜间低流量时可能更容易漂移. 评测按不同到达率回放相同输入,保留等待超时与组批规则,测量准确率和延迟. 单纯离线固定 batch 无法覆盖这一运行条件.
用户请求的自然选择也会形成反馈. 模型变差后用户可能重试、改写或离开,后续流不再是外生分布;TTA 又用这些新输入继续更新. 离线静态数据忽略了闭环. 小规模模拟可设置用户根据输出质量重试,观察错误是否吸引更多相似输入并放大. 线上灰度则需谨慎记录重试与流失代理量.
如果工具或检索结果进入模型输入,它们也能写入 TTA 状态. 外部网页变化、检索污染或工具错误随后影响未来请求. 状态谱系应记录关键外部来源版本,安全隔离不只按用户,还要按工具信任级别. 不可信内容可参与当前上下文,未必拥有更新全局参数的权限.
连续 TTA 与个性化也容易混淆. 为单用户长期适应口味是个性化目标,为环境 corruption 修复是分布适应目标. 用户偏好写入全局模型会伤害他人;环境适应只留在个人状态又浪费共享证据. 将状态分成环境、租户和会话层,分别规定输入来源和合并权限,才能同时支持两类需求.
方法论文常在固定标签空间上评测. 若流出现未知类,熵最小化会把它们推向已知类,筛选可能因高熵跳过,也可能在高置信错分时放行. 需要额外报告开放集检测、未知样本写入率和它们对已知类的后续影响. 闭集安全结果不能覆盖这个场景.
当标签语义本身随时间改变,例如同一类别编号重新定义,源锚定与持续适应目标发生真正冲突. 无标签方法无法知道语义已改,只能保持旧决策或跟随输入结构. 这种概念漂移需要外部监督、规则版本或人工确认,不能靠降低熵解决. 将它列为明确停更条件,比让系统盲目自适应更安全.
完整事故演练应覆盖未知类、概念漂移、单类 burst、缓慢污染、突然切域、服务重启和状态合并. 每次演练都有预期监控、动作与恢复时间. 结果不只给「是否成功」,还保存误报、漏报和正常性能代价. 防御通过一种攻击而在正常流频繁回滚,仍不合格.
连续适应的授权可以逐级开放. 新配置先只能更新会话快状态,通过影子与压力测试后允许租户慢状态,再经过更长审计才允许全局状态. 每一级都有更严格证据和更慢回滚. 这种权限模型把算法的统计置信转化为系统的写入范围,避免一次平均准确率提升直接获得永久全局修改权.
参考文献
- Wang, Q., Fink, O., Van Gool, L., & Dai, D. (2022). Continual Test-Time Domain Adaptation. CVPR 2022.
- Niu, S., Wu, J., Zhang, Y., Chen, Y., Zheng, S., Zhao, P., & Tan, M. (2022). Efficient Test-Time Model Adaptation without Forgetting. ICML 2022.
- Niu, S., Wu, J., Zhang, Y., Wen, Z., Chen, Y., Zhao, P., & Tan, M. (2023). Towards Stable Test-Time Adaptation in Dynamic Wild World. ICLR 2023.
- Yuan, L., Xie, B., & Li, S. (2023). Robust Test-Time Adaptation in Dynamic Scenarios. CVPR 2023.
- Gong, T., Jeong, J., Kim, T., Kim, Y., Shin, J., & Lee, S.-J. (2022). NOTE: Robust Continual Test-time Adaptation Against Temporal Correlation. NeurIPS 2022.
- Wu, T., Jia, F., Qi, X., Wang, J. T., Sehwag, V., Mahloujifar, S., & Mittal, P. (2023). Uncovering Adversarial Risks of Test-Time Adaptation. ICML 2023.
- Wang, D., Shelhamer, E., Liu, S., Olshausen, B., & Darrell, T. (2021). Tent: Fully Test-time Adaptation by Entropy Minimization. ICLR 2021.
- Kirkpatrick, J., et al. (2017). Overcoming catastrophic forgetting in neural networks. PNAS.