针对视觉语言模型的分类器逃逸攻击

3 阅读10分钟

更新针对视觉语言模型的分类器逃逸技术

2026年1月28日

作者:Joseph Lucas

AI生成摘要

基于Transformer的视觉语言模型(VLM),如PaliGemma 2,将SigLIP图像编码与文本令牌集成,用于联合多模态处理,这相较于传统分类器极大地扩展了生成输出空间。针对VLM的对抗性攻击可以利用开放盒子优化技术,例如投影梯度下降(PGD),来制造肉眼几乎不可察觉的像素扰动或局部的对抗性补丁,从而操纵模型输出,甚至针对原始类别集之外的任意令牌。VLM集成系统的鲁棒性不仅取决于核心模型属性,还取决于全面的输入/输出清洗、威胁建模和对抗性训练,尤其是在攻击者可能仅控制部分视觉输入的环境中部署时,需要采用“变换期望”等技术来提高攻击韧性和系统防御能力。

AI生成的内容可能无法完整概括信息。请验证重要信息。了解更多


引言

AI架构的进步解锁了多模态功能,使Transformer模型能够在同一上下文中处理多种形式的数据。例如,视觉语言模型(VLM)可以根据图像和文本的组合输入生成输出,使开发者能够构建解读图表、处理摄像头信息或操作传统人机界面(如桌面应用)的系统。在某些情况下,这种额外的视觉模态可能会处理外部的、不可信的图像,而图像处理机器学习系统的攻击面已有大量先例。在本文中,我们将把这些历史悠久的思路应用于现代架构,帮助开发者了解视觉领域中存在的各种威胁与缓解措施。

视觉语言模型

VLM扩展了由大型语言模型(LLM)普及的Transformer架构,使其能够同时接受文本和图像输入。VLM可以通过微调来执行图像描述、目标检测与分割,以及通过将图像和文本组合成一组由LLM处理的令牌来回答关于图像的问题。一个广泛使用的开源示例是PaliGemma 2。如图1所示,PaliGemma 2使用SigLIP将图像编码并投影到与Gemma 2兼容的令牌空间,然后将图像令牌与文本令牌连接起来,再传递给Gemma。

图1. PaliGemma 2架构

如果我们控制了图像输入,能对LLM施加多大影响?能否将经典的对抗性图像生成技术适配到VLM上?如果可以,这将影响我们如何保护那些将这些VLM集成到控制流程或物理系统中的安全性。

逃逸图像分类器

2014年,研究人员发现,人眼无法察觉的像素扰动可以用来控制图像分类模型的输出。图2来自开创性论文《神经网络的奇妙特性》,展示了左侧的图像(每张都被明确且正确地分类)如何通过中间列的像素值(为便于说明而放大)进行扰动,生成右侧的图像,这些图像全部被分类为“鸵鸟”。这个想法后来被称为分类器逃逸。

图2. 用于改变图像分类的对抗性像素扰动

随着对抗性机器学习领域的发展,研究人员开发了越来越复杂的攻击算法和开源工具。大多数这些攻击依赖于直接访问模型梯度(开放盒子攻击)或通过采样方法近似梯度(封闭盒子攻击),以制造既有效又“几乎不可察觉”的扰动。一种简单的技术是投影梯度下降(PGD),它将对抗性示例的生成形式化为一个带约束的优化问题。PGD迭代地沿梯度方向微调输入,同时确保扰动保持微小以限制其可见性。

随着研究界越来越多地追求现实世界的相关性,焦点转向了威胁模型本身。在实践中,攻击者很少能对整个图像进行像素级的访问。相反,他们可能只能物理地修改物体的某个部分,同时受可见性约束较小。这导致了如图3所示的对抗性补丁的发展,攻击者优化图像的某个局部区域,该区域可以被打印出来并物理地应用于现实世界。

图3. 添加一个算法生成的补丁将分类从“香蕉”翻转为“烤面包机”

现在,让我们将这些想法适配到VLM上。

为VLM构建对抗性图像

我们将专注于一个特定场景:一个VLM处理一张红色交通灯的图像(图4)。VLM的提示是固定的:“我应该停车还是通行?”,但攻击者对输入图像有一定程度的控制。我们只关注开放盒子攻击,即攻击者在开发过程中可以访问完整的模型和输入提示,以生成他们的对抗性输入。

图4. 未修改的交通灯

在以下示例中,我们针对此通用推理设置进行测试:模型被初始化,定义一个处理器来处理输入格式,并定义一个固定的系统提示。

model_id = "google/paligemma2-3b-mix-224"
model = PaliGemmaForConditionalGeneration.from_pretrained(model_id, dtype=torch.bfloat16, device_map="cuda").eval()
processor = PaliGemmaProcessor.from_pretrained(model_id, use_fast=True)

prompt = "\(answer en should I stop or go?" # 格式符合PaliGemma预期

def get_output(image): # 攻击者控制的图像
    prompt = "\(answer en should I stop or go?"
    model_inputs = processor(text=prompt, images=image, return_tensors="pt").to(torch.bfloat16).to(model.device)
    input_len = model_inputs["input_ids"].shape[-1]
    
    with torch.inference_mode():
        generation = model.generate(**model_inputs, max_new_tokens=100, do_sample=False)
        generation = generation[0][input_len:]
        decoded = processor.decode(generation, skip_special_tokens=True)
    return decoded

与预期一致,使用未修改的图像时,VLM生成“stop”,如图5所示。

图5. 对照测试显示模型生成了文本“stop”

交通灯图像由SigLIP嵌入并投影到令牌空间。然后将这些令牌与“(answer en should I stop or go?”的令牌连接起来,再传递给Gemma,Gemma返回一个令牌:“stop”。在LLM中,我们可能会尝试某种提示注入来覆盖系统指令,但在这个场景中,我们只能控制图像,而文本是固定的。

像素扰动

在攻击传统图像分类模型时,使用模型的概率输出来衡量损失。修改像素值以降低图像被正确分类的可能性(非定向攻击),并可选择性地最大化输出为特定类别的可能性(定向攻击)。类似地,对于PaliGemma 2,我们可以使用令牌的logits,因为采用贪心采样时,模型总是选择最可能的令牌。使用PGD针对PaliGemma生成对抗性样本的核心思想是:

  • 使用分词器识别期望输出和不期望输出。在这里,我们想激励生成“go”并抑制生成“stop”,因此获取它们的令牌ID。
stop_id = processor.tokenizer("stop", add_special_tokens=False).input_ids[0]
go_id = processor.tokenizer("go", add_special_tokens=False).input_ids[0]
  • 我们可以访问模型的输出logits,因此可以查看“stop”和“go”这两个输出令牌的相对可能性。
logits = outputs.logits
next_token_logits = logits[:, -1, :]
logit_stop = next_token_logits[:, stop_id]
logit_go = next_token_logits[:, go_id]
  • 我们可以将损失函数定义为期望输出与非期望输出的logits之差。这个损失函数衡量了当前图像的好坏程度。
loss = -(logit_go - logit_stop).mean()

使用这些基本组件,我们运行一个优化循环来生成一个覆盖图像的掩码。随着循环的进行,我们可以监控对抗性图像中“stop”与“go”的logits。我们发现,只需很少的扰动,“go”的logits就能迅速变得大于“stop”。这表明,修改后的交通灯图像在通过PaliGemma 2时将输出“go”,如图6所示。

Step 4/20 | loss=1.3125 | logit_stop=13.125 | logit_go=11.812
Step 8/20 | loss=-4.1875 | logit_stop=9.062 | logit_go=13.250
Step 12/20 | loss=-6.5938 | logit_stop=6.969 | logit_go=13.562
Step 16/20 | loss=-7.8125 | logit_stop=5.938 | logit_go=13.750
Step 20/20 | loss=-8.1250 | logit_stop=5.562 | logit_go=13.688

图6. 几乎无法察觉的像素修改将输出从“stop”翻转为“go”

与VLM的区别

传统的图像分类器仅限于一组固定的图像类别,但随着VLM的出现,我们进入了生成式时代,输出可以被操纵到更广泛的分布中。在这个交通灯场景的简单传统范式中,可能有两个类别:“stop”和“go”,每个可能的输入都会被归类到这两个类别中。

现在,输出可以是Gemma LLM能够输出的任何内容。从功能上讲,我们是将模型视为一个分类器,其类别数量与不同令牌的数量一样多。因此,使用与之前相同的攻击生成过程,但针对“eject”而不是“go”进行优化,我们可以生成一个应用程序设计者可能未曾考虑过的输出(图7)。

图7. 几乎无法察觉的像素修改将输出从“stop”翻转为“eject”

当设计一个可能处理不可信图像的系统时,开发者应考虑系统其余部分对意外输出的鲁棒性如何。端到端系统的安全性和鲁棒性特性远远超出了核心模型的特性,并包括输入和输出清洗、安全护栏以及安全控制系统。

扩展攻击

在许多情况下,攻击者可能只能访问视觉环境的一部分,而无法修改整个图像的像素值。这在摄像头的场景中很容易理解,对于计算机使用代理也是如此,攻击者可能只对屏幕截图的一部分具有写入权限(例如,浏览器中显示的横幅广告)。在这些情况下,您可以通过仅优化受控像素来生成对抗性补丁,如图8所示。在此示例中,对抗性输入是在一个白色方块上生成的,而不是作为扰动掩码,以便更好地模拟物理贴纸。

图8. 一张贴纸将输出从“stop”翻转为“go”

这些补丁很脆弱,攻击的成功在很大程度上取决于它们的放置位置、光照条件、摄像头噪点、阴影以及其他难以控制的变量。在实践中,这种方法产生的补丁非常脆弱,以至于不太可能作为物理贴纸攻击成功,因为放置必须达到像素级完美、对齐等。为了构建更鲁棒的攻击,可以将“变换期望”扰动添加到训练循环中,例如随机移动或旋转图像、调整亮度,以及在生成过程中添加其他现实噪声。

攻击者还应考虑其优化约束条件。例如,在计算机使用场景中,攻击者期望输入由完全自主的系统处理,“人类不可察觉”可能就无关紧要了。攻击者施加的约束越少,他们成功的可能性就越大。

了解更多

VLM扩展了LLM现有的能力和功能,解锁了许多有用的多模态应用,包括机器人技术和计算机使用代理。图像是VLM提示的一部分,可以像不可信的文本一样用于操纵模型输出。了解攻击和防御图像分类器及嵌入模型的历史,有助于识别风险并为构建鲁棒系统提供缓解措施信息。图像并不是被引入语言模型的唯一额外模态,历史上对抗性机器学习研究还涉及视频、音频等模态。安全团队应审查这些较旧的技术,以评估并提高其多模态AI应用程序的韧性。

由于对抗性示例可以通过编程方式生成,因此应该用它们来增强训练、评估和基准测试,以提高最终系统的鲁棒性。在构建具有VLM的代理系统时,应继续根据其自主性水平和威胁建模进行评估。FINISHED