FGSM对抗样本trick汇总

1.FGSM

单步攻击,fast gradient sign method对抗样本生成方法,通过更新对抗扰动,增大图片分类损失,将样本推过分类决策边界。

对抗扰动更新方法如下
X a d v = X + ϵ × s i g n ( ∇ X L ( X , y t r u e ; θ ) ) X^{\mathbf{adv}} = X + \epsilon \times \mathbf{sign}\big(\nabla_{X}L(X,y^{\mathbf{true}}; \theta)\big) Xadv=X+ϵ×sign(XL(X,ytrue;θ))

2.I_FGSM

对单步攻击FGSM进行迭代,扰动更新方法如下
X 0 a d v = X ; X n + 1 a d v = C l i p X ϵ { X n a d v + α × s i g n ( ∇ X L ( X n a d v , y t r u e ; θ ) ) } X^{\mathbf{adv}}_{0} = X; \\ \\ X^{\mathbf{adv}}_{n+1} = \mathbf{Clip}^{\epsilon}_X \{X^{\mathbf{adv}}_n + \alpha \times \mathbf{sign}\big(\nabla_{X}L(X^{\mathbf{adv}}_n,y^{\mathbf{true}}; \theta)\big) \} X0adv=X;Xn+1adv=ClipXϵ{Xnadv+α×sign(XL(Xnadv,ytrue;θ))}

3.MI-FGSM

在i-FGSM的基础上加入动量 m \mathbf{m} m,类似于优化方法中的动量法,给参数更新的方向增加一个历史的惯性,提升参数梯度变化的稳定性。

对抗样本更新方法如下
g n + 1 = μ × g n + ∇ X L ( X n a d v , y t r u e ; θ ) ∣ ∣ ∇ X L ( X n a d v , y t r u e ; θ ) ∣ ∣ 1 ; X n + 1 a d v = C l i p X ϵ { X n a d v + α × s i g n ( g n + 1 ) } \mathcal{g}_{n + 1} = \mu \times \mathcal{g}_n + \frac{\nabla_{X}L(X^{\mathbf{adv}}_n,y^{\mathbf{true}}; \theta)}{||\nabla_{X}L(X^{\mathbf{adv}}_n,y^{\mathbf{true}}; \theta)||_1}; \\ \\ X^{\mathbf{adv}}_{n+1} = \mathbf{Clip}^{\epsilon}_X \{X^{\mathbf{adv}}_n + \alpha \times \mathbf{sign}\big(\mathcal{g}_{n+1}\big) \} gn+1=μ×gn+XL(Xnadv,ytrue;θ)1XL(Xnadv,ytrue;θ);Xn+1adv=ClipXϵ{Xnadv+α×sign(gn+1)}

其中 μ \mu μ为动量参数,当为0时,即为I-FGSM方法。

4.DI-2-FGSM

输入多样化,输入图片进入一个input diversity函数 T ( X n a d v ; p ) T(X^{adv}_n; p) T(Xnadv;p),以p的概率对输入进行多样化处理,提升对抗样本的转移性

对抗样本更新方法
X n + 1 a d v = C l i p X ϵ { X n a d v + α × s i g n ( ∇ X L ( T ( X n a d v ; p ) , y t r u e ; θ ) ) } X^{\mathbf{adv}}_{n+1} = \mathbf{Clip}^{\epsilon}_X \{X^{\mathbf{adv}}_n + \alpha \times \mathbf{sign}\big(\nabla_{X}L(T(X^{\mathbf{adv}}_n; p),y^{\mathbf{true}}; \theta)\big) \} Xn+1adv=ClipXϵ{Xnadv+α×sign(XL(T(Xnadv;p),ytrue;θ))}
其中函数 T ( X n a d v ; p ) T(X^{adv}_n; p) T(Xnadv;p),以1-p的概率不做任何处理,直接输出原始的 X n a d v X^{adv}_n Xnadv
T ( X n a d v ; p ) = { T ( X n a d v )      w i t h   p r o b a b i l i t y   p ; X n a d v            w i t h   p r o b a b i l i t y   1 − p T(X^{adv}_n; p) = \begin{cases} T(X^{adv}_n) \ \ \ \ \mathbf{with\ probability\ p}; \\ X^{adv}_n \ \ \ \ \ \ \ \ \ \ \mathbf{with\ probability\ 1-p} \end{cases} T(Xnadv;p)={T(Xnadv)    with probability p;Xnadv          with probability 1p

该函数的Pytorch实现如下

import torch
import torch.nn.functional as F

def input_diversity(x, diversity_prob=0.5, resize_rate=0.9):
    img_size = x.shape[-1]
    img_resize = int(img_size * resize_rate)
    if resize_rate < 1:
        img_size = img_resize
        img_resize = x.shape[-1]
    rnd = torch.randint(low=img_size, high=img_resize, size=(1,), dtype=torch.int32)
    rescaled = F.interpolate(x, size=[rnd, rnd], mode='bilinear', align_corners=False)
    h_rem = img_resize - rnd
    w_rem = img_resize - rnd
    pad_top = torch.randint(low=0, high=h_rem.item(), size=(1,), dtype=torch.int32)
    pad_bottom = h_rem - pad_top
    pad_left = torch.randint(low=0, high=w_rem.item(), size=(1,), dtype=torch.int32)
    pad_right = w_rem - pad_left

    padded = F.pad(rescaled, [pad_left.item(), pad_right.item(), pad_top.item(), pad_bottom.item()], value=0)

    return padded if torch.rand(1) < diversity_prob else x

5.TI-FGSM

针对防御模型的攻击,利用一个事先定义好的kernel对扰动参数的梯度进行卷积平滑,提升对抗效果的转移性
X n + 1 a d v = X n r e a l + ϵ × s i g n ( W ∗ ∇ X J ( X n r e a l , y ) ) X^{adv}_{n+1} = X^{real}_{n} + \epsilon \times \mathbf{sign}(\mathbf{W} * \nabla_X J(X^{real}_n, y)) Xn+1adv=Xnreal+ϵ×sign(WXJ(Xnreal,y))
其中 W W W为卷积核, ∗ * 表示卷积计算;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值