网易首页 > 网易号 > 正文 申请入驻

对抗样本:20行Python代码让95%准确率的图像分类器彻底失效

0
分享至

下图展示了一个有趣的现象:在法国斗牛犬的图像上添加一小块对抗性补丁后,VGG分类器竟然以极高的置信度将其判定为足球。Grad-CAM可视化清楚地显示,模型的注意力完全从狗身上转移到了那块补丁——一个精心构造的小扰动就足以劫持整个决策过程。



95%准确率的模型可能不堪一击

ResNet、VGG、EfficientNet这些主流架构在ImageNet上动辄90%以上的准确率,看起来已经相当可靠。但这些模型隐藏着一个被多数工程师忽视的致命缺陷:它们极易被对抗样本愚弄。

改变一个像素,可能肉眼完全看不出区别,但分类器会彻底崩溃。本文会用FGSM(快速梯度符号法)演示如何制作对抗样本,并解释神经网络为何如此脆弱。

对抗样本到底是什么

简单说,对抗样本就是专门设计来欺骗模型的输入。和随机噪声不同,这种扰动是经过精确计算的——目标是在人眼察觉不到的前提下,最大化模型的预测误差。

这里存在一个悖论:模型可以正确识别成千上万张图片,但只要加上一点经过数学优化的噪声(像素值变化不到1%),它就会完全判断失误。

对抗攻击绝非学术界的自娱自乐。自动驾驶汽车可能把停车标志识别成限速标志;人脸识别系统可能被绕过;放射科AI可能给出错误诊断;有害内容可能躲过审核系统的检测。

问题的根源在于:分类器学到的是统计层面的捷径,而非真正的语义理解。高准确率和高安全性是两回事。

FGSM:简单却致命的攻击方法

Ian Goodfellow等人在2015年提出的FGSM至今仍是最经典的对抗攻击之一。它的原理出奇地简单,但恰恰暴露了深度神经网络的根本弱点。

数学原理

给定分类器和输入图像,FGSM计算一个扰动把图像推向错误分类的方向。具体做法是沿着损失函数梯度的方向移动每个像素,用epsilon参数控制扰动幅度,确保改动在视觉上不可察觉。

FGSM为何有效

深度网络虽然有非线性激活函数但在局部表现出近似线性的特性。每个像素上的微小变化会在高维空间中累积,最终在输出空间产生巨大偏移。梯度恰好指明了这个最有效的攻击方向——随机噪声做不到的事情,梯度对齐的噪声可以轻松做到。

上图就是是Goodfellow等人最初展示的结果:在熊猫图像上叠加梯度符号计算得到的微小扰动,模型就会以极高置信度将其误判为长臂猿。两张图片在人眼看来毫无差别,但神经网络的判断却天差地别。

Python实战:构建你的第一个对抗样本

下面用PyTorch和预训练的ResNet-50从零实现一个对抗样本。

先安装依赖:

pip install torch torchvision matplotlib numpy pillow

导入必要的库:

import torch
import torch.nn.functional as F
import torchvision.models as models
import torchvision.transforms as transforms
import matplotlib.pyplot as plt
import numpy as np
from PIL import Image

第一步:加载分类器

用ResNet-50作为目标模型。这个架构在生产环境中很常见,而且支持梯度计算:

model = models.resnet50(pretrained=True)
model.eval()

第二步:准备图像

按ImageNet标准预处理输入图像:

transform = transforms.Compose([
transforms.Resize((224, 224)),
transforms.ToTensor(),
])
img = Image.open("your_image.jpg").convert("RGB")
x = transform(img).unsqueeze(0)
x.requires_grad = True

注意requires_grad=True这行。没有它就无法计算梯度,对抗攻击也就无从谈起。

第三步:获取原始预测

跑一次前向传播,看看模型本来会给出什么分类:

logits = model(x)
pred = logits.argmax(dim=1)
print(f"Original prediction: {pred.item()}")

正常情况下模型应该能正确分类。

第四步:FGSM攻击

核心代码如下:

label = pred
loss = F.cross_entropy(logits, label)
loss.backward()
epsilon = 0.01 # perturbation budget
perturbation = epsilon * x.grad.sign()
x_adv = x + perturbation
x_adv = torch.clamp(x_adv, 0, 1)

这段代码做了什么?计算损失对输入像素的梯度,取符号得到方向,乘以epsilon控制幅度,加到原图上就得到对抗样本。最后用clamp保证像素值在合法范围内。

第五步:检验效果

用同一个模型测试对抗图像:

logits_adv = model(x_adv)
pred_adv = logits_adv.argmax(dim=1)
print(f"Adversarial prediction: {pred_adv.item()}")

大多数情况下预测结果会完全不同。图像看起来一样,分类却天壤之别。

第六步:可视化

把原图、对抗图、噪声模式放在一起对比:

def show_adversarial_attack(original, adversarial, perturbation):
fig, axes = plt.subplots(1, 3, figsize=(15, 5))
axes[0].imshow(original)
axes[0].set_title("Original Image")
axes[0].axis("off")
axes[1].imshow(adversarial)
axes[1].set_title("Adversarial Image")
axes[1].axis("off")
axes[2].imshow(perturbation, cmap="gray")
axes[2].set_title("Noise Pattern (10x Amplified)")
axes[2].axis("off")
plt.tight_layout()
plt.show()
orig_np = x.detach().squeeze().permute(1, 2, 0).numpy()
adv_np = x_adv.detach().squeeze().permute(1, 2, 0).numpy()
noise_np = (adv_np - orig_np) * 10
show_adversarial_attack(orig_np, adv_np, noise_np)

噪声模式放大10倍后看起来像电视雪花。人眼根本分辨不出两张图的区别,但神经网络却认为它们是完全不同的物体。

神经网络为何如此脆弱

理解这个问题需要从三个角度切入。

高维几何:一张224×224的RGB图像有150,528个维度。在这么高的维度里每个维度上的微小扰动累加起来就是巨大的距离。

局部线性:尽管激活函数是非线性的,深度网络在数据点附近的小邻域内表现得非常线性,这让基于梯度的攻击特别有效。

非泛化特征:研究发现模型大量依赖那些与标签相关、但与人类感知无关的统计模式。对抗样本正是在利用这些"捷径特征"。

一个令人不安的事实:深度学习模型优化的目标是训练集上的准确率,而不是对扰动的泛化性。

一些限制需要说明

FGSM只是单步攻击算比较弱的。迭代方法如PGD和Carlini-Wagner攻击力更强也更难防御。

本文的演示假设攻击者能拿到模型权重和梯度,属于白盒场景。现实中攻击者可能只能观察模型输出,需要用黑盒攻击技术或者利用对抗样本的迁移性。

数字扰动只是一种形式。物理世界的对抗样本——比如贴在物体上的特制贴纸——可以在不同光照和角度下持续欺骗视觉系统。

防御手段确实存在:对抗训练、输入预处理、集成方法、认证防御等等。但这些方法往往要牺牲准确率,而且没有哪个能提供完全的保护。

防御策略

几种主流防御思路:

对抗训练把对抗样本混入训练数据,让模型学会应对扰动。输入变换用JPEG压缩、随机缩放、降低位深等预处理来破坏对抗扰动。集成防御结合多个模型的预测或引入随机性来增加攻击难度。认证防御用随机平滑等技术在一定范围内提供数学上的泛化性保证。检测方法则训练专门的模型来识别对抗样本。

每种方法都有代价,在泛化性、准确率、计算开销之间做权衡。

总结

对抗样本揭示的是统计优化和人类感知之间的根本鸿沟。深度学习擅长模式匹配,但它并不理解图像的语义。

对抗样本不会消失。这不是可以修复的bug而是当前深度学习架构的内在属性。随着AI在关键基础设施中的应用越来越广,理解和缓解对抗脆弱性变得愈发重要。

泛化性应该和准确率、公平性、效率一样,成为一等公民级别的工程需求。否则,高准确率带来的只是虚假的安全感。

https://avoid.overfit.cn/post/935d5167003748db859452026a44b056

作者: Sarthakvyadav

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
凌晨五点的广东街头,一名男子走向正在巡逻的民警……

凌晨五点的广东街头,一名男子走向正在巡逻的民警……

环球网资讯
2026-01-23 09:06:11
炸裂!中粮集团春招公告,学历从大专起步,外语水平居然不设限…

炸裂!中粮集团春招公告,学历从大专起步,外语水平居然不设限…

火山诗话
2026-01-22 10:40:46
带鱼被热议!医生发现:糖尿病人常吃带鱼,坚持半年或有4个改善

带鱼被热议!医生发现:糖尿病人常吃带鱼,坚持半年或有4个改善

路医生健康科普
2026-01-20 13:35:02
金昊,维持死刑!

金昊,维持死刑!

中国新闻周刊
2026-01-22 17:30:08
我爸要娶楼下捡废品的阿姨,我掏出一叠资料:她儿子还在坐牢呢!

我爸要娶楼下捡废品的阿姨,我掏出一叠资料:她儿子还在坐牢呢!

晓艾故事汇
2026-01-18 16:04:44
四川绵阳四〇四医院原党委书记周云被“双开”

四川绵阳四〇四医院原党委书记周云被“双开”

界面新闻
2026-01-23 18:04:33
2026车主注意!养路费不绑油价了,油电都得按公里缴

2026车主注意!养路费不绑油价了,油电都得按公里缴

音乐时光的娱乐
2026-01-21 12:15:06
美高官急呼:别抢石油了!特朗普还在瞎折腾,中国已砸千亿搞科技

美高官急呼:别抢石油了!特朗普还在瞎折腾,中国已砸千亿搞科技

墨兰史书
2026-01-24 04:00:03
决赛预计首发:安圣再憋大招!U23国足2位置存悬念 谨防日本4猛将

决赛预计首发:安圣再憋大招!U23国足2位置存悬念 谨防日本4猛将

我爱英超
2026-01-23 06:33:30
2026 丙午火马年,高僧:“单春逢赤马,这 3 个生肖需躲星”!

2026 丙午火马年,高僧:“单春逢赤马,这 3 个生肖需躲星”!

古怪奇谈录
2026-01-17 15:27:11
不要轻易做手术!医生提醒:65岁后,这4类手术可尽量避免

不要轻易做手术!医生提醒:65岁后,这4类手术可尽量避免

路医生健康科普
2026-01-23 10:10:57
后续!“性商教母”网红周媛被封禁:授课内容曝光,令人脸红,网友一阵叹息!50岁的她收割中年女性2400万

后续!“性商教母”网红周媛被封禁:授课内容曝光,令人脸红,网友一阵叹息!50岁的她收割中年女性2400万

文字里拾光
2026-01-22 20:24:34
最后的疯狂,开始了!

最后的疯狂,开始了!

金牛远望号
2026-01-23 20:16:51
刘凯任白银市委书记,河南濮阳人,已在甘肃履职超14年

刘凯任白银市委书记,河南濮阳人,已在甘肃履职超14年

极目新闻
2026-01-23 14:53:57
抓紧洗晒!河南“晴天卡”仅剩2天,新一轮雨雪锁定周日,或含冻雨

抓紧洗晒!河南“晴天卡”仅剩2天,新一轮雨雪锁定周日,或含冻雨

鲁中晨报
2026-01-23 07:07:02
什么是性成瘾?患者自述:比烟瘾、酒瘾厉害多了,比戒毒还难

什么是性成瘾?患者自述:比烟瘾、酒瘾厉害多了,比戒毒还难

泠泠说史
2025-10-30 15:20:45
保护自己最好的方法:所有舒服的关系,都源于对彼此没有期待

保护自己最好的方法:所有舒服的关系,都源于对彼此没有期待

杏花烟雨江南的碧园
2026-01-18 13:06:24
巴萨连续8场在客场或中立场比赛,追平队史纪录

巴萨连续8场在客场或中立场比赛,追平队史纪录

懂球帝
2026-01-24 04:17:30
外网网友太有才!这 P 图简直是维多利亚 “本色出演”

外网网友太有才!这 P 图简直是维多利亚 “本色出演”

述家娱记
2026-01-23 10:04:59
原来花小钱就能过得舒服很多,网友:不要心疼电费,该省省该花花

原来花小钱就能过得舒服很多,网友:不要心疼电费,该省省该花花

另子维爱读史
2026-01-23 20:02:10
2026-01-24 04:40:49
deephub incentive-icons
deephub
CV NLP和数据挖掘知识
1899文章数 1443关注度
往期回顾 全部

科技要闻

TikTok守住了算法"灵魂" 更握紧了"钱袋子"

头条要闻

疑在达沃斯受挫 79岁的特朗普转发超80条帖子发泄怒气

头条要闻

疑在达沃斯受挫 79岁的特朗普转发超80条帖子发泄怒气

体育要闻

杜兰特鏖战44分钟累瘫 轰36+7却致命失误

娱乐要闻

演员孙涛澄清闫学晶言论 落泪维护妻子

财经要闻

2026年,消费没有新故事?

汽车要闻

主打家庭大六座 奕境首款SUV将北京车展亮相

态度原创

教育
时尚
亲子
艺术
旅游

教育要闻

天大在津招生680人!历史新高必看

今日热点:车银优代言广告被隐藏;《巅峰对决》主演担任米兰冬奥会火炬手……

亲子要闻

“一个桃就拐走了!”宝妈在水果店频频拒绝女儿,评论区太真实!

艺术要闻

人像摄影背后的真相,模特并不是全部!

旅游要闻

南国藏雪境!酉阳清华林场的冰雪奇缘,藏着重庆冬游的新答案

无障碍浏览 进入关怀版