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. react动态添加样式:style和className

    react开发过程中,经常会需要动态向元素内添加样式style或className,那么应该如何动态添加呢??? 一.react向元素内,动态添加style 例如:有一个DIV元素, 需要动态添加一个 ...

  2. CVTE第二次笔试

    选择瞎答得,直接编程题目 1. 使用递归将字符串中的数字去并按顺序打印 输入例  adfsafsfs123123eogie09789 输出例 123123 09789 #include<iost ...

  3. OC-copy,单例

    总结 编号 主题 内容 一 NSFileManager NSFileManager介绍/用法(常见的判断)/文件访问/文件操作 二 集合对象的内存管理 集合对象的内存管理/内存管理总结 三 *copy ...

  4. zabbix之主动模式和proxy的主动模式

    #:找一台新主机配置上agent,注意版本要和server端保持一样 #:官网地址:https://www.zabbix.com/documentation/4.0/zh/manual/install ...

  5. LR中的快捷建

    Ctrl+F  弹出搜索对话框 CTRL+F8  弹出view tree 界面 (寻找关联) 觉得不错的可关注微信公众号在手机上观看,让你用手机边玩边看

  6. java对象分配

    1.为什么会有年轻代 我们先来屡屡,为什么需要把堆分代?不分代不能完成他所做的事情么?其实不分代完全可以,分代的唯一理由就是优化GC性能.你先想想,如果没有分代,那我们所有的对象都在一块,GC的时候我 ...

  7. 【MySQL】亲测可用的教程筛选:安装与卸载

    windows版本的 安装看这篇,非常详细:https://www.cnblogs.com/winton-nfs/p/11524007.html 彻底清除:https://www.pianshen.c ...

  8. 探究Go-YCSB做数据库基准测试

    本篇文章开篇会介绍一下Go-YCSB是如何使用,然后按照惯例会分析一下它是如何做基准测试,看看它有什么优缺点. 转载请声明出处哦~,本篇文章发布于luozhiyun的博客: https://www.l ...

  9. 安装xampp开发环境更改默认项目路径

    xampp开发环境中默认的项目路径在xampp下的htdocs文件下 如果想修改默认项目的位置步骤如下: 1)D:\xampp\apache\conf 找到httpd.conf打开 2)找到 Docu ...

  10. Table.PromoteHeaders升降标题Table…Headers(Power Query 之 M 语言)

    数据源: 任意数据源 目标: 将第一行提升为标题 操作过程: [主页](或[转换])>[将第一行用作标题] M公式: = Table.PromoteHeaders( 表, [PromoteAll ...