(论文解读)Visual-Language Prompt Tuning with Knowledge-guided Context Optimization

Comment: accepted by CVPR2023

基于知识引导上下文优化的视觉语言提示学习

摘要

提示调优是利用任务相关的可学习标记将预训练的视觉语言模型(VLM)适应下游任务的有效方法。基于CoOp的代表性的工作将可学习的文本token与类别token相结合,来获得特定的文本知识。然而,这些特定的文本知识对不可见类别的泛化性较差,因为它忘记了具有强泛化能力的通用知识。

为了解决这个问题,本文引入了KgCoOp(Knowledge-guided Context Optimization)来增强可学习提示对不可见类别的泛化性。KgCoOp的关键是通过减少可学习提示与手工提示之间的差异来缓解对通用知识的遗忘。特别地,KgCoOp最小化可学习提示和手工提示生成的文本嵌入之间的差异。最后,在对比损失的基础上加入KgCoOp,对可见任务和不可见任务做出区分性提示。通过对多个基准测试程序的评估表明,本文提出KgCoOp是一种有效的快速调优方法,即以更少的训练时间获得更好的性能。

Introduction

在大规模图像文本对上训练的视觉语言模型(VLM )包含了通用知识,对其他任务具有较好的泛化能力。近年提出了许多视觉语言模型,如CLIP ),Flamingo,ALIGN 等。虽然VLM是提取视觉和文本特征的有效模型,但训练VLM需要大规模的高质量数据集。但是在真实的视觉语言任务中收集大量数据用于训练模型是困难的。为了解决上述问题,提示调优已经被提出,以使预训练的VLM适应下游任务,取得了惊人的效果。

提示调优通常使用任务相关的文本标记来嵌入任务特定的文本知识进行预测。使用CLIP 中手工制作的模板" a photo of a [ Class ] "对基于文本的类嵌入进行建模,进行零样本预测。将固定提示(手工提示)捕获的知识定义为通用的文本知识,对不可见任务具有较高的泛化能力。然而,由于没有考虑每个任务的具体知识,通用的文本知识对下游任务的描述能力较低。为了获得具有判别性的特定任务知识,CoOp,CoCoOp和ProGrad 用一组可学习提示来代替手工设计的提示。由可学习提示生成的判别性知识被定义为特定文本知识。然而,基于CoOp的方法对具有相同任务的不可见类别的泛化性较差,例如,在未见类上获得了比CLIP更差的性能,如表1所示。

由于特定的文本知识是从带有标签的少样本中推断出来的,因此它对可见的类别具有判别性,而对不可见的类别具有偏向性,导致在不可见领域上的性能更差。CLIP在不可见类上获得了比基于CoOp的方法更高的准确率,如CLIP / CoOp / CoCoOp分别为74.22% / 67.99% / 71.69%。CLIP在不可见类上的优越性能验证了其通用文本知识对不可见类具有更好的泛化性。然而,基于CoOp的方法所推断的特定文本知识遗忘了一般性文本知识,称之为灾难性知识遗忘,即灾难性遗忘越严重,性能下降越大。

为了解决这个问题,本文引入了一种新颖的提示调优方法KgCoOp,通过减少对一般文本知识的遗忘来提高对未见类的泛化性。KgCoOp的重点是减少可学习提示和手工提示之间的差异,来缓解对一般文本知识的遗忘。两种提示的差异与性能之间关系也验证了这一观点。解释图1:可学习提示和手工提示生成的文本嵌入之间的距离越大,性能下降越严重。将手工提示" a [ Class ]的照片"被输入到CLIP的文本编码器,以生成通用的文本嵌入,即通用的文本知识。并且优化一组可学习的提示来生成任务特定的文本嵌入。此外,KgCoOp最小化通用文本嵌入和特定文本嵌入之间的欧氏距离,用于记忆必要的通用文本知识。与CoOp和CoCoOp类似,使用任务特定的文本嵌入和视觉嵌入之间的对比损失来优化可学习提示。

本文在11个图像分类数据集和ImageNet4种类型上进行了从基类到新类的泛化设置、少样本分类和领域泛化的全面实验。评估表明,本文提出的KgCoOp是一种有效的方法:使用更少的训练时间获得更高的性能,如表1所示。

解释表1:综上所述,本文提出的KgCoOp获得:1 )更高的性能:KgCoOp获得了比现有方法更高的最终性能。特别地,KgCoOp在New class上对CoOp、CoCoOp和ProGrad有明显的改进,证明了考虑一般文本知识的合理性和必要性。2 )训练时间少:KgCoOp的训练时间与CoOp相同,快于CoCoOp和ProGrad。

Method

Preliminaries

在现有的视觉语言模型中,对比语言-图像预训练模型( CLIP )是具有4亿图像-文本关联对训练的代表性模型,对零样本图像识别具有强大的泛化能力。由于CLIP基于图像-文本对进行训练,因此它包含两种编码器:视觉编码器和文本编码器,其中视觉编码器用于将给定的图像映射为视觉嵌入,文本编码器用于嵌入相应的文本信息。通过冻结CLIP中预训练的视觉和文本编码器,提示调优使用手工提示或可学习的提示,使预训练的CLIP适应下游任务。

φ代表视觉编码器,θ代表文本编码器。

CLIP:

(1)对于包含Nc个类别的下游任务,CLIP使用手工设计的提示来生成文本类别嵌入。代表所有类别的文本嵌入,其中Wi表示第i个类别的文本嵌入。第i个类别的提示“A photo of [class name]”,文本编码器θ和基于transformer的编码器e(),e()以单词序列作为输入,输出文本向量表示,即单词嵌入。因此,第i个类模板“A photo of [classname]”的文本嵌入定义为

通过文本编码器θ进一步投影到文本类别嵌入

(2)给定一个图像I和相应的类标签y,通过视觉编码器提取器视觉嵌入:φ(·): x = φ(I)。

(3)然后计算图像嵌入x和文本嵌入之间的预测概率:

CoOp:

尽管Eq1很容易地应用于zero-shot预测,但是使用固定的人工提示来生成文本嵌入,导致在下游任务种泛化性差。为了解决这个问题,CoOp提出学习一组连续的上下文向量,用于生成与任务相关的文本嵌入。具体来说,CoOp就是引入M个上下文向量V = {v1, v2, ..., vM }作为可学习的提示。最后,将第i个类别对应的类嵌入ci与可学习的上下文向量V进行串联,生成提示:

然后将可学习提示送到文本编码器θ得到文本嵌入:

因此,所有类别的最终文本嵌入为:

在给定的少样本条件下,CoOp通过最小化图像特征x与其类别文本嵌入之间的负对数似然来优化可学习的上下文标记:

在CLIP和CoOp的训练过程中,视觉编码器φ和预训练的文本编码器θ被冻结。与CLIP使用固定提示不同,CoOp只推断合适的任务相关提示以提高其通用和辨别力。

Knowledge-guided Context Optimization

尽管现有基于CoOp的提示调优方法可以有效地将预训练的CLIP适配到下游任务中,但由于只使用了少量带标签的图像进行训练,因此很容易过拟合所见类别。例如,在基类预测中,CoOp比CLIP获得了显著提升,如69.34 % ( CLIP ) vs 82.89 % ( Co Op )。然而,在未见类上,CoOp获得了比CLIP更差的新类准确率,例如,74.22 % ( CLIP ) vs 63.22 % ( CoOp )。通过在11个数据集上进一步分析CLIP和CoOp的新类准确率,一个有趣的现象是,在不可见类上的性能下降与可学习提示和固定提示之间的距离一致。在本文中,CLIP和CoOp之间性能下降的相对比率表示性能下降的程度。此外,使用可学习提示( CoOp )和固定提示( CLIP )之间的距离来衡量两类提示之间的相似性。如图1所示,距离越大,性能下降越严重。例如,在所有11个数据集中,CoOp在DTD数据集上获得了20.63 %的最大降幅,而其特殊的类嵌入与CLIP相比也具有最大的距离。基于以上结果得出结论,增强可学习提示和固定提示之间的相似性可以缓解对一般文本知识的遗忘,从而提高不可见域的通用,这也是本文工作的核心动机。本文提出KgCoOp提示调优方法,使其在可见类别上具有较高的判别性,在不可见类别上具有较高的泛化性。

对于CLIP,给定一张图像和它相应的文本,通过计算视觉嵌入和文本嵌入之间的相似度来得到预测结果。由于CLIP和KgCoOp使用不同的文本嵌入来匹配视觉嵌入,因此通用文本知识和特定文本知识主要是由CLIP和KgCoOp中的文本嵌入来控制。此外,通用文本知识和特定文本知识之间的差异可以通过相应文本嵌入之间的距离来衡量。

本文将CLIP中的文本嵌入定义为:

将KgCoOp中的文本嵌入定义为:

其中表示CLIP中向量化的文本嵌入,代表第i个类别的可学习提示。

特定文本知识和通用知识之间的差别在于计算Wi和Wi(CLIP)之间的欧距离,距离与性能退化正相关,距离越小,性能退化越低。

因此本文提出最小化Wi和Wi(CLIP)之间的欧式距离来提高对未见类别的通用性:

其中||·||表示欧式距离,Nc表示可见类别的个数。

此外,标准的对比损失(其中y代表图像嵌入的标签)为:

最终目标损失为:

Conclusion

为了克服现有基于CoOp的提示调优方法在未见类泛化性差的缺点,本文引入一种提示调优方法KgCoOp,通过最小化一般文本嵌入和可学习的特定文本嵌入之间的差异来提升未见类的通用性。在多个基准测试的广泛评估表明,本文提出的KgCoOp是一种高效的提示调优方法。虽然使用KgCoOp可以提高未见类上的通用性,但是会降低已见类上的判别能力,例如KgCoOp在Base类性能较差。

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

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

相关文章

项目需求 | MySQL增量备份与恢复的完整操作指南

目录 一、MySql数据库增量备份的工作原理 1、全量备份与增量备份 2、增量备份原理 二、进行增量备份 步骤1:启用二进制日志 使用 SHOW VARIABLES 命令查看二进制日志状态 步骤2:执行增量备份脚本 三、使用增量备份恢复损坏的数据库 步骤1&#…

WSL安装Redis

前言 本来一直是在虚拟机的Ubuntu开发 但是 搞着搞着内存不足 导致我某些数据损坏了 然后目前迁移到Wsl开发 运行WSL的相较于虚拟机你不需要很多的性能开销! 我只是代码开发和git交互,如果是搞逆向还是虚拟机。 记录一下redis 安装卸载 免得以后又忘了…

java基于PDF底层内容流的解析对文本内容进行编辑

本文实现了基于坐标位置对PDF内容的底层修改而非覆盖,因此不会出现在某些高级PDF编辑器中可以移除插入内容或者文件随着编辑次数增多而大幅增大(原因是原内容还在文件中)的问题,而且使用的pdfbox是一个开源的、免费的PDF处理库&am…

SSHamble:一款针对SSH技术安全的研究与分析工具

关于SSHamble SSHamble是一款功能强大的SSH技术安全分析与研究工具,该工具基于Go语言开发,可以帮助广大研究人员更好地分析SSH相关的安全技术与缺陷问题。 功能介绍 SSHamble 是用于 SSH 实现的研究工具,其中包含下列功能: 1、针…

ESP01的AT指令连接到阿里云平台

物联网平台提供安全可靠的设备连接通信能力,支持设备数据采集上云,规则引擎流转数据和云端数据下发设备端。此外,也提供方便快捷的设备管理能力,支持物模型定义,数据结构化存储,和远程调试、监控、运维。总…

移动UI案例:工具类app整套案例

工具类App是指提供各种实用工具和功能的手机应用程序。这些工具可以包括但不限于日历、闹钟、备忘录、翻译、计算器、单位转换、天气预报、地图导航、音乐播放器、相机、视频编辑等。这些工具类App能够帮助用户解决日常生活和工作中的各种问题,提高效率和便利性。 …

Java数据结构(十)——冒泡排序、快速排序

文章目录 冒泡排序算法介绍代码实现优化策略复杂度和稳定性 快速排序算法介绍优化策略非递归实现代码演示复杂度和稳定性 冒泡排序 算法介绍 冒泡排序是一种简单的排序算法。它重复地遍历要排序的数列,一次比较两个元素,如果它们的顺序错误就交换。遍历…

多线程篇(其它容器- CopyOnWriteArrayList)(持续更新迭代)

一、CopyOnWriteArrayList(一) 1. 简介 并发包中的并发List只有CopyOnWriteArrayList。 CopyOnWriteArrayList是一个线程安全的ArrayList,对其进行的修改操作都是在底层的一个复制的数 组(快照)上进行的&#xff0…

redis 基本数据类型—string类型

一、介绍 Redis 中的字符串,直接就是按照二进制数据的方式存储的,不会做任何的编码转换。 Redis对于 string 类型,限制了大小最大是512M 二、命令 SET 将 string 类型的 value 设置到 key 中。如果 key 之前存在,则覆盖&#…

Jwt、Filter、Interceptor

目录 JWT(Json Web Token) jwt令牌 组成 应用场景 生成令牌 解析令牌 登录实例 Filter过滤器 Filter Filter登录校验 Interceptor拦截器 Interceptor 拦截路径 执行流程 登录实例 JWT(Json Web Token) jwt令牌 定义了一种简洁的、自包含的格式,…

二、(JS)JS中常见的键盘事件

一、常见的键盘事件 onkeydown 某个键盘按键被按下onkeypress 某个键盘按键被按下onkeyup 某个键盘按键被松开 二、事件的执行顺序 onkeydown、onkeypress、onkeyup down 事件先发生;press 发生在文本被输入;up …

【大模型理论篇】大模型周边自然语言处理技术(NLP)原理分析及数学推导(Word2Vec、TextCNN、Gated TextCNN、FastText)

1. 背景介绍 进入到大模型时代,似乎宣告了与过去自然语言处理技术的结束,但其实这两者并不矛盾。大模型时代,原有的自然语言处理技术,依然可以在大模型的诸多场景中应用,特别是对数据的预处理阶段。本篇主要关注TextCN…

使用Python生成多种不同类型的Excel图表

目录 一、使用工具 二、生成Excel图表的基本步骤 三、使用Python创建Excel图表 柱形图饼图折线图条形图散点图面积图组合图瀑布图树形图箱线图旭日图漏斗图直方图不使用工作表数据生成图表 四、总结 Excel图表是数据可视化的重要工具,它通过直观的方式将数字信…

PCIe进阶之TL:First/Last DW Byte Enables Rules Traffic Class Field

1 First/Last DW Byte Enables Rules & Attributes Field 1.1 First/Last DW Byte Enables Rules Byte Enable 包含在 Memory、I/O 和 Configuration Request 中。本文定义了相应的规则。Byte Enable 位于 header 的 byte 7 。对于 TH 字段值为 1 的 Memory Read Request…

【STM32】esp8266通过MQTT连接服务器|订阅发布

1. MQTT协议 该协议为应用层协议,传输层使用的是tcp,MQTT的订阅和发布,就相当于在抖音中你关注了某个领域的博主(订阅),如果有其他人发了作品就会推给你(发布),默认已经安装好了 简…

哈希表、算法

哈希表 hash: 在编程和数据结构中,"hash" 通常指的是哈希函数,它是一种算法,用于将数据(通常是字符 串)映射到一个固定大小的数字(哈希值)。哈希函数在哈希表中尤为重要…

探索图论中的关键算法(Java 实现)

“日出东海落西山 愁也一天 喜也一天 遇事不钻牛角尖” 文章目录 前言文章有误敬请斧正 不胜感恩!||Day031. 最短路径算法Dijkstra算法Java 实现: Bellman-Ford算法Java 实现: 2. 最小生成树算法Prim算法Java 实现: Kruskal算法Ja…

C++速通LeetCode简单第9题-二叉树的最大深度

深度优先算法递归: /*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode() : val(0), left(nullptr), right(nullptr) {}* TreeNode(int x) : val(x), left(nullptr), right…

Conmi的正确答案——MySQL的层级递归查询(递归公共表表达式,CTE)

数据库:oceanbase-ce 递归sql主体: WITH RECURSIVE country_area_tree AS (-- 非递归部分,初始化查询SELECT id, area_name, parent_id, 0 AS levelFROM country_areaWHERE id 589004044419077UNION ALL-- 递归部分,找到子节点S…

聚类_K均值

import numpy as np import matplotlib.pyplot as plt from sklearn.datasets import make_blobs1.数据预处理 #创建基于高斯分布的样本点, x是点的坐标,y是所属聚类值 x, y make_blobs(n_samples100, centers6, random_state100, cluster_std0.6) # 设置图形尺寸…