ProGrad:Prompt-aligned Gradient for Prompt Tuning

news2024/9/26 5:23:23

文章汇总

存在的问题

问题1

image.png
如图(a),(b):CoOp随着训练的继续,泛化能力可能会下降,甚至低于zero-shot基线
如图©,(d):在shot比较小的情况,即数据量比较少的情况(1-shot,2-shot),CoOp的性能可能还不如clip的zero-shot基线

问题2

image.png
对比CoOp模型(图2(b))和zero-shot CLIP模型(图2©),我们发现CoOp模型将注意力分散到背景上,而CLIP模型主要关注前景目标

动机

当学习到下游知识优化方向与一般知识冲突,选择一种“居中”的办法以此避免继续被学习到的下游知识“带偏”。

解决办法

image.png
L c e ( v ) \mathcal{L}_{ce}(v) Lce(v):模型预测 p ( t i ∣ x ) p(t_i|x) p(tix)与真实值 y y y的交叉熵损失
image.png
L k l ( v ) \mathcal{L}_{kl}(v) Lkl(v):模型预测 p ( t i ∣ x ) p(t_i|x) p(tix)与zero-shot CLIP预测 p z s ( w i ∣ x ) p_{zs}(w_i|x) pzs(wix)的KL散度
image.png

如何避免过拟合与下游知识

G d = ▽ v L c e ( v ) G_d=\bigtriangledown_v\mathcal{L}_{ce}(v) Gd=vLce(v)表示为 L c e ( v ) \mathcal{L}_{ce}(v) Lce(v)的梯度
G g = ▽ v L k l ( v ) G_g=\bigtriangledown_v\mathcal{L}_{kl}(v) Gg=vLkl(v)表示为 L k l ( v ) \mathcal{L}_{kl}(v) Lkl(v)的梯度
image.png
图(a)说明小样本下游知识的优化方向与一般知识不冲突(夹角小于90度),将更新的梯度方向 G p r o g r a d G_{prograd} Gprograd设置为 G d G_d Gd
图(b)说明小样本下游知识的优化方向与一般知识发生冲突(夹角大于90度),将 G d G_d Gd投影到 G g G_g Gg的正交方向上,以优化模型进行分类,避免增加KL损失。
公式化表示如下:
image.png
其中 λ = 1 \lambda=1 λ=1表示将 G d G_d Gd投影到 G g G_g Gg的正交方向上(图b), λ = 0 \lambda=0 λ=0则使ProGrad退化为CoOp,即CoOp是我们策略的特例。

摘要

由于像CLIP[37]这样的大型预训练视觉语言模型(VLM),我们可以通过离散提示设计来制作零射击分类器,例如,如果图像与提示句子“a photo of a [CLASS]”具有相似性,则可以使用VLM来获得图像为“[CLASS]”的置信分数。此外,如果我们用少量样本微调软提示,提示显示出vlm快速适应下游任务的巨大潜力。然而,我们发现了一个常见的失败,即不适当的微调或使用极少的样本进行学习,甚至可能导致零样本预测的效果不佳。现有的方法仍然通过使用传统的反过拟合技术来解决这个问题,例如早期停止和数据增强,这些技术缺乏针对提示的原则性解决方案。在本文中,我们提出了提示对齐梯度,称为ProGrad,以防止提示调优忘记从VLM中学到的一般知识。特别是,ProGrad只更新梯度与一般知识对齐(或不冲突)的提示,一般知识表示为预定义提示预测提供的优化方向。在少量学习、领域泛化、base-to-new泛化和跨数据集传输设置下的大量实验表明,ProGrad的小样本泛化能力强于最先进的提示调优方法。

1. 介绍

大型和深度视觉语言模型(VLM)在看到和阅读了无数的图像-文本关联对后[37,18],可以记忆关于哪些视觉模式对应于哪些文本序列的一般知识(又称百科知识),反之亦然。由于VLM强大的语言建模功能,我们可以用人类可读的自然语言(即提示符[25,52,19])建立一个通信通道来查询通用知识。
提示弥补了预训练任务和下游任务之间的接口差距(例如,回归与分类),而不需要额外的微调适应。例如,我们可以为zero-shot图像分类制作一个具体的提示“a photo of a [CLASS]”:我们使用流行的视觉语言模型CLIP[37],将图像输入到视觉端,将提示句输入到语言端,然后获得一个视觉语言相似度作为将图像分类为“[CLASS]”的置信度分数。
在实践中,基于提示的零样本图像分类并不准确,因为手工制作的提示可能不是最适合机器的(例如,““this is
a picture of”在VLM训练中可能更符合语法),或者不是特定于下游领域(例如,“a photo of a person doing”在动作识别中更好)[37]。最近,提示调优或前缀调优[23,26,55,56]被提出用一组可调的词嵌入向量取代手工制作的提示,这些词嵌入向量不必被翻译回人类可读的词。然而,提示调整仍然像传统的微调一样棘手:随着训练的继续,泛化能力可能会下降,甚至低于zero-shot基线。如图1(a&b)所示,提示调优方法CoOp[55]通过提前停止达到最佳效果,当训练继续进行时,其准确率最多下降4%。此外,图1(c&d)显示,在没有增强或从下游任务获得足够样本的情况下,CoOp的表现不如zero-shotCLIP。据我们所知,现有的方法仍然依赖于传统的反过拟合技术,如早期停止和数据增强[55,56,11,36],缺乏对不适当的提示调谐本质的原则解决方案。此外,Grad-CAM可视化结果表明,微调提示误导了VLM忘记了分类至少应该关注前景目标而不是背景的一般知识。对比CoOp模型(图2(b))和zero-shot CLIP模型(图2©),我们发现CoOp模型将注意力分散到背景上,而CLIP模型主要关注前景目标。这些结果证明了现有提示调优的过度拟合风险,特别是当训练样本的数量非常有限时(例如,1或2)。
image.png
图1:Zero-shot CLIP、CoOp和我们的ProGrad在Stanford Cars和OxfordPets数据集上的比较。(a)和(b):给定1-shot训练样本,当训练继续时,CoOp的性能严重下降,并大大低于zero-shot CLIP。©和(d):如果没有数据增强或大量样本,CoOp可能无法改善CLIP。
image.png
图2:在Stanford Cars数据集上使用不同梯度策略的Grad-CAM[43]可视化提示微调方法的比较。
为此,我们提出了一种新的提示调谐方法,称为提示对齐梯度(ProGrad),以克服CLIP的不适当偏置调谐。ProGrad的原理是使每个调优步骤规范化,不与原始提示提供的一般知识相冲突,例如,zero-shot CLIP预测。具体而言,我们使用zero-sho提示CLIP和few-shot 微调模型预测之间的Kullback-Leibler (KL)散度梯度来测量一般知识方向 G g G_g Gg,我们将其称为一般方向。类似地,我们使用ground truth和few-shot微调模型之间的交叉熵梯度计算领域特定知识方向 G d G_d Gd,称为领域特定方向。我们将特定领域的方向 G d G_d Gd分解为:1)与一般方向正交的向量 G ⊥ G_{\perp} G,表示不冲突的特定领域知识;2)向量 G ∥ G_{\lVert} G**平行于一般方向,表示一般知识。**请注意,第一个梯度分量不会覆盖一般方向,因为任何两个正交向量都可以转换为两个不冲突的基向量。对于第二个组件,它必须是两个方向之一:1)**与一般方向相同,这表明更新与一般知识一致;2)与一般方向相反,表明应该放弃冲突的更新,以避免遗忘。**总的来说,在每次迭代中,ProGrad只在与一般方向有锐角的提示对齐方向上更新参数。与CoOp和CLIP相比, G g G_g Gg G ⊥ G_{\perp} G(图2(d&e))都有助于正则化模型以聚焦于前景,而ProGrad(图2(f))进一步改善了视觉响应

3. 方法

在本节中,我们介绍了基于提示的小样本推理和基于提示的学习的初步概念,并提出了我们提出的基于提示对齐的梯度解决方案,将领域知识与一般知识对齐以进行小样本泛化。

3.1. 准备知识

对比语言-图像预训练(contrast language-image pre-training, CLIP)[37]采用了一种对大量具有自然语言描述的图像对进行对比语言-图像预训练的范式。在对比学习中,将关联的图像和句子作为正样本,将不关联的对作为负样本。对比目标使正对的相似性最大化,而使负对的相似性最小化。
零样本转移推理使预训练的CLIP模型适应下游任务,而不需要对模型进行微调。以图像分类为例,通过将分类任务表述为一个图像-文本匹配问题来实现零样本转移,其中文本是通过使用““a photo of a [CLASS]”之类的模板扩展“[CLASS]”的名称来获得的。CLIP[37]发现这样一个简单的模板缩小了预训练文本输入的分布差距。基于第 i i i类的图像特征 f f f与类扩展文本特征 w i w_i wi之间的余弦相似度 < w i , f > <w_i,f> <wi,f>来衡量图像类匹配得分。图像 x x x的图像特征 f f f由图像编码器提取,第 i i i类的文本特征 w i w_i wi通过向文本编码器输入提示描述得到。第 i i i类的概率为
image.png
其中 K K K表示类的数量, τ \tau τ是CLIP。
基于提示的学习进一步增强了CLIP模型的迁移能力,并通过从下游任务中自动学习少量样本的提示来避免提示工程。与使用固定手工提示符的零样本转移不同,CoOp[55]构建并微调了一组 M M M个连续上下文向量 v = { v 1 , v 2 , … , v M } v=\{v_1,v_2,\ldots,v_M\} v={v1,v2,,vM}作为可旋转的提示符。具体来说,提示符 t i = { v 1 , v 2 , … , v M , c i } t_i=\{v_1,v_2,\ldots,v_M,c_i\} ti={v1,v2,,vM,ci}将可学习的上下文向量 v v v和嵌入 c i c_i ci的类标记结合起来,并被馈给文本编码器 g ( ⋅ ) g(\cdot) g()。CoOp通过最小化真实标签token负对数似然来优化静态上下文向量 v v v:
image.png
其中 y y y表示one-hot ground-truth注释, K K K表示类的数量

3.2. Prompt-aligned梯度

image.png
CoOp面临的挑战是,当注释的数量非常有限(例如,每个类一个注释)时,传输性能会下降,甚至不如zero-shot迁移。此外,CoOp很大程度上依赖于抗过拟合技术,如早期停止和数据增强。为了克服过度拟合的挑战,我们提出了一种有效的微调范式ProGrad,将少量的下游知识与大规模的一般知识进行对齐。
受知识蒸馏在知识转移中的成功[34,16]的激励,我们利用zero-shot CLIP预测作为一般知识,并将微调后的预测与一般知识进行比较,以正则化梯度方向。具体来说,我们根据Eq.(2)计算模型预测 p ( t i ∣ x ) p(t_i|x) p(tix)与ground-truth y y y之间的交叉熵 L c e ( v ) \mathcal{L}_{ce}(v) Lce(v)得到域特定方向,根据 p ( t i ∣ x ) p(t_i|x) p(tix)与zero-shot CLIP预测 p z s ( w i ∣ x ) p_{zs}(w_i|x) pzs(wix)之间的Kullback-Leibler (KL)散度得到一般知识方向:
image.png
我们将 L k l ( v ) \mathcal{L}_{kl}(v) Lkl(v) L c e ( v ) \mathcal{L}_{ce}(v) Lce(v)的梯度分别表示为 G g = ▽ v L k l ( v ) G_g=\bigtriangledown_v\mathcal{L}_{kl}(v) Gg=vLkl(v) G d = ▽ v L c e ( v ) G_d=\bigtriangledown_v\mathcal{L}_{ce}(v) Gd=vLce(v) G g G_g Gg G d G_d Gd之间的关系是双重的。(1)它们的夹角小于90◦(图3(a)),说明小样本下游知识的优化方向与一般知识不冲突。在这种情况下,我们安全地将更新的梯度方向 G p r o g r a d G_{prograd} Gprograd设置为 G d G_d Gd。(2)它们的夹角大于90◦(图3(b)),说明下游的少量知识与一般知识发生冲突。换句话说, G d G_d Gd之后优化上下文向量会导致预先训练好的一般知识的遗忘。在这种情况下,我们将 G d G_d Gd投影到 G g G_g Gg的正交方向上,以优化模型进行分类,避免增加KL损失。我们的ProGrad策略的数学公式如下:
image.png
图3©说明了我们的编程程序的管道。在CoOp[55]中,我们没有使用 G d G_d Gd来更新上下文向量,而是使用 G p r o g r a d G_{prograd} Gprograd来优化上下文向量,这可以防止梯度方向过度拟合到小样本下游。我们进一步在Eq.(4)中引入 λ \lambda λ对公式进行推广,可以在应用中灵活控制通用知识引导的强度。其中 λ = 1 \lambda=1 λ=1表示将 G d G_d Gd投影到 G g G_g Gg的正交方向上(图3(b)),设 λ = 0 \lambda=0 λ=0使ProGrad退化为CoOp,即CoOp是我们策略的特例。我们在附录中包含了 λ \lambda λ的详细分析。
泛化误差分析。进一步从理论上分析了该算法的泛化误差。在这里,我们提供了一个草图证明,并在附录中包含了详细的理由。我们的ProGrad在优化下游领域的经验风险时,保持预训练领域的最优值 L k l \mathcal{L}_{kl} Lkl。通过这种更新规则学习的模型可被视为对预训练域和下游域的经验风险进行优化[53]:
image.png
式中, F \mathcal{F} F为函数类, R ( ⋅ ) , R ^ ( ⋅ ) \mathcal{R}(\cdot),\hat{\mathcal{R}}(\cdot) R(),R^()分别表示预期风险和经验风险。我们利用Rademacher Complexity[1]和[54]中的定理6.2对ProGrad的泛化误差进行了限定。详细证明见附录。

4. 实验(做了很多实验)

image.png
image.png
图4:11个数据集上的小样本学习准确率(%)。上下文长度M设置为16。标准偏差见附录。
image.png
表3:基类到新类泛化在11个数据集上的平均精度(%)。
image.png
表4:跨数据集迁移设置下提示学习方法的比较。提示是从4-shot ImageNet学习的。

5. 结论

本文指出了现有的小样本泛化提示调优方法存在的过度拟合问题,这些方法严重依赖于早期停止和数据增强。提出了一种提示调优方法规范每个调优步骤,以免与手工制作的提示符的一般知识相冲突。在11个数据集上进行的少样本分类、base-to-new概化、域概化和跨数据集传输实验证明了该方法的有效性和高效性。在未来,我们将探索如何将ProGrad应用于其他任务,如目标检测和分割。

参考资料

论文下载(ICCV 2023)

https://arxiv.org/abs/2205.14865
[Prompt-aligned Gradient for Prompt Tuning.pdf]
image.png

代码地址

https://github.com/BeierZhu/Prompt-align

参考文章

https://blog.csdn.net/weixin_51293984/article/details/137423337?spm=1001.2014.3001.5502

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

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

相关文章

和鲸携手山东大学数字人文实验室,推动新文科与人工智能融合发展

为深入推进产教融合与校企合作&#xff0c;推动人工智能在人文学科中的广泛应用与深入发展&#xff0c;8 月 15 日&#xff0c;山东大学数字人文实验室与和鲸科技 101 计划推进会暨新文科人工智能实验室标杆案例打造讨论会于威海顺利召开。山东大学数字人文实验室副主任陈建红、…

基于Docker部署最新版本Jenkins

一、创建jenkins挂载路径 mkdir /var/jenkins_home chmod 777 /var/jenkins_home二、运行Jenkins最新lts镜像 docker run -d --name jenkins -p 8080:8080 -p 50000:50000 -v /var/jenkins_home:/var/jenkins_home --restartalways jenkins/jenkins:latest将/var/jenkins_ho…

若依小程序使用及遇到的问题

1、首先去官网拉取小程序代码&#xff0c;从HBuildx运行到小程序 这个时候项目起来了&#xff0c;但是小程序发生了报错&#xff1b; 解决方法 在 project.config.json 新增指定 app.json 路径 ★一定要有 unpackage文件夹 如果没有的需要到HBuilder X 编译一下&#xff0c;编…

一文说清楚数据集成中的流处理与批处理的区别

流数据处理和批数据处理之间的区别主要在于数据的处理方式、时间性、架构设计和适用场景。虽然批处理系统和流处理系统都可以处理数据&#xff0c;但它们处理数据的方式和目的不同&#xff0c;以我们来对“流数据处理”和“批数据处理”进行差异分析。 1. 流数据处理 vs. 批数…

MySQL索引的性能优化

1.数据库服务器的优化步骤 在数据库调优中&#xff0c;我们的目标就是响应时间更快&#xff0c;吞吐量更大。利用宏观的监控工具和微观的日志分析可以帮我们快速找到调优的思路和方式 数据库服务器的优化步骤 当我们遇到数据库调优问题的时候&#xff0c;该如何思考呢&#xf…

常见的排序算法汇总(详解篇)

目录 排序的概念以及运用 排序的概念 1. 插入排序 1.1 直接插入排序 1.1.1 基本思想 1.1.2 代码实现 直接插入排序的特征总结&#xff1a; 1.1.3 希尔排序&#xff08;缩小增量排序&#xff09;&#x1f680; 1.1.4基本思想&#x1f680; 1.1.5 代码实现&#x1f680; …

Redis 集群三主三从配置

1&#xff1a;安装 Redis安装Linux ubuntu_ubuntu离线安装redis7.2.5-CSDN博客 2&#xff1a;主从复制配置 参考 Redis主从同步配置-CSDN博客 3&#xff1a;哨兵配置 参考 Redis 哨兵模式配置-CSDN博客 4&#xff1a;集群配置 Redis 集群三主三从配置-CSDN博客 5&…

JavaScript初级——对象和函数

一、对象的简介 1、JS中的数据类型 —— String 字符串 —— Number 数值 —— Boolean 布尔值 —— Null 空值 —— Undefined 未定义 ——以上五种类型属于基本数据类型&#xff0c;以后我们看到的值只要不是上面这五种&#xff0c;则为对象 —— Object 对象 2…

仓颉编程语言-001-第一个入门程序helloworld

目录 一、概述二、环境要求2.1 硬件环境2.2 软件环境 三、使用cjc方式开发三、使用cjpm方式 一、概述 本文档是针对仓颉编程语言编写的第一个入门程序&#xff0c;通过两种方式&#xff0c;第一种方式是cjc&#xff0c;第二种方式是cjpm。关于cjc和cjpm的使用&#xff0c;请参…

【html+css 绚丽Loading】 - 000006 四象轮回镜

前言&#xff1a;哈喽&#xff0c;大家好&#xff0c;今天给大家分享htmlcss 绚丽Loading&#xff01;并提供具体代码帮助大家深入理解&#xff0c;彻底掌握&#xff01;创作不易&#xff0c;如果能帮助到大家或者给大家一些灵感和启发&#xff0c;欢迎收藏关注哦 &#x1f495…

履带式排爆机器人技术详解

履带式排爆机器人是现代反恐、救援及危险环境处理领域中的重要工具。它们结合了先进的机械设计、智能感知、精确控制及高效算法&#xff0c;能够在复杂、危险的环境中执行排爆、侦察、取样等多种高风险任务&#xff0c;极大地保障了人员安全。履带式排爆机器人以其卓越的地面适…

IP地址申请SSL证书实现https教程

IP地址如果想实现HTTPS访问&#xff0c;则需要部署专门针对IP地址的SSL证书。为IP地址申请SSL证书并实现HTTPS加密连接是一个涉及多个步骤的过程。 下面是一份基本的教程&#xff08;以国产服务商JoySSL为例&#xff09;&#xff1a; 1 注册账号 打开JoySSL官网&#xff0c;…

第11章 第4节 软件异常的分类及其关系(软件评测师)

V模型指出&#xff0c;&#xff08;系统测试&#xff09;对概要设计进行验证&#xff0c;&#xff08;集成测试&#xff09;对详细设计进行验证&#xff0c;&#xff08;验收测试&#xff09;当追溯到用户需求说明。 1.以下关于基于V&V原理的W模型的叙述中&#xff0c;&am…

[219] 存在重复元素 II

模拟滑动窗口 /** lc appleetcode.cn id219 langjava** [219] 存在重复元素 II*/// lc codestart class Solution {public boolean containsNearbyDuplicate(int[] nums, int k) {/*** 基本思路* 模拟 动态滑动窗口* 要求窗口左右两边的元素下标差&#xff0c;小于等于 k&…

链表基础算法题

1 移除链表元素 . - 力扣&#xff08;LeetCode&#xff09; 该题的思路是创建一个新链表&#xff0c;然后遍历原链表&#xff0c;将不是要求移除的链表元素放到新链表中&#xff0c;最后返回创建的新链表 就能达到移除链表元素的作用了。 当然这只是一种做法&#xff0c;还有…

HarmonyOS 开发

环境 下载IDE 代码 import { hilog } from kit.PerformanceAnalysisKit; import testNapi from libentry.so; import { router } from kit.ArkUI; import { common, Want } from kit.AbilityKit;Entry Component struct Index {State message: string Hello HarmonyOS!;p…

Java蛋糕店烘焙店系统小程序系统源码

解锁烘焙新纪元&#xff0c;揭秘“蛋糕店烘焙店系统”的甜蜜秘籍&#xff01; &#x1f31f;【开篇&#xff1a;烘焙业的数字化浪潮】&#x1f31f; 在这个快节奏的时代&#xff0c;传统烘焙行业也迎来了它的数字化转型时刻&#xff01;你是否梦想过拥有一家高效运转、顾客满…

了解 JavaScript 中的请求 API

你准备好提升你的网络开发技能了吗&#xff1f;&#x1f680; 在当今数据驱动的世界中&#xff0c;了解如何从 API 获取和处理数据至关重要。本指南将引导您了解在 JavaScript 中发出 HTTP 请求的最新和最有效的方法&#xff0c;确保您的 Web 应用程序保持动态和前沿。 为什么请…

排序算法【冒泡排序】

一、原理 冒泡排序的原理比较简单&#xff0c;就是将待排序区域的数值挨个向后对比&#xff0c;直到比较到已排序的边界&#xff0c;就纳入已排序区域。 二、代码如下所示&#xff1a; #include <stdio.h> #include "test.h"/* 冒泡排序 */ void bubble_sort(…

【GH】【EXCEL】P2: Read DATA SET from EXCEL into GH

文章目录 ReadRead DataExcel Data sourceGH process and components instructionRead Data Read Data LiveLive Worksheet Read Read Data Excel Data source GH process and components instruction Read Data Read data from Excel Input parameters: Worksheet (Generic …