当前位置: 首页 > article >正文

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


http://www.kler.cn/a/614801.html

相关文章:

  • AI助力高效办公:如何利用AI制作PPT提升工作效率
  • 结构化分析方法 数据流图详解
  • 工业控制系统安全:从漏洞到防线,Python如何成为你的护卫者
  • 图论 岛屿问题 ACM 模式 JS
  • 怎么搭建区块链服务私有云平台
  • C++实现布隆过滤器
  • 创意 Python 爱心代码分享
  • Python常用爬虫库介绍
  • vue3+element plus +el-tree-v2实现树形单选
  • presto任务优化参数
  • Uniapp微信开发树形选择组件
  • LeetCode 热题 100_杨辉三角(82_118_简单_C++)(动态规划)
  • Tof 深度相机原理
  • 0基础STM32之滤波函数(卡尔曼滤波)
  • 抽象的算法0.1.3.1版本
  • 算法训练营第二十八天 | 动态规划(一)
  • WinForm真入门-简介
  • NLP语言模型训练里的特殊向量
  • Linux系统中应用端控制串口的基本方法
  • 数据结构----栈