论文总结《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要查看的表名按约束的作用范围 列级约束: 将此约束声明在对应字段的后面 表级约束:在表中所有字段都声明完,在所有字段的后面声明的约束,可以声…...
iOS 26 携众系统重磅更新,但“苹果智能”仍与国行无缘
美国西海岸的夏天,再次被苹果点燃。一年一度的全球开发者大会 WWDC25 如期而至,这不仅是开发者的盛宴,更是全球数亿苹果用户翘首以盼的科技春晚。今年,苹果依旧为我们带来了全家桶式的系统更新,包括 iOS 26、iPadOS 26…...
全球首个30米分辨率湿地数据集(2000—2022)
数据简介 今天我们分享的数据是全球30米分辨率湿地数据集,包含8种湿地亚类,该数据以0.5X0.5的瓦片存储,我们整理了所有属于中国的瓦片名称与其对应省份,方便大家研究使用。 该数据集作为全球首个30米分辨率、覆盖2000–2022年时间…...
如何将联系人从 iPhone 转移到 Android
从 iPhone 换到 Android 手机时,你可能需要保留重要的数据,例如通讯录。好在,将通讯录从 iPhone 转移到 Android 手机非常简单,你可以从本文中学习 6 种可靠的方法,确保随时保持连接,不错过任何信息。 第 1…...
第 86 场周赛:矩阵中的幻方、钥匙和房间、将数组拆分成斐波那契序列、猜猜这个单词
Q1、[中等] 矩阵中的幻方 1、题目描述 3 x 3 的幻方是一个填充有 从 1 到 9 的不同数字的 3 x 3 矩阵,其中每行,每列以及两条对角线上的各数之和都相等。 给定一个由整数组成的row x col 的 grid,其中有多少个 3 3 的 “幻方” 子矩阵&am…...
学习STC51单片机32(芯片为STC89C52RCRC)OLED显示屏2
每日一言 今天的每一份坚持,都是在为未来积攒底气。 案例:OLED显示一个A 这边观察到一个点,怎么雪花了就是都是乱七八糟的占满了屏幕。。 解释 : 如果代码里信号切换太快(比如 SDA 刚变,SCL 立刻变&#…...
Maven 概述、安装、配置、仓库、私服详解
目录 1、Maven 概述 1.1 Maven 的定义 1.2 Maven 解决的问题 1.3 Maven 的核心特性与优势 2、Maven 安装 2.1 下载 Maven 2.2 安装配置 Maven 2.3 测试安装 2.4 修改 Maven 本地仓库的默认路径 3、Maven 配置 3.1 配置本地仓库 3.2 配置 JDK 3.3 IDEA 配置本地 Ma…...
华为OD机考-机房布局
import java.util.*;public class DemoTest5 {public static void main(String[] args) {Scanner in new Scanner(System.in);// 注意 hasNext 和 hasNextLine 的区别while (in.hasNextLine()) { // 注意 while 处理多个 caseSystem.out.println(solve(in.nextLine()));}}priv…...
适应性Java用于现代 API:REST、GraphQL 和事件驱动
在快速发展的软件开发领域,REST、GraphQL 和事件驱动架构等新的 API 标准对于构建可扩展、高效的系统至关重要。Java 在现代 API 方面以其在企业应用中的稳定性而闻名,不断适应这些现代范式的需求。随着不断发展的生态系统,Java 在现代 API 方…...
MySQL的pymysql操作
本章是MySQL的最后一章,MySQL到此完结,下一站Hadoop!!! 这章很简单,完整代码在最后,详细讲解之前python课程里面也有,感兴趣的可以往前找一下 一、查询操作 我们需要打开pycharm …...
API网关Kong的鉴权与限流:高并发场景下的核心实践
🔥「炎码工坊」技术弹药已装填! 点击关注 → 解锁工业级干货【工具实测|项目避坑|源码燃烧指南】 引言 在微服务架构中,API网关承担着流量调度、安全防护和协议转换的核心职责。作为云原生时代的代表性网关,Kong凭借其插件化架构…...
