对抗样本(Adversarial Examples):加一点人眼看不见的噪点,AI 就把熊猫认成长臂猿

2013年,Szegedy 等人发现了一个诡异的现象:神经网络会对一些几乎看不出区别的图片产生完全不同的分类。而真正让这个现象“出圈”的,是 2014 年 Goodfellow 等人的论文——他们用一张熊猫照片演示了对抗样本:加上一点点噪声,模型就以极高置信度把它认成了长臂猿。人眼看,这还是一只熊猫。

AI technology illustration

这个结果让我困惑了很久。我最早以为,AI 认错是因为训练数据不够多,或者模型过拟合了。毕竟,一张图片加了噪点,在像素层面确实变了。但问题是,那点噪点对人眼来说根本无关紧要,为什么对神经网络来说就翻天覆地?

高维空间里的线性陷阱

直到我看到 Goodfellow 的论文,才把这事想明白。这篇论文给了一个反直觉的解释:神经网络在高维空间里,表现得像一个线性模型

想象你有一个简单的线性分类器,输入是 x,权重是 w,输出是 w·x。现在你给 x 加上一个很小的扰动 η,那么输出变化就是 w·η。如果 η 的每个分量都只有 0.01,但维度 d 很大,那么 w·η 可能累积成一个很大的数——因为每个分量都在同方向上加力,哪怕每个力都很小,加起来也能推翻整个判断。

为什么人眼不敏感?因为我们感知的是物体的整体形状、纹理、语义,而神经网络在像素级别上做决策。一个像素的改变,在人类看来只是噪声,但在模型的高维特征空间里,可能把样本推到了决策边界的另一侧。就像你在一张纸上画了一条线,一只蚂蚁刚好站在线上,你吹一口气就能让它跑到另一侧——蚂蚁的世界只有那个平面,而你的世界有三维。

神经网络的每个神经元,本质上就是一大堆线性变换加上一个非线性激活。在局部,它跟线性模型差不多。所以,当你在高维空间里朝某个特定方向轻轻推一下,它就能从一个分类滑到另一个分类。

Goodfellow 等人把这种攻击形式化成一个非常简单的公式:
xadv = x + ε · sign(∇x J(θ, x, y))
其中 ∇x J 是损失函数对输入的梯度,sign 取符号,ε 是扰动幅度。

十行代码生成一个对抗样本

我最早以为,对抗样本是某种高深的黑客技术,需要精通数学和代码才能做出来。直到我自己用 PyTorch 写了十行代码,生成了一张对抗图片,看到我的模型瞬间把“猫”认成“飞机”,我才真正意识到:这太简单了,简单到令人绝望

具体步骤可以拆成四步:

  1. 选择一个目标模型,拿到它的输入和标签。
  2. 计算损失函数对输入像素的梯度。
  3. 取梯度的符号,乘以一个很小的扰动系数 ε。
  4. 把这个扰动加到原图上,得到对抗样本。
FGSM 的数学直觉(点开)

设损失函数为 J(θ,x,y),其中 θ 是模型参数,x 是输入,y 是真实标签。模型在 x 上做了正确预测,意味着 J 很小。要让模型犯错,就需要增大 J。最快的增大方向是梯度 ∇x J。但梯度是一个向量,它的每个分量可能大小不一。为了在有限的 L∞ 扰动范围内最大化变化,我们直接取梯度的符号,保证每个像素都朝最有利的方向移动 ε。这样,输出变化量大约是 ε · Σ|∂J/∂xi|,在维度高时很容易超过决策边界。

为什么对抗样本能“传染”给别的模型

更诡异的是,对抗样本有迁移性。也就是说,用模型 A 生成的对抗样本,拿去给模型 B 看,模型 B 也会被骗。我一开始觉得这怎么可能?两个模型的参数完全不同,训练数据可能也不同,为什么它们会在同一个像素方向上都出错?

后来我想通了:不同模型学到的高层特征其实是相似的。它们都在识别物体的边缘、纹理、形状。对抗样本攻击的正是这些共同特征。与其说对抗样本是某个模型的漏洞,不如说它是整个数据分布的一个“盲区”。

从实验室到马路:贴纸也能骗过自动驾驶

你可能会觉得,对抗样本只是实验室里的小把戏,反正人眼看不见。但 2017 年有一篇论文把对抗噪声打印成一张贴纸,贴在“STOP”路牌上,自动驾驶系统就把“STOP”读成了“限速 45”。

这些物理世界里的对抗样本提醒我们:AI 的感知系统并不是在“看”这个世界,而是在做高维空间里的线性决策。它没有“整体概念”,它只是在一堆数字里划了一道线。

防御的困境:鲁棒性与准确性不可兼得

既然攻击方式这么简单,防御呢?最直接的方法是对抗训练——把对抗样本混进训练集里,让模型学会忽略这些噪声。但这里有个问题:模型会变得对特定攻击方式鲁棒,但对新的攻击方式仍然脆弱。而且,对抗训练常常会降低模型在正常数据上的准确率。

对抗训练只是其中一种防御。后来研究者还提出了防御蒸馏、输入随机化、生成式防御等,但大多数都被更强的攻击方法攻破了。这个领域的攻防战,已经快变成猫鼠游戏了。目前,还没有一种防御方法能在所有攻击下保持鲁棒性。

这引出了一个更深的矛盾。2018 年 Tsipras 等人的论文从理论上证明:在某些分类任务上,鲁棒性和准确性是鱼和熊掌。一个绝对鲁棒的模型,可能必须在正常样本上表现得更差。

人眼 神经网络
输入 连续的视觉感知 离散的像素数组
对微小扰动的反应 忽略 可能完全改变判断
识别方式 整体理解 高维空间线性边界

关于对抗样本,你可能还有这些疑问

对抗样本是因为过拟合吗?

不是。过拟合是对训练集记忆过度,但对抗样本在全新的模型和数据上同样有效,而且生成方式与训练数据无关。它源于高维线性行为。

对抗样本只能骗图像模型吗?

不是。文本、语音、表格数据都有对抗样本。只要模型是用梯度优化的,就存在这类漏洞。

人眼看不见的扰动,为什么能对模型造成这么大的影响?

因为模型是在高维空间做判断,而人眼只感知低维的整体轮廓。高维空间里,微小的扰动可以沿着决策边界的方向放大。

这不是黑客技术,是数学的必然

对抗样本真正揭示的是:我们引以为傲的深度学习,其核心能力其实是一堆高维空间里的线性边界。它能区分猫和狗,不是因为它理解了什么是猫,而是因为它在像素空间中找到了一个能把猫的像素集合和狗的像素集合分开的平面。而人类感知却完全不同——我们看到的是一整张猫,不是一个坐标点。

所以,下次再看到“AI 被一张贴纸骗过”的新闻,别急着骂 AI 蠢。它只是在用它的方式“看”世界,而它的方式,和我们有本质的区别。

原创文章,作者:guanweilu,如若转载,请注明出处:https://guanweilu.cn/article/190.html

(0)
上一篇 2026年8月19日
下一篇 2026年8月20日

相关推荐