CW Attack论文阅读与总结

2023-11-08

论文链接:https://arxiv.org/abs/1709.03842

在阅读《Towards Evaluating the Robustness of Neural Networks》这篇基于优化的CW攻击方法过程中,本文提取了原文中各小节的主要观点,并附有自己对原文公式的解释,以便于后续对CW攻击方法的回顾,也相当于是对自己的阅读论文笔记。后续将不断更新记录自己在对抗攻击方面的学习成果。

1 引言

现有的神经网络容易受到攻击。Szegedy等人首先注意到图像分类领域中存在对抗性的例子:可以对原始图像添加扰动使得分类器分类出错。防御蒸馏可以应用于任何前馈神经网络,只需要一个简单的重新训练步骤,便使得攻击成功概率从95%降低到0.5%。

本文创建了一组可用于构造神经网络鲁棒性上界的攻击,防御蒸馏方法无法抵抗我们的攻击。在普遍的模型上与其他攻击进行比较时,本文的方法生成了对抗样本在每种情况下总失真都较小。此攻击方法是评估防御性能的最佳基准。

可转移性在我们的攻击方法中也存在,并且被我们证明可以从非安全模型转移到防御提炼(安全)模型。

使用的数据集:MNIST,一个数字识别任务(0-9);CIFAR-10,一个小型图像识别任务,10个类;以及ImageNet,一项包含1000个类的大型图像识别任务。值得注意的是:在ImageNet分类任务的一个极端示例中,我们可以通过仅更改每个像素的最低阶位,导致Inception v3网络对图像进行错误分类。

贡献:(1)基于三种距离度量L0、 L2 和L\propto设计了三种攻击方法 ;

(2)防御蒸馏抵抗不住我们; 

(3)提出利用高置信度的攻击样本来进行迁移攻击,作为测试模型鲁棒性的手段,同时这种方法也成功攻破了防御性蒸馏;

(4)系统性地评估了不同损失函数对攻击效果的影响,发现损失函数的选择影响巨大。

2 背景

A 威胁模型

机器学习模型的安全特性变得十分重要,语音识别领域可以生成与人类不同的音频来恶意控制用户设备,这项工作的重点是传统高斯混合模型与隐马尔科夫模型;恶意软件分类领域的对抗样本可以使其保持恶意软件状态但被归类为良性软件从而攻击了软件分类器;

距离度量在每个领域是不同的,在本文所关注的图像空间中,我们发现各种Lp规范是人类感知距离的合理近似值。

白盒攻击:本文实验假设对手可访问神经网络的结构和所有参数。可转移性:前有证明如果有黑盒访问权限则可以训练替代模型而攻击目标模型。

B 神经网络与符号

在我们实验中,模型固定所以不依赖参数\theta;输出向量y满足softmax输出,被视为概率分布;公式符号定义如下:

y_{i} :输入x属于类别i 的概率;

标签分配:C\left ( x \right )=argmax_{i}F\left ( x \right )_{i}  ;

其中,F(\cdot ) 为包含softmax函数的完整网络,

          Z\left ( x \right )=z为是除softmax之外的所有层的输出(z为logits)。

有以下公式

\theta _{i}表示模型weights,\hat{\theta }_{i}表示biases,本文关注使用ReLU激活函数的网络,因为其广泛。

 C 对抗样本

非目标攻击比目标攻击更强大,我们仅考虑目标攻击。我们考虑了以下三种不同的方法选择目标类:

1Average 在不正确的标签中随机均匀地选择目标类;2Best  对所有不正确的类执行攻击,并报告最容易攻击的目标类; 3 Worst  并报告最难攻击的目标类。

D 距离度量

L_{0}: 测量距离坐标 i 的数量,x_{i}\neq x_{i}^{'} ,对应于图像中已改变的像素数

L_{2}: x_{i}x_{i}^{'} 的欧几里得距离,当许多像素发生许多微小变化时,L2距离可以保持很小。

L_{\oe }:测量任何坐标的最大变化。可想象有一个最大的预算,每个像素可以被修改到这个限制,而不受修改像素数量的限制。

我们相信,构建和评估一个良好的距离度量是我们留给未来工作的一个重要研究问题。全文在[0,1]范围内进行报告而不是[0,255]

E 防御蒸馏

首先以标准方式在训练数据上训练具有相同结构的网络。当我们在训练这个网络的同时计算softmax时,用一个更平滑的softmax版本替换它(通过将logits除以某个常数T)。在训练结束时,通过在每个训练实例上评估该网络并获取网络的输出标签,生成软训练标签。然后,扔掉第一个网络,只使用软训练标签。有了这些,就可以训练第二个网络,而不是在原来的训练标签上训练,而是使用软标签。这会训练第二个模型的行为与第一个模型类似,软标签传递第一个模型学习到的额外隐藏知识。

这里的关键观点是,通过训练匹配第一个网络,可避免对任何训练数据进行过度拟合。如果神经网络的存在是因为神经网络是高度非线性的,并且有“盲点”,而这些盲点存在于对立的例子中,那么防止这种类型的过度拟合可能会消除这些盲点。事实上,正如我们将在后面看到的,防御性的升华并不能消除对抗性的例子。可能出现这种情况的一个潜在原因是,存在对抗性示例的原因不是由于高度非线性神经网络中的盲点,而是由于神经网络的局部线性性质。这种所谓的线性假设似乎是正确的。

3 攻击算法(回顾之前的方法)

A L-BFGS

图像x^{'} 在L2距离下与 x 相似。我们针对c的多个值重复解决这个优化问题,使用对分搜索或任何其他一维优化方法自适应更新c。

 B FGSM

与L-BFGS相比,fgsm方法使用了无穷范数距离度量,设计重点放在“快速”而非“近似”。(为什么是-号?)

 迭代方式的FGSM方法,

 C JSMA(学完再补)

D Deepfool(学完再补)

4 实验

先描述如何训练模型评估我们的攻击:

5 方法(***)

核心思想:CW是一种基于优化的攻击方式,它同时兼顾高攻击准去率和低对抗扰动的两个方面,达到真正意义上对抗样本的效果,即在模型分类出错的情况下,人眼不可查觉(FGSM,PGD攻击生成的图片非常模糊,人眼可以察觉到)。首先对抗样本需要用优化的参数来表示,其次在优化的过程中,需要达到两个目标,目标1 是对抗样本和对应的干净样本应该差距越小越好;目标2是对抗样本应该使得模型分类错,且错的那一类的概率越高越好。

原始形式:其中x是固定的,目标是找到使D(x,x+δ)最小的δ。也就是说,我们想找到一些小的变化δ,我们可以对图像x进行一些小的改变,改变其分类,但结果仍然是有效的图像。这里D是一些距离度量;D包括 L0 L2 L\propto

A 目标函数:约束 C\left ( x+\delta \right )=t 是高度非线性的,很难求解,所以要关于分类的函数 f ,

使得当且仅当f\left ( x+\delta \right )\leq 0 时 C\left ( x+\delta \right )=t 成立,从而联立D 与 f 形成可解的优化函数形

式。f 有如下七种选择,loss代表交叉熵损失函数:

 (七个函数的意义)

添加常数是为了调整公式来适应我们的定义,不会影响结果只会缩放最小化函数,现在我们不使用问题一,而转化为求解问题二:

 这里的c是一个可选择的常数,图中两者是等价的,因为一定存在c,这样问题一的最优解跟问题二的最优解是相匹配的。个人理解:上图中转换后的式子最优解一定是f\left ( x+\delta \right )是最小化后的,既然 f 最优,也就是对抗样本对应的目标类别 t 的softmax值是最大的,那么也一定满足f\left ( x+\delta \right )\leq 0  ,反过来推导也是成立的。所以原文作者说两个形式所产生的最优解是等价的,转换之后也就能够同时优化两部分!

对于常数c的选择,原文说选择c的最佳方法是使用c 的最小值(?),作者的结论是在满足解f\left ( x^{'} \right )\leq 0成立的前提下,选用最小的c值,因为这样可以使得训练过程中,梯度下降算法同时优化函数里的两个项,而不是做“有偏”的优化。针对这一点,作者利用损失函数f_{6}\left ( x^{'} \right )进行了实验,将变量c在0.01到100的log空间内均匀地取值,统计攻击成功率及扰动的L_{2}距离,结果如下图所示,可以发现,当c> 1时,增大c几乎不会再提高攻击的成功率,但是扰动的L_{2} 距离会不断增大,这就说明在保证攻击成功的前提下,应尽可能选择c的最小值。

图1 超参数c取值对攻击成功率和扰动距离的影响 

B Box constraints(像素上下界问题)

【本小节的理解参照博文:https://blog.csdn.net/weixin_37627840/article/details/114270525

之所以存在上下界,是因为数字图像能表示的像素值范围是有限的,在经过归一化之后,像素值应该在[0,1]的范围内,为了确保添加扰动后的图像有效,我们要对 \delta 有一个限制,即:0\leq x_{i}+\delta _{i}\leq 1(box constraint),如果在攻击生成之后,直接把像素值裁剪到[0,1]的范围内,这样会破坏形成的攻击效果。那么如何在优化的过程中引入限制,又能保障攻击的效果呢?作者研究三种不同的方法来解决这个问题:

(1) PGD 投影梯度下降:在攻击的每一步迭代完成之后,将所有坐标剪辑到[0,1]。

(2)剪辑梯度下降:并不在每次迭代中都clip\left ( x_{i} \right ),而是将剪辑合并到目标函数中以最小化。也就是用f\left ( min\left ( max\left ( x+\delta ,0 \right ),1 \right ) \right ) 代替 f\left ( x+\delta \right ) ,取得最小和最大分量。

但是这样又会带来另一个问题,设想这样一个场景:假如在某个迭代步中,x+\delta 的范围超出了1的限制,但是在下一个迭代步中,该处的像素值回调到[0,1]之间并且攻击效果提升了,那么由于损失函数的限制,在第一个迭代步中,梯度为0,因此实际上没有任何攻击扰动的变化,那么后一个迭代步的攻击效果提升也就自然无法被找到了。

(3)换元法:通过引入新的变量 \omega 使得扰动的表达式变为\delta _{i}=\frac{1}{2}\left ( tanh\left ( \omega _{i} \right )+1 \right )-x_{i}
 这样对抗样本就变成x^{'}=\frac{1}{2}\left ( tanh\left ( \omega \right ) +1\right )

由于tanh函数本身的值域范围为[-1,1],这样就保证了x+\delta的范围在[0,1]之间,同时,因为tanh函数在全定义域内导数均不为0,也就克服了Clipped gradient descent方法的缺点。这样做还有另一个好处,由于像素值的限制靠的是损失函数本身的值域而非人工截断,那么就可以引入一些不支持人工截断的优化器,例如Adam。作者通过实验对比标准梯度下降法、动量梯度下降法和Adam,发现Adam在保证攻击效果的前提下实现了更快的收敛速度。

C 评估方法

为了选择最优的c,我们执行20次二进制搜索迭代。对于每个选定的c,使用Adam优化器运行10000次梯度下降迭代。

表3是对于七种目标函数(f)与三个框约束方法一一组合,测试攻击的成功率以及扰动的L_{2}距离。通过表3可得到的结论是:对于最佳的最小化函数(f_{6}),处理框约束的方法的选择不会对结果的质量产生显著影响。(..........理解...........)

D 离散化

经过归一化后的像素值是在[0,1]范围内的连续值,而数字图像的像素值是[0,255]范围内的离散整数值,当把攻击图像映射回[0,255]范围时,原文直接按 255*\left ( x_{i}+\delta _{i} \right )  此公式四舍五入到最接近的[0,255]范围内的整数。这样就会在一定程度上破坏攻击的质量。为了解决这个问题,作者采用了贪心搜索的策略来完成这个映射,最大限度地保障攻击的质量。

6 攻击方法

L_{2}攻击:

基于L_{2} 距离的攻击就是优化如下的目标函数:

 f函数是之前得到的最佳目标函数,稍微修改添加了 k ,使得我们通过 k 可以调整错误分类得到的置信度。若 x^{'} 被分类为目标类别,则max\left \{ Z\left ( x^{'} \right ) _{i}:i\neq t\right \}-Z\left ( x^{'} \right )_{t} 是负值,若设置 k=0,则f\left ( x^{'} \right )=0,意味着该函数不会被惩罚,否则如果被识别为非目标类别,则该函数一定会受到惩罚。所以原文说通过改变 k 值可以得到预期的置信度,k 值越大模型越容易分错,并且错的那一类概率越大。

多起点梯度下降:为了解决梯度下降容易陷入“次优解”的问题,作者在原始图像的r rr领域(r rr对应已发现的扰动最小的攻击样本)里采样多个点作为初始图像,在多个初始图像的基础上进行攻击扰动的生成。

L_{0} 攻击

由于L_{0} 距离是不可导的,因此不可以像基于L_{2} 的攻击一样直接使用梯度下降进行优化,从L_{0}距离的含义来看,是在修改的像素数量上做文章。基于此,作者设计了一套在每个迭代轮次里去掉一个像素点的方案。具体操作是,在每个迭代步中,

基于L_{2}距离来生成攻击样本

计算损失函数值,获得扰动对应的梯度g=\bigtriangledown f\left ( x+\delta \right ) 

随后基于梯度来找到对目标函数值影响最小的像素点i=argmin_{i}g_{i}*\delta _{i}

{\color{Orchid} g_{i}*\delta _{i}}表示图片第i个像素在{\color{Orchid}f\left ( \cdot \right ) }的减少量,

{\color{Orchid} x\rightarrow x+\delta }{\color{Orchid} g_{i}}表示每单位改变到第i个像素时 f 的减少量,乘以{\color{Orchid} \delta _{i}}表示第 i 个像素改变了多少。也就是

将该像素点排除在外,对其他像素进行梯度反传更新。

不断迭代,直到获得一个最小的像素子集合(终止条件是L_{2} 的攻击方式无法再找到有效的攻击样本)。

  在每次迭代时不再从原始图像开始,而是从上次迭代后的图像开始梯度下降(热启动),这大大减少了每次迭代中所需梯度下降的轮数,作者解释这是因为保持k像素不变的解决方案通常与保持k+1像素不变的解决方案非常相似。(修改k个像素与修改k+1个像素在生成对抗样本的方式上是非常接近的)

L_{\infty } 攻击

因为L_{\infty }距离不是完全可导的,作者尝试过优化以下的目标函数,但是发现效果非常不理想,原因可想而知,按照无穷范数 距离含义,这样的优化只会去惩罚扰动量最大的像素。那么就有可能出现这样一种情况:有两个像素点,分别是\delta _{i}=0.5 和\delta _{j}=0.5-\varepsilon,那么 
 正则化就会惩罚 \delta _{i} 点,而正则化项在\delta _{j}  点处的梯度\frac{\partial }{\partial \delta _{i}} \left \| \delta \right \|_{\infty }将会是0,该点即便扰动量很大也不会被惩罚。因此,在后续的迭代步中, 
 可能会慢慢大于    ,如此反复,两个点会在   的基线附近来回波动,不会有任何有效的更新。

为了解决这个问题,作者优化正则化项:

 正则化项将会惩罚所有超过τ 的像素点,在每个迭代轮次完成后,如果所有像素的像素值均小于τ ,那么就会对τ 进行衰减,衰减因子是0.9。否则,就停止攻击样本的搜索过程。同时,迭代过程中使用与L_{0}相同的“热启动”。对于c初始值,先设置c取极小的值,若失败则c*=2,继续搜索直至成功,若c超过阈值,则终止。实验发现跟L2算法一样快。


 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

CW Attack论文阅读与总结 的相关文章

  • 对indexedDB的一些使用方法

    indexedDB的使用 1 打开数据库和创建数据仓库 createDB function dbName version tableName key cursor callBack 参数为 dbName数据库名 version版本号 tab
  • Python运维开发工程师养成记(while循环语句)

    图示 案例 contine和break用法 无限循环 while else语句 今天分享到这里 喜欢的盆友可以关注一下博主 链接 https ke qq com course 4300856 tuin d8aedf68
  • android 环信集成,Android 环信集成使用总结

    最近因为项目需要 需要集成环信 对于一些账号的注册 配置的添加官方文档上写的都有 就不在记录 就记录一下集成过程中遇到的问题 环信demo中的代码太乱 而且一些功能用不到 我们就移值些自己有用的放到自己的项目中 1 消息监听 环信在收到消息

随机推荐

  • mysql如何查询成绩前5名_sql 语句查询 前5名后5名的成绩

    蝴蝶不菲 两种办法 分别求最大和最小 然后union allselect from select from table order by 成绩 where rownum lt 5union allselect from select fro
  • 每隔5分钟输出最近一小时内点击量最多的前N个商品(SQL实现版)

    代码 package com zjc flow analysis hotitems analysis import org apache flink api common serialization SimpleStringSchema i
  • 智能合约调试指南

    不像你在其他地方看到的纸质合约 以太坊的智能合约是代码组成的 需要你以非常谨慎的态度去对待它 这是一件好事 想象下如果现实世界的合同需要编译的话会更清晰么 如果我们的合同没有被正确的编码出来 我们的交易可能会失败 导致以太币的损失 以 ga
  • 真题详解(Flynn分类)-软件设计(四十六)

    真题详解 计算机总线 软件设计 四十五 https blog csdn net ke1ying article details 130046829 Flynn分类将计算机分为四类 单指令流单数据流机器 SISD 早期的机器 在某个时钟周期
  • C++ 读取结束的判断

    cin 可以用来从键盘输入数据 将标准输入重定向为文件后 cin 也可以用来从文件中读入数据 在输入数据的多少不确定 且没有结束标志的情况下 该如何判断输入数据已经读完了呢 从文件中读取数据很好办 到达文件末尾就读取结束了 从控制台读取数据
  • shell脚本系列:6、shell扩展

    shell脚本系列 6 shell扩展 文章目录 shell脚本系列 6 shell扩展 1 花括号扩展 2 波浪号扩展 3 shell参数扩展 4 命令替换 5 算术扩展 6 进程替换 7 分词 8 文件名扩展 8 1 模式匹配 9 引号
  • 【upload-labs】————8、Pass-07

    闯关界面 前后端检测判断 查看源代码 文件后缀大小写 去除 DATA 关键词过滤 在这里可以发现所有的都考虑到了 但是却没有考虑后缀为 的情况 在windows中PHP会自动去除后缀名中最后的 我们可以通过这种方式来绕过 加 来绕过
  • 探索多线程使用同一个数据库connection的后果

    在项目中看到有用到数据库的连接池 心里就思考着为什么需要数据库连接池 只用一个连接会造成什么影响 只用一个connection 1 猜想 jdbc的事务是基于connection的 如果多线程共用一个connection 会造成多线程之间的
  • C++安装Dlib库教程(保姆级别)以及踩坑指南

    在网上搜索了一圈 发现大家好像都很喜欢使用Python来开发AI 后来我也用了一下Python 发现 emmm 真香 但是我知道一定也有人再使用C 进行开发 那么我就先来说说几种安装Dlib库的方法趴 除了使用vcpkg 我们这次从官网的角
  • 微信小程序自定义底部导航栏

    文章目录 概要 功能 源码 细节 改进 概要 微信小程序自定义底部导航栏 原生实现 不包含其他任何第三方组件 比较干净 开箱即用 效果预览 功能 可自定义底部导航栏列表样式 可自定义每个菜单的默认 激活后的图标和文字样式 可自定义是否添加中
  • 【gitlab项目迁移】

    需求 将gitlab项目从A组迁移到B组 经查 有两种方式 一种是项目在网页压缩后export 再import 另一种是终端操作 但是我的项目分支过多 文件过大 30M左右 方法一会报错文件过大 最后采取方法二 方法1 网页端导入 可以参考
  • Jquery mobile学习教程之Jquery mobile 二 页面结构

    Jquery Mobile基本框架 在jQuery Mobile中 有一个基本的页面框架模型 就是在页面中通过将一个 标记的 data role 属性设置为 page 形成一个容器或视图 而在这个容器中最直接的子节点应该就是 data ro
  • ftp文件采集

    本地文件根据文件名过滤 import org springframework stereotype Service import java io File import java text ParseException import jav
  • Sevice Computing服务计算:开发 web 服务程序Cloudgo

    Sevice Computing 开发 web 服务程序Cloudgo 1 概述 2 基础知识 3 开发实践 3 1 框架选择 3 2 搭建简单web服务器 3 3 测试运行 1 使用 curl 测试 2 使用 ab 测试 并解释重要参数
  • 深入学习jquery源码之empty()与返回值remove()

    深入学习jquery源码之empty 与返回值remove empty 概述 删除匹配的元素集合中所有的子节点 把所有段落的子元素 包括文本节点 删除 p Hello span Person span a href and person a
  • idea .gitignore文件不生效(亲测有效)

    文章目录 1 确认 gitignore 文件位置 2 检查 gitignore 文件语法和模式匹配 3 清除 Git 缓存并重新提交文件 4 检查全局忽略规则 5 检查其他工具或配置 当您在 IntelliJ IDEA 中发现 gitign
  • 假如我是超级卷王。。。

    我最喜欢我的发型 因为它天生自然卷 而且是内卷 公司在十八层 为了能坐上电梯 我每次走到三层去等往下的电梯 先坐到1楼再上去 为了能带薪拉屎 我每次提前半个小时占坑 一边等shi意一边刷抖音 外面兄弟急的满头大汗 我静静享受这片刻悠闲 我的
  • 未能注册模块 HSIDCandRead.ocx HRESULT -2147010895

    昨天遇到一个这样的问题 安装程序的过程中提示 未注册模块 HSIDCandRead ocx HRESULT 2147010895 经过 多次测试后发现是缺少VC 环境 在安装VC 2005和VC 2008后 安装一切正常
  • _signature、a_bogus、X-Bogus、msToken生成【2023.8.24】全站通用a-bogus

    本文以教学为基准 本文提供的可操作性不得用于任何商业用途和违法违规场景 本人对任何原因在使用本人中提供的代码和策略时可能对用户自己或他人造成的任何形式的损失和伤害不承担责任 包含关注 点赞等 没露任何版权请审核员认真对待谢谢 2022 12
  • CW Attack论文阅读与总结

    论文链接 https arxiv org abs 1709 03842 在阅读 Towards Evaluating the Robustness of Neural Networks 这篇基于优化的CW攻击方法过程中 本文提取了原文中各小