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\).

假设:

\[F(x)=\mathrm{softmax}(Z(x))=y,
\]

其中\(\mathrm{softmax}(x)_i=\frac{e^{x_i}}{\sum_j e^{x_j}}\).

\[C(x) = \arg \max_i F(x)_i,
\]

为\(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\):

\[\begin{array}{ll}
\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\)的时候此条件满足.

则问题转换为:

\[\begin{array}{ll}
\min & \mathcal{D}(x, x+\delta) \\
\mathrm{s.t.} & f(x,t) \le 0 \\
& x + \delta \in [0, 1]^n,
\end{array}
\]

进一步

\[\begin{array}{ll}
\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\). 作者说此类方法容易方法在次优解间来回振荡的现象;
  • 定义
\[\delta_i = \frac{1}{2}(\tanh (w_i) +1)-x_i,
\]

于是我们只需优化\(w_i\), 且保证\(x_i + \delta_i \in [0, 1]\).

\(L_2\) attack

\[\min \quad \|\frac{1}{2}(\tanh(w)+1)-x\|_2^2+c\cdot f(\frac{1}{2}(\tanh(w)+1), t),
\]

其中

\[f(x',t)=\max(\max \{Z(x')_i:i \not =t\}-Z(x')_t, -\kappa),
\]

是对第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 ...:
    1. 计算在\(L_2\)下的解\(x+\delta\)(倘若在\(c\)下找不到, 则在\(2c\)条件下找(嵌套));
    2. \(g=\nabla f(x+\delta)\);
    3. \(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}\)作为惩罚项(?)只会针对个别元素, 这在实际实验的时候并不友好, 往往会出现振荡, 于是作者想了一种替代

\[\min \quad c \cdot f( x+ \delta) + \sum_i [(\delta_i-\tau)^+],
\]

这样我们就把可以关注部分突出而非个别.

Towards Evaluating the Robustness of Neural Networks的更多相关文章

  1. CVPR 2018paper: DeepDefense: Training Deep Neural Networks with Improved Robustness第一讲

    前言:好久不见了,最近一直瞎忙活,博客好久都没有更新了,表示道歉.希望大家在新的一年中工作顺利,学业进步,共勉! 今天我们介绍深度神经网络的缺点:无论模型有多深,无论是卷积还是RNN,都有的问题:以图 ...

  2. 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 ...

  3. 神经网络指南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 ...

  4. 《ImageNet Classification with Deep Convolutional Neural Networks》 剖析

    <ImageNet Classification with Deep Convolutional Neural Networks> 剖析 CNN 领域的经典之作, 作者训练了一个面向数量为 ...

  5. A Beginner's Guide To Understanding Convolutional Neural Networks(转)

    A Beginner's Guide To Understanding Convolutional Neural Networks Introduction Convolutional neural ...

  6. 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 ...

  7. 提高神经网络的学习方式Improving the way neural networks learn

    When a golf player is first learning to play golf, they usually spend most of their time developing ...

  8. (转)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 ...

  9. 论文笔记之:Learning Multi-Domain Convolutional Neural Networks for Visual Tracking

    Learning Multi-Domain Convolutional Neural Networks for Visual Tracking CVPR 2016 本文提出了一种新的CNN 框架来处理 ...

随机推荐

  1. acclaim

    欲学acclaim,先学claim.即使学会claim,未必记住acclaim. [LDOCE] claim的词源是cry out, shoutverb:1. state that sth is tr ...

  2. Scala(六)【模式匹配】

    目录 一.基本语法 二.匹配固定值 三.守卫 四.匹配类型 五.匹配集合 1.Array 2.List 3.元祖 4.对象和样例类 六.偏函数 七.赋值匹配 八.for循环匹配 一.基本语法 在匹配某 ...

  3. oracle 外部表查alter日志

    --创建文件夹,路径是alter日志的路径 create or replace directory data_dir as '/u01/app/oracle/diag/rdbms/orcl/orcl/ ...

  4. Spring.DM版HelloWorld

    本文主要描述使用Spring.DM2.0,创建OSGi的HelloWorld演示程序,理解Spring.DM的OSGi框架实现机制.   环境描述: 项目 版本 Eclipse 3.7.x JDK 1 ...

  5. 【Linux】【Shell】【Basic】Programming

    shell脚本编程: 编程语言的分类:根据运行方式 编译运行:源代码-->编译器(编译)-->程序文件 解释运行:源代码-->运行时启动解释器,又解释器边解释边运行 根据其编程过程中 ...

  6. 【Linux】【Basis】文件

    refer to: https://en.wikipedia.org/wiki/POSIX refer to: https://en.wikipedia.org/wiki/Unix_file_type ...

  7. yaml 配置文件的语法。

    1.基本语法 1. k:(空格)v:表示一对键值对(注意:空格必须有): 2.以**空格**的缩进来控制层级关系:只要是左对齐的一列数据,都是同一个层级的 3.值的驼峰写法和用"-" ...

  8. 07-Spring5 WebFlux响应式编程

    SpringWebFlux介绍 简介 SpringWebFlux是Spring5添加的新模块,用于Web开发,功能和SpringMvc类似的,WebFlux使用当前一种比较流行的响应式编程框架 使用传 ...

  9. 车载以太网第二弹|测试之实锤 -DoIP测试开发实践

    前言 车载以太网测试之实锤系列,之前我们已经从环境设备组成.被测对象组成再到测试过程和测试结果分析,分享了完整的PMA测试 .IOP测试 .TC8中的TCP/IP协议一致性测试 .也分享了1000BA ...

  10. [BUUCTF]PWN——[HarekazeCTF2019]baby_rop2

    [HarekazeCTF2019]baby_rop2 题目附件 步骤: 例行检查,64位,开启了nx保护 运行了一下程序,了解大概的执行情况 64位ida载入,shift+f12检索程序里的字符串,没 ...