对抗样本攻击详解:如何让AI模型产生错误判断

简介: 对抗样本是通过微小扰动欺骗机器学习模型的输入,人眼难辨却致模型高置信度误判。其原理源于模型线性特性,如FGSM利用梯度符号生成扰动。此类攻击具迁移性,可跨模型生效,但亦可用于对抗训练,提升模型鲁棒性与泛化能力。

精心构造的输入样本能让机器学习模型产生错误判断,这些样本与正常数据的差异微小到人眼无法察觉,却能让模型以极高置信度输出错误预测。这类特殊构造的输入在学术界被称为对抗样本(adversarial examples)。

模型将右侧图像判定为长臂猿,置信度高达99.3%。

人眼看不出这两张熊猫图像有任何区别,而模型对左图的预测是熊猫,置信度57.7%显得不太确定。中间那张看起来像噪声的图案其实是经过精心设计的扰动掩码,将其乘以一个很小的系数0.007后叠加到原图上。肉眼完全察觉不到变化,但却可以让模型以99.3%的置信度认定右图是长臂猫的图像。

这个现象说明模型并未真正理解图像的本质结构。模型构建的是一种内部表征来描述自然图像,但分布外的数据点就能轻易突破这种表征的局限。

2014年Christian Szegedy做过一个有趣的实验:他从CIFAR-10数据集选了几张图片,试图用反向传播把它们逐步转换成飞机,想观察图像是如何一步步接近飞机的样子。

结果的图像几乎没什么变化,但右下角这张在视觉上依然是辆车的图片,模型却近乎百分百确信它是架飞机。

视觉模型的输入维度通常很高,每个像素的微小改变累积起来会在表征向量中产生显著变化,用L₂范数可以直观看出这种累积效应。

几乎所有机器学习模型都存在对抗攻击的脆弱性:逻辑回归、softmax回归、支持向量机这类线性模型特别容易被精心设计的样本误导;相比之下径向基函数(RBF)这种高度非线性的模型抵抗力要强一些。

多数机器学习模型的线性特性恰恰为生成对抗样本做了最好的理论铺垫,RNN和LSTM用加法操作来捕捉时序数据的流动,加法本质上是线性的;而ReLU、maxout这些激活函数让深度神经网络的输入输出关系呈现分段线性特征。

进一步看这个过程:

像素空间里的扰动虽小,但经过权重矩阵的放大在嵌入空间产生的效应就明显了,嵌入空间的变化量取决于权重向量与扰动向量的点积。

要让这个点积最大化,就得沿着特定方向移动,或者准确说是沿着权重向量的符号方向。

快速梯度符号法(FGSM)

优化函数可以这样定义,把损失函数改写成泰勒级数的一阶展开形式:

为什么要最大化损失?因为我们的目标是欺骗模型,所以要反着优化的方向走,ε sign()给出了能产生最大更新的方向。

为什么用最大范数而不是别的范数?因为我们的目的是稍微改变输入,并且要控制在人能够感知阈值之下。最大范数让扰动的控制变得精确,这跟真实传感器的情况比较接近。

将最大范数约束在ε以内,就能保证改变幅度不被肉眼发现。这就是快速梯度符号法(Fast Gradient Sign Method, FGSM)的核心思路:利用梯度的符号信息来确定移动方向。

FGSM的可视化分析

画出数据点周围的决策边界能直观展示FGSM的工作机制。

假设沿着FGSM方向和它的正交方向移动,移动范围限制在ε最大范数边界内,用这两个向量把决策空间切成一个二维子空间。

取几个数据点把它们周围的决策边界画出来,白色区域代表正确类别,有色区域对应错误标签。

沿FGSM方向移动会进入错误标签的区域。然后加入随机噪声相当于往随机方向移动:

随机方向的移动并不改变数据点的类别归属,这证明了一点:对抗样本不等于随机噪声

对抗子空间的维度是可以计算的,它表示能用来生成对抗样本的正交方向数量。这些向量和梯度向量之间有较大的点积。

平均下来这些子空间大约有25个正交向量。

目标类别的一步攻击

另一种思路是直接最大化某个特定目标类别的概率:让输入朝着能够最小化目标标签损失的方向移动。换句话说就是强迫模型认为损失最小的标签就是目标标签,从而输出这个标签。

更新规则写成这样:

MNIST数据集上的实验

训练一个模型来区分MNIST数据集里的数字3和7。

这是个单层权重的简单线性分类器,权重本身就可以当作梯度用。接下来取权重的符号。

这些权重决定了分类结果。把权重的符号加到样本上或者从样本中减去。

人眼能轻松过滤掉这些图像的背景噪声,但模型会认真对待每一个权重。权重为正时输出7,权重为负时输出3。这些生成的对抗样本彻底瓦解了分类器的判别能力。

对抗样本的迁移性

机器学习追求的是模型在不同数据集上都能保持稳定表现,这要求模型权重具备泛化能力。既然权重要泛化那基于这些权重生成的对抗样本自然也会泛化。

不同数据集应该产生相似的权重分布,可以量化模型间的迁移能力:

SVM依赖数据特性所以用一个SVM生成的对抗样本很容易攻击另一个SVM,而逻辑回归生成的对抗样本有87.42%的概率能欺骗决策树。

作为攻击者,如果不清楚目标模型的具体架构,可以用模型集成的方式来生成对抗样本。就算拿不到模型的训练数据标签,也能利用模型的输出来构造对抗样本。

有意思的是,人脑也会遭遇类似的"对抗攻击"。下面这个例子挺经典:

这些其实是同心圆,但因为方块的排列方向大脑会把它们解读成螺旋。

对抗训练提升泛化性

用对抗样本训练深度神经网络能起到正则化的作用,还能改善性能。

对抗训练确实能提升DNN的表现,损失函数可以重新表述成这种形式:

不过严格的线性模型用对抗样本训练不会有什么改进。还可以修改损失函数,给对抗样本分配更高的权重:

需要明确一点,这些做法都是在和对抗攻击做斗争。要降低对抗攻击的成功率,需要强大的优化算法配合严格的非线性模型架构。

参考文献

Goodfellow, I. J., Shlens, J., & Szegedy, C. (2014). Explaining and Harnessing Adversarial Examples. ArXiv. /abs/1412.6572

Goodfellow, I. J., Mirza, M., Xu, B., Ozair, S., Courville, A., & Bengio, Y. (2014). Generative Adversarial Networks. ArXiv. /abs/1406.2661

Tramèr, F., Papernot, N., Goodfellow, I., Boneh, D., & McDaniel, P. (2017). The Space of Transferable Adversarial Examples. ArXiv. /abs/1704.03453

https://avoid.overfit.cn/post/815495f184a049389d702becdb972067

作者:Kavishka Abeywardana

目录
相关文章
|
3月前
|
机器学习/深度学习 存储 编解码
神经辐射场NeRF入门:3D视图合成的原理与PyTorch代码实现
NeRF(神经辐射场)用多层感知机将5D坐标(位置+视角)映射为颜色和密度,通过过拟合单个场景实现高质量新视角合成。结合位置编码与体积渲染,以隐式方式表征三维场景,仅需少量图像即可重建精细结构。
357 3
神经辐射场NeRF入门:3D视图合成的原理与PyTorch代码实现
|
Docker 容器
【Docker系列】Docker-compose 安装neo4j
neo4j 数据迁移有很多种方案,这里选择dump文件的方式迁移,该方式需要停止neo4j 服务,然后执行迁移命令,但是使用官方镜像部署的neo4j,进入容器内使用neo4j stop会提示服务没有运行。1,准备好迁移的文件dump文件,放置到运行着neo4j容器挂载映射的。退出临时容器,启动原neo4j容器。4.0.0版本 相关脚本,可忽略。neo4j 服务进程kill 掉。,打开web界面验证数据导入成功。,直接就可以看到效果,如下。,会发现容器直接退出了。新的临时neo4j 容器。
1523 0
【Docker系列】Docker-compose 安装neo4j
|
3月前
|
机器学习/深度学习 人工智能 数据可视化
对抗样本:20行Python代码让95%准确率的图像分类器彻底失效
本文揭示深度学习模型在高准确率背后隐藏的脆弱性:通过FGSM等方法生成的微小对抗扰动,可令VGG、ResNet等模型将法斗误判为足球。Grad-CAM显示模型注意力被补丁劫持,暴露出其依赖统计捷径而非语义理解的本质。
162 8
对抗样本:20行Python代码让95%准确率的图像分类器彻底失效
|
3月前
|
机器学习/深度学习 算法 PyTorch
让 Q 值估计更准确:从 DQN 到 Double DQN 的改进方案
本文深入剖析DQN的过估计偏差根源,系统讲解Double DQN(解耦动作选择与评估)、Dueling DQN(分离状态值与动作优势)、优先经验回放(按TD误差智能采样)三大核心改进,并用PyTorch从零实现,最后对比CleanRL专业实现,助你扎实掌握强化学习进阶技巧。
240 2
让 Q 值估计更准确:从 DQN 到 Double DQN 的改进方案
|
1月前
|
人工智能 安全 Shell
【从零手写 ClaudeCode:learn-claude-code 项目实战笔记】(2)Tool Use (工具使用)
本章详解如何为AI Agent添加专用工具(如read/write/edit_file),通过dispatch map机制实现“加工具只加handler”,无需改动主循环;引入safe_path路径沙箱提升安全性与鲁棒性,告别bash滥用。配套代码清晰易懂,新手友好。
584 0
@Inherited
@Inherited用于注解,使子类继承父类中标记该注解的元数据;但仅在类继承中有效,接口继承或实现时均不继承注解。
|
4月前
|
存储 负载均衡 算法
负载均衡算法
本文介绍五种负载均衡算法:随机、轮询、最小活跃数、源地址哈希与一致性哈希,涵盖适用场景及实现原理,并结合代码与图示解析其调度机制,适用于分布式系统流量分配设计参考。
 负载均衡算法
|
4月前
|
存储 人工智能 NoSQL
示例模块及逐字稿
基于Ollama+DeepSeek+MaxKB等技术,构建医疗、金融、教育、电商领域的AI智能体,实现智能诊断、理财顾问、个性化学习、智能推荐等功能,提升行业效率与用户体验。
|
3月前
|
安全 前端开发 NoSQL
【RuoYi-SpringBoot3-Pro】: 三级等保安全配置
RuoYi-SpringBoot3-Pro 内置三级等保安全配置,涵盖密码策略、登录控制、IP 黑名单、会话管理等功能,通过动态参数实现无需重启的灵活管控,全面满足国家信息安全等级保护三级要求,提升系统安全性与合规性。
351 0
|
4月前
|
存储 NoSQL 关系型数据库
MongoDB相关概念
MongoDB适用于高并发、海量数据、高扩展性场景,如社交、游戏、物流、物联网等。适合数据量大、读写频繁、事务要求不高的应用,满足快速迭代与水平扩展需求,是应对“三高”挑战的理想选择。