JMSA(Jacobian Saliency Map Attack)算法源码解析

本文介绍了如何利用前向梯度生成对抗样本,不同于传统方法如FGSM和PGD,这种方法考虑的是目标类别标记的预测值梯度。JSMA(JacobianSaliencyMapAttack)通过构建显著图来确定像素对的修改策略,以实现对深度学习模型的有效攻击。

论文链接:https://arxiv.org/abs/1511.07528v1
源码出处:https://github.com/Harry24k/adversarial-attacks-pytorch/tree/master


解析

FGSM、PGD等算法生成的对抗样本的扰动方向都是损失函数的梯度方向(可以参考本人以前的博客),该论文生成的对抗样本的扰动方向是目标类别标记的预测值的梯度方向,作者将这个梯度称为前向梯度(forward derivative)。作者将前向梯度定义为神经网络在训练期间学习的函数 F F F的雅可比矩阵(Jacobian matrix),即 ▽ F ( X ) = ∂ F ( X ) ∂ X = [ ∂ F j ( X ) ∂ X i ] \triangledown F(X)=\dfrac{\partial F(X)}{\partial X}=\begin{bmatrix}\dfrac{\partial F_j(X)}{\partial X_i}\end{bmatrix} F(X)=XF(X)=[XiFj(X)]其中, F j ( X ) F_j(X) Fj(X)表示模型对于标签 j j j的输出值, X i X_i Xi表示样本 X X X中第 i i i个数据。
通过如上的前向梯度,我们可以知道每个像素点对模型分类的结果的影响程度,进而利用前向梯度信息来更新干净样本 X X X,生成的对抗样本就能被分类成为指定的类别。
作者引入了显著图的概念,该概念来自于计算机视觉领域,表示不同的输入特征对分类结果的影响程度。若发现某些特征对应分类器中某个特定输出,可通过在输入样本中增强或减弱这些特征来使分类器产生指定输出。

算法步骤

1 计算前向梯度

计算模型类别置信度输出层中的每一个类别置信度对于输入 X X X的偏导,该偏导值表示不同位置的像素点对分类结果的影响程度。公式如下: ▽ F ( X ) = ∂ F ( X ) ∂ X = [ ∂ F j ( X ) ∂ X i ] \triangledown F(X)=\dfrac{\partial F(X)}{\partial X}=\begin{bmatrix}\dfrac{\partial F_j(X)}{\partial X_i}\end{bmatrix} F(X)=XF(X)=[XiFj(X)]

2 构建显著图

若是正向扰动,即增加的扰动 θ > 0 \theta>0 θ>0,则: S ( X , t ) [ i ] = { 0 i f   ∂ F t ( X ) ∂ X i < 0   o r   ∑ j ≠ t ∂ F j ( X ) ∂ X i > 0 ( ∂ F t ( X ) ∂ X i ) ∣ ∑ j ≠ t ∂ F j ( X ) ∂ X i ∣ o t h e r w i s e S(X,t)[i]=\left\{ \begin{array}{rcl} 0 && if\ \dfrac{\partial F_t(X)}{\partial X_i}<0\ or\ \sum\limits_{j\ne t}\dfrac{\partial F_j(X)}{\partial X_i}>0\\ \left(\dfrac{\partial F_t(X)}{\partial X_i}\right)\bigg|\sum\limits_{j\ne t}\dfrac{\partial F_j(X)}{\partial X_i}\bigg| && otherwise \end{array} \right. S(X,t)[i]= 0(XiF

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值