对抗样本之CW原理&coding

目录

  • 1 引言
  • 2 算法详解
    2.1 常人思路
    2.2 CW算法思路
  • 3 攻击直观对比
  • 4 总结
  • 5 附录

1 引言

本文采用手稿模拟的角度,尽量使读者较为直白的面对冷冰冰的公式。
抛去CW算法不谈。一般来说,生成样本算法都要保证如下两个条件:

  • 1、对抗样本和干净样本的差距应该越小越好。评价指标有 L0,L2,L正无穷
  • 2、对抗样本应该使得模型分类错,且分类错的那一类的置信度应足够的高(有目标攻击)。

条件一,保证了生成样本与原始干净样本尽量的相似。
条件二,保证了生成样本确实能成功攻击模型。
仔细想想,这两个条件是不是就满足了生成样本的全部需求哩。

问题定义清楚了,那问题的数学描述就成了关键。

2 算法详解

2.1 常人思路

数学描述:

在这里插入图片描述

  • 上述公式,Rn满足了条件一,f (An) 满足了条件二。
  • 由于是有目标攻击,t 就是我们想要攻击成的类别,表示将对抗样本输入模型后,它的softmax层第t个的值越大,也就说明模型将其归为第t个类别,攻击成功。
  • 我们希望模型将其归为第t个类别的概率越大越好,也就是希望 Z(An)t 越大越好 。Z(An)t 前面加个负号,变为最小化问题。

其手稿模拟如下:

在这里插入图片描述

如上的公式是不是很简单阿。那是我等常人的思考过程,肯定简单阿。但这并不是CW算法,它主要在此基础上做了优化,不然怎么发顶会呢。

  • 我们常人思路的缺点:通过如上公式反向传播,An实际有可能超出像素范围。
  • 办法一:使用截断的思想,但会使攻击性能下降
  • 办法二:CW算法提出的思想,将其映射到tanh空间

2.2 CW算法思路

  • 便于对比,CW算法与常人思路放在一起。


    在这里插入图片描述
  • 与之前不一样,它将An映射到了区间【0,1】,目的就是随便参数Wn怎么变,反正经过映射变换后,对抗样本An也不会超出像素点的范围。
  • 现在我们将类别 t(也就是我们最后想要攻击成的类别)所对应的逻辑值记为 Z(An)t,将最大的值(对应类别不同于t)记为 max{Z(An)i : i!=t },如果通过优化使得max{Z(An)i : i!=t } - Z(An)t变小,攻击不就离成功了更近嘛。

CW算法手稿模拟:

在这里插入图片描述

这里你可能对如下图。为什么外面还要套个max,然后与-k这个超参数进行比较:
在这里插入图片描述
来张函数图,你感受下:
在这里插入图片描述

  • 如上图,如果y的值(即损失值),比 -k 要小,那max( y , -3 )的值就一直是 -3 ,即使继续反向传播也不会优化参数了。
  • 我认为这一步加得鸡肋。给我一种感觉:你在不断努力地内卷,然后有个人不断的跟你说,你足够好了,不要学了,不要学了!!!
  • 因此可以理解为,k越大,那么模型分错,且错成的那一类的概率越大。

3 攻击直观对比

常人思路攻击:


在这里插入图片描述

CW攻击:


在这里插入图片描述

4 总结

CW是一个基于优化的攻击,主要调节的参数是c和k,看你自己的需要了。它的优点在于,可以调节置信度,生成的扰动小,可以破解很多的防御方法,缺点是,很慢。

5 附录

  • 论文:

  • CW攻击原论文地址——https://arxiv.org/pdf/1608.04644.pdfhttps://arxiv.org/pdf/1910.11099.pdf

  • 代码:

  • 作者github代码:https://github.com/carlini/nn_robust_attacks/blob/master/l2_attack.py

  • 本人代码:https://colab.research.google.com/drive/1Lc36RwSqvbLTxY6G6O1hkuBn9W49x0jO?usp=sharing

  • 博客:

  • CW算法详解--https://www.cnblogs.com/tangweijqxx/p/10627360.html

欢迎留言,力所能及,必答之。

你可能感兴趣的:(对抗样本之CW原理&coding)