HSFM: Hard-Set-Guided Feature-Space Meta-Learning for Robust Classification under Spurious Correlations¶
会议: ECCV 2026
论文: ECCV 2026
代码: https://github.com/ArianYp/HSFM
领域: 优化/理论
关键词: 伪相关、最差组精度、双层优化、元学习、特征空间增强
一句话总结¶
HSFM 冻结 ERM 预训练骨干,把一小撮训练样本在特征空间里的嵌入当作可学习参数,用"模型自己在高损失样本上的表现"构造双层元目标(内层适配线性头、外层最小化硬集损失)来优化这些嵌入;只需单卡几分钟,就在 Waterbirds、Dominoes 等伪相关基准上取得与使用组标签的方法相当的最差组精度,还能把优化出的特征位移经 unCLIP 解码回图像、直观暴露模型的伪相关依赖。
研究背景与动机¶
真实数据集里,与类别标签没有因果关系却频繁共现的特征会形成伪相关——ImageNet 上"蝴蝶"的图里常常同时有花,Waterbirds 里水鸟大多出现在水面背景上。用经验风险最小化(ERM)训练的深度网络会把这些捷径当作判据,一旦迁移到伪相关不再成立的环境(少数群体样本),精度就大幅掉点;在医学诊断这类高风险场景里,同样的捷径问题可能直接导向错误结论。社区通常把数据分布建模为若干"组"(类标签与环境属性的组合,如"水鸟/陆地"×"水面/陆地"),并把最差组精度 \(\mathrm{WGA}(f)=\min_{g}\mathrm{Acc}_g(f)\) 当作鲁棒性的主指标。
一个关键观察支撑了近来的一批工作:ERM 训出来的骨干其实同时编码了核心特征和伪特征,被捷径带偏的往往只是压在上面那层线性分类头,因此把骨干冻住、只重训头就能让少数群体精度显著回升。但现有修法各有短板。GroupDRO 直接最小化最差组损失,代价是训练时需要组标签;JTT、AFR、LfF 只用模型自身的错误信号给已有样本重新加权,始终被限制在原始训练集的支撑范围内——它选不出、也造不出原分布里本就稀缺的少数群体样本;MaskTune、DaC、DDB、FFR 一类增强方法则要靠手设计的掩码/合成规则或外部生成先验,开销大且受生成质量牵制。而 DFR 虽然简单有效,却直接把验证集当作平衡后的训练集来用,在验证集很小的数据集上并不牢靠(MetaShift 只有 81 个验证样本)。
本文的切入角度是:既然失败集中在分类头,而分类头的训练数据本身是可以"动"的,那就把增强整个搬到骨干输出之后——不再合成图像,而是在冻结的特征空间里直接优化支持集样本的嵌入,让这些被"编辑过"的特征在训练分类头时把决策边界推向对困难样本更有利的位置;至于"哪些样本困难",由模型自己在验证集上的损失回答,无需任何组标注。核心 idea:用一个以硬集损失为外层目标的双层元学习框架,把支持集样本的特征当作可学习参数来优化——内层在优化后的特征上适配线性头,外层沿内层更新路径反传、最小化高损失样本上的损失。
方法详解¶
整体框架¶
HSFM 接在一个已经用 ERM 训好的模型后面,把它拆成冻结的骨干 \(\phi\) 和线性头 \((W,b)\):图像先过骨干得到特征 \(h=\phi(x)\),再由线性头输出 logits。这个分解是整篇方法的前提——只有特征空间里的量才是可优化的。方法在每一轮里交替做两件事:用"困难样本"的损失去更新一批支持集样本的特征嵌入,再用更新后的特征去训练线性头。具体来说,先从训练集里采样一个类平衡的支持集 \(\mathcal{S}\),把它们的骨干特征取出来当作可学习嵌入 \(H=\{h_i\}\) 的初值;然后每一轮先按当前分类器在验证集上的损失、每类挑出损失最高的 \(K_{\text{hard}}\) 个样本拼成硬集 \(\mathcal{Q}\),接着做 \(K_H\) 步元更新——每步先在 \(H\) 上把线性头适配 \(T\) 步(内层),再用适配后的头在 \(\mathcal{Q}\) 上算损失、对 \(H\) 求元梯度(外层);最后用更新后的 \(H\) 再训练头部 \(T\) 步,进入下一轮。整条流程里真正被优化的只有一批特征向量和一个线性头,骨干只在前向取特征时被调用一次,因此代价极低。
%%{init: {'flowchart': {'rankSpacing': 24, 'nodeSpacing': 28, 'padding': 6, 'wrappingWidth': 400}}}%%
flowchart TD
A["ERM 模型 + 训练/验证集"] --> B["采样类平衡支持集<br/>取冻结特征作初值"]
B --> C["特征空间支持嵌入优化<br/>样本特征变可学习变量"]
C --> D["免组标签的硬集构造<br/>每类取损失最高的验证样本"]
D --> E["双层元优化<br/>内层适配头,外层更新嵌入"]
E -->|下一轮刷新硬集| D
E --> F["鲁棒分类器"]
关键设计¶
1. 特征空间支持嵌入优化:把数据增强从像素空间搬到骨干输出
传统的数据增强/重平衡要么生成新图像,要么对原图做掩码或插值,最后都要重新跑一遍完整的骨干训练。HSFM 反过来:它承认骨干已经"知道"足够多的东西,于是把增强定义在骨干输出上——支持集样本的特征向量从 \(\phi(x_i)\) 出发,被当作自由参数直接优化,优化完就是"被编辑过的样本"。这样做的直接好处是三层:其一,骨干不需要反向传播,每次元更新只是一批 \(d\) 维向量加一个线性头的前向与反传,训练从小时级压到分钟级;其二,避免了像素空间生成的质量不可控与生成模型先验偏差,也绕开了在特征空间里做增强必然要面对的"合成特征是否对应真实图像"的问题(论文不要求编辑后的特征有对应的真实图像,只要求它能让头学得更好);其三,优化发生在特征空间,方法不绑定任何特定数据模态或任务假设,换骨干(ResNet-50 / ViT-B/16 / ConvNeXt / CLIP)只需重取一次特征。
2. 免组标签的硬集构造:用损失排序代替组标注
伪相关方法的一大分水岭是"要不要组标签"。GroupDRO、LISA 训练时就要用,DFR 更是要靠组标签才能把验证集平衡成一个可用的重训集。HSFM 的替代方案极其朴素:每个类别内按当前分类器的交叉熵损失从高到低排序,取前 \(K_{\text{hard}}\) 个验证样本,各类的 top-K 集合取并集即得硬集 \(\mathcal{Q}\)。它之所以能替掉组标签,是因为在伪相关设定下"损失高"和"属于少数群体"高度重合——ERM 分类器在 landbird-on-water 这类反相关样本上必然判错、损失偏高,于是这些样本会自然地被 top-K 选中,无需事先知道组的定义。这带来两个实用性质:一是硬集随训练动态刷新,能一直盯住分类器当前(而不是最初)的失败模式,这比一次性固定的重加权集合更贴合"分类头在变"的事实;二是它对伪相关的具体形态不作假设(背景-类别绑定、纹理捷径、合成数字叠加都行),因为判据只有损失本身。
3. 内层适配 + 外层元目标的双层优化:让增强由模型自己的失败驱动
拿到硬集后,怎么把它变成对支持集嵌入的更新信号,是本文与"重加权"路线的真正分歧点。JTT/AFR 这类方法拿困难样本去加权已有样本,样本位置不动,因此永远走不出原训练分布的支撑;HSFM 则把困难样本的损失当作元目标,去移动样本在特征空间里的位置。形式化地说,内层是标准做法——在可学习的支持嵌入 \(H\) 上,从 ERM 头参数出发走 \(T\) 步梯度下降得到适配后的头 \((W',b')\);外层的评估则发生在硬集上,其样本特征 \(q_j=\phi(x_j)\) 是冻结的、不参与优化:
其中 \(\nabla_H\) 要沿内层的 \(T\) 步更新路径反传回 \(H\)(即 MAML 式的显式元梯度,而非一阶近似)。这个结构是方法有效的关键,而且增益来源不是"强调难样本"本身:论文的受控消融里,把所有训练预算给"不用元优化、直接在硬集上训头"的 No-bilevel 版本,它在验证集被砍到 1000 个样本(少数样本只剩 6/3 个)时最差组精度只有 44.4,而 HSFM 是 77.2——因为直接拟合反复选出的硬集等于把硬集背下来。HSFM 之所以不塌,是因为支持嵌入始终从训练样本本身初始化、且每轮都要重新适配头,双层结构本身充当了正则:它要求的是"让头在适配之后对硬集表现好",而不是"在硬集上表现好",前者无法靠记住硬集达成。论文把它归纳为"双层结构而非难样本强调带来增益",这一点被 AFR(在验证集上做重加权)在每个验证规模下都不如 HSFM 进一步佐证。
一个完整示例¶
以 Waterbirds(水鸟/陆鸟 × 水面/陆地背景)走一轮:骨干是 ImageNet 预训练的 ResNet-50,先在训练集上 ERM 训好,然后冻结。取一个类平衡的支持集(两类各若干张),把它们的冻结特征复制成可学习变量 \(H\);每类从验证集中取损失最高的 \(K_{\text{hard}}\approx250\) 个样本组成硬集 \(\mathcal{Q}\)——此时被判错的"陆地上的陆鸟""水面上的水鸟"因为损失大而自动入选。接着做 \(K_H\) 步元更新:每步先在 \(H\) 上把线性头走 \(T\ge10\) 步,得到 \((W',b')\);再在 \(\mathcal{Q}\) 的冻结特征上算交叉熵,把梯度一路反传回 \(H\)。于是支持集里"陆地背景的陆鸟"这一小撮嵌入被推向"水面背景"一侧,而"水面背景的水鸟"被推向"陆地"一侧——这正是论文用 unCLIP 解码出来的可视化所显示的方向。\(K_H\) 步后,用当前 \(H\) 把线性头正式训 \(T\) 步,刷新硬集,进入下一轮。
损失函数 / 训练策略¶
内层与外层都用交叉熵:内层 \(\mathcal{L}_{\mathrm{in}}\) 在支持嵌入 \(\{(h_i,y_i)\}\) 上,学习率 \(\alpha\),从 ERM 得到的头参数 \((W^{(0)},b^{(0)})\) 出发走 \(T\) 步;外层 \(\mathcal{L}_{\mathrm{out}}\) 在硬集 \(\mathcal{Q}\) 上,元学习率 \(\eta\)。每轮的动作顺序是固定的三步:刷新硬集 \(\mathcal{Q}\) → \(K_H\) 步元更新 \(H\) → \(T\) 步用当前 \(H\) 更新头,交替进行以跟踪分类器不断变化的失败样本。几个关键超参在消融里都有交代:\(T\) 在中大取值区间都很稳,\(T\ge10\) 即可,\(T\) 取 1 或 5 时性能骤降(内层更新太少,元信号不可靠;注意论文里 \(T\) 同时指内层适配步数与头部的 ERM 更新步数);\(K_{\text{hard}}\) 存在明显的甜点,约 250 时最好,太小则硬集缺乏多样性、信号不稳,太大则把容易的高频样本也拉进来、稀释了少数群体信号。论文把超参细节与效率讨论放在附录(⚠️ 附录不在本次可获取的正文缓存中,未核验)。
实验关键数据¶
主实验¶
在四个伪相关基准上,用与基线一致的 ImageNet 预训练 ResNet-50 骨干(先 ERM 训好再由 HSFM 接手)。"组信息"一列按 DFR 的记法标注训练/验证阶段对组标签的使用:✓✓ 表示训练时直接用验证集组标签,✓ 表示只在模型选择时用,✗ 表示不用。
| 方法 | 组信息(训练/验证) | Waterbirds 最差 | Waterbirds 平均 | CelebA 最差 | CelebA 平均 | MetaShift 最差 | Dominoes 最差 |
|---|---|---|---|---|---|---|---|
| GroupDRO | ✓/✓ | 91.4±1.1 | 93.5±0.3 | 88.9±2.3 | 92.9±0.2 | 66.0±3.8 | - |
| LISA | ✓/✓ | 89.2±0.6 | 91.8±0.3 | 89.3±1.1 | 92.4±0.4 | 59.8±2.3 | - |
| DFR | ✗/✓✓ | 92.3±0.2 | 93.3±0.5 | 88.3±1.1 | 91.3±0.3 | 72.8±0.6 | 90.0±0.4 |
| JTT | ✗/✓ | 86.7 | 93.3 | 81.1 | 88.0 | 64.6±2.3 | - |
| DaC | ✗/✓ | 92.3±0.4 | 95.3±0.4 | 81.9±0.7 | 91.4±1.1 | 78.3±1.6 | 89.2±0.1 |
| DDB | ✗/✓ | 93.0±0.1 | 93.6±0.1 | 85.8±1.4 | 87.3±0.7 | 81.2±0.2 | - |
| Base (ERM) | ✗/✗ | 74.6 | 90.2 | 30.6 | 95.8 | 64.1 | 78.6 |
| HSFM(本文) | ✗/✓ | 93.1±0.1 | 94.0±0.5 | 89.2±0.2 | 90.6±0.5 | 77.2±0.1 | 90.4±0.3 |
在细粒度分类上换一套评测协议:ERM 表示骨干先在该数据集上用 ERM 微调过,Pretrained 表示只用 ImageNet 预训练骨干、不做任何数据集特定微调,两者都冻结骨干后交给 HSFM。指标是 top-1 精度。
| 方法 | Stanford-Cars | CUB | Oxford-Flowers |
|---|---|---|---|
| ERM | 83.98 | 75.01 | 91.07 |
| DFR-ERM | 82.74 | 72.90 | 95.98 |
| DFR-Pretrained | 32.75 | 48.33 | 87.71 |
| HSFM-ERM | 83.44 | 72.83 | 97.27 |
| HSFM-Pretrained | 85.10 | 72.94 | 97.10 |
消融实验¶
受控 CelebA 消融:同一个 ERM 骨干,把验证集对半切分为"信号/选择"两半以保证所有方法看到同样多的样本,并逐行扫描验证集规模。"min cnt"是信号/评估两半里少数群体样本数;No-bilevel 用同一硬集 \(\mathcal{Q}\) 直接训头、不做元优化,用来隔离双层结构的贡献。指标为最差组精度。
| 验证集规模 (min cnt) | DFR(无平衡) | AFR(在验证集上) | No-bilevel | HSFM |
|---|---|---|---|---|
| 1000 (6/3) | 37.2 | 41.7 | 44.4 | 77.2 |
| 2000 (9/13) | 40.6 | 73.9 | 59.4 | 79.4 |
| 3000 (18/20) | 41.1 | 72.4 | 63.3 | 86.6 |
| 全集 (182) | 41.1 | 61.7 | 79.4 | 89.0 |
关键发现¶
- 主结果:HSFM 在 Waterbirds(93.1)与 Dominoes(90.4)上拿到最好成绩,CelebA 上 89.2 是所有"训练时不用组标签"的方法里最高的(LISA 的 89.3 略高但训练阶段需要组标签)。值得注意的是它在合成/精心构造的 Dominoes 上不受影响,而依赖生成样本的 DDB 在该数据集上不适用。
- 骨干与表征无关:换成 ViT-B/16,Waterbirds 最差组从 53.9 拉到 81.5、CelebA 从 53.3 到 88.3、Dominoes 从 46.1 到 73.3;ConvNeXt 上 Waterbirds 82.7→92.6、CelebA 47.2→81.1;甚至直接用 CLIP ViT-H 的冻结嵌入,Waterbirds 也从 68.4 提到 80.5、CelebA* 从 50.0 提到 81.0。提升幅度随骨干变强而收窄,但方向一致。
- 增益来自双层结构而非"难样本强调":消融里 No-bilevel 在最小的验证集设置下(1000,少数样本仅 6/3)崩到 44.4,而 HSFM 77.2;AFR 在验证集上重加权在每个验证规模下都输给 HSFM;DFR 去掉组平衡后进一步退化(全集设置下 41.1)。三者合起来说明:免组标签、可走出原训练集支撑的元优化才是关键。
- 超参敏感性与数据规模依赖:\(T\ge10\) 后最差组精度稳定,\(T\in\{1,5\}\) 时骤降;\(K_{\text{hard}}\) 在约 250 处达到峰值,两端都变差。MetaShift 上增益边际(77.2,低于 DaC 的 78.3 与 DDB 的 81.2),作者归因于该集只有 81 个验证样本——这恰好暴露了方法对验证集规模的依赖,也是 DFR 在该集上不可靠(72.8)的同一原因。
- 细粒度上的非对称表现:HSFM-Pretrained 在 Stanford-Cars 上 85.10 反超 ERM 的 83.98,HSFM-ERM 在 Oxford-Flowers 上 97.27 最好;CUB 上 ERM 最优(75.01),HSFM-Pretrained 72.94 仍算有竞争力。作为对照,DFR 在 Pretrained 设置下大幅退化(Cars 32.75、CUB 48.33),说明单纯重拟合线性头不足以利用强预训练表征。
- 可视化证据:以 CLIP 嵌入训练直线头并做 unCLIP 解码,优化后的嵌入在 Qwen2.5-7B-VL 的属性判定下约有 37%(CelebA 的性别属性)与 35%(Waterbirds 的背景属性)发生翻转,方向是从多数群体构型(金发女性/水鸟在水面)指向少数群体构型(金发男性/水鸟在陆地),说明特征编辑在语义上与数据集偏见对齐,而不是随机扰动。
亮点与洞察¶
- 把数据增强搬到冻结特征空间:不必生成图像、不必过骨干反传,只优化一批 \(d\) 维向量加一个线性头,就把鲁棒性训练从"生成模型 + 重训"压到"单卡几分钟"。这个 trick 可以整体迁移到任何"强预训练骨干 + 轻量头"的场景(少样本分类、长尾识别、领域适配)。
- 用损失排序替代组标签:不需要知道组怎么定义,只按每类损失取 top-K。它的成立前提是"高损失≈少数群体"这一在伪相关下普遍成立的经验事实,实现上几乎零成本,是本文最容易被复用的工程点。
- "适应之后表现好"而非"当下表现好":外层目标评估的是内层 \(T\) 步适配之后的头,而不是直接用硬集训头。这个差别看起来小,却把方法从"背硬集"变成了"把特征推到更容易泛化的位置"——消融里 44.4 与 77.2 的差距几乎全部来自这里。
- 方法顺带成了偏差分析工具:优化出的特征位移可以用 unCLIP 解码回图像,让"模型依赖哪个伪属性"从数字变成看得见的图。这与很多只报 WGA 的鲁棒性工作相比,提供了额外的诊断价值,也给"用生成模型解释模型"提供了一条不依赖提示工程的路径。
局限与展望¶
- 作者承认的局限:方法依赖冻结骨干能产生足够有信息量的特征。如果不成立,就需要微调骨干,计算成本上升、效率优势消失。
- 对验证集的依赖被论文淡化但真实存在:硬集从验证集里挑,MetaShift(81 个验证样本)上增益边际;而且验证集在此过程中被大量使用,严格说方法已不是纯 post-hoc 的"只动分类头"。此外,方法在模型选择阶段仍然用组标签(表 1 的 ✗/✓),只是训练阶段不用。
- 评测范围限于图像分类。特征空间编辑在检测、分割、多模态大模型上是否成立完全没有验证,"编辑后的特征不对应任何真实图像"这一特性在这些任务里可能带来新的问题。
- 每轮刷新硬集需要扫一遍验证集损失,验证集很大时这部分开销会上升;论文没有给出该开销随验证集规模的增长曲线。
- 可能的改进方向:硬集按类 top-K 是一种粗糙的"隐式平衡",当类内少数群体占比极低时 top-K 可能被同类的其他困难样本挤占,可以考虑用损失分布的分位数或双层内的一致性约束来改进;与 DFR 式显式平衡做一个可学习的混合(在无组标签下估计组比例)也是自然的下一步。
相关工作与启发¶
- vs DFR:DFR 用组标签把验证集平衡成重训集,然后在上面重训线性头;HSFM 不构造平衡集,而是识别高损失样本、把它们的损失当作元信号去优化支持集嵌入。区别在于监督信息的用法:DFR 是"换数据",HSFM 是"改数据在特征空间的位置"。DFR 在验证集极小时不可靠,HSFM 在同一设置下更稳。
- vs JTT / AFR / LfF:三者都用模型错误信号给已有样本重新加权(JTT 强调误分类样本,AFR 用不正确性信号,LfF 用偏置模型的相对难度),始终在原始训练集的支撑内;HSFM 直接优化表示,可以越出该支撑,这也是它在"少数群体样本极少"时仍有效的根源。
- vs GroupDRO / LISA:两者都直接针对最差组,但训练时依赖组标注;HSFM 只用验证集上的损失排序就近似达到了同类水平。
- vs 生成式增强(DDB / FFR / DaC / MaskTune):这些方法依赖外部生成先验或手设计规则,开销大、受生成质量与可控性限制,在 Dominoes 这类合成集上甚至失效;HSFM 的编辑完全由模型自身的失败信号驱动,无需任何外部先验。
- vs 数据集蒸馏 / 鲁棒数据集蒸馏:同属双层优化框架,但目标不同——蒸馏想用一个紧凑合成集概括整个训练分布,HSFM 不替换数据集,只在冻结特征空间里为"分类头适配"服务,因而更轻、也更贴合鲁棒性目标。
评分¶
- 新颖性: ⭐⭐⭐⭐ 冻结特征空间的双层"特征编辑"+ 免组标签的 top-K 硬集,组合干净且有区分度;不过双层元学习与难样本挖掘各自都不是新东西,新意主要在把两者放在特征空间里做。
- 实验充分度: ⭐⭐⭐⭐ 四个伪相关基准 + 三个细粒度 + 四种骨干 + CLIP + 受控消融与两项超参扫描,覆盖全面;但主表大量复用 DaC 报告的数字,附录的超参与效率细节本次无法核验。
- 写作质量: ⭐⭐⭐⭐ 动机到方法的逻辑链清楚,把"为什么不是重加权"讲得很明确;扣分在于 PDF 正文中多处公式抽取损坏,需要读者自行还原。
- 价值: ⭐⭐⭐⭐ 单卡几分钟拿到有竞争力甚至领先的最差组精度,且顺带提供偏差可视化工具,实用性与可复现性(已开源)都好。