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

news2024/9/24 11:21:50

文章目录

  • 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.coloradmin.cn/o/1910397.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于springboot+vue+uniapp的机电公司管理信息系统

开发语言:Java框架:springbootuniappJDK版本:JDK1.8服务器:tomcat7数据库:mysql 5.7(一定要5.7版本)数据库工具:Navicat11开发软件:eclipse/myeclipse/ideaMaven包&#…

js计算两个日期直接的间隔天,2018/12/14到2017/11/10有多少天

const startDate new Date(2017-11-10)const endDate new Date(2018-12-14)const diffTime Math.abs(endDate - startDate)const diffDays Math.ceil(diffTime / (1000 * 60 * 60 * 24))console.log(diffDays) // 输出天数差 人工智能学习网站 https://chat.xutongbao.top…

如何将libwebsockets库编译为x86架构

在之前的文章中,我们已经详细介绍了如何交叉编译libwebsockets并将其部署到ELF 1开发板上。然而在调试阶段,发现将libwebsockets在Ubuntu环境下编译为x86架构可能更为方便和高效。 通过在主机环境中编译运用x86架构下的libwebsockets库,可以…

详细解读COB显示屏使用的共阴技术原理

倒装COB显示屏技术中采用的共阴技术是一种旨在提升能效并且减少驱动功耗的LED驱动方式,常规LED显示屏一般采用共阳极或者独立驱动的方式,而共阴技术就有所不同了,其基本原理如下: 一、基本概念:   共阴技术是指在LED…

AGI 之 【Hugging Face】 的【文本分类】的[数据集][文本转换成词元]的简单整理

AGI 之 【Hugging Face】 的【文本分类】的[数据集][文本转换成词元]的简单整理 目录 AGI 之 【Hugging Face】 的【文本分类】的[数据集][文本转换成词元]的简单整理 一、简单介绍 二、文本分类 三、数据集 1、Hugging Face Datasets 库 2、如果我的数据集不在Hub上那该…

中国科学院院士丁汉:人形机器人——机器人与人工智能结合的爆发点

工业制造是国民经济的重要支柱,是实现发展升级的国之重器。早在 2002 年,党的十六大就曾提出,坚持以信息化带动工业化,以工业化促进信息化,走出一条科技含量高、经济效益好、资源消耗低、环境污染少、人力资源优势得到…

tableau折线图绘制 - 4

tableau折线图绘制 1. 电影数量变化折线图绘制1.1 折线图及显示标签1.2 排除异常值1.3 修改纵坐标名称1.4 最大值注释 2.电影票房变化折线图2.1 数据类型位置拖拽2.2 折线图绘制2.3 修改标签数据格式 3. 2015年电影数量与票房变化折线图3.1 年份筛选3.2 横轴单位单位设置3.3 单…

TensorFlow系列:第一讲:环境搭建

简介: 这是TensorFlow系列教程,先从实战应用,再到原理分析,讲解如何使用大模型进行图像识别。 下载安装Mini Anaconda,配置环境变量 配置镜像 查看当前conda配置 conda config --show channels增加channel conda …

北斗防爆手持终端在化工厂的安全性能分析

北斗防爆手持终端在化工厂中的应用显著提升了安全性能,其卓越的防爆设计、高精度定位与监控功能、实时通信能力以及多功能集成特性,共同构筑了化工厂安全生产的坚实防线,确保了巡检人员与设备在复杂环境下的安全作业与高效管理。 北斗防爆手持…

分布式一致性算法:Raft学习

分布式一致性算法:Raft学习 1 什么是分布式系统? 分布式系统是由一组通过网络进行通信、为了完成共同的任务而协调工作的计算机节点组成的系统。这些节点可能位于不同的物理位置,但它们协同工作以提供一个统一的计算平台或服务。分布式系统…

SQLite 命令行客户端 + HTA 实现简易UI

SQLite 命令行客户端 HTA 实现简易UI SQLite 客户端.hta目录结构参考资料 仅用于探索可行性&#xff0c;就只实现了 SELECT。 SQLite 客户端.hta <!DOCTYPE html> <html> <head><meta http-equiv"Content-Type" content"text/html; cha…

昇思25天学习打卡营第11天|基于MindSpore的GPT2文本摘要

数据集 准备nlpcc2017摘要数据&#xff0c;内容为新闻正文及其摘要&#xff0c;总计50000个样本。 数据需要预处理&#xff0c;如下 原始数据格式&#xff1a; article: [CLS] article_context [SEP] summary: [CLS] summary_context [SEP] 预处理后的数据格式&#xff1a; […

EHS管理体系,重塑造企业竞争力的关键密码

在当今这个快速发展的时代&#xff0c;企业面临着前所未有的挑战与机遇。随着全球环保意识的普遍觉醒&#xff0c;以及社会各界对企业社会责任的日益关注&#xff0c;EHS&#xff08;环境&#xff0c;健康&#xff0c;安全&#xff09;管理体系成为了企业稳健前行的重要基石。它…

GPU发展史(二):改变游戏规则的3Dfx Voodoo

小伙伴们&#xff0c;大家好呀&#xff0c;我是老猫。 在上一篇GPU发展史&#xff08;一&#xff09;文章中&#xff0c;我们介绍了1976-1995期间早期显卡的发展故事&#xff0c;今天我们将介绍在1995-1999年这段时间显卡的故事&#xff0c;而这段故事的主角就是——3Dfx 提起…

人工智能+病理组学的交叉课题,患者的临床特征如何收集与整理|顶刊专题汇总·24-07-09

小罗碎碎念 本期文献主题&#xff1a;人工智能病理组学的交叉课题&#xff0c;患者的临床特征如何收集与整理 我们在阅读文献的时候会发现&#xff0c;有的文章会详细给出自己的数据集分析表&#xff0c;分别列出训练集、验证集的数量&#xff0c;以及每个特征对应的患者人数。…

Java版Flink使用指南——从RabbitMQ中队列中接入消息流

大纲 创建RabbitMQ队列新建工程新增依赖编码设置数据源配置读取、处理数据完整代码 打包、上传和运行任务测试 工程代码 在《Java版Flink使用指南——安装Flink和使用IntelliJ制作任务包》一文中&#xff0c;我们完成了第一个小型Demo的编写。例子中的数据是代码预先指定的。而…

uniapp easycom组件冲突

提示信息 ​easycom组件冲突&#xff1a;[/components/uni-icons/uni-icons.vue,/uni_modules/uni-icons/components/uni-icons/uni-icons.vue]​ 问题描述 老项目&#xff0c;在uniapp插件商城导入了一个新的uniapp官方开发的组件》uni-data-picker 数据驱动的picker选择器 …

Java中List集合介绍

一.List集合的概述和特点 List集合的概述 有序集合,这里的有序指的是存取顺序 用户可以精确控制列表中每个元素的插入位置,用户可以通过整数索引访问元素,并搜索列表中的元素 与Set集合不同,列表通常允许重复的元素 List集合的特点 存取有序 可以重复 有索引 二.List集合…

Unity海面效果——6、反射和高光

Unity引擎制作海面效果 大家好&#xff0c;我是阿赵。 上一篇的结束时&#xff0c;海面效果已经做成这样了&#xff1a; 这个Shader的复杂程度已经比较高了&#xff1a; 不过还有一些美中不足的地方。 1、 海平面没有反射到天空球 2、 在近岸边看得到水底的部分&#xff0c;水…

GitLab介绍,以及add an SSH key

GitLab GitLab 是一个用于仓库管理系统的开源项目&#xff0c;现今并在国内外大中型互联网公司广泛使用。 git,gitlab,github区别 git 是一种基于命令的版本控制系统&#xff0c;全命令操作&#xff0c;没有可视化界面&#xff1b; gitlab 是一个基于git实现的在线代码仓库…