1.DCGAN Tutorial

DCGAN(Deep Convolution Generative Adversarial Networks)是深度卷积生成对抗网络,由 Alec Radfor 等人于2015年提出的一种模型。该模型在 Original GAN 的理论基础上,将 CNN 和 GAN 相结合以实现对图像的处理,提出了一系列对网络结构的限制以提高网络的稳定性。

项目地址Pytorch官网教程

1.1 核心算法

DCGAN的核心在于对生成器(Generator) 和判别器(Discriminator) 的卷积结构设计

  • 生成器(G)

输入为噪声向量 z ,通过一系列转置卷积层逐步上采样,每一层后应用批归一化和 ReLU激活函数(最后一层除外),最终层使用 Tanh激活函数 生成与目标图像尺寸匹配的输出。

  • 判别器(D)

输入为真实图像或生成器生成的假图像,输入图像通过一系列卷积层逐步下采样,每一层后应用批归一化和 LeakyReLU激活函数,最终层展平,通过一个全连接层输出一个标量,表示输入图像是真实的概率。

DCGAN思想如下图

  • 判别器(D)的目标:最大化正确区分真实图像(x)和生成图像(G(z))的概率。
  • 生成器(G)的目标:最小化判别器识别出其生成图像是假的概率。

1.2 代码实现

生成器与鉴别器的神经网络结构如下

生成器与鉴别器在训练过程中的损失如下

真实图片与生成图片对比如下

DCGAN的核心在于利用深度卷积网络(CNN)的空间局部性、参数共享、平移不变性等特性和批归一化、特定激活函数、Adam优化等关键技巧,构建了一个稳定的生成对抗网络框架。

2 对抗攻击四种算法实现

2.1.1 FGSM

快速梯度符号法(Fast Gradient Sign Method,FGSM)是一种最早的对抗攻击方法之一。其基本思想是通过计算输入图像在损失函数上的梯度,并沿着梯度上升方向对图像进行扰动,从而生成对抗样本。具体公式为:

$x_{adv} = x+\varepsilon \cdot sign(\bigtriangledown_x J(\theta,x,y) )$

其中,$x_{adv}$ 为对抗样本,$x$为原始输入,$\varepsilon$为扰动强度,$\bigtriangledown_x J(\theta,x,y) $为损失函数$J$对输入$x$的梯度。

2.1.2 代码实现

攻击成功率在0.73左右

效果如下图所示

2.2.1 BIM

基本迭代法(Basic Iterative Method, BIM)是快速梯度符号法(FGSM)的扩展版本,它通过在每一步迭代中对输入图像进行小幅度扰动,从而生成更具欺骗性的对抗样本。与FGSM不同,BIM通过多次迭代累积梯度,从而在每一步扰动中逐渐增强对抗效果。

BIM的公式为:

其中, $x^{(n)}_{\text{adv}}$表示第表示第$n$次迭代后的对抗样本,次迭代后的对抗样本,$\alpha$为每一步的扰动大小,为每一步的扰动大小,$\epsilon$为总扰动范围,为总扰动范围

2.2.2 代码实现

BIM方法的攻击成功率约为90.6%

下图第一行为原始图片及正确分类结果,而第二行为攻击后图片及攻击后分类结果。

2.3 PGD

PGD攻击(Projected Gradient Descent,投影梯度下降)是一种白盒对抗攻击方法,常用于生成能够欺骗神经网络模型的对抗样本。

算法思想如下

可以理解为PGD攻击是多次迭代FGSM,并将结果投影到合理的范围。

以下进行了三次运行测试,分别为均匀分布、高斯分布和随机分布的测试结果,将以上不同噪声生成方法在不同最大迭代次数下运行所用的时间及其最终攻击成功率作成柱状图如图

2.4.1 MIFGSM

MIFGSM(Momentum Iterative Fast Gradient Sign Method)是一种改进的对抗攻击方法,基于FGSM的基础,通过引入动量项来加速收敛和提高攻击的稳定性。与传统的FGSM相比,MIFGSM在每次迭代中积累梯度信息,从而更有效地找到对抗样本。核心算法如下

2.4.2 代码实现

MIFGSM方法的攻击成功率约为86.6%

对攻击结果进行可视化如下