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. 日常Java 2021/10/29

    Java Object类是所有类的父类,也就是说Java的所有类都继承了Object,子类可以使用Object的所有方法. Object类位于java.lang 包中,编译时会自动导入,我们创建一个类 ...

  2. How To Call An Ambulance

    How to Talk to the Emergency Dispatcher [minutesmatter.upmc稻糠亩] How To Call An Ambulance [askambulan ...

  3. mongDB进阶

    Mongo进阶 聚合 聚合操作将来自多个文档的值组合在一起,并且可以对分组数据执行各种操作以返回单个结果. 文档进入多阶段管道,将文档转换为聚合结果 聚合管道 例子: 第一阶段:过滤,$match 第 ...

  4. 【leetcode】1293 .Shortest Path in a Grid with Obstacles

    You are given an m x n integer matrix grid where each cell is either 0 (empty) or 1 (obstacle). You ...

  5. 【Linux】【Basis】块存储,文件存储,对象存储

    1. 块存储: 定义:这种接口通常以QEMU Driver或者Kernel Module的方式存在,这种接口需要实现Linux的Block Device的接口或者QEMU提供的Block Driver ...

  6. oracle 外部表查alter日志

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

  7. 通过SSE(Server-Send Event)实现服务器主动向浏览器端推送消息

    一.SSE介绍 1.EventSource 对象 SSE 的客户端 API 部署在EventSource对象上.下面的代码可以检测浏览器是否支持 SSE. if ('EventSource' in w ...

  8. 【阿菜做实践】利用go语言写一个简单的Pow样例

    本篇博客的主要内容是用go写一个简单的Proof-of-Work共识机制,不涉及到网络通信环节,只是一个本地的简单demo.开发IDE用的是JB Golang. 整个项目的文件结构如下: PoWdem ...

  9. C++11 关键字 const 到底怎么用?

    Const 的作用及历史 const (computer programming) - Wikipedia 一.历史 按理来说,要想了解一件事物提出的原因,最好的办法就是去寻找当时的历史背景,以及围绕 ...

  10. [笔记] Informer: Beyond Efficient Transformer for Long Sequence Time-Series Forecasting

    原文地址:https://arxiv.org/abs/2012.07436 源码地址:https://github.com/zhouhaoyi/Informer2020