[paper]Defense against Adversarial Attacks Using High-Level Representation Guided Denoiser
本文提出了一种防御方法,即由高级特征主导的去噪器 high-level representation guided denoiser(HGD)。 标准去噪器具有误差放大效应,在这种效应中,较小的残留对抗噪声影响会逐渐放大,最终导致错误的分类。HGD通过将损失函数定义为由干净图像和去噪图像激活的目标模型输出之间的差值解决了这个问题。
HGD具有三个优点:
- HGD可以使目标模型面对对抗攻击更加鲁棒
- HGD具有较好的泛化性
- HGD效率更高(需要更少的训练数据和训练时间)
由于对抗样本使在原始图像添加特定的扰动,因此一个自然的想法就是对图像进行去噪。降噪模型确实可以在一定程度上减少噪声,但是都不能去除所有的对抗扰动,又由于误差放大效应“error amplification effect”的存在,使得目标模型仍然会误分类图像。为了解决这个问题,作者将原始图像和对抗样本引起的目标模型输出之间的差异作为损失函数,而不是通过修改像素。作者将通过此损失函数训练的去噪器命名为(HGD)。
去噪模型:
- Pixel guided denoiser(PGD) :基于像素点的去噪器,将对抗样本转换为去噪样本。通过计算去噪样本和原始图像的 L1范数来确定损失函数(基于像素点的距离)。
L = ∣ ∣ x − x ^ ∣ ∣ L = ||x-\hat{x}|| L=∣∣x−x^∣∣
x x x:原始图像
x ^ \hat{x} x^:去噪图像 - Denoising Auto Encoder(DAE):去噪自编码器
DAE是以多层感知机的形式防御目标模型的对抗攻击,本文使用的是卷积形式的DAE。
DAE具有瓶颈结构,可能会限制高分辨率图像中细节信息的传递。 - Denosing U-Net(DUNET):为了避免DAE的细节丢失
在各层网络之间增加横向连接,以学习对抗噪声,通过重建出对抗样本噪音然后反向叠加到原始图像上进行去噪,不需要重建整个图像。
DUNET的网络结构:
C代表一层卷积
C k C_k Ck表示 k k k个连续的卷积层(C)
每层C包括:
- 3*3的卷积
- 批处理归一化层(batch normalization layer )
- 线性修正单元(Relu函数)
整个网络由前馈通路和反馈通路组成:
-
前馈通路包括五个block(一个C2和四个C3)。在所有C3中第一层C的步长设置为 2 ∗ 2 2*2 2∗2,其余步长设置为 1 ∗ 1 1*1 1∗1。
前馈路径接收图像作为输入,并生成一组分辨率越来越低的特征图(参见图3的顶部路径)。 -
反馈通路包括四个block(三个C3和一个C2)以及一个 1 ∗ 1 1*1 1∗1的卷积。
每个block接收来自反馈通路的反馈输入和来自前馈通路的横向输入。
首先使用双线性插值将反馈输入上采样为与横向输入相同的大小,然后使用 C k C_k Ck处理级联的反馈和横向输入。 沿着反馈通路,特征图的分辨率越来越高。
最后一个block的输出通过 1 ∗ 1 1*1 1∗1卷积转换为负噪声 − d x ^ -d \hat{x} −dx^。(参见图3的底部路径)
最终输出是负噪声和输入图像的总和:
x ^ = x ∗ − d x ^ \hat{x} = x^*-d \hat{x} x^=x∗−dx^
PDG和HGD的核心思想区别:
图像像素级损失 ⇒ \Rightarrow ⇒目标模型输出层损失
HGD的三个实现:
- FGD:每一层CNN提取的特征之间作比较
- LGD:都与最后结果作比较
- CGD:先让CNN预测一个结果,然后与真实值作比较
为什么像素级别的去噪方法(PGD)在现实场景下效果远不如由高级特征主导的去噪器(HGD)?
因为像素层面上的去噪并不能真正去掉对抗扰动。
横轴表示图像上的扰动幅度,纵轴表示使用去噪方法去掉的扰动幅度。
在PGD去噪方法中,去掉的扰动幅度大概只有图像上的扰动幅度的一半,也就是说PGD方法只去掉了一半扰动。
而在LGD去噪方法中,去掉的扰动幅度基本与图像上的扰动幅度持平,也就是说LGD方法可以去掉所有扰动。
实验结果: