Towards Evaluating the Robustness of Neural Networks
Nicholas Carlini, David Wagner, Towards Evaluating the Robustness of Neural Networks
概
提出了在不同范数下\(\ell_0, \ell_2, \ell_{\infty}\)下生成adversarial samples的方法, 实验证明此类方法很有效.
主要内容
基本的概念
本文主要针对多分类问题, 假设神经网络\(F:x \in \mathbb{R}^n \rightarrow y \in \mathbb{R}^m\), 其网络参数为\(\theta\).
假设:
\]
其中\(\mathrm{softmax}(x)_i=\frac{e^{x_i}}{\sum_j e^{x_j}}\).
\]
为\(x\)的预测类, 不妨设\(C^*(x)\)为其真实的类别.
Adversarial samples 的目标就是构建一个与\(x\)相差无几的\(x'\)(\(\|x-x'\|\)足够小),但是\(C(x')\not =C^*(x)\). 很多构建Adversarial samples可以指定类别:
- Average Case: 在不正确的标签中随机选取类别;
- Best Case: 对所有不正确的标签生成Adversariak samples, 并选择最容易成功(即骗过网络)的类别;
- Worst Case:对所有不正确的标签生成Adversariak samples, 并选择最不容易成功的类别.
文章中介绍了不少现有的方法, 这里不多赘述.
目标函数
一般可以通过如下问题求解\(x'=x+\delta\):
\min & \mathcal{D}(x, x+\delta) \\
\mathrm{s.t.} & C(x+\delta)=t \\
& x + \delta \in [0, 1]^n,
\end{array}
\]
其中\(\mathcal{D}\)衡量\(x,x+\delta\)之间的距离, 常常为\(\ell_0, \ell_2, \ell_{\infty}\).
但是\(C(x+\delta)=t\)这个条件离散, 这个问题很难直接求解, 作者给出的思路是构造一些函数\(f(x,t)\), 使得当且仅当\(f(x,t)\le0\)的时候此条件满足.
则问题转换为:
\min & \mathcal{D}(x, x+\delta) \\
\mathrm{s.t.} & f(x,t) \le 0 \\
& x + \delta \in [0, 1]^n,
\end{array}
\]
进一步
\min & \mathcal{D}(x, x+\delta) + cf(x,t) \\
\mathrm{s.t.}
& x + \delta \in [0, 1]^n.
\end{array}
\]
作者给出了7种符合此类条件的函数(作者尤为推荐第6种):

如何选择c
binary search
如何应对Box约束
图片的元素需要满足\(0\le x_i \le 1\), 如何满足此约束:
- 简单粗暴地对其裁剪, 大于1的为1, 小于0的为0, 但是这种方法在梯度下降方法比较复杂(如带momentum)的时候效果可能不会太好(既然momemtum要记录变量改变的方向, 而我们又擅自对此方向进行更改);
- 用\(f(\min (\max(x+\delta,0),1)\)替代\(f(x+\delta)\), 我的理解是, 每次不改变原变量\(x'\), 然后把clip后的\(x'\)喂给\(f\). 作者说此类方法容易方法在次优解间来回振荡的现象;
- 定义
\]
于是我们只需优化\(w_i\), 且保证\(x_i + \delta_i \in [0, 1]\).
\(L_2\) attack
\]
其中
\]
是对第6种方法的一个小改进, 其中\(\kappa\)反应了我们对误判发生的信心.
\(L_0\) attack
因为\(L_0\)范数不可微, 所以每一次, 我们先利用\(L_2\) attack来寻找合适的\(\delta\), 令\(g=\nabla f(x+\delta)\), 根据\(g_i \delta_i\)判断每个像素点的重要性, 最不重要的我们删去(根据文中的意思是永久删去).
- Input: \(x, c\)
- \(I=\empty\)
- Do ...:
- 计算在\(L_2\)下的解\(x+\delta\)(倘若在\(c\)下找不到, 则在\(2c\)条件下找(嵌套));
- \(g=\nabla f(x+\delta)\);
- \(i=\arg \min_i g_i \cdot \delta_i, i \not \in I\), 然后\(I=I \cup \{i\}\);
在利用\(L_2\)寻找\(\delta\)的过程中, 若失败, 令\(c=2c\)并重复进行, 直到其成功或者超过了最大的迭代次数.
\(L_{\infty}\) attack
\(\|\delta\|_{\infty}\)作为惩罚项(?)只会针对个别元素, 这在实际实验的时候并不友好, 往往会出现振荡, 于是作者想了一种替代
\]
这样我们就把可以关注部分突出而非个别.
Towards Evaluating the Robustness of Neural Networks的更多相关文章
- CVPR 2018paper: DeepDefense: Training Deep Neural Networks with Improved Robustness第一讲
前言:好久不见了,最近一直瞎忙活,博客好久都没有更新了,表示道歉.希望大家在新的一年中工作顺利,学业进步,共勉! 今天我们介绍深度神经网络的缺点:无论模型有多深,无论是卷积还是RNN,都有的问题:以图 ...
- Hacker's guide to Neural Networks
Hacker's guide to Neural Networks Hi there, I'm a CS PhD student at Stanford. I've worked on Deep Le ...
- 神经网络指南Hacker's guide to Neural Networks
Hi there, I'm a CS PhD student at Stanford. I've worked on Deep Learning for a few years as part of ...
- 《ImageNet Classification with Deep Convolutional Neural Networks》 剖析
<ImageNet Classification with Deep Convolutional Neural Networks> 剖析 CNN 领域的经典之作, 作者训练了一个面向数量为 ...
- A Beginner's Guide To Understanding Convolutional Neural Networks(转)
A Beginner's Guide To Understanding Convolutional Neural Networks Introduction Convolutional neural ...
- ON THE EVOLUTION OF MACHINE LEARNING: FROM LINEAR MODELS TO NEURAL NETWORKS
ON THE EVOLUTION OF MACHINE LEARNING: FROM LINEAR MODELS TO NEURAL NETWORKS We recently interviewed ...
- 提高神经网络的学习方式Improving the way neural networks learn
When a golf player is first learning to play golf, they usually spend most of their time developing ...
- (转)A Beginner's Guide To Understanding Convolutional Neural Networks
Adit Deshpande CS Undergrad at UCLA ('19) Blog About A Beginner's Guide To Understanding Convolution ...
- 论文笔记之:Learning Multi-Domain Convolutional Neural Networks for Visual Tracking
Learning Multi-Domain Convolutional Neural Networks for Visual Tracking CVPR 2016 本文提出了一种新的CNN 框架来处理 ...
随机推荐
- express系列(1)概述
在 Node.js 出现之前,前后端的开发必须使用不同的语言进行.为此你需要学习多种的语言和框架.有了 Node.js 之后,你就可以使用一门语言在前后端开发中自由切换,这是最吸引人的地方. 什么是 ...
- Shell学习(十)——du、df命令
一.du 命令 1.命令格式: du [选项][文件] 2.命令功能: 显示每个文件和目录的磁盘使用空间. 3.命令参数: -a或-all 显示目录中个别文件的大小. -b或-bytes 显示目录或文 ...
- zabbix之被动模式之编译安装proxy
#:准备源码包,编译安装 root@ubuntu:/usr/local/src# ls zabbix-4.0.12.tar.gz root@ubuntu:/usr/local/src# tar xf ...
- linux 配置本地yum
1.挂载光盘 #挂载光盘 mount /dev/cdrom /mnt/cdrom 2.修改yum.conf, 运行 vi /etc/yum.conf,文件替换成如下内容 [main] cachedir ...
- 如何用shell脚本分析网站日志统计PV、404、500等数据
以下shell脚本能统计出网站的总访问量,以及404,500出现的次数.统计出来后,可以结合监控宝来进行记录,进而可以看出网站访问量是否异常,是否存在攻击.还可以根据查看500出现的次数,进而判断网站 ...
- ES6 object.defineProperty
Object.defineProperty() 方法会直接在一个对象上定义一个新属性,或者修改一个对象的现有属性, 并返回这个对象. Object.defineProperty(obj, prop, ...
- 车载以太网第二弹 | 测试之实锤-物理层PMA测试实践
前言 本期先从物理层"PMA测试"开始,下图1为"PMA测试"的测试结果汇总图.其中,为了验证以太网通信对线缆的敏感度,特选取两组不同特性线缆进行测试对比,果然 ...
- Python 字典是如何解决哈希冲突的
本文主要翻译自 so 上面的问题 Why can a Python dict have multiple keys with the same hash? 下 Praveen Gollakota 的答 ...
- 别被调查汇总郁闷到——有Excel呢!
年初的某天,我在家待得好好的,好吧,其实也不是待得好好的,这事大家都知道,新冠病毒嘛,都锁家里了,还好本妖向来宅--呃--跑题了--肥来! 其实我能在家好好地待着,有水有电有Wi-Fi,那是有多少人冒 ...
- 字节面试:SYN 包在什么场景下会被丢弃?
大家好,我是小林. 之前有个读者在秋招面试的时候,被问了这么一个问题:SYN 报文什么时候情况下会被丢弃? 好家伙,现在面试都问那么细节了吗? 不过话说回来,这个问题跟工作上也是有关系的,因为我就在工 ...