论文总结《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要查看的表名按约束的作用范围 列级约束: 将此约束声明在对应字段的后面 表级约束:在表中所有字段都声明完,在所有字段的后面声明的约束,可以声…...
线程同步:确保多线程程序的安全与高效!
全文目录: 开篇语前序前言第一部分:线程同步的概念与问题1.1 线程同步的概念1.2 线程同步的问题1.3 线程同步的解决方案 第二部分:synchronized关键字的使用2.1 使用 synchronized修饰方法2.2 使用 synchronized修饰代码块 第三部分ÿ…...

2025盘古石杯决赛【手机取证】
前言 第三届盘古石杯国际电子数据取证大赛决赛 最后一题没有解出来,实在找不到,希望有大佬教一下我。 还有就会议时间,我感觉不是图片时间,因为在电脑看到是其他时间用老会议系统开的会。 手机取证 1、分析鸿蒙手机检材&#x…...
uniapp中使用aixos 报错
问题: 在uniapp中使用aixos,运行后报如下错误: AxiosError: There is no suitable adapter to dispatch the request since : - adapter xhr is not supported by the environment - adapter http is not available in the build 解决方案&…...

Android 之 kotlin 语言学习笔记三(Kotlin-Java 互操作)
参考官方文档:https://developer.android.google.cn/kotlin/interop?hlzh-cn 一、Java(供 Kotlin 使用) 1、不得使用硬关键字 不要使用 Kotlin 的任何硬关键字作为方法的名称 或字段。允许使用 Kotlin 的软关键字、修饰符关键字和特殊标识…...

ubuntu系统文件误删(/lib/x86_64-linux-gnu/libc.so.6)修复方案 [成功解决]
报错信息:libc.so.6: cannot open shared object file: No such file or directory: #ls, ln, sudo...命令都不能用 error while loading shared libraries: libc.so.6: cannot open shared object file: No such file or directory重启后报错信息&…...
加密通信 + 行为分析:运营商行业安全防御体系重构
在数字经济蓬勃发展的时代,运营商作为信息通信网络的核心枢纽,承载着海量用户数据与关键业务传输,其安全防御体系的可靠性直接关乎国家安全、社会稳定与企业发展。随着网络攻击手段的不断升级,传统安全防护体系逐渐暴露出局限性&a…...

工厂方法模式和抽象工厂方法模式的battle
1.案例直接上手 在这个案例里面,我们会实现这个普通的工厂方法,并且对比这个普通工厂方法和我们直接创建对象的差别在哪里,为什么需要一个工厂: 下面的这个是我们的这个案例里面涉及到的接口和对应的实现类: 两个发…...

Selenium 查找页面元素的方式
Selenium 查找页面元素的方式 Selenium 提供了多种方法来查找网页中的元素,以下是主要的定位方式: 基本定位方式 通过ID定位 driver.find_element(By.ID, "element_id")通过Name定位 driver.find_element(By.NAME, "element_name"…...

免费批量Markdown转Word工具
免费批量Markdown转Word工具 一款简单易用的批量Markdown文档转换工具,支持将多个Markdown文件一键转换为Word文档。完全免费,无需安装,解压即用! 官方网站 访问官方展示页面了解更多信息:http://mutou888.com/pro…...

【Linux】使用1Panel 面板让服务器定时自动执行任务
服务器就是一台24小时开机的主机,相比自己家中不定时开关机的主机更适合完成定时任务,例如下载资源、备份上传,或者登录某个网站执行一些操作,只需要编写 脚本,然后让服务器定时来执行这个脚本就可以。 有很多方法实现…...