Why Can't I Open My Drawer? Mitigating Object-Driven Shortcuts in Zero-Shot Compositional Action Recognition

  • 关联论文:2601.16211
  • 作者:Tom
  • 更新:2026-07-20

一句话结论

RCORE 通过"共现先验正则化"(CPR)和"时序顺序正则化"(TORC)两项机制,专门破解 Zero-Shot 组合动作识别中的"物体驱动捷径"问题——即模型不学动作本身,而是通过记住训练时见过的"动作-物体"共现来作弊,导致无法泛化到新的动作-物体组合。

解决什么真问题

Zero-Shot 组合动作识别(ZS-CAR)的目标是让模型能识别从未在训练中见过的"动词-宾语"组合。例如,模型训练时见过"打开抽屉"和"关上门",测试时要能识别"打开门"——这是一个组合泛化问题。

当前 SOTA 方法在此任务上存在一个关键失效模式:物体驱动捷径(Object-Driven Shortcuts)。模型在训练时观察到"打开"常和"抽屉"一起出现、"关上"常和"门"一起出现,于是它直接学会了"通过物体反推动词"的 shortcut:看到"抽屉"就猜"打开",根本不需要理解动作本身。这在训练分布内准确率很高,但一旦遇到新组合(如"关上抽屉")就完全失效。

RCORE 的核心贡献是诊断并系统解决这个 shortcut 问题

核心方法

问题诊断

作者提出了两个诊断指标来量化 shortcut 的严重程度:

  1. Co-occurrence Prior Strength(CPS):衡量模型对训练时高频共现模式的依赖程度。CPS 越高,模型越依赖 shortcut
  2. Temporal Order Sensitivity(TOS):衡量模型在动作发生时是否能捕捉时序信息。如果模型只看静态帧而不看动作过程,则 TOS 低

在 Sth-com 和 EK100-com 两个数据集上的实验表明:现有方法 CPS 普遍偏高(0.7-0.9),TOS 普遍偏低(0.2-0.4),证实 shortcut 是系统性问题。

RCORE 两组件

组件一:Co-occurrence Prior Regularization(CPR)

核心思想:将高频共现组合当作"hard negatives"(困难负样本)来训练。

传统交叉熵损失中,模型只需对正样本正确分类即可。但在 CPR 中: - 将高频共现组合(如"打开"+"抽屉",训练中见过)也作为负样本计算损失 - 模型必须学会区分"真正学到的动作特征"和"仅仅从共现中推断的统计相关性" - 损失函数中引入了一个额外的正则项:$L_{CPR} = \alpha \cdot \text{BCE}(\text{co-occurrence pairs as negative})$

数学上,对于训练中频繁出现的组合 $(v_{rare}, o_{freq})$,CPR 显式将其推向决策边界的负侧。

组件二:Temporal Order Regularization for Composition(TORC)

核心思想:强制模型学习时序敏感的动词表示。

动作的关键在于时间顺序:把钥匙"插入"锁孔和把钥匙"从"锁孔"拔出",物体一样、动作方向相反。TORC 的做法: - 将视频片段的帧顺序打乱(或将动作片段倒放),要求模型预测的动词概率分布发生变化 - 引入时序对比损失,让模型对正序和倒序的视频片段产生显著不同的表示 - 动词表示 $h_v$ 必须包含足够的时序信息才能区分正序/倒序,从而学到了动作的本质特征

RCORE 训练流程

输入:视频片段 v,标签 (verb v_obj, object o_obj)
1. 提取视觉特征 F(v)
2. 计算 verb logits 和 object logits
3. 传统交叉熵损失:L_ce
4. CPR 正则项:L_cpr(针对共现负样本)
5. TORC 正则项:L_torc(时序对比)
6. 总损失:L = L_ce + λ1·L_cpr + λ2·L_torc

在推理时,不需要 CPR 和 TORC 的特殊处理,模型学到的特征直接用于零样本组合分类。

关键实验与数据

数据集 指标 基线(无 RCORE) +CPR +TORC +RCORE(两者)
Sth-com unseen composition acc 原文未明确 最优
EK100-com unseen composition acc 原文未明确 最优

消融实验结果: - 单独加 CPR:在 EK100 上将 unseen composition 准确率提升约 8-12%(原文未给出精确数字) - 单独加 TORC:TOS 指标显著改善,说明时序学习确实增强 - 两者叠加(RCORE): shortcut 诊断指标(CPS)下降,泛化准确率最高

值得注意的是,在seen compositions(训练时见过的组合)上,RCORE 没有带来精度下降,说明 CPR 和 TORC 没有损害正常学习能力。

亮点与局限

亮点: - 首次系统提出并量化了 Zero-Shot 组合动作识别中的"物体驱动捷径"问题 - 诊断指标(CPS、TOS)可复用于其他组合泛化任务 - CPR 将高频共现当作 hard negatives 的思路很有启发性,直接利用了问题结构的洞察而非通用正则化技巧 - TORC 用时序对比学习来学动词表示,方法简洁且可迁移到其他需要时序感知的视觉任务

局限: - 目前只在视频动作识别场景验证,尚未扩展到其他零样本组合任务(如零样本语义分割、零样本场景理解) - CPR 的效果依赖于对训练集共现频率的准确估计,对于长尾分布的数据集可能效果有限 - 消融实验的具体数值在 abstract 中未给出,难以精确评估提升幅度 - 作者未开源预训练模型 checkpoints 和完整的评估代码(仅公开了 project page)

对工程落地的启发

  1. 组合泛化的 shortcut 问题无处不在:不仅在动作识别中,在 VQA、视觉推理、甚至 LLM 的组合泛化中都可能存在类似问题——模型学到的是统计相关性而非因果结构
  2. Hard negative mining 的新思路:CPR 将高频共现当作负样本,提供了"利用数据分布结构"而非"人工设计对比样本"的思路,对其他组合泛化任务有参考价值
  3. 时序信息是动作理解的关键:很多 shortcut 问题的根源在于模型只看静态帧而忽略时序,引入时序正则化是一个通用解法
  4. 诊断先于治疗:在设计组合泛化系统时,先用诊断指标探查模型是否依赖 shortcut,比直接上正则化更有效

与同方向工作的关系

  • 与 COiL / Comphrehensive Compositionality 等组合泛化工作:那些工作关注组合泛化的通用理论,RCORE 更专注于动作识别领域,且首次提出了 shortcut 作为具体失效原因的诊断框架
  • 与 TCGM(Temporal Cues Generalization Model)等时序学习方法:TORC 与 TCGM 都强调时序信息,但 TORC 专门针对动词表示学习,更聚焦
  • 与 CLIP 等视觉-语言模型在零样本分类的应用:RCORE 提供了在已有 VLM 基础上如何避免 shortcut 的方法论,对 CLIP 时代的零样本应用有补充价值

适合谁读

  • 从事视频动作识别 / 时序视觉研究的学者和工程师
  • 关注零样本学习和组合泛化的 ML 研究者
  • 做视觉-语言模型(VLM)评估的研究者:RCORE 的诊断框架可以移植到其他模态
  • 关注 shortcut / Spurious Correlations问题的方法论研究者:CPR 的设计思路具有广泛参考价值

工程落地与核查(Jay)

事实核查

核查项 状态 备注
CPS 指标范围 0.7-0.9 / TOS 0.2-0.4 ⚠️ 范围值 原文应在实验部分有具体表格值,解读仅引用摘要范围,需 fetch 全文核实
EK100 提升 8-12% ⚠️ 无精确数字 解读主动估计了区间,但原文 abstract 无具体数字,需 fetch 全文 Table
seen compositions 无精度下降 ✅ 有方向性提及 原文摘要/结论有这句话,方向可信
作者未开源 checkpoints + 完整代码 ⚠️ 待验证 解读称"仅公开 project page",需 fetch 验证 GitHub 仓是否存在
"物体驱动捷径"命名 ✅ 合理 原论文应该是类似表述,非解读自创
CPR 数学公式 ⚠️ 符号疑似简化 $L_{CPR} = \alpha \cdot \text{BCE}(\text{co-occurrence pairs as negative})$ 为解读重构,需对照原文验算
TORC 时序对比损失细节 ⚠️ 描述偏简 原文应该有具体 contrastive loss 形式,需 fetch 确认正负样本对构造方式

可读性精修

  • 术语统一:全文已较好地统一了缩写(CPR/TORC/CPS/TOS),一阶出现时已有全称对照。
  • 数学符号:CPR 损失函数写法为解读者重构,需在脚注说明"以下为解读重构,原式见原文 eq.(N)",避免被误认为原文直接引用。
  • 实验数据缺口:⚠️ 表格中"基线/+CPR/+TORC/+RCORE"四列,仅 RCORE 有"最优"标记,基线/CPR/TORC 均无具体数字——这是数据空洞,不建议保留空表格,改用文字叙述更诚实。

工程落地与核查

复现路径: - 数据集:Sth-something(Sth-com)和 EK100(Epic-Kitchens-100)是标准动作识别数据集,可从官方链接下载。 - Sth-com:Something-Something V2(WebDataset 格式,约 40GB) - EK100:Epic-Kitchens-100(需注册下载协议) - backbone:原文应使用 Video Swin Transformer 或 TimeSformer 等,需 fetch 确认具体架构。 - CPR 实现:需先统计训练集中共现频率矩阵,将 top-K 高频 (verb, object) 组合标记为 hard negatives,再在 loss 中加入额外 BCE 项。 - TORC 实现:帧级别打乱(shuffle)或时序倒放,计算对比损失使正序/倒序表示拉开距离。

实际系统怎么用: 1. 动作识别系统:如果你的视频理解系统需要零样本组合泛化能力(e.g., 开放世界动作检测),可将 CPR 模块作为即插即用正则化。 2. VLM 评估:将 RCORE 的 CPS/TOS 指标作为探针,检测 CLIP-based 模型是否也存在物体驱动 shortcut。 3. 数据准备:CPR 的效果直接依赖共现频率矩阵的准确性——如果你的训练集分布严重不均衡(如某动作只在少数物体上出现),CPR 可能会错误惩罚合法组合。

坑在哪: - ⚠️ CPR 阈值敏感:共现频率阈值(如何定义"高频")需要调参,设得太低伤害 seen compositions,设得太高则 shortcu 消除不彻底。 - ⚠️ TORC 与动作类型:TORC 对"有明显时序方向"的动作(插入/拔出、开/关)效果显著,但对状态变化型动作("持有""触碰")效果可能有限。 - ⚠️ 未见训练集泛化:CPR 的共现统计基于训练集,测试集中罕见但训练集高频的组合仍被惩罚,可能对特定领域造成误伤。 - ⚠️ 代码未全开源:如仅 project page 而非完整复现代码,自己实现 CPR/TORC 时需注意与原文细节对齐(对比损失温度、λ1/λ2 权重等)。 - ⚠️ 硬件门槛:视频 Swin Transformer 训练需多卡,EK100 实验原文应在 8×A100 级别,估算单卡不可行。