icml2018paper 模糊梯度并不安全
Obfuscated Gradients Give a False Sense of Security:Circumventing Defenses to Adversarial Examples
文章地址:https://arxiv.org/abs/1802.00420
这篇文章作者怼天怼地,整个就一篇爽文啊。
Abstract
认为obfuscated gradients的防御实际上并不安全,基于这个的防御能够被规避。描述出了发现的三种obfuscated gradients的特征,并开发技术攻破他。ICLR2018中,9种防御有7种是基于obfuscated gradients的,作者的新攻击完全攻破了其中6种,一种部分攻破。
Introduction
obfuscated gradients
基于迭代优化的攻击可以作为衡量一个防御的标杆,所以现在的防御都会用这种攻击来衡量他的防御能力。obfuscated gradients可以被视为一个gradient masking的特殊例子。没有一个好的梯度,这些几月迭代优化的攻击将无法攻击成功。作者定义了三种类型的obfuscated gradients:
shattered gradients
有意制造的不可微操作或者通过数值不稳定性来造成梯度的不存在或者错误。
stochastic gradients
添加基于测试时间的随机性等
vanishing/exploding gradients
在非常深的计算(大概是网络层数),得到一个不可用的梯度。
Backward Pass Differentiable Approximation
通过正常的前向传播近似得到导数,计算反向传播通过近似微分方法。通过计算期望变换比变换来计算随即防御的梯度。使用重参化和在梯度不会爆炸或者消失的空间进行优化来解决梯度消失或者爆炸问题。
Preliminaries
使用 l_2 和 l_\infty 作为distortion metrics去衡量相似度。 在MNIST和CIFAR-10上,使用全测试集生成了非目标攻击的对抗样本。在ImageNet上,随机选取了1000张测试集图片,对随机指定的target进行攻击,并统计了攻击成功率。MNIST用了5层cnn,接近99.3%准确率的模型。CIFAR-10训练了一个ResNet,有95%准确率。在ImageNet上,使用InceptionV3,78%top1准确率,和93.9%的top5准确率。
另外,本文考虑的是白盒攻击,即已知所有模型结构和参数的情况下进行攻击,但不能得到测试时的随机性(只能得到其分布)。
生成基于 l_\infty 为界的对抗样本,作者使用Project Gradient Descent(PGD)。而对于 l_2 ,作者使用拉格朗日松弛法。作者使用在100-1000轮梯度下降的迭代,视为已收敛的梯度。
Identifying Obfuscated & Masked Gradients
一些防御是通过制造obfuscated gradients有意破坏梯度下降的情况,另一些是由于审计网络的设计无意间破坏了梯度下降。下面讨论由于防御的性质可能造成的情况(防御的特征)
One-step attacks perform better than iterative attacks.
迭代优化攻击在白盒攻击中优于单步攻击,如果反过来,说明迭代优化攻击陷入局部最优
Black-box attacks are better than white-box attacks.
黑盒攻击是白盒攻击的一个严格子集,如果防御是obfuscated gradients,那么黑盒攻击(不使用梯度)往往比白盒攻击更有效。
Unbounded attacks do not reach 100% success
无限制的攻击没有100%成功率
Random sampling finds adversarial examples.
当基于梯度的攻击不存在时,暴力搜索找不到样本。
Increasing distortion bound does not increase success.
放宽限制条件没有增加成功率。
Attack Techniques
很多攻击是基于梯度找的,那么防御就混淆梯度。
Backward Pass Differentiable Approximation
使用BPDA破解不可微防御
A SPECIAL CASE: THE STRAIGHT-THROUGH ESTIMATOR
很多不可微的防御都是这样,得到一个训练好的网络 f(x) ,再得到一个对输出进行预处理的 g(x) ,这样是的最终模型为 f(g(x)) ,这里的 g(x)\approx x 。如果这里的 g(x) 是平滑的可微的,那直接对组合的网络攻击即可。如果不是,则无法直接用梯度生成对抗样本。
由于 g(x)\approx x ,所以直接把 g(x) 梯度估计为1,因此,可直接用来更新。正向传播时正常使用,反向传播使用 g(x) 的恒等函数作为替代。
GENERALIZED ATTACK: BPDA
当某层是一个不可微的函数时,我们用一个可微的 g(x) 逼近,正向传播时不变,反向传播时用 g(x) 替代。
前向后向都替换往往效果更不好
Attacking Randomized Classifiers
使用转换后梯度的期望来破解
Reparameterization
通过重参化 x=h(z) 且对于任意的 z 有 g(h(z))\approx h(z) ,从而规避防御
Case Study: ICLR 2018 Defenses
作者在用ICLR 2018的例子做实验
Non-obfuscated Gradients
非模糊梯度的防御
ADVERSARIAL TRAINING
对抗训练的方法思路和gan类似,一方面想要通过改变x最大化loss,一方面再寻找时期最小的网络参数 \theta ,使用PGD优化。作者认为这种方式存在缺点,首先再ImageNet这种数量级的数据难以对抗训练,其次,只在 l_\infty 限制下的对抗样本有效,难以泛化。
CASCADE ADVERSARIAL TRAINING
就是生成一些对抗样本作为训练集去训练网络,然而弱爆了。
Gradient Shattering
基于Gradient Shattering的工作
THERMOMETER ENCODING
基于Goodfellow提出对抗样本存在的原因是神经网络有很大的线性空间,所以可以沿着线性找到对抗样本,这个方法就是为了破坏线性。
定义了一个温度自编码器,就是一个像素,编码成 l 位,像素值大于 k/l ,则第 l 位为1,否则为0。
由于这个编码的离散属性,无法在上面直接梯度下降,所以作者用了LSPGA来攻击输入,进行对抗训练。
虽然他的目的是打破局部线性,作者发现这其实还是会导致Gradient Shattering,并且发现黑盒攻击比白盒强。
然而这个温度编码有点辣鸡,实际效果还不如直接对抗训练
INPUT TRANSFORMATIONS
作者提出一种是通过“干净”的小块图来替换(???)
EOT和BPDA攻击掉
LOCAL INTRINSIC DIMENSIONALITY (LID)
通过测量相邻的输入的距离来检测对抗样本
作者发现LID无法检测出高可信度的对抗样本 emmmm,附录一大串,不想看了,大意就是高置信度的样本足以愚弄分类器,不需要什么骚操作。
Stochastic Gradients
STOCHASTIC ACTIVATION PRUNING (SAP)
给模型引入不确定性,随机把一些神经元变成0,概率与他的值的绝对值成正比,其实就是类似dropout,最终稍降普通分类时准确率,但是更鲁棒了。
作者只用了单步梯度方向来评估他的模型,因为他的模型有随机性,所以单步肯定不行。
多跑几次,然后求平均梯度更新,于是攻击下来了
MITIGATING THROUGH RANDOMIZATION
通过将输入放到随机化层,比如先把图尺度变换一下,再0填充,然后作为输入
作者说这篇文章的作者diss他,打脸预备。
EOT绕过,扰动0.031的情况下降到0%。
Vanishing & Exploding Gradients
PIXELDEFEND
在喂进分类器前,用PixelCNN生成模型将潜在的对抗样本投影回数据流形种。简单来说,就是对抗样本本来可能是数据分布中低概率区的点,通过贪心策略在附近找到高概率的点,作为输入。
文章觉得由于梯度计算等开销,难以找到端到端的攻击来攻击他们的模型,但是本文作者通过BPDA打脸。
DEFENSE-GAN
和前一篇差不多,但是用GAN而不是PixelCNN。
Discussion
对一些不切实际的防御模型批判一番,顺便对不开源的,不公布超参数的,直接怼翻等等。虽然是作者喷人时间不过还真特么有道理。
Conclusion
总结了一下,顺便劝大家靠点谱