文章目录
- Contrastive Language-Image Pre-Training with Knowledge Graphs
- 相关资料
- 摘要
- 引言
- 回顾CLIP
- Knowledge-CLIP
- 数据准备
- 模型架构
- 训练目标
Contrastive Language-Image Pre-Training with Knowledge Graphs
相关资料
论文:Contrastive Language-Image Pre-Training with Knowledge Graphs (nips.cc)
摘要
近年来,大规模预训练框架的发展迅速,这些框架能够以统一的形式提取多模态表征,并在转移到下游任务时展现出有希望的性能。然而,现有的方法主要关注简单的图像-文本对的预训练,而忽略了不同模态概念之间的语义联系。在本文中,我们提出了一个基于知识的知识预训练框架,称为Knowledge-CLIP,它将语义信息注入到广泛使用的CLIP模型中。通过在预训练过程中引入基于知识的目标,并使用不同类型的知识图谱作为训练数据,我们的模型能够在视觉和语言中以更高的质量对表征进行语义对齐,并增强跨场景和模态的推理能力。在各种视觉-语言下游任务上的广泛实验证明了Knowledge-CLIP与原始CLIP和具有竞争力的基线相比的有效性。
引言
用于预训练的数据对是以最简单的方式组织的,即仅使用匹配和不匹配的描述来表示给定图像和文本对之间的关系。这通常会导致一种退化的情况,即模型倾向于依赖输入的共同出现而非其语义。
我们遵循CLIP的结构,并使用两个基于Transformer的模型分别作为图像和文本编码器。这两个编码器以知识图谱中的实体和关系为输入,提取实体和关系的原始特征。值得注意的是,实体可以是图像/文本的形式,而关系则始终由语言标记描述。然后,采用多模态Transformer编码器来融合基于关系的实体特征。通过这种方式,预训练模型被推动集中于理解视觉和文字概念之间的语义关系,从而在视觉和语言模态之间建立强大的语义连接。
为进一步提高训练效率并避免预训练过程中的大量计算成本,我们采用了一种简单的持续学习策略,基于CLIP的预训练权重来训练我们的模型。这为使用低训练资源有效提升CLIP模型性能提供了可能性。
回顾CLIP
CLIP使用两个独立的模型分别作为图像编码器和文本编码器。
- 对于文本输入,采用了一个12层的Transformer,宽度为512,注意力头为8。原始文本首先使用字节对编码技术在49,152的词汇量下进行转换。文本序列长度限制在76,并在输入文本编码器之前添加位置编码。
- 另一方面,CLIP有基于ResNet和基于Vision Transformer的不同版本的图像编码器架构。由于后续研究表明Vision Transformer模型的性能更好,本文只考虑基于Transformer的图像编码器。与文本输入类似,图像首先被转换为块,并添加位置编码。
在两个编码器的最后阶段,采用全局池化函数将特征图压缩成单个特征,作为整个图像/文本序列的表示。计算图像和文本特征的余弦距离作为数据对的相似性。在训练监督中,采用对比损失来最大化匹配对的相似性,同时最小化不匹配对的相似性。
Knowledge-CLIP
我们提出了一个基于知识图谱的新型预训练框架,从几个角度解决了原始CLIP模型的限制:
- 我们将知识图谱引入训练数据集中,其中图结构数据和概念之间的语义关系使模型能够提取语义特征,并在输入之间建立语义连接;
- 在当前的图像和文本编码器之上增加了一个多模态编码器,以融合不同模态的特征,并建模输入之间的联合分布;
- 采用了基于CLIP预训练模型的持续学习策略,避免了预训练过程中的大量计算成本,并有效地增强了模型的泛化能力。
数据准备
与原始CLIP中使用的原始图像-文本对不同,我们的模型采用知识图谱作为输入。知识图谱可以定义为一个有向图G = {ξ, R, TR},其中ξ, R分别对应实体和关系集,TR表示关系三元组的集合。三元组(h, r, t) ∈ TR表示实体h ∈ ξ与实体t ∈ ξ之间存在关系r ∈ R。如图3所示,我们在三种类型的知识图谱上预训练我们的模型,包括多模态知识图谱、场景图谱和基于语言的知识图谱。
模型架构
我们首先使用模态特定的分词器将输入处理成标记序列。对于语言输入,我们采用了BPE分词器,而图像输入则被切成不重叠的块,并按照ViT的方式转换成块序列并添加了可学习的位置编码。
然后,我们采用了两个独立的图像编码器 f I ( ⋅ ) f_I(·) fI(⋅)和文本编码器 f T ( ⋅ ) f_T(·) fT(⋅)来从原始输入中提取特征。对于给定的三元组(h, r, t),实体h和t根据它们的模态(图像或文本)被发送到相应的编码器。关系r由语言标记表示,与文本实体类似,被发送到文本编码器。
与CLIP中的模型结构相比,我们引入了一种修改,以更好地适应我们的框架。具体来说,普通的CLIP模型在两个编码器的最后一层使用池化函数,将特征图压缩成全局表示。也就是说,对于输入
u
∈
R
L
×
d
i
u ∈ R^{L×d_i}
u∈RL×di,其中
L
L
L和
d
i
d_i
di分别表示序列长度和特征维度,编码器的输出可以表示为:
我们去掉了原始CLIP模型中图像和文本实体的池化函数,以保留局部信息,并使用 x u ∈ R L × d o x_u ∈ R^{L×d_o} xu∈RL×do作为提取的特征。另一方面,关系通常在有限的序列长度下,例如一个或两个词标记,其中信息密度小于实体。因此,我们保留了关系输入的池化函数,并使用 x ˉ u ∈ R d o \bar{x}_u ∈ R^{d_o} xˉu∈Rdo作为提取的特征。
通过这种方式,我们提取了定义为 ( x h , x ˉ r , x t ) (x_h, \bar{x}_r, x_t) (xh,xˉr,xt)的特征,它们对应于输入三元组 ( h , r , t ) (h, r, t) (h,r,t)中的元素。为了建模三元组中不同元素的联合分布,我们考虑了一个多模态编码器TransEncoder(·)来融合来自不同来源的特征。具体来说,我们首先将三元组中的所有特征连接成单个序列,并在序列的开头使用一个头部标记。为了强调序列中标记的状态,我们考虑了三元组中每个元素h, r, t的额外可学习编码:
经过多模态编码器处理后,头部标记的特征最终作为整个序列的表示:
同时,关系表示从相应的标记中提取:
训练目标
考虑到知识图谱独特数据结构,我们框架主要采用两种类型的训练目标,包括基于三元组的损失和基于图的损失。此外,由于我们框架采用了持续学习策略,我们还考虑了知识蒸馏损失。
- 基于三元组的损失
对于在输入中缺少某些元素的不完整三元组,可以通过掩蔽相应特征的方式,如等式3中所述,得到类似的连接序列。例如,输入(h, r, -)的连接序列可以表示为:
在此基础上,给定一组输入 D = { ( h i , r i , t i ) } i = 1 N D = \{{(h_i, r_i, t_i)}\}^N_{i=1} D={(hi,ri,ti)}i=1N,我们首先对一个实体,即ti被掩蔽时的分布进行建模,并通过最小化负对数似然来推导实体-实体(E2E)损失:
我们还对三元组中关系被掩蔽时的分布进行建模,并类似地推导实体-关系(E2R)损失:
- 基于图的损失
我们还利用知识图谱数据集中的图结构,并采用图神经网络提取实体间的更深层次结构信息。我们通过图中连接的边传播信息,并用聚合特征更新实体表示。最后,我们通过计算图中传播前后实体特征的余弦相似度来定义图-实体(G2E)损失:
- 知识蒸馏损失
-
除了知识图谱数据集,我们还训练我们的模型在几个广泛采用的图像-文本数据集上,这些数据集与CLIP训练数据具有相似的数据分布。为了更好地适应我们的预训练框架,我们将原始的图像-文本对转换为三元组形式,具有专门设计的关系“image of”和“caption of”。
-
我们还使用原始的CLIP模型作为教师,并使用辅助损失LKD来衡量CLIP输出与我们模型输出之间的KL距离。
总损失为:
专门设计的关系“image of”和“caption of”。
- 我们还使用原始的CLIP模型作为教师,并使用辅助损失LKD来衡量CLIP输出与我们模型输出之间的KL距离。
总损失为: