对抗样本之CW原理coding

news/2024/11/24 19:15:03/

目录

    • 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.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

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

关注我,带你体验不一样的AI生活。


http://www.ppmy.cn/news/520207.html

相关文章

CW聚类算法原理 -- 译自《Chinese Whispers》论文

Chinese Whispers-一个有效的图聚类算法及其在自然语言处理问题中的应用 克里斯.比曼 莱比锡大学,自然语言处理学院 注:由于这里不好复制图片和公式,展示并不理想,可在我的github:https://github.com/ouprince/CW里面…

CW2015电量计驱动分析

Chip:CW2015 SoC:RK3288 Platform:Android 5.1 PSY 一般power supply分为三种:DC,USB,battery 本文着重分析battery,并介绍CW2015电量计调试的相关经验 probe()函数 分析驱动毫无疑问从pr…

CW32F030相关内容调研

内核:ARM Cortex-M0+ 最高主频 64MHz • 工作温度:-40℃ 至 105℃;工作电压:1.65V 至 5.5V • 存储容量最大 64K 字节 FLASH,数据保持 25 年 @85℃最大 8K 字节 RAM,支持奇偶校验128 字节 OTP 存储器 • CRC 硬件计算单元 • 复位和电源管理低功耗模式(Sleep,DeepSleep…

电机的CW与CCW是什么意思呢?

电机的CW与CCW是什么意思呢? CW:clockwise 顺时针 CCW:counterclockwise 逆时针

CW2015 linux 锂电池驱动源码

linux 驱动 描述&#xff1a;cw2015驱动源码在实际项目中验证过&#xff0c;可以放心使用&#xff0c;驱动代码功能正常。 CW2015 驱动源码 #include <linux/module.h> #include <linux/i2c.h> #include <linux/power_supply.h> #include <linux/regmap.h…

VS2008开发之宽字符集和多字节字符集之间的相互转换

1、需要包含头文件&#xff1a; #include <atlstr.h> 2、将宽字符集&#xff08;Unicode&#xff09;转化为多字符集&#xff08;ASCII&#xff09;&#xff0c;使用CW2A 3、将多字符集&#xff08;ASCII&#xff09;转化为宽字符集&#xff08;Unicode&#xff09;&am…

cw2015 arduino esp32程序

CW2015是一款超紧凑、低成本电量计IC&#xff0c;适用于手持式和便携式设备中的锂离子&#xff08;Li&#xff09;电池。 cw2015.cpp #include "cw2015.h"CW2015::CW2015(TwoWire *pWire) {_pWire pWire; }void CW2015::initCW2015(void)//初始化IIC {_pWire->be…

cw脉冲matlab产生,CW脉冲和LFM信号Matlab仿真.pdf

CW脉冲和LFM信号Matlab仿真.pdf 一 CW信号 一、程序 t-0.05:0.0001:0.05; f01000; k25000; s cos(2.*pi.*f0.*t); nwgn(1,1001,2); s1sn; h cos(2.*pi.*f0.*(-t)); c1conv(s,h); c2conv(s1,h); figure(1); plot(n); figure(2); plot(s); figure(3); plot(c1); figure(4); plot(…