zoukankan      html  css  js  c++  java
  • 九、产生和防御对抗样本的新方法 | 分享总结--廖方舟(论文11)

    视频连接:http://www.mooc.ai/course/383/learn#lesson/2163

    论文总结:http://ai.yanxishe.com/page/blogDetail/5357

    对抗样本的攻防:

      • 什么是对抗样本  adversarial examples 

    • 传统的攻击方法

    • 传统的防守方法 

    • 动量迭代攻击 

    • 去噪方法 

    • 高层引导去噪方法 

    什么是对抗样本 

    对抗样本的性质不仅仅是图片所拥有的性质,也不仅仅是深度学习神经网络独有的性质。因此它是把机器学习模型应用到一些安全敏感性领域里的一个障碍。

     当时,机器学习大牛 Good fellow 找了些船、车图片,他想逐渐加入一些特征,让模型对这些船,车的识别逐渐变成飞机,到最后发现人眼观测到的图片依然是船、车,但模型已经把船、车当做飞机。

    0?wx_fmt=png

    我们之前的工作发现样本不仅仅是对最后的预测产生误导,对特征的提取也产生误导。这是一个可视化的过程。

     当把一个正常样本放到神经网络后,神经元会专门观察鸟的头部,但我们给它一些对抗样本,这些对抗样本也都全部设计为鸟,就发现神经网络提取出来的特征都是乱七八糟,和鸟头没有太大的关系。也就是说欺骗不是从最后才发生的,欺骗在从模型的中间就开始产生的。

     0?wx_fmt=png

    不仅仅只是对最后的prediction产生了误导,还影响了特征的提取。在模型中间就产生了。

    将147号神经元的处理进行可视化,发现上图中高亮部分,对所有real image会专门观察鸟的头部;

    而对于被设计为鸟的对抗样本而言,147号神经元会注意到的是一些跟鸟头无关的特征点。

    下图是最简单的攻击方法——Fast Gradient Sign Method 

    x*为要产生的对抗样本,x为真实样本,y为正确的分类名,

    第一行Objective表示:最大化x*的基础上,得到正确分类名label的损失函数(loss function(cross-entropy交叉熵)越大,预测的概率越小),说白了,目标就是为了最小化对抗样本在正确分类名上的预测概率

    第二行:做一个线性假设,将损失函数展开,L(x,y)对x求偏导数,然后取符号函数sign,乘上系数加到原来的真实样本x上。说白了,就是将y反向梯度传回原始图片的梯度加到图片中,得到对抗样本

    为什么不采用L2 norm,而采用L∞ norm呢?

    L2可能会产生非常大的distortion:

    下图中第一列为原图,第二列加入的干扰项的L2 norm是一样的,第三列为附加后的图片

    肉眼就能看出来,第一张和第三张图片已经和原图有了非常大的差别了。

    而L∞一般不会出现这种变化。

    0?wx_fmt=png

    除了 FGSM 单步攻击的方法,它的一个延伸就是多步攻击,即重复使用 FGSM。由于有一个最大值的限制,所以单步的步长也会相应缩小。比如这里有一个攻击三步迭代,每一步迭代的攻击步长也会相应缩小。

    0?wx_fmt=png

    产生图片所用的 CNN 和需要攻击的 CNN 是同一个,我们称为白盒攻击。

    与之相反的攻击类型称为黑盒攻击,也就是对需要攻击的模型一无所知。此方法也可能成功,因为对抗样本迁移。 

    0?wx_fmt=png

    0?wx_fmt=png

    以上所说的都是 Non Targeted, 只要最后得到的目标预测不正确就可以了。

    另一种攻击 Targeted FGSM,目标是不仅要分的不正确,而且还要分到指定的类型。

    y*为指定的错误分类目标类型 。现在目标应该是最小化loss function

    0?wx_fmt=png

    一个提高黑盒攻击成功率行之有效的办法,是攻击一个集合。

    例如第一行,将多个模型的logits层拼接起来,然后当成一个大的单个模型。

    同理,不仅可以在logits,预测和损失函数都可以融合拼接。但实验表明在logits上做效果最好。

    0?wx_fmt=png

    而目前为止一个行之有效的防守策略就是对抗训练

    在模型训练过程中,训练样本不仅仅是干净样本,而是干净样本加上对抗样本。在线生成训练样本。

    随着模型训练越来越多,一方面干净图片的准确率会增加,另一方面,对对抗样本的鲁棒性也会增加。

    下表为准确率accuracy:

    e为不同的攻击步长(能容忍的攻击范围)越大攻击越强。随着它变大,准确率下降

    (1)baseline为一个普通网络

    (2)adv.training对抗样本训练之后,对此攻击基本上就免疫了。但此方法会消耗大量时间:

    原因是1、在线生成用于训练的对抗样本(两次操作:前馈+反馈)

          2、训练模型去适应对抗样本本身就比较困难

    因此,此方法可能会耗费比训练普通模型好几倍的时间。

    (3)一个增强的训练对抗样本的版本:ensemble adversarial training

    在训练时输入模型的样本是在攻击一大堆模型时产生的一堆样本。例如要训练Inception模型,找来resnet、VGG、Alexnet做陪练来产生很多对抗样本加上Inception自己也产生的很多对抗样本。

    通过此方法得到的网络是目前最稳定的网络。但训练时间就更长了,基本上是一个普通网络好几十倍的训练时间。

    Deeper model:

    0?wx_fmt=png

    下面简单介绍一下 NIPS 2017 上的这个比赛规则

     

    第一个:将图片分类为指定类别

    第二个:将图片不分为正确类别即可

    第三个:防守 

    比赛结构:主办方提供dataset包含5000张图片;

    Non-target attacks(右上橘红色)将原始图片全部变成对抗样本(例如有100个队伍,就会利用原始的五千图产生五十万张对抗样本)

    target attacks(左下橘红色)同理100个队伍一共生成五十万张对抗样本

    defense(蓝色)每个队伍都会讲上述一起产生的一百万张图片进行处理。

    评估防守方的标准就是看防守方分类正确了多少张样本。

    评估两个攻击方的标准:产生的对抗样本成功欺骗了多少防守方。

    因此,这个比赛中攻防双方两个队伍之间进行对打,互相揣摩对方用了什么模型

    0?wx_fmt=png

    两个限制条件:

    容忍范围不能太大,在4~16间测试模型的鲁棒性;

    不能花太长时间产生一个对抗样本,或者防守一个对抗样本

    0?wx_fmt=png

    FGSM 算法结果:下图表示1000张图片中分类正确的图片数目 ,左边列名为攻击模型,上面行名为防守样本

    例如第一行表示用inception-v3产生的对抗样本去攻击各种模型,正确识别的图片数越多,表示防御能力越强,越不受干扰。

    对角线标红的为白盒攻击。注意到adv-incv3对白盒攻击的正确分类相当高,能够正确分类。

     可以看出,Adv-Incv3、Ens3-Adv-Incv3、Ens4-Adv-Incv3、Ens-IncR都达到了 较高准确率。

    0?wx_fmt=png

    图中绿色模型为攻击范围,倒数三四栏R-50和R-152有“亲戚”R-101在攻击目标中,这两列可以看出随着迭代次数上升,识别准确率还是有所下降的。

    最后两栏灰色是黑盒模型,随着迭代数量的增加, 攻击成功率反而上升。这就给攻击造成了难题。

     因此,白盒攻击可以增加迭代次数,最终进入一个局部最小的识别率。

    但对于我们不了解的模型而言,就是黑盒样本应该减少迭代次数。

    对于这些黑盒模型识别率较低的情况,实际是一个overfitting过拟合的问题。局部最小适用于绿色的模型,但却不适合后两个黑盒模型。

    我们解决的办法就是在迭代与迭代中间加入动量momentum,对于后四列有明显的下降。

     

    0?wx_fmt=png

    加入动量之后,白盒攻击变强了,而且对黑盒模型攻击的成功率也大大提升了。

    从而对于黑盒攻击,也可以使用相当多数量的迭代次数了。

    0?wx_fmt=png

    0?wx_fmt=png

    总结

    以前方法(iterative attack)的弱点是在迭代数量增多的情况下,它们的迁移性,也就是黑盒攻击性会减弱,在我们提出加入动量之后,这个问题得到了解决,可以很放心使用非常多的迭代数量进行攻击。

    在 NIPS 2017 比赛上得到最高的分数

    0?wx_fmt=png

    需要提到的一点,上面提到的都是 Non-targeted , 在 Targeted 攻击里面,这个策略有所不同。在 Targeted 攻击里面,基本没有观察到迁移性,也就是黑盒成功率一直很差,即便是加入动量,它的迁移程度也非常差。

    因此,分数高是因为有很多人提交了baseline模型,而攻击这些白盒做的很好,因此分数高。

     

    下面讲一下防守

     

    我们常说对抗样本用人眼是无法识别的,但此话不全对。当我们将原图放大 ,左边对抗样本明显有噪声。

    首先想到的就是去噪声,我们尝试用了一些传统的去噪方法(median filter 、BM3D)效果都不好。之后我们尝试使用了两个不同架构的神经网络去噪。

    一个是 Denoising Autoencoder,卷积型的去噪。

    另一个是 Denoising Additive U-Net。在中间加上neural connection。目标不再是先重建原图,二是先重建出噪声,然后将重建出来的噪音对adversarial样本进行预测,然后加回去,得到纯净图片。

    0?wx_fmt=png

     下图为Denoising Additive U-Net的结构

    我们的训练样本是从 ImageNet 数据集中取了三万张图片 ,使用了七个不同的攻击方法对三万张图片攻击,得到 21 万张对抗样本图片以及三万张对应的原始图片。

    除了训练集,我们还做了两个测试集。一个白盒攻击测试集(针对Inception-v3)和一个黑盒攻击测试集(针对Inception-v4)。

    可以看到训练效果:NA表示不设防守的模型;DAE:Denoising AutoEncoder;DUNET:Denoising U-NET;

    前三行算的是去噪后的剩下的噪音(用l1来统计):DAE增加了噪声。DUNET部分减少了噪声

     后三行为去噪后的分类正确率:结果发现正确率并不高。特别是对于DUNET,明明噪声在白盒攻击的时候已经降到了0.0164了,识别率却还没有NA的高。分析原因:

    我们发现经过去噪以后,正确率反而有点下降。我们分析了一下原因,输入一个干净图片,再输入一个对抗图片,然后计算每一层网络在这两张图片上表示的差距,我们发现这个差距是逐层放大的。

    计算网络在这两张图片(第一张为干净图片,一张为对抗图片)上表示的差异:右图折线图可以看出差距是在逐层增大的

    绿线为baseline去噪后仍然在放大,

    图中蓝线发现放大的幅度非常大,图中红线是去噪过后的图片,仍然在放大,导致最后还是被分错。

    经过去噪后的PGD为红线,仍然在放大,这说明经过去噪后的噪音仍然会被放大。所以会被分错。

    既然,都是会被放大的,那不如就将最后迭代结束的作为loss function

    为了解决这个问题,我们提出了经过改良后的网络 HGD:

    变种:和之前的方法相比,改良后的网络 HGD 防守准确率得到很大的提升

    FGD:CNN提取出来的特征算距离

    LGD:不再是用卷积核的距离去度量了,直接用logist(最后一层softmax的上一层)的一千维向量

    CGD:直接用CNN进行预测,得到的结果和真实正确的计算一个误差cross-entropy

     

    比较一下鲁棒性:后三排的防守准确率得到了极大的提升。

    现在来看,误差放大也得到了很好的抑制。

    LGD训练后的误差放大曲线为黑线,只比绿线random noise高一丢丢

    1、发现HGD迁移性很好,训练750张,对测试250张的防守效果很好

    2、由于denoising的训练需要CNN的辅助,这边从模型A借了一个,安到了模型B上

    同时也比较了一下模型A自己训练出来的效果。

    可以看出,借来的模型完成了95%的防守任务。

    denoising就像是一个安全帽。自己的帽子肯定比别人的帽子效果更好。

     

    A训练一个denoising,B也训练一个denoising,然后把这两个的denoising合并一下,这样会不会是一个效果更好的denoising呢?结果如下:

    事实表明,还是自己用自己的denoising效果最好,合并起来效果没那么好。

    最后比赛中,我们集成了四个不同的模型,以及训练了他们各自的去噪denoising,最终把它们合并起来提交了上去。

    为什么LGD比PGD好的原因:

    因为PGD并没有去掉所有噪声,横坐标为噪声的幅值,纵坐标为denoising预测出来的幅值。

    将横纵坐标做一个correlation关系,发现系数为0.48,而不是想象中的接近1,说明PGD没能将图片中噪声去除干净。从而剩下的52%噪声造成了之前的error amplification effect。

    而LGD的去噪效果比例为1.05,是能够将噪声完全去除掉的。

    还做了一个补充实验:将PGD的估计噪声乘以2会不会就能达到全去除噪声呢?测试结果表明会多去除一点噪声,但是还远不及LGD的效果。

    0?wx_fmt=png

      HGD 网络总结 

    优点:

     

    • 效果显著比其他队伍的模型好。 

    • 比前人的方法使用更少的训练图片和更少的训练时间。 只需要三万张图片,半天的训练即可

    • 可迁移。 

    缺点:

     

    • 还依赖于微小变化的可测量 

    • 问题并没有完全解决。 

    • 仍然会受到白盒攻击,除非假设对手不知道 HGD 的存在

  • 相关阅读:
    mysql 历史版本下载
    mysql 5.7 版本 You must reset your password using ALTER USER statement before executing this statement报错处理
    5.7 zip 版本的安装 以及遇到的坑
    mysql 5.6zip版本的卸载与5.7 zip 版本的安装
    mysql数据库的备份与还原
    本地Navicat连接docker里的mysql
    docker修改数据库密码
    docker 在push镜像到本地registry出现的500 Internal Server Error
    linux 没有界面内容显示不全解决办法
    json与map互相转换
  • 原文地址:https://www.cnblogs.com/Josie-chen/p/9881870.html
Copyright © 2011-2022 走看看