基于梯度的攻击方法有很多,其基本思路主要是两个:

  • 对约束标准做改动,如L2normL2-normLinfinityL-infinity等。
  • 对优化方案做改动
    Fast Gradient Sign Method (FGSM)原理细节及代码实现

可以说FGSM是最简单的攻击方法。它的思路很简单:网络参数θ\theta保持不变,损失函数LL对原始输入x0x^0的所有维度求导,若值为正数,取1;值为负数,取-1。得到Δ\Deltaxx
实际上,如果Δ\Deltaxx中没有符号函数signsign参与计算,那么得到的就是梯度方向。而加上signsign之后,得到的Δ\Deltaxx就不是准确的梯度方向了,就成了作者做说的“梯度符号”。
不过我们依然可以把它理解成梯度方向,这样原始样本x0x^0往梯度的反方向前进ε\varepsilon距离。ε\varepsilon是扰动约束,可以理解为一个很大的学习率。这样整个过程就是按照梯度下降的方法优化一次,而且一步到位。
Fast Gradient Sign Method (FGSM)原理细节及代码实现
假设扰动约束ε\varepsilon使用LinfinityL-infinity。那么扰动空间就成了一个方形,原始样本距离每条边的距离都是ε\varepsilon。如下图所示。
Fast Gradient Sign Method (FGSM)原理细节及代码实现
首先算出原始样本x0x^0的梯度,如下图:
Fast Gradient Sign Method (FGSM)原理细节及代码实现
正常的梯度下降方式为:原始参数x0x^0+(梯度的反方向*学习率),得到的结果为下图中的x1x^1
Fast Gradient Sign Method (FGSM)原理细节及代码实现
而FGSM是一部到位,直接得到右上角的xx^*
Fast Gradient Sign Method (FGSM)原理细节及代码实现
它关注的不是gradientgradient的具体方向,不管gradientgradient指向左下角的哪一个方向,xx^*始终会落到右上角。因为向量Δ\Deltaxx是方向指向左下角正方向且每个维度的绝对值都为1的向量。如下图红色箭头所示。
Fast Gradient Sign Method (FGSM)原理细节及代码实现
同理,如果gradientgradient在左上角的任何一个方向,对抗样本xx^*始终会落在右下角那个点。

实际上,FGSM是对样本x0x^0进行一次梯度下降的过程,该过程的学习率足够大,以至于可以一步到位。超出的部分由约束ε\varepsilon进行截断(每个维度的最大值是ε\varepsilon)。
Fast Gradient Sign Method (FGSM)原理细节及代码实现

相关文章:

  • 2021-06-11
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-07-15
  • 2021-09-29
  • 2021-12-19
  • 2021-07-25
猜你喜欢
  • 2021-05-02
  • 2022-12-23
  • 2021-04-19
  • 2021-12-11
  • 2022-12-23
  • 2022-12-23
  • 2021-09-23
相关资源
相似解决方案