引言

想象一下走进一个凌乱的客厅。你看到的不仅仅是“沙发”、“猫”和“遥控器”。你瞬间就能理解它们之间错综复杂的联系: 猫睡在沙发上,遥控器垫子下面,而画挂在墙上。这种对物体及其关系的结构化理解,计算机视觉研究人员称之为场景图 (Scene Graph)

场景图生成 (Scene Graph Generation, SGG) 是人工智能的一项关键任务,它弥合了原始像素数据与高层语言描述之间的鸿沟。它将图像转换为一个结构化的图,其中节点是物体,边是关系 (谓词) 。这种结构对于诸如机器人导航 (“机器人,把桌子上的杯子拿起来”) 或辅助视障人士等下游任务至关重要。

然而,SGG 模型面临一个重大障碍: 现实世界是混乱且分布不均的。虽然训练数据集庞大,但它们无法涵盖每个物体之间可能发生的每种交互。模型可能会看到成千上万个“男人骑着马”的例子,但却看不到一个“女人拿着毛巾”的例子。这种现象被称为代表性不足问题 (underrepresentation issue) , 导致 AI 擅长陈述显而易见的事实,但在识别罕见或新颖的关系时表现糟糕。

在这篇深度文章中,我们将探讨南洋理工大学王宇轩 (Yuxuan Wang) 和刘小源 (Xiaoyuan Liu) 的一篇引人入胜的研究论文。他们提出了一种新颖的框架,将预训练视觉语言模型 (VLMs) 中巨大的“常识”知识整合到 SGG 任务中。至关重要的是,他们解决了这种整合带来的一个主要问题: 偏差 (bias)

我们将详细拆解他们如何使用复杂的数学估算来对预训练模型的隐藏偏差进行“逆向工程”,并将它们与特定任务模型相结合,以达到最先进的结果。

核心问题: SGG 中的代表性不足

要理解这项研究的必要性,我们必须首先了解传统 SGG 模型的局限性。大多数现有模型都是在 Visual Genome 等数据集上从头开始训练的。这些数据集深受长尾分布的困扰。

简单来说,少数几种关系类型 (如“on”、“wearing”、“has”) 不断出现,而特定的动作 (如“painting”、“eating”、“carrying”) 出现的频率要低得多。更糟糕的是,主体-谓词-客体 (三元组) 的组合呈指数级多样化。训练集可能包含“男人吃苹果”,但不包含“男孩吃梨”,即使这两种关系在语义上是相同的。

图 1: Visual Genome 中代表性不足问题的说明。直方图显示了频率的急剧下降。

图 1 所示,根据三元组在训练数据中的代表性程度,预测质量存在巨大差距。

  • 左侧 (充分表示) : 常见的三元组如“女人拿着包 (Woman carrying Bag) ”具有很高的置信度分数 (0.87) 。
  • 右侧 (表示较少/未见) : 罕见的三元组如“女人拿着毛巾 (Woman carrying Towel) ”的分数极低 (0.05) 。

模型只是没有看到足够的例子来有效地学习这些罕见的连接。这就是研究人员提出策略转变的地方: 与其仅依赖 SGG 数据集,为什么不借用一个已经“读遍”整个互联网的模型的“大脑”呢?

视觉语言模型 (VLMs) 登场

视觉语言模型 (VLMs) ,如 ViLT 或 Oscar,是在海量的网络图像-文本对上训练的。它们对视觉概念如何与语言相关联有着广泛、通用的理解。研究人员假设,这些模型拥有处理让标准 SGG 模型受挫的代表性不足三元组所需的“常识”。

其核心思想是使用零样本 VLM (Zero-Shot VLM) 。 “零样本”意味着直接使用预训练模型,而无需在特定数据集上对其进行微调。我们可以使用如下提示 (prompt) 来查询 VLM:

“The {subject} is [MASK] the {object}.” ({主体} [掩码] {客体}。)

然后,VLM 会用一个关系词 (谓词) 填充 [MASK]。因为 VLM 在预训练期间见过数以百万计的概念,理论上它应该能轻松处理“女人拿着毛巾”,即使 SGG 数据集缺乏这个例子。

陷阱: 谓词偏差

这听起来像是一个完美的解决方案,但有一个陷阱。使用零样本 VLM 直接推理会引入严重的谓词偏差 (Predicate Bias)

VLM 不是一张白纸;它们有自己的偏差,这些偏差源于它们进行预训练所使用的海量且不受控的数据集。如果在预训练期间,VLM 看到单词“near” (附近) 的次数比“carrying” (拿着) 多几百万次,那么无论图像中是什么,它在统计上都会倾向于预测“near”。

这就造成了错配。SGG 任务中的关系分布 (\(\pi_{sg}\)) 很可能与 VLM 预训练数据中的分布 (\(\pi_{pt}\)) 大相径庭。更糟糕的是, 我们不知道 \(\pi_{pt}\) 是什么 。 预训练数据通常是专有的或过于庞大而无法分析,这意味着这种偏差是一个“黑盒”。

方法论: 提出的架构

研究人员提出了一种双分支架构,将特定的 SGG 模型与通用的 VLM 相结合,并通过数学方法解决了偏差问题。

图 2: 提出的架构说明,展示了两个分支和去偏差过程。

图 2 所示,该框架包含两条路径:

  1. 特定任务分支 (\(f_{sg}\)) : 这是一个在场景图数据集上专门微调过的 VLM。它了解 SGG 任务的特定类别和要求,但受限于代表性不足问题。
  2. 零样本分支 (\(f_{zs}\)) : 这是一个冻结的、预训练的 VLM。它拥有广泛的通用知识,但受到未知谓词偏差的影响。

系统接收图像,裁剪感兴趣的区域 (主体和客体) ,并将它们输入到两个分支中。

\[ \left\{ \begin{array} { c } { \mathbf { o } _ { \mathrm { z s } } ^ { k } = f _ { \mathrm { z s } } ( z _ { i } , z _ { j } , \mathbf { x } _ { i , j } ) \in \mathbb { R } ^ { K } } \\ { [ \mathbf { o } _ { \mathrm { s g } } ^ { 0 } , \mathbf { o } _ { \mathrm { s g } } ^ { k } ] = f _ { \mathrm { s g } } ( z _ { i } , z _ { j } , \mathbf { x } _ { i , j } ) \in \mathbb { R } ^ { K + 1 } , } \end{array} \right. \]
  • (参见 images/003.jpg 中的公式) *

请注意,零样本分支 (\(f_{zs}\)) 输出 \(K\) 个关系类别的 Logits (对数几率) ,而微调分支 (\(f_{sg}\)) 输出 \(K+1\) 个类别 (包括“背景”或“无关系”类) 。由于预训练模型不理解该数据集特定的“背景”类概念,系统依赖微调模型来进行这一特定判断。

创新点 1: 用于谓词去偏差的 LM 估算

这篇论文的核心在于作者如何处理零样本分支中的偏差。他们采用了一种称为事后 Logits 调整 (Post-hoc Logits Adjustment) 的技术。

去偏差的数学原理

理想情况下,我们希望模型的预测反映测试集的目标分布 (\(P_{ta}\)) ,而不是带有偏差的训练分布 (\(P_{tr}\)) 。基于贝叶斯法则,在带有偏差的数据上训练出的模型预测概率与目标环境的最佳概率之间存在某种关系。

\[ \frac { P _ { \mathrm { t r } } ( r | z _ { i } , z _ { j } , \mathbf { x } _ { i , j } ) } { P _ { \mathrm { t r } } ( r ) } = \frac { P _ { \mathrm { t a } } ( r | z _ { i } , z _ { j } , \mathbf { x } _ { i , j } ) } { P _ { \mathrm { t a } } ( r ) } \]
  • (参见 images/006.jpg 中的公式) *

通过重新排列这个公式,我们可以调整输出的 Logits (Softmax 之前的原始预测分数) ,以消除训练偏差并注入目标先验。调整公式如下所示:

\[ \hat { \mathbf { o } } ^ { k } ( r ) = \mathbf { o } ^ { k } ( r ) - \log P _ { \mathrm { t r } } ( r ) + \log P _ { \mathrm { t a } } ( r ) \]
  • (参见 images/008.jpg 中的公式) *

这里,\(\hat { \mathbf { o } } ^ { k }\) 是去偏差后的 Logit。该方程有效地减去了训练分布的对数概率 (\(P_{tr}\)) 并加上了目标分布的对数概率 (\(P_{ta}\)) 。

缺失的变量

对于微调分支,这很容易。我们知道 \(P_{tr}\),因为我们拥有 SGG 训练集 (\(\pi_{sg}\)) 。

然而,对于零样本分支, 我们不知道 \(P_{tr}\) (即 \(\pi_{pt}\),预训练分布) 。这是作者攻克的关键障碍。

拉格朗日乘数 (LM) 估算

由于 \(\pi_{pt}\) 未知,作者使用约束优化 (Constrained Optimization) 对其进行估算。他们假设,如果能找到一个分布 \(\pi_{pt}\),使其在验证集 (来自 SGG 数据集) 上的误差最小化,那么该分布就有效地代表了预训练模型的偏差。

他们将其表述为一个优化问题: 找到最小化调整后 Logits 与真实标签之间交叉熵损失 (\(R_{ce}\)) 的 \(\pi_{pt}\),约束条件是 \(\pi_{pt}\) 的总和必须为 1 (使其成为一个有效的概率分布) 。

\[ \begin{array} { r l } & { \displaystyle \pi _ { \mathrm { p t } } = \ \underset { \pi _ { \mathrm { p t } } } { \mathrm { a r g m i n } } \ R _ { c e } \big ( \mathbf { o } ^ { k } - \log \pi _ { \mathrm { p t } } + \log \pi _ { \mathrm { s g } } , \ r \big ) , } \\ & { \displaystyle s . t . \pi _ { \mathrm { p t } } ( r ) \geq 0 , \ \mathrm { f o r } r \in \mathcal { C } _ { r } , \ \sum _ { r \in \mathcal { C } _ { r } } \pi _ { \mathrm { p t } } ( r ) = 1 ( \ r } \end{array} \]
  • (参见 images/009.jpg 中的公式) *

为了解决这个问题,他们使用拉格朗日乘数法,将约束问题转化为无约束问题:

\[ \begin{array} { l } { \pi _ { \mathrm { p t } } = \underset { \pi _ { \mathrm { p t } } } { \mathrm { a r g m i n } } \underset { \lambda _ { r } \geq 0 , v } { \mathrm { m a x } } R _ { c e } - \displaystyle \sum _ { r } \lambda _ { r } \pi _ { \mathrm { p t } } ( r ) } \\ { \qquad + v ( 1 - \displaystyle \sum _ { r } \pi _ { \mathrm { p t } } ( r ) ) } \end{array} \]
  • (参见 images/010.jpg 中的公式) *

这个数学技巧使他们能够在从未见过原始预训练数据的情况下,近似得出隐藏的预训练分布 \(\pi_{pt}\)。

可视化估算的偏差

这种估算真的有效吗?作者绘制了分布图来验证。

图 3: 比较训练集分布与估算的 VLM 分布。

图 3 显示了 SGG 训练集分布 (蓝色) 与两种 VLM (ViLT 为橙色,Oscar 为绿色) 的估算预训练分布的对比。 差异是明显的。例如,看谓词“wearing” (穿着) 。它在训练集中频率适中,但在 ViLT 的估算分布中占据主导地位。如果不纠正这种偏差,ViLT 将会持续过度预测“wearing”。这验证了 LM 估算的必要性。

创新点 2: 确定性感知集成

一旦零样本模型 (\(f_{zs}\)) 和微调模型 (\(f_{sg}\)) 都去除了偏差,最后一步就是将它们结合起来。

作者观察到这两种模型有不同的优势。零样本模型通常更擅长广泛的语义关系,而微调模型更擅长数据集特定的特征。为了利用这一点,他们使用了动态集成策略。

他们基于模型分配给非背景类别的最大概率,为每个模型计算一个置信度分数 (Confidence Score, conf)

\[ \left\{ \begin{array} { l l } { \mathrm { c o n f } = \displaystyle \operatorname* { m a x } _ { r \in \mathcal { C } _ { r } } P ( r | z _ { i } , z _ { j } , \mathbf { x } _ { i , j } ) , P \in \{ \hat { P } _ { \mathrm { z s } } , \hat { P } _ { \mathrm { s g } } \} } \\ { W _ { \mathrm { c e r } } \propto \mathrm { \ s i g m o i d } ( \mathrm { c o n f _ { s g } } - \mathrm { c o n f _ { z s } } ) } \end{array} \right. \]
  • (参见 images/012.jpg 中的公式) *

利用这些分数,他们计算出一个动态权重 \(W_{cer}\)。如果 SGG 模型比零样本模型更有信心,\(W_{cer}\) 就会很高,最终预测将主要依赖 SGG 模型。如果 SGG 模型不确定 (在罕见三元组中很常见) ,权重就会向零样本 VLM 转移。

\[ \begin{array} { r l r } & { } & { P _ { \mathrm { e n s } } ( r | z _ { i } , z _ { j } , \mathbf { x } _ { i , j } ) = W _ { \mathrm { c e r } } * \hat { P } _ { \mathrm { s g } } ( r | z _ { i } , z _ { j } , \mathbf { x } _ { i , j } ) } \\ & { } & { + \left( 1 - W _ { \mathrm { c e r } } \right) * \hat { P } _ { \mathrm { z s } } ( r | z _ { i } , z _ { j } , \mathbf { x } _ { i , j } ) ( 1 } \end{array} \]
  • (参见 images/013.jpg 中的公式) *

实验与结果

研究人员在 Visual Genome 数据集上测试了他们的方法,使用了两种不同的 VLM (ViLT 和 Oscar) 作为骨干。他们将自己的方法与几个最先进的 SGG 基线进行了比较。

指标

他们关注两个主要指标:

  1. Recall@K (召回率@K) : 标准准确率指标。
  2. Mean Recall@K (平均召回率@K,mRecall) : 计算每个类别的召回率然后取平均值。这是衡量“长尾”问题的关键指标,因为要在该指标上获得高分,必须在罕见类别上表现良好。

定量性能

结果显示,所提出的方法取得了明显的胜利。

表 2: 比较最先进模型在 Visual Genome 上的召回率结果。

表 2 中,我们看到了标准召回率结果。标记为“+ Ours”的行显示了去偏差后的零样本 VLM 与基线集成时的性能。

  • ViLT ft (微调后): 34.9 mRecall@20.
  • ViLT ft + Ours: 35.3 mRecall@20.
  • Oscar ft: 36.7 mRecall@20.
  • Oscar ft + Ours: 37.3 mRecall@20.

虽然这些增益看起来很适度,但在竞争激烈的 SGG 领域,它们是显著的。然而,真正的故事在于平均召回率 (见下表 1) ,它凸显了在长尾分布上的性能。

表 1: 关注平衡性能的平均召回率结果。

表 1 中,增益更为明显。例如,ViLT ft-la + Ours 达到了 46.5 的 mRecall@100 , 显著优于基线的 44.5。这证明该方法在提升那些困难、罕见类别的性能方面特别有效。

“未见”的三元组

最有力的证据来自对训练期间从未见过的三元组的观察。这是对零样本 VLM 提供的“常识”的终极测试。

表 3: 未见三元组的准确率。

表 3 细分了“所有 (All) ”三元组与“未见 (Unseen) ”三元组的准确率。 看 Ens. Gain (集成增益) 这一列。

  • 对于所有三元组,增益是适度的 (~2-3%) 。
  • 对于未见三元组,增益是巨大的 (~5-6%) 。

这证实了核心假设: 去偏差的零样本模型成功地将知识迁移到了 SGG 任务中,专门处理微调模型无法掌握的罕见和未见场景。

结论

将视觉语言模型集成到像场景图生成这样的特定任务中是一个充满希望的前沿领域,但这并不像将一个模型插入另一个模型那么简单。这篇论文确定了一个关键的隐藏变量——预训练中的谓词偏差——并使用一种优雅的数学方法解决了它: 拉格朗日乘数估算

通过估算预训练模型的未知偏差并通过 Logit 调整进行修正,作者使 SGG 系统能够利用 VLM 广泛的通用知识,而不被其预训练的倾斜所误导。动态的、确定性感知集成确保了系统能够两全其美: 既有微调模型的特异性,又有通用模型的广泛理解。

这种“免训练”的方法 (针对零样本分支而言) 提供了一种计算高效的方式来显著提升性能,特别是针对那些让现实世界对 AI 来说如此难以理解的罕见、“长尾”事件。这是一个令人信服的例子,展示了数学严谨性如何释放大型基础模型的全部潜力。