对抗训练综述学习笔记

news/2024/11/16 6:58:58/文章来源:https://www.cnblogs.com/marsggbo/p/18371701

本文基于这篇综述进行讨论学习:《Bai T, Luo J, Zhao J, et al. Recent advances in adversarial training for adversarial robustness[J]. arXiv preprint arXiv:2102.01356, 2021.》

对抗训练主要目的是让模型能够对于对抗样本做出正确的判断。常见的对抗样本的生成方式(或者说是对抗攻击)是 Fast Gradient Sign Method (FGSM)。

1. 对抗攻击

Fast Gradient Sign Method (FGSM) 是一种用于生成对抗样本的攻击算法,由 Ian Goodfellow 等人在 2014 年提出。FGSM 是一种非常经典且简单的对抗攻击方法,主要用于评估模型对对抗攻击的鲁棒性。下面是 FGSM 的简单介绍:

1.1 FGSM 的原理

FGSM 利用模型的梯度信息,通过对输入样本施加微小的扰动来生成对抗样本。其基本思想是通过梯度下降的方式找到能使模型产生错误预测的最小扰动。

FGSM 的步骤

  1. 选择损失函数: 选择一个损失函数\(L\),该函数衡量模型的预测与真实标签之间的差距。常用的损失函数是交叉熵损失。
  2. 计算梯度: 对输入样本\(\mathbf{x}\)计算损失函数相对于输入的梯度\(\nabla_{\mathbf{x}} L(\mathbf{x}, y)\),其中\(y\)是真实标签。
  3. 生成对抗扰动: 使用梯度信息生成对抗扰动。扰动的公式为:

\[\mathbf{x}*{\text{adv}} = \mathbf{x} + \epsilon \cdot \text{sign}(\nabla*{\mathbf{x}} L(\mathbf{x}, y)) \]

其中,\(\text{sign}(\cdot)\)表示符号函数,\(\epsilon\)是一个小的正数,表示扰动的幅度。
4. 生成对抗样本: 将扰动添加到原始样本中,得到对抗样本\(\mathbf{x}_{\text{adv}}\)

例子

假设你有一个图像分类模型,目标是生成一个对抗样本,使模型错误地将一个猫的图像分类为狗。使用 FGSM,你会:

  1. 选择损失函数: 使用交叉熵损失来衡量模型预测的错误程度。
  2. 计算梯度: 对猫的图像计算交叉熵损失相对于输入图像的梯度。
  3. 生成对抗扰动: 根据梯度的符号生成扰动。比如,梯度的符号告诉我们在每个像素上如何调整以最大化损失。
  4. 生成对抗样本: 将生成的扰动添加到原始猫的图像中,得到对抗样本。

FGSM 的特点

  1. 效率: FGSM 是一种非常快速和简单的攻击方法,因为它只需要计算一次梯度。
  2. 效果: 尽管简单,FGSM 能够有效地生成对抗样本,测试模型的鲁棒性。
  3. 局限性: FGSM 可能对一些防御方法不够有效,因为它的扰动是单一的,可能不足以击败更复杂的防御策略。

FGSM 作为对抗攻击的基础方法,为进一步研究和开发更复杂的对抗攻击技术提供了重要的理论基础。

Iterative FGSM 和 Projected Gradient Descent (PGD) 是对抗攻击中常用的改进方法,相比于原始的 FGSM,它们通过迭代优化过程来生成更强的对抗样本。以下是这两种方法的详细介绍:

1.2 Iterative FGSM

原理: Iterative FGSM,也称为 Iterative Fast Gradient Sign Method,是 FGSM 的一种改进版本。它通过多次迭代的方式生成对抗样本,以增强对抗攻击的效果。

步骤:

  1. 初始化对抗样本: 从原始样本开始,初始对抗样本为\(\mathbf{x}_{\text{adv}}^0 = \mathbf{x}\)
  2. 迭代扰动:
    • 对每一步\(t\)(从\(t = 0\)\(T-1\)):
      • 计算当前对抗样本的梯度\(\nabla_{\mathbf{x}} L(\mathbf{x}_{\text{adv}}^t, y)\)
      • 根据梯度生成扰动\(\delta_t = \epsilon \cdot \text{sign}(\nabla_{\mathbf{x}} L(\mathbf{x}_{\text{adv}}^t, y))\)
      • 更新对抗样本\(\mathbf{x}_{\text{adv}}^{t+1} = \mathbf{x}_{\text{adv}}^t + \delta_t\)
      • 对于下一步,确保对抗样本仍在有效的扰动范围内(如 [0, 1] 之间),有时需要进行投影操作来保持样本的有效性。
  3. 生成最终对抗样本: 完成所有迭代后,最终的对抗样本为\(\mathbf{x}_{\text{adv}}^T\)

特点:

  • 迭代过程: 通过多次迭代,每次对抗样本都稍微更新,从而生成更强的对抗样本。
  • 效果提升: 迭代过程使得对抗样本的攻击效果通常比单次 FGSM 攻击要强。

1.3 Projected Gradient Descent (PGD)

原理: PGD 是一种更强的对抗攻击方法,它在 FGSM 的基础上进行了改进,通过迭代和投影操作生成对抗样本。PGD 是一种广泛使用的迭代攻击方法,尤其在研究对抗鲁棒性时。

步骤:

  1. 初始化对抗样本: 从原始样本开始,初始对抗样本为\(\mathbf{x}_{\text{adv}}^0 = \mathbf{x}\)
  2. 迭代更新:
    • 对每一步\(t\)(从\(t = 0\)\(T-1\)):
      • 计算当前对抗样本的梯度\(\nabla_{\mathbf{x}} L(\mathbf{x}_{\text{adv}}^t, y)\)
      • 生成扰动\(\delta_t = \alpha \cdot \text{sign}(\nabla_{\mathbf{x}} L(\mathbf{x}_{\text{adv}}^t, y))\),其中\(\alpha\)是步长。
      • 更新对抗样本\(\mathbf{x}_{\text{adv}}^{t+1} = \mathbf{x}_{\text{adv}}^t + \delta_t\)
      • 投影操作: 对于每个更新步骤,将对抗样本投影回有效的扰动范围内,确保对抗样本仍在合法范围内。这通常是通过在对抗样本上应用投影操作来实现的(例如,投影到\(\epsilon\)-球内)。

具体而言,对于\(L_{\infty}\) 范数约束的投影操作,给定原始样本 \(\mathbf{x}\) 和扰动幅度 \(\epsilon\),对抗样本的投影公式可以表示为:

\[\mathbf{x}_{\text{adv}} = \text{clip}(\mathbf{x}_{\text{adv}}^{\text{new}}, \mathbf{x} - \epsilon, \mathbf{x} + \epsilon) \]

其中:

  • \(\mathbf{x}_{\text{adv}}^{\text{new}}\) 是更新后的对抗样本。
  • \(\text{clip}(\cdot, \text{min}, \text{max})\) 是将输入值限制在 \([\text{min}, \text{max}]\) 区间内的函数。

简化地,投影操作可以写为:

\[\mathbf{x}_{\text{adv}}[i, j] = \max(\mathbf{x}[i, j] - \epsilon, \min(\mathbf{x}_{\text{adv}}^{\text{new}}[i, j], \mathbf{x}[i, j] + \epsilon)) \]

这表示对每个像素 \((i, j)\),将对抗样本的值限制在 \([\mathbf{x}[i, j] - \epsilon, \mathbf{x}[i, j] + \epsilon]\) 区间内。

  1. 生成最终对抗样本: 完成所有迭代后,最终的对抗样本为\(\mathbf{x}_{\text{adv}}^T\)

特点:

  • 迭代优化: 通过多个迭代步骤来优化对抗样本生成过程,提高对抗攻击的效果。
  • 投影操作: 在每次迭代后进行投影,确保对抗样本在扰动约束范围内(例如,\(\epsilon\)-球内)。

区别与总结

  • Iterative FGSM:

    • 是 FGSM 的迭代版本,通过多次迭代生成更强的对抗样本。
    • 每次迭代更新对抗样本,并在更新过程中施加扰动。
    • 主要关注通过迭代改进对抗样本的质量,但没有对扰动范围进行显式的限制。
  • PGD:

    • 是一种更强的迭代攻击方法,通过每次迭代的梯度更新和投影操作生成对抗样本。
    • 包括投影操作,以确保对抗样本在允许的扰动范围内。
    • 常被认为是最强的白盒攻击之一,因为它通过迭代和投影的方式可以生成非常强的对抗样本。

这两种方法都旨在提高对抗样本的攻击效果,但 PGD 的投影操作使其在生成更具攻击性的对抗样本方面通常更为有效。

2. 对抗训练

为了让模型能够正确处理对抗样本,有很多不同的对抗训练方法被提出。

  1. Adversarial Regularization:第一种最直观的方法就是把把对抗样本加入到训练集中去训练模型
  2. Curriculum-based Adversarial Training:第二种是根据对抗样本的难易程度进行分类,让模型先学习简单的对抗样本,然后学习困难的。就像人上课一样,先从简单的入手,然后开启苦难模式
  3. ensemble adversarial training:这个也好理解,就是用多个模型生成的对抗样本来训练
  4. Adversarial Training with Adaptive \(\epsilon\):这个其实也好理解,前面生成对抗样本公式中有个因子\(\epsilon\),通常这是一个固定值,那么对应的对抗样本的难度相对也是在一个固定的范围内。那么一种很自然的思想就是动态改变这个因子的值,那么样本的难度也会发生变化,这样模型训练过程中能够看到不同难度的样本
  5. Adversarial Training with Semi/Unsupervised Learning:有研究发现对抗训练后,模型在对抗测试集上的 accuracy 要明显比对抗训练集上的低。要解决这个问题需要大规模的数据集,但是标签数据非常难获得,所以半监督、无监督训练成为一种可行的方法。不过,你也许会说,不是可以直接用模型生成大量的对抗样本吗,为什么还要用无监督这类方法呢?你说的没错,不过对抗样本生成是基于已有的数据通过加噪声的方式生成的,如果本身的数据集数量有限,那么模型学习到的数据分布也是不够的,对于正常样本的分辨能力可能也会受到影响。
  6. Efficient Adversarial Training:以下是对提高对抗训练效率方法的算法总结:
      1. Free Adversarial Training (Free-AT) [Shafahi et al., 2019]
      • Free-AT的核心思想是在前向传播时重用在反向传播中计算得到的梯度。在这种方法中,模型参数和图像扰动将同时更新。Free-AT通过这种方式减少了计算量,因为不需要多次计算梯度。
      1. Fast Adversarial Training (FastAT) [Wong et al., 2020]
      • FastAT采用了随机初始化的快速梯度符号方法(FGSM)来进行对抗性训练,并证明了其与基于PGD的对抗性训练方法(PGD-AT)同样有效。FastAT通过随机化初始化扰动来减少过拟合,并提高了训练效率。
      1. GradAlign [Andriushchenko and Flammarion, 2020]
      • GradAlign旨在解决快速训练方法中出现的灾难性过拟合问题。该方法通过在梯度更新中引入额外的对齐步骤来改善模型的泛化能力。
      1. Dynamic Schedule [Vivek and Babu, 2020b]
      • 动态调度方法通过调整训练过程中的扰动强度和其他超参数,来平衡模型的鲁棒性和准确性。
      1. Inner Interval Verification [Kim et al., 2021]
      • 这种方法通过在内部验证扰动的区间来防止过拟合,从而提高模型的泛化能力。
      1. Domain Adaptation [Song et al., 2019]
      • 域适应方法通过将对抗性训练应用于不同域的数据来提高模型的泛化能力。
      1. Regularization Methods [Vivek and Babu, 2020a; Huang et al., 2020]
      • 正则化方法通过在损失函数中添加正则化项来控制模型的复杂度,从而减少过拟合。
      1. You Only Propagate Once (YOPO) [Zhang et al., 2019a]
      • YOPO基于Pontryagin的最大原理,通过分析发现对抗性梯度更新仅与神经网络的第一层相关。因此,YOPO专注于在第一层计算对抗性扰动,而其他层保持不变,显著减少了前向和后向传播的次数。

这些方法都旨在解决传统对抗性训练中的计算效率问题,同时尽可能保持或提高模型的对抗性鲁棒性。通过这些技术,研究者们希望能够在有限的计算资源下训练出更加鲁棒的深度学习模型。

微信公众号:AutoML机器学习
MARSGGBO原创
如有意合作或学术讨论欢迎私戳联系~
邮箱:marsggbo@foxmail.com

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/784860.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Chrome谷歌浏览器报错:ERR_TOO_MANY_REDIRECTS

开发系统的时候,经常需要调用地址进行测试,容易遇到浏览器报错:该网页无法正常运作**** 将您重定向的次数过多。尝试删除您的 Cookie.ERR_TOO_MANY_REDIRECTS(如图) 解决方法: 1.删除浏览器缓存记录 2.开启无痕模式,重新浏览

KingbaseES V8R6备份恢复案例之---sys_backup.sh init无法创建stanza

KingbaseES、备份恢复案例说明: KingbaseES V8R6数据库执行物理备份初始化操作,出现以下故障“ERROR: create stanza failed, check log file...",初始化失败。 适用版本:KingbaseES V8R6 一、问题现象 如下所示,执行sys_backup.sh init,出现”ERROR: create stanza…

【Linux】grub命令行引导进入windows系统

@目录1.grub命令行界面2.设置启动目录3.chainloader加载windows启动文件4.启动5.grub命令行无响应办法在卸载Linux系统后,有的小白可能会忘记删除Linux的EFI引导。这样的话,下次开机时就会自动进入grub的命令行,连windows系统都进不去了!本文提供了使用grub命令行进入win系…

cmake openssl 生成失败

生成azerothcode的时候报错,改成1.x版本就好了,我用的1.1.1。 CMake Error at E:/Soft/CMake326/share/cmake-3.26/Modules/FindPackageHandleStandardArgs.cmake:230 (message): Could NOT find OpenSSL, try to set the path to OpenSSL root folder in the system varia…

12米空间分辨率DEM数据申请下载:TanDEM-X数据集

本文介绍全球12米与30米高空间分辨率的数字高程模型(DEM)数据——TanDEM-X数据的下载申请方法~本文介绍全球12米与30米高空间分辨率的数字高程模型(DEM)数据——TanDEM-X数据的下载申请方法。Tandem-X卫星项目于2010年6月启动,并于2010年6月21日和2010年12月21日分别发射两…

Halcon图像减操作

图像减操作,也叫图像灰度值的操作 可以得到固定位置的差异 * 区域处理read_image (car1, D:/hoclan/traffic1.png) read_image (car2, D:/hoclan/traffic2.png) *显示边缘模式 dev_set_draw (margin)*图像减操作(图像灰度值的操作) 可以得到固定位置的差异 * (Traffic1 - Traf…

Echarts 5 动态按需引入图表

官网提供的按需引入方法为全量按需引入,在打包分离中,仍旧存在使用不到的图表被打包进去。 例如:组件A使用了折线图、柱状图,组件B只用到了折线图,但是打包组件B的时候,柱状图也就被打包进去。 本文提供一种动态按需引入的思路,使得只用到折线图的组件B,打包的时候只打…

柱状图倒圆角4.9版本

series处理const stackInfo = {};for (let i = 0; i < series[0].data.length; ++i) {for (let j = 0; j < series.length; ++j) {const stackName = series[j].stack;if (!stackName) {continue;}if (!stackInfo[stackName]) {stackInfo[stackName] = {stackStart: [],s…

源码解析之为何要用ConcurrentHashMap

为什么要用ConcurrentHashMap? ConcurrentHashMap是JUC包下的一个线程安全的HashMap类,我们都知道多线程的场景下要用ConcurrentHashMap来代替HashMap使用,有没有想过为什么不能用HashMap,为什么能用ConcurrentHashMap呢?下面我通过走源码的方式,带大家看一看其中的一些细…

SAFe大规模敏捷企业级实战演练培训

​ 课程简介 SAFe – Scaled Agile Framework是目前全球运用最广泛的大规模敏捷框架,也是成长最快、最被认可、最有价值的规模化敏捷框架,目前全球SAFe认证专业人士已达80万人,福布斯100强的70%都在实施SAFe。本课程是一个2天的 SAFe权威培训课程,在课程中,学员将系统地学…

【Linux】gnome桌面环境切换KDE Plasma

@目录安装KDE Plasma桌面环境添加软件源并更新apt安装kubuntu-desktop(作者没有成功)aptitude安装kubuntu-desktop多次aptitude install(特别重要特别重要)其他kde软件包卸载gnome桌面Ubuntu自带的桌面环境是gnome,本文提供了安装KDE Plasma的教程,并解决了其中可能遇到的…

Origin2024如何制作双Y轴图?

日常科研中,我们经常会用到x-y轴图,但有时候一个x对应两个y值甚至多个y值,那应该怎么做呢?下面给大家分享绘制双Y轴图的操作方法; 操作步骤: 1、先打开Origin2024软件,然后在Book1中输入如下示例数据: 2、选中所有数据:3、点击菜单栏中【绘图】→【多面板/多轴】→【…