(CVPR,2024)Adversarial Prompt Tuning:只需一个提示词就足以提升预训练视觉-语言模型的对抗性鲁棒性

news2024/11/29 0:53:07

文章目录

    • 相关资料
    • 摘要
    • 引言
    • 对抗性鲁棒性的文本提示
      • CLIP回顾
    • 方法
      • 提示参数化
      • 提示优化
    • 实验

相关资料

论文:[2403.01849] One Prompt Word is Enough to Boost Adversarial Robustness for Pre-trained Vision-Language Models (arxiv.org)

代码:TreeLLi/APT: One Prompt Word is Enough to Boost Adversarial Robustness for Pre-trained Vision-Language Models (github.com)

摘要

大型预训练视觉-语言模型(VLMs),如CLIP,尽管具有显著的泛化能力,但极易受到对抗性样本的攻击。本研究从文本提示这一新颖角度出发,而不是广泛研究的模型权重(在本研究中固定不变),来研究VLMs的对抗性鲁棒性。我们首先展示了对抗性攻击和防御的有效性都对所使用的文本提示非常敏感。受此启发,我们提出了一种通过为VLMs学习鲁棒文本提示来提高对对抗性攻击的抵抗力的方法。我们提出的方法,名为对抗性提示微调(APT),在计算和数据效率方面都非常有效。我们进行了广泛的实验,涵盖了15个数据集和4种数据稀疏性方案(从1-shot到完整训练数据设置),以展示APT相较于手工设计的提示和其他最先进的适应方法的优越性。APT在分布内性能以及在输入分布偏移和跨数据集下的泛化能力方面表现出色。令人惊讶的是,通过简单地向提示中添加一个学习到的词,APT可以显著提高准确性和鲁棒性(ϵ = 4/255),与手工设计的提示相比分别平均提高了+13%和+8.5%。在我们的最有效设置中,改进进一步提高,分别达到了+26.4%的准确性和+16.7%的鲁棒性。

引言

请添加图片描述

当前对抗性鲁棒性的适应方法集中在模型权重上,即对抗性微调或图像像素上,即对抗性视觉提示。尽管文本输入对VLMs的准确性有显著影响,并且具有如VLMs简单支持(因此不需要修改架构)、参数效率高等优点,但以前很少研究文本提示在对抗性鲁棒性方面的应用。本工作旨在通过研究文本提示在对抗性鲁棒性中的作用,提出一种新的方法来调整文本提示以提高对抗性鲁棒性(见图2)。

请添加图片描述

文本提示如何影响CLIP的对抗性攻击和防御。我们的主要发现包括:

  1. 对抗性攻击的强度对生成对抗性示例时使用的提示很敏感
  2. 当用于攻击的提示与受害者模型在推理中使用的提示相同时,几乎所有最强的对抗性示例都是生成的
  3. CLIP的对抗性鲁棒性对用于推理的提示很敏感

前两个发现为如何提示强大的对抗性攻击提供了启示。最后一个发现促使我们提出对抗性提示微调(APT)来学习基于对抗性示例的鲁棒文本提示,以提高其对抗性鲁棒性。APT以软提示的形式参数化提示,即将类别嵌入与一系列可学习的向量连接起来(如图3所示)。这些向量构成了数据和类别的上下文描述。它们可以统一为所有类别共享,或者特定于每个类别。然后提出了三种不同的提示策略,以生成训练对抗性示例,可学习的向量被优化以最小化预测损失,如交叉熵。

对抗性鲁棒性的文本提示

CLIP回顾

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

算法1是一个伪代码,描述了对CLIP模型进行ℓ∞范数下的对抗性攻击的过程。这个过程包括了对图像和文本的扰动,以生成对抗性样本。

算法1 伪代码 for ℓ∞ adversarial attack on CLIP. 如果 perturb t 为真,则扰动文本。K 是步数。α (α′) 是图像 (文本) 扰动的步长。
1: function ATTACK(x, y, t, perturb t)
   2: δ = uniform(−ϵ, ϵ)  // 在图像像素上初始化扰动,范围在 -ϵ 到 ϵ 之间
   3: δ′ = 0  // 文本扰动初始化为 0
   4: for 1 → K do
   5: x′ = min(0, max(x + δ, 1))  // 将扰动后的像素值限制在 [0, 1] 范围内
   6: L = L(x′, t + δ′, y; θv, θt)  // 计算损失函数,包括图像、文本和真实标签
   7: δ = min(−ϵ, max(δ + α · SIGN(∇xL), ϵ))  // 更新图像扰动 δ 以最大化损失函数
   8: if perturb t then  // 如果需要扰动文本
   9: δ′ = δ′ + α′ · ∇tL  // 更新文本扰动 δ′ 以最大化损失函数
  10: end if
  11: end for
  12: return min(0, max(x + δ, 1))  // 返回最终扰动后的图像,确保像素值在 [0, 1] 范围内
  13: end function

这个算法的目的是通过逐步增加图像和文本的扰动来找到能够让模型做出错误预测的对抗性样本,同时确保这些扰动足够小,以至于对人类观察者来说几乎是不可察觉的。

方法

在这里插入图片描述

提示参数化

我们首先将文本提示中的上下文参数化为可学习的。类别 C j C_j Cj可以放置在上下文向量序列内的任意位置。为了简单起见,我们仅测试了三个位置:前、中、后。实证结果显示,这三个位置的结果没有区别,因此默认使用后端

我们采用了两种上下文参数化的变体:统一上下文(UC)和类别特定上下文(CSC)。在UC中,所有类别共享相同的上下文向量序列,因此无论使用多少类别,都只有一个上下文向量序列。相比之下,CSC为每个类别分配单独的上下文向量,允许不同类别拥有不同的、定制的上下文。总的来说,当训练数据有限时(如1-shot和4-shot),UC更有效;当训练数据相对丰富时(如16-shot和使用全部数据),CSC变体更有效。

提示优化

为了提高对抗性鲁棒性,我们使用对抗性训练来训练提示上下文:

在这里插入图片描述

其中,扰动 δ i δ_i δi是由训练中的对抗方实时生成的,如算法2所示。在提示 t t t内部,只有上下文向量具有可学习参数,而类别嵌入是恒定的,因此优化提示本质上是优化上下文向量。

在这里插入图片描述

算法2是一个伪代码,用于描述Adversarial Prompt Tuning (APT) 方法中的训练过程。APT方法旨在通过对抗性训练来优化文本提示,以提高模型的对抗性鲁棒性。

算法2 伪代码 of APT
1: 函数 TRAIN_ONE_ITERATION(x, y)
   2: t = G("[CLASS]")  // 将类别名转换为词嵌入
   3: t = [v, t]  // 将上下文向量和类别嵌入连接起来
   4: 如果 constant 为真
     5: t' = G("a photo of a [CLASS]")
     6: x = ATTACK(x, y, t', false)  // 使用固定的提示进行对抗性攻击,不扰动文本
   7: 否则如果 on-the-fly 为真
     8: x = ATTACK(x, y, t, false)  // 使用最新更新的提示进行对抗性攻击,不扰动文本
   9: 否则如果 perturbed 为真
    10: x = ATTACK(x, y, t, true)  // 使用最新更新的提示进行对抗性攻击,并扰动文本
    11: 结束如果
    12: L = L(x, t, y; θv, θt)  // 计算损失函数
    13: v = v - λ · ∇vL  // 更新上下文向量 v,λ 是学习率
    14: 结束函数

这个算法的目的是通过对抗性训练来调整文本提示,使其能够在对抗性攻击下提高模型的鲁棒性。通过在每次迭代中更新文本提示的上下文向量,模型学习如何更好地抵抗对抗性扰动。

关键设计选择是生成 δ i δ_i δi的算法。 δ i δ_i δi依赖于用于攻击的文本提示 t ′ t′ t,它可以与公式中的 t t t不同。我们提出了三种可能的提示策略,用于生成训练对抗性示例,分别如下:

在这里插入图片描述

策略constant将攻击的提示固定为预定义的一个,“a photo of a [CLASS]”。此策略为每张图片生成的扰动在训练期间是恒定的,无论推理提示如何,因为模型权重和攻击提示都是固定的。这使得对抗性图像特征可以重用,从而加速了提示调整过程。然而,它可能不会带来好处,甚至可能损害性能,因为扰动现在不再是动态对抗性的。

相比之下,策略on-the-fly基于最新更新的文本提示t从公式生成对抗性示例

最后,策略perturbed,也称为多模态对抗性攻击,在策略on-the-fly的基础上,同时扰动图像和文本提示,以进一步扩大对抗性损失,并希望生成更强的对抗性示例。

实验

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

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

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

相关文章

私生子女是否拥有平等的继承权

私生子女,是否拥有平等的继承权?在当今社会,随着人们思想观念的不断开放和变化,家庭结构也日益多样化。其中,私生子女的存在成为了一个不可回避的话题。那么,私生子女是否应该享有与婚生子女同等的继承权呢…

解读surging 的内存过高的原因

前言 对于.NET开发人员来讲,一个程序占用内存过高,是极其糟糕,是一款不合格的程序软件,.NET开发人员也不会去使用服务器垃圾收集器(ServerGarbageCollection),而是选用工作站垃圾收集器,而是对于一款低内存的程序更能给…

【丝滑的LangChain】我用python问gpt认不认识小范大人,它告诉我认识个der~

前言 嗨,大家好!我是海鸽。 《庆余年2》刚刚完结,热度不减,我忍不住好奇:我们的AI伙伴GPT,是否也对剧中那位机智过人的小范大人有所耳闻? 最近我们尝试了LangChain的调用,体验了一…

单目标应用:基于人工原生动物优化器APO的微电网优化(MATLAB代码)

一、微电网模型介绍 微电网多目标优化调度模型简介_vmgpqv-CSDN博客 参考文献: [1]李兴莘,张靖,何宇,等.基于改进粒子群算法的微电网多目标优化调度[J].电力科学与工程, 2021, 37(3):7 二、人工原生动物优化算法求解微电网 2.1算法简介 人工原生动物优化器&am…

NewStarCTF_RE(week1,2)

[NewStarCTF 2023 公开赛道]easy_RE ida 可能会把 一个数组或字符串拆开,可以通过计算地址,知道是一起的 也有的会藏在汇编窗口 Segments IDA的Segments窗口 :shiftf7 https://www.cnblogs.com/sch01ar/p/9477697.html ida 各种窗口也是需要…

C++ 10 之 引用

c10引用.cpp #include <iostream>using namespace std;int main() {// 引用的语法&#xff1a;类型 &别名 原名// int a 10;// int &b a; // 此时a,b指向同一块内存// cout << "a: " << a << endl;// cout << "b: &…

安装sqlserver2022 express

1、下载 SQL Server 下载 | Microsoft 双击sql2022-ssei-expr 2、安装 下载完成以后&#xff0c;将会出现以下对话框 &#xff1a; 点击【全新SQL Server独立安装或向现有安全添加功能】 下一步&#xff0c;下一步&#xff1a; 下一步&#xff1a; 下一步&#xff0c;这里我…

学习笔记——路由网络基础——路由优先级(preference)

1、路由优先级(preference) 路由优先级(preference)代表路由的优先程度。当路由器从多种不同的途径获知到达同一个目的网段的路由(这些路由的目的网络地址及网络掩码均相同)时&#xff0c;路由器会比较这些路由的优先级&#xff0c;优选优先级值最小的路由。 路由来源的优先…

【星海随笔】云解决方案学习日志篇(一) ELK,kibana,Logstash安装

心路历程 本来想最近再研究研究DPDK的。但是自己做一个东西很多时候没有回报。因为自己的低学历问题&#xff0c;类似工作的面试都没有。所以很多东西学了很快就忘了&#xff0c;没有地方可以用。 今天看到了一个大佬,除了发型外,很多想法还是很共鸣的。 Shay Banon 决定开始跟…

2024年6月11日 (周二) 叶子游戏新闻

万能嗅探: 实测 网页打开 某视频号、某音、某红薯、某站&#xff0c;可以做到无水印的视频和封面下载功能哦&#xff0c;具体玩法大家自行发挥吧。 WPS免登录一键修改器: 去除烦人的登录且能正常使用 日本一首部游戏《拼图世界》上架Steam 30年PS名作日本游戏厂商日本一的首部品…

Keil一键添加.c文件和头文件路径脚本--可遍历添加整个文件夹

最近想移植个LVGL玩玩&#xff0c;发现文件实在是太多了&#xff0c;加的手疼都没搞完&#xff0c;实在不想搞了就去找脚本和工具&#xff0c;基本没找到一个。。。。。。 主要是自己也懒得去研究写脚本&#xff0c;偶然搜到了一个博主写的脚本&#xff0c;原博客地址:https:/…

前端传递bool型后端用int收不到

文章目录 背景模拟错误点解决方法 背景 我前几天遇到一个低级错误&#xff0c;就是我前端发一个请求&#xff0c;把参数送到后端&#xff0c;但是我参数里面无意间传的布尔型&#xff08;刚开始一直没注意到&#xff0c;因为当时参数有十几个&#xff09;&#xff0c;但是我后…

CMS与AI的融合:构建万能表单小程序系统

引言&#xff1a; 随着人工智能技术的飞速发展&#xff0c;MyCMS作为一款功能强大的内容管理系统&#xff0c;通过集成AI技术&#xff0c;进一步拓展了其应用范围和智能化水平。本文将探讨如何利用MyCMS结合AI技术&#xff0c;构建一个能够将用户提交的万能表单数据转化为智能提…

【Nginx系列】基于请求头的分发

文章目录 一、HTTP请求头和响应头二、基于请求头的分发2.1、基于host分发2.2、基于域名的分发测试&#xff1a;2.3、基于开发语言分发2.4、基于浏览器分发2.5、基于源IP分发 &#x1f308;你好呀&#xff01;我是 山顶风景独好 &#x1f388;欢迎踏入我的博客世界&#xff0c;能…

上新即爆品?2024小红书爆款黄金公式

5月&#xff0c;小红书正式上线了平台级新品营销IP——“宝藏新品”&#xff0c;旨在消费愈发审慎的当下&#xff0c;帮助品牌破除不确定性&#xff0c;达成新品的高质量生长。 本期千瓜将进一步解读「宝藏新品」策略&#xff0c;帮助品牌推新呈现更多样化的成长可能。 强种草…

PyTorch中配置CUDA

第零部分&#xff1a; 首先查看CUDA版本 打开cmd&#xff0c;输入&#xff1a;nvidia-smi 可以看到CUDA的版本&#xff0c;后面安装的pytorch相关的库不高于这个版本的就行。 这里CUDA的版本是12.5&#xff0c;但是由于pytorch目前最高支持的cuda版本是12.1&#xff08;在下…

Spring Security实现用户认证四:使用JWT与Redis实现无状态认证

Spring Security实现用户认证四&#xff1a;使用JWT与Redis实现无状态认证 1 什么是无状态认证&#xff1f;2 什么是JWT&#xff1f;2.1 需要注意的事项2.2 JWT构成 3 Spring Security JWT实现无状态认证3.1 创建一个Spring Boot项目3.1.1 依赖3.1.2 Main3.1.3 application.ym…

劝你千万别碰CSGO/Steam游戏搬砖

添加链接描述 CSGO游戏搬砖这个项目&#xff0c;大家也不陌生了&#xff0c;所有人都在夸它如何如何好&#xff0c;如何如何赚钱&#xff0c;今天我们客观一点&#xff0c;不偏不倚&#xff0c;来聊聊CSGO游戏搬砖的弊端。 首先&#xff0c;这个项目最大的弊端就是不太适合大部…

pikachu靶场上的暴力破解

目录 一、暴力破解 基于表单的暴力破解 验证码绕过(on server) ​编辑 验证码绕过(on client) ​编辑 token防爆破? 二、暴力破解的相关知识点 (1)Burte Force&#xff08;暴力破解&#xff09;概述 (2)验证码的绕过原理 【验证码机制原理】 【客户端可能存在的安全…

debian系统apt 国内安装源

debian系统apt 国内安装源&#xff1a; 国内阿里镜像源&#xff1a; deb http://mirrors.aliyun.com/debian stable main non-free contrib deb-src http://mirrors.aliyun.com/debian stable main non-free contrib 打开源文件位置&#xff1a;/etc/apt/sources.list,原来的内…