FGSM对抗样本生成算法实现(pytorch版)

FGSM对抗样本生成算法

  • 一、理论部分
    • 1.1 目标
    • 1.2 数学公式
    • 1.3 推导过程
    • 1.4 直观解释
    • 1.5 示例
    • 1.6 总结
  • 二、代码实现
    • 2.1 导包
    • 2.2 数据加载和处理
    • 2.3 网络构建
    • 2.4 模型加载
    • 2.5 生成对抗样本
    • 2.6 攻击测试
    • 2.7 启动攻击
    • 2.8 效果展示

一、理论部分

FGSM(Fast Gradient Sign Method) 是一种经典的对抗样本生成方法,其核心思想是通过在输入数据的梯度方向上添加扰动,从而生成对抗样本


1.1 目标

给定一个输入样本 x x x 和对应的真实标签 y y y ,FGSM 的目标是生成一个对抗样本 x adv x_{\text{adv}} xadv ,使得:

  • 对抗样本 x adv x_{\text{adv}} xadv 与原始样本 x x x 的差异很小(通常用 L ∞ L_\infty L 范数衡量)
  • 模型在对抗样本 x adv x_{\text{adv}} xadv 上的预测结果与真实标签 y y y 不一致。

1.2 数学公式

FGSM 的对抗样本生成公式: x adv = x + ϵ ⋅ sign ( ∇ x J ( x , y ) ) x_{\text{adv}} = x + \epsilon \cdot \text{sign}(\nabla_x J(x, y)) xadv=x+ϵsign(xJ(x,y))

其中

  • x x x:原始输入样本
  • y y y:输入样本的真实标签
  • ϵ \epsilon ϵ:扰动强度(一个小的正数,控制扰动的幅度)
  • ∇ x J ( x , y ) \nabla_x J(x, y) xJ(x,y):损失函数 J J J 对输入 x x x 的梯度
  • sign ( ⋅ ) \text{sign}(\cdot) sign():符号函数,返回梯度的符号( + 1 +1 +1 − 1 -1 1

1.3 推导过程

(1)定义损失函数

假设模型的损失函数为 J ( x , y ) J(x, y) J(x,y),其中:

  • x x x 是输入样本
  • y y y 是真实标签

(2)计算梯度

计算损失函数 J ( x , y ) J(x, y) J(x,y) 对输入 x x x

你可能感兴趣的:(深度学习,算法,pytorch,人工智能,python,深度学习)