Fast Gradient Sign Method (FGSM)原理细节及代码实现

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

  • 对约束标准做改动,如 L 2 − n o r m L2-norm L2norm L − i n f i n i t y L-infinity Linfinity等。
  • 对优化方案做改动
    在这里插入图片描述

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

实际上,FGSM是对样本 x 0 x^0 x0进行一次梯度下降的过程,该过程的学习率足够大,以至于可以一步到位。超出的部分由约束 ε \varepsilon ε进行截断(每个维度的最大值是 ε \varepsilon ε)。
在这里插入图片描述

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值