(NeurIPS,2022)Knowledge-CLIP:使用知识图谱进行CLIP

文章目录

  • 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模型的限制:

  1. 我们将知识图谱引入训练数据集中,其中图结构数据概念之间的语义关系使模型能够提取语义特征,并在输入之间建立语义连接;
  2. 在当前的图像和文本编码器之上增加了一个多模态编码器,以融合不同模态的特征,并建模输入之间的联合分布;
  3. 采用了基于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} uRL×di,其中 L L L d i d_i di分别表示序列长度和特征维度,编码器的输出可以表示为:
在这里插入图片描述

我们去掉了原始CLIP模型中图像和文本实体的池化函数,以保留局部信息,并使用 x u ∈ R L × d o x_u ∈ R^{L×d_o} xuRL×do作为提取的特征。另一方面,关系通常在有限的序列长度下,例如一个或两个词标记,其中信息密度小于实体。因此,我们保留了关系输入的池化函数,并使用 x ˉ u ∈ R d o \bar{x}_u ∈ R^{d_o} xˉuRdo作为提取的特征。

通过这种方式,我们提取了定义为 ( 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)损失:

在这里插入图片描述

  • 知识蒸馏损失
  1. 除了知识图谱数据集,我们还训练我们的模型在几个广泛采用的图像-文本数据集上,这些数据集与CLIP训练数据具有相似的数据分布。为了更好地适应我们的预训练框架,我们将原始的图像-文本对转换为三元组形式,具有专门设计的关系“image of”和“caption of”。

  2. 我们还使用原始的CLIP模型作为教师,并使用辅助损失LKD来衡量CLIP输出与我们模型输出之间的KL距离。

总损失为:

专门设计的关系“image of”和“caption of”。

  1. 我们还使用原始的CLIP模型作为教师,并使用辅助损失LKD来衡量CLIP输出与我们模型输出之间的KL距离。

总损失为:

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/372712.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Unity Text Mesh Pro 中英文混编自动换行问题

问题描述 使用TextMeshPro 输入中英文时,在一行内 输入中英文,当英文部分超过第一行剩余位置时,整个英文部分都会自动换行 问题截图: 期待截图: 问题说明 因为 TextMeshPro识别中文后会带换行符。 解决方案 修改…

C++ 信号量和锁的区别

网上关于信号量和锁的区别&#xff0c;写的比较官方晦涩难懂&#xff0c;对于这个知识点吸收难&#xff0c;通过示例&#xff0c;我们看到信号量&#xff0c;可以控制同一时刻的线程数量&#xff0c;就算同时开启很多线程&#xff0c;依然可以的达到线程数可控 #include <i…

sklearn(Python机器学习库)介绍

0 引言 Sklearn (全称 Scikit-Learn)是基于Python 编程语言的免费软件机器学习库。 Scikit-learn主要是用Python编写的,它建立在 NumPy, SciPy, Pandas 和 Matplotlib 之上,里面API 的设计非常好,所有对象的接口简单,很适合新手上路。 Scikit-learn与许多其他Python库很好地…

泰迪智能科技受邀北京物资学院共讨校企合作交流

为落实“访企拓岗促就业”专项行动工作要求&#xff0c;推动科研成果向实际应用转化&#xff0c;培养适应新时代需求的高素质人才&#xff0c;拓宽毕业生就业渠道&#xff0c;提升就业竞争力。7月1日&#xff0c;广东泰迪智能科技股份有限公司区域总监曹玉红到访北京物资学院开…

GenAl如何改变 DevOps 中的软件测试?

TestComplete 是一款自动化UI测试工具&#xff0c;这款工具目前在全球范围内被广泛应用于进行桌面、移动和Web应用的自动化测试。 TestComplete 集成了一种精心设计的自动化引擎&#xff0c;可以自动记录和回放用户的操作&#xff0c;方便用户进行UI&#xff08;用户界面&…

LLM大模型从入门到精通(2)--LLM模型的评估指标

LLM大模型建立完成之后&#xff0c;需要对大模型的性能进行评估。评估指标可以根据具体任务的不同而有所差异&#xff0c;以下是一些常见的评估指标&#xff1a; 1. 准确率&#xff08;Accuracy&#xff09;&#xff1a;模型预测正确的样本数占总样本数的比例。 2. 精确率&am…

【React】React18 Hooks 之 useContext

目录 useContext1、Provider和 useContext2、Provider 和Consumer3、Provider 嵌套4、React.createContext提供的Provider和class的contextType属性5、读、写Context&#xff08;1&#xff09;父组件修改Context&#xff08;2&#xff09;子组件修改Context 好书推荐 useContex…

Spring框架Mvc(2)

1.传递数组 代码示例 结果 2.集合参数存储并进行存储类似集合类 代码示例 postman进行测试 &#xff0c;测试结果 3.用Json来对其进行数据的传递 &#xff08;1&#xff09;Json是一个经常使用的用来表示对象的字符串 &#xff08;2&#xff09;Json字符串在字符串和对象…

XLSX + LuckySheet + LuckyExcel + Web Worker实现前端的excel预览

文章目录 功能简介简单代码实现web worker 版本效果参考 功能简介 通过LuckyExcel的transformExcelToLucky方法&#xff0c; 我们可以把一个文件直接转成LuckySheet需要的json字符串&#xff0c; 之后我们就可以用LuckySheet预览excelLuckyExcel只能解析xlsx格式的excel文件&a…

九、Linux二进制安装ElasticSearch集群

目录 九、Linux二进制安装ElasticSearch集群1 下载2 安装前准备(单机&#xff0c;集群每台机器都需要配置)3 ElasticSearch单机&#xff08;7.16.2&#xff09;4 ElasticSearch集群&#xff08;8.14.2&#xff09;4.1 解压文件&#xff08;先将下载文件放到/opt下&#xff09;4…

生物素标记降钙素Biotin-α-CGRP, rat 中间体

生物素标记降钙素Biotin-α-CGRP, rat 中间体是一种特定的生物化学试剂&#xff0c;主要用于科学研究领域。以下是对该产品的详细介绍&#xff1a; 一、基本信息 产品名称&#xff1a;生物素标记降钙素Biotin-α-CGRP, rat 中间体 英文名称&#xff1a;Biotin-α-CGRP, rat 纯度…

AI转绘_animatediff-cli-prompt-travel

这个工具有两种主要模式&#xff1a;它可以直接通过提示创建视频&#xff0c;或者它可以对现有视频进行风格化。还有方法可以提高视频的分辨率。 正如工具名称所示&#xff0c;它的一个主要特点是"提示旅行"。这意味着你可以例如使用特定的提示用于前20帧&#xff0…

koa + http-proxy-middleware 搭建一个带转发的静态服务器

背景 由于工作中碰到写普通页面&#xff08;未使用脚手架&#xff09;&#xff0c;需要发起接口请求&#xff0c;但普通页面又无法对接口发起正常请求&#xff0c;故编写一个Koa搭建的带转发功能的静态服务器。 起步 新建一个文件夹&#xff0c;在文件夹下打开 cmd 或者 git …

手写简单实现IOC

这个小demo是利用反射从最基础一步一步模拟实现了IOC的功能,所有的代码基本都给出了注释,方便大家阅读. 目录结构&#xff1a; 这里需要导入一下junit依赖 <!-- junit测试 --><dependency><groupId>junit</groupId><artifactId>junit</artif…

解决vite 断点调试定位不准确问题

问题&#xff1a;vite构建时&#xff0c;控制台报错行数等信息定位不准确或debugger断点调试定位不准确 解决&#xff1a;F12后打开设置面板&#xff0c;把“JavaScript源代码映射”去掉可临时解决&#xff0c;如需永久解决需升级vite到最新版 还有一种&#xff1a; 参考&…

Unity--射线检测--RayCast

Unity–射线检测–RayCast 1.射线检测的含义 射线检测,根据名称而言,使用一条射线来检测是击中了某个物体/多个物体 射线检测的包含两个部分: 射线和检测 2.射线检测可以用在哪些地方 射击游戏&#xff1a; 玩家的瞄准和射击&#xff1a;检测玩家视线是否与敌人或其他目标…

JRE、JVM、JDK分别是什么。

JDK JDK的英文全称是Java Development Kit。JDK是用于制作程序和Java应用程序的软件开发环境。JDK 是 Java 开发工具包&#xff0c;它是 Java 开发者用来编写、编译、调试和运行 Java 程序的集合。JDK 包括了 Java 编译器&#xff08;javac&#xff09;、Java 运行时环境&…

首席数据官CDO证书报考指南:方式、流程、适考人群与考试难度

在信息泛滥的今天&#xff0c;数据已转变为企业不可或缺的宝贵资源。 面对海量的信息&#xff0c;如何提炼出价值&#xff0c;为企业带来实质性的收益&#xff1f;首席数据官&#xff08;CDO&#xff09;认证的出现正是为了满足这一需求&#xff0c;它不仅是个人专业能力的体现…

【网络安全】这些网络安全知识请牢记!

随着社会信息化深入发展&#xff0c;互联网对人类文明进步将发挥更大促进作用&#xff0c;但与此同时&#xff0c;互联网领域的问题也日益凸显&#xff0c;网络犯罪、网络攻击等时有发生&#xff0c;网络安全与每个人都息息相关&#xff0c;下面一起来了解网络安全知识吧&#…

如何降低电力运维成本,为企业的运维增效、能源数字化和节能降耗提供数据支持?

【电力运维存在问题】 随着全球范围内城镇化、数字化和工业化进程的加速与电力政策的改革&#xff0c;企业用电需求不断攀升&#xff0c;极大冲击了电力企业传统的运维模式&#xff0c;暴露出许多的问题&#xff1a; 变电所较为分散&#xff0c;缺乏统一管理&#xff1b;站内…