论文总结《Towards Evaluating the Robustness of Neural Networks(CW)》
原文链接
C&W
这篇论文更像是在讲一个优化问题,后面讲述如何针对生成对抗样本的不可解问题近似为一个可解的问题,很有启发。本文后面将总结论文各个部分的内容。
Motivation
文章提出了一个通用的设计生成对抗样本的方法,根据该论文提出的方法,可以针对不同任务设计出不同的生成对抗样本的方法。
contributions
- 提出了新的基于 L 0 L0 L0, L 2 L2 L2以及 L ∞ L_\infty L∞距离的攻击方法
- 该方法成功攻击了当时sota的防御方法 defensive distillation
- 提出了一个针对不同任务的设计生成对抗样本目标函数的解决方案
Session 1 介绍
介绍了当时一些攻击方法和防御方法,以及本篇论文的贡献
Session2 背景
介绍了一些背景知识,包括模型的训练,神经网络的定义,不同距离定义,防御性蒸馏模型,
对抗样本的定义,这里提出了后续实验采用三个不同方法采样目标类:
- Average Case: 在非正确的标签中均匀采样
- Best Case: 利用攻击算法攻击非正确标签,挑选最易攻击的标签
- Worst Case: 利用攻击算法攻击非正确标签,挑选出最难攻击的标签
Session3 攻击算法介绍
Session 3 介绍几种攻击算法
A. 介绍利用受限内存的拟牛顿法(L-BFGS)求解最优化问题得到对抗样本
B. 介绍FGSM和I-FGSM
C. 介绍Jacobian-based Saliency Map Attack (JSMA),简单来说就是目标分类对于图像每一个像素点的梯度不同,表征每一个像素对于分类器判别该图像为目标类所作出的影响不同,选出有限数量的最有影响力的像素点进行更新
D. 介绍Deepfool
Session4 实验设置
这篇文章是在图像领域上研究对抗样本,这里叙述了在MNIST和CIFAR上训练的图像模型的相关参数设置
Session5 目标函数设计方法
求解对抗样本的问题可以抽象为下列的优化问题:

我们的目标就是找到 δ \delta δ,使得 D ( x , x + δ ) D(x, x + \delta) D(x,x+δ) 距离最小,同时需要满足下列两条约束条件,分布表示分类器对对抗样本的分类应该是指定的类别 t t t,且对于原图的扰动不能太明显。
然而上述的优化问题无法通过现有的优化算法进行优化,于是我们想办法将限制条件变形加入到最小化的目标函数中
对于 C ( x + δ ) = t C(x + \delta) = t C(x+δ)=t 的变形
定义 f f f,使得 C ( x + δ ) = t C(x + \delta) = t C(x+δ)=t 当且仅当 f ( x + δ ) < 0 f (x + \delta) < 0 f(x+δ)<0,文章中定义了七个可能的 f f f:

其中 ( e ) + (e)^+ (e)+ 表示 m a x ( e , 0 ) max(e, 0) max(e,0), s o f t p l u s ( x ) = l o g ( 1 + e x p ( x ) ) softplus(x) = log(1 + exp(x)) softplus(x)=log(1+exp(x)), l o s s F , s ( x ) loss_{F,s}(x) lossF,s(x) 表示交叉熵损失,那么 -loss 表示的就是分类中需要最小化的目标函数, F ( x ) = s o f t m a x ( Z ( x ) ) F(x) = softmax(Z(x)) F(x)=softmax(Z(x))。
其中 f 1 f_1 f1表示分类为目标类的损失应该越小越好, f 2 , f 3 f_2, f_3 f2,f3表示分类器预测为除目标类外的其他类的最大置信概率应该小于预测为目标类的置信概率, f 4 f_4 f4表示预测的置信概率大于0.5, f 5 f_5 f5表示预测目标类的置信概率大于1.5, f 6 , f 7 f_6, f_7 f6,f7与 f 2 , f 3 f_2, f_3 f2,f3类似,但是替换为了logits输出值。
那么有了 f f f后,对优化问题公式可以有如下变形:

进一步有:

其中 D ( x , x + δ ) D(x, x + \delta) D(x,x+δ)有可以表示为 ∣ ∣ δ ∣ ∣ p ||\delta||_p ∣∣δ∣∣p ,则:

下面我们要解决最后一个约束条件,作者提出三个解决方法:
- Projected gradient descent,执行梯度下降,将梯度下降后超过范围的值直接截断然而作为下一次梯度下降的输入,缺点就是截断带来的误差会带入下一次梯度下降
- Clipped gradient descent,将 f ( x + δ ) f(x + \delta) f(x+δ) 替换为 f ( m i n ( m a x ( x + δ , 0 ) , 1 ) ) f(min(max(x + \delta, 0), 1)) f(min(max(x+δ,0),1)),虽然可以一直保证输入是在范围内,但是缺点就是如果 x + δ x + \delta x+δ很大,那么输入为0,此时梯度为0,更新会因此停滞
- Change of variables,将 δ \delta δ 替换为

这样可以保证输入在范围内且梯度不会为0。因此,所有的约束条件都融合进了目标函数,此时便可以采用现有的优化方法如Adam来进行优化。
Session6 三种攻击
L2攻击

L2攻击是效果文中中效果最好的攻击算法,其中 − k -k −k 用于控制公式产生需要的置信值
L0攻击
L0并非L0范数,而是表示满足某种条件的个数,在文章中表示需要对对抗样本图像像素允许更新的集合,文章采用迭代算法,每一次迭代选取 i = a r g m i n i g i ∗ δ i i = argmin_ig_i*\delta_i i=argminigi∗δi对于的像素位置移出运行更新的集合,直到找到一个对抗样本。
L ∞ L_\infty L∞攻击
L ∞ L_\infty L∞ 原本定义为 δ \delta δ中最大的索引 i i i,这样会导致更新的时候只更新具有最大值得像素位置(除最大值位置外其它位置梯度均为0),其它像素不更新。
因此作者将 L ∞ L_\infty L∞ 替换为超过 τ 的值得像素位置进行惩罚,则优化函数为:

Session7 对攻击方法的评估实验
这里叙述了不同攻击方法的对比实验,以及参数的分析,这里不再赘述,有兴趣可以看原文,这里介绍一下其中提到的defensive distillation方法。
首先先介绍什么是蒸馏,蒸馏是一种模型压缩的方法,简单来说,我有一个Teacher network,利用这个Teacher network在原来的labels上训练(原来的labels称为hard-labels,例如有三分类,则y = [0, 1, 0])。训练后利用Teacher network跑一遍训练集,预测出来的结果作为更小模型的训练集,此时这个训练集称为soft labels(y = [0.6, 0.2, 0.2])。
那么defensive distillation与蒸馏思想类似,不过有两点不同,
- Teacher model和目标 model 大小一致
- 引入了蒸馏温度T,主要用于变化softmax公式:

增加温度T,使得softmax更加 “soft”,即更难以更新,但更新后鲁棒性更强。
总结与思考
这篇文章可以说是讨论一个优化问题的文章,不过是在一个具体的场景下,其中涉及到的关于优化问题的变形很有启发意义,值得学习。
其次,我认为可能的完全有效的攻击方式是模仿出模型预测数据的对应的分布,那么我们就能完全生成我们自己想要模型预测不同结果的对抗样本。
相关文章:
论文总结《Towards Evaluating the Robustness of Neural Networks(CW)》
原文链接 C&W 这篇论文更像是在讲一个优化问题,后面讲述如何针对生成对抗样本的不可解问题近似为一个可解的问题,很有启发。本文后面将总结论文各个部分的内容。 Motivation 文章提出了一个通用的设计生成对抗样本的方法,根据该论文提…...
2024重庆邮电大学软件工程809题库(带答案)
1.下列选项中,不属于质量管理的主要任务的是( C )。 A)制定软件质量保证计划 B)按照质量评价体系控制软件质量要素 C)增加软件产品的功能 D)对最终软件产品进行确认 2.下…...
三种目标检测方法(基于传统数字图像处理的识别方法、基于传统机器学习的识别方法和基于深度学习的识别方法)的区别
问题描述:图像检测分为了基于传统数字图像处理的识别方法、基于传统机器学习的识别方法和基于深度学习的识别方法,但是有时迷惑三者的区别是什么呢? 问题解答: 第一,基于传统数字图像处理的识别方法和其他两者的区分…...
制造业为什么要建设数字化供应链
数字化让越来越多的人走向了线上的世界,让那些拥有线上产品或提供线上服务的企业提供了更多流量。 但与此同时,传统制造业遭受了沉重的打击,考虑到防疫要求,很多工厂长期处于人手不足的状态,生产制造效率大幅降低&…...
webrtc Thread 和 TaskQueue 的 应用和思考
webrtc Thread 和 TaskQueue 的 应用和思考 Thread #include "rtc_base/thread.h"void FunctionToRunOnThread() {// Your threaded logic here.printf("Function running on the thread!\n"); }int main() {rtc::Thread* thread rtc::Thread::Create()…...
无涯教程-Perl - pos函数
描述 此函数用于查找最后匹配的子字符串的偏移量或位置。如果指定了SCALAR,它将返回该标量变量上最后一个匹配项的偏移量。 您还可以为此函数分配一个值(例如pos($foo) 20;),以更改下一个匹配操作的起点。 偏移是从第零位置开始的计数器。 语法 以下是此函数的简单语法- …...
【腾讯云 Cloud Studio 实战训练营】使用Cloud Studio构建Java、Python项目
文章目录 一、云IDE1、云IDE简介2、云IDE和云虚拟桌面区别 二、Cloud Studio 简介1、简介2、AI代码助手3、企业源代码安全 三、快速开始1、登录Cloud Studio2、新建工作空间3、代码空间 四、项目构建1、构建Java项目1.1 新建工作空间1.2 初始化项目1.3 初始化小案例1.4、测试Ja…...
Java的Class类:每一个类都对应着一个Class对象
Class类的基本概念 在Java中,每一个类都对应着一个Class对象,这个Class对象包含了类的相关信息,例如类的名称、继承关系、方法、字段、注解等信息。通过Class对象,可以获取类的各种信息并对其进行操作。 请细品这句话࿱…...
JavaScript预编译机制
变量预编译 任何变量,如果未经声明就赋值,此变量是属于 window 的属性,而且不会做变量提升,无论在哪个作用域内赋值。比如说直接写 console.log(a)肯定会报错,提示找不到 a。但如果直接写 a 100就不会报错࿰…...
【ARM 嵌入式 编译系列 4.1 -- GCC 编译属性 likely与unlikely 学习】
文章目录 GCC likely与unlikely 介绍linux 内核中的 likely/unlikely 上篇文章:ARM 嵌入式 编译系列 4 – GCC 编译属性 __read_mostly 介绍 下篇文章: ARM 嵌入式 编译系列 4.2 – GCC 链接规范 extern “C“ 介绍 GCC likely与unlikely 介绍 likely 和 unlikely …...
《算法竞赛·快冲300题》每日一题:“造电梯”
《算法竞赛快冲300题》将于2024年出版,是《算法竞赛》的辅助练习册。 所有题目放在自建的OJ New Online Judge。 用C/C、Java、Python三种语言给出代码,以中低档题为主,适合入门、进阶。 文章目录 题目描述题解C代码Java代码Python代码 “ 造…...
NSS [MoeCTF 2022]baby_file
NSS [MoeCTF 2022]baby_file 题目源码直接给了 使用data伪协议发现被ban了。 那就换一种伪协议php://filter,猜测flag在同目录下flag.php中或根目录下/flag中 php://filter/readconvert.base64-encode/resourceflag.php读取文件源码(针对php文件需要ba…...
喜报!诚恒科技与赛时达科技达成BI金蝶云星空项目合作
随着全球数字化浪潮轰轰烈烈袭来,仅仅凭借手工处理的方式难以在庞大的数据海洋中精准获取信息、把握市场需求、了解目标用户,为企业创新提供强有力的支持。深圳赛时达科技有限公司(简称赛时达科技)希望通过数字化转型实现从手工处…...
Vscode python调试和运行环境设置
Vscode python调试和运行环境设置 文章目录 Vscode python调试和运行环境设置前言一、是否为每次运行python程序都要选择环境烦恼二、是否为python程序调试不能进标准/第三方库而烦恼 前言 一、是否为每次运行python程序都要选择环境烦恼 在.vscode文件夹(没有就自己造一个)下…...
lua中执行luci.sys.call、luci.sys.exec、os.execute的区别
相同点:都是调用Linux底层脚本及程序 不同点: (1)luci.sys.call(command) 脾气捉摸不透,实际使用有些时候没有得到任何状态或数据返回,纯粹被用了一下。 (2)luci.sys.exec(command) …...
Python-OpenCV中的图像处理-模板匹配
Python-OpenCV中的图像处理-模板匹配 模板匹配单对象的模板匹配多对象的模板匹配 模板匹配 使用模板匹配可以在一幅图像中查找目标函数: cv2.matchTemplate(), cv2.minMaxLoc()模板匹配是用来在一副大图中搜寻查找模版图像位置的方法。 OpenCV 为我们提…...
模拟队列(c++题解)
实现一个队列,队列初始为空,支持四种操作: push x – 向队尾插入一个数 xx;pop – 从队头弹出一个数;empty – 判断队列是否为空;query – 查询队头元素。 现在要对队列进行 MM 个操作,其中的…...
Redis_哨兵模式
9. 哨兵模式 9.1 简介 当主库宕机,在从库中选择一个,切换为主库。 问题: 主库是否真正宕机?哪一个从库可以作为主库使用?如何实现将新的主库的信息通过给从库和客户端? 9.2 基本流程 哨兵主要任务: 监控选择主库通知 会有…...
Mysql中如果建立了索引,索引所占的空间随着数据量增长而变大,这样无论写入还是查询,性能都会有所下降,怎么处理?
索引所占空间的增长确实会对MySQL数据库的写入性能和查询性能造成影响,这主要是由于索引数据过多时会导致磁盘I/O操作变得非常频繁,从而使性能下降。为此,可以采取以下几种方式来减缓这种影响: 1. 限制索引的大小:可以…...
MySQL 约束
查看约束 select * from information_schema.table_constraints where table_name要查看的表名按约束的作用范围 列级约束: 将此约束声明在对应字段的后面 表级约束:在表中所有字段都声明完,在所有字段的后面声明的约束,可以声…...
JVM垃圾回收机制全解析
Java虚拟机(JVM)中的垃圾收集器(Garbage Collector,简称GC)是用于自动管理内存的机制。它负责识别和清除不再被程序使用的对象,从而释放内存空间,避免内存泄漏和内存溢出等问题。垃圾收集器在Ja…...
基于Uniapp开发HarmonyOS 5.0旅游应用技术实践
一、技术选型背景 1.跨平台优势 Uniapp采用Vue.js框架,支持"一次开发,多端部署",可同步生成HarmonyOS、iOS、Android等多平台应用。 2.鸿蒙特性融合 HarmonyOS 5.0的分布式能力与原子化服务,为旅游应用带来…...
浅谈不同二分算法的查找情况
二分算法原理比较简单,但是实际的算法模板却有很多,这一切都源于二分查找问题中的复杂情况和二分算法的边界处理,以下是博主对一些二分算法查找的情况分析。 需要说明的是,以下二分算法都是基于有序序列为升序有序的情况…...
基于matlab策略迭代和值迭代法的动态规划
经典的基于策略迭代和值迭代法的动态规划matlab代码,实现机器人的最优运输 Dynamic-Programming-master/Environment.pdf , 104724 Dynamic-Programming-master/README.md , 506 Dynamic-Programming-master/generalizedPolicyIteration.m , 1970 Dynamic-Programm…...
【7色560页】职场可视化逻辑图高级数据分析PPT模版
7种色调职场工作汇报PPT,橙蓝、黑红、红蓝、蓝橙灰、浅蓝、浅绿、深蓝七种色调模版 【7色560页】职场可视化逻辑图高级数据分析PPT模版:职场可视化逻辑图分析PPT模版https://pan.quark.cn/s/78aeabbd92d1...
基于IDIG-GAN的小样本电机轴承故障诊断
目录 🔍 核心问题 一、IDIG-GAN模型原理 1. 整体架构 2. 核心创新点 (1) 梯度归一化(Gradient Normalization) (2) 判别器梯度间隙正则化(Discriminator Gradient Gap Regularization) (3) 自注意力机制(Self-Attention) 3. 完整损失函数 二…...
iview框架主题色的应用
1.下载 less要使用3.0.0以下的版本 npm install less2.7.3 npm install less-loader4.0.52./src/config/theme.js文件 module.exports {yellow: {theme-color: #FDCE04},blue: {theme-color: #547CE7} }在sass中使用theme配置的颜色主题,无需引入,直接可…...
Java求职者面试指南:Spring、Spring Boot、Spring MVC与MyBatis技术解析
Java求职者面试指南:Spring、Spring Boot、Spring MVC与MyBatis技术解析 一、第一轮基础概念问题 1. Spring框架的核心容器是什么?它的作用是什么? Spring框架的核心容器是IoC(控制反转)容器。它的主要作用是管理对…...
验证redis数据结构
一、功能验证 1.验证redis的数据结构(如字符串、列表、哈希、集合、有序集合等)是否按照预期工作。 2、常见的数据结构验证方法: ①字符串(string) 测试基本操作 set、get、incr、decr 验证字符串的长度和内容是否正…...
【Java多线程从青铜到王者】单例设计模式(八)
wait和sleep的区别 我们的wait也是提供了一个还有超时时间的版本,sleep也是可以指定时间的,也就是说时间一到就会解除阻塞,继续执行 wait和sleep都能被提前唤醒(虽然时间还没有到也可以提前唤醒),wait能被notify提前唤醒…...
