Andriushchenko M. and Flammarion N. Understanding and improving fast adversarial training. In Advances in Neural Information Processing Systems (NIPS), 2020.

本文主要探讨:

  1. 为什么简单的FGSM不能够提高鲁棒性;
  2. 为什么FGSM-RS(即加了随机扰动)可以更好地提高鲁棒性;
  3. 一种正则化方法, 即使不加随机扰动亦可提高鲁棒性.

主要内容

对抗训练是迄今最有效的防御手段, 其思想为:

\[\min_{\theta} \: \mathbb{E}_{(x, y) \sim D} [\max_{\|\delta\| \le \epsilon} \ell(x + \delta, y ;\theta) ].
\]

为了求解inner maximum, 一般通过PGD来近似求解. 但是这种multi-steps的方法很耗时, 所以最近也有一些方法基于FGSM进行一些改进, 其发现是FGSM在额外加一个扰动之后可以有效提高网络鲁棒性:

\[\delta_{FGSM-RS} := \prod_{[-\epsilon, \epsilon]^d} [\eta + \alpha \mathrm{sign} (\nabla_x \ell(x + \eta, y; \theta))], \: \eta \sim \mathcal{U}([-\epsilon, \epsilon]^d).
\]

但是作者发现这种方法所带来的鲁棒性作用范围(\(\epsilon\))非常狭窄:

其和FGSM-AT一样, 会在某个点鲁棒性突然崩溃, 没有很好的扩展性.

Random Step的作用

为什么RS能起到一定作用, 作者认为实际上加了RS之后, \(\epsilon\)在某种意义是'变小'了,

作者推得

\[\mathbb{E}_{\eta} [\|\delta_{FGSM-RS}(\eta)\|_2] \le \sqrt{d}\sqrt{-\frac{1}{6\epsilon}\alpha^3 + \frac{1}{2}\alpha^2 + \frac{1}{3}\epsilon} \in [\frac{1}{\sqrt{3}}\sqrt{d}\epsilon, \sqrt{d}\epsilon] \le \|\delta_{FGSM}\|_2 = \sqrt{d}\epsilon.
\]

特别的, 作者设定小的\(\epsilon\)试了(且不加RS)发现能与加了RS效果一致:

线性性质

接下来作者提出自己的观点, 剖析FGSM为啥有这些异常的情况出现.

作者认为一开始FGSM是对于inner maximum求解是较为准确的, 但是随着训练的深入, 不准确了, 为什么不准确, 作者认为是\(\ell(x;\theta)\)关于\(x\)并不那么线性了.

我们知道, FGSM实际上是对于线性情况的最优解:

\[\delta_{FGSM} = \arg \max_{\|\delta\|_{\infty} \le \epsilon} \langle \nabla_x \ell(x, y;\theta),\delta \rangle,
\]

当\(\ell\)在\(\epsilon\)球内不那么线性的时候, 这个解就不好了, 可以通过下面的条件来衡量是否线性:

\[\mathbb{E}_{(x, y) \sim D, \eta \sim \mathcal{U}([-\epsilon, \epsilon]^d)} [\cos(\nabla_x \ell(x, y;\theta), \nabla_x \ell(x + \eta, y; \theta))],
\]

如上图所示, 普通的FGSM和FGSM-RS在训练过程中越发变得局部非线性, 所以求解越来越差.

gradient alignment

本文提出的解决方法就是利用上述的条件作为一个正则化项.

个人感觉这个正则化条件比以往的想法子让梯度变小更有趣一点(不局限于光滑性之上).

代码

原文代码

Understanding and Improving Fast Adversarial Training的更多相关文章

  1. Adversarial Training

    原于2018年1月在实验室组会上做的分享,今天分享给大家,希望对大家科研有所帮助. 今天给大家分享一下对抗训练(Adversarial Training,AT). 为何要选择这个主题呢? 我们从上图的 ...

  2. 《C-RNN-GAN: Continuous recurrent neural networks with adversarial training》论文笔记

    出处:arXiv: Artificial Intelligence, 2016(一年了还没中吗?) Motivation 使用GAN+RNN来处理continuous sequential data, ...

  3. LTD: Low Temperature Distillation for Robust Adversarial Training

    目录 概 主要内容 Chen E. and Lee C. LTD: Low temperature distillation for robust adversarial training. arXi ...

  4. Adversarial Training with Rectified Rejection

    目录 概 主要内容 rejection 实际使用 代码 Pang T., Zhang H., He D., Dong Y., Su H., Chen W., Zhu J., Liu T. Advers ...

  5. Boosting Adversarial Training with Hypersphere Embedding

    目录 概 主要内容 代码 Pang T., Yang X., Dong Y., Xu K., Su H., Zhu J. Boosting Adversarial Training with Hype ...

  6. Uncovering the Limits of Adversarial Training against Norm-Bounded Adversarial Examples

    Uncovering the Limits of Adversarial Training against Norm-Bounded Adversarial Examples 目录 概 主要内容 实验 ...

  7. 论文解读(ARVGA)《Learning Graph Embedding with Adversarial Training Methods》

    论文信息 论文标题:Learning Graph Embedding with Adversarial Training Methods论文作者:Shirui Pan, Ruiqi Hu, Sai-f ...

  8. cs231n spring 2017 lecture16 Adversarial Examples and Adversarial Training 听课笔记

    (没太听明白,以后再听) 1. 如何欺骗神经网络? 这部分研究最开始是想探究神经网络到底是如何工作的.结果人们意外的发现,可以只改变原图一点点,人眼根本看不出变化,但是神经网络会给出完全不同的答案.比 ...

  9. cs231n spring 2017 lecture16 Adversarial Examples and Adversarial Training

    (没太听明白,以后再听) 1. 如何欺骗神经网络? 这部分研究最开始是想探究神经网络到底是如何工作的.结果人们意外的发现,可以只改变原图一点点,人眼根本看不出变化,但是神经网络会给出完全不同的答案.比 ...

随机推荐

  1. 日常Java 2021/11/6

    Java多线程编程 Java给多线程编程提供了内置的支持.一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个钱程,每条线程并行执行不同的任务.多线程是多任务的一种特别的形式,但多线程使用 ...

  2. 零基础学习java------day15--------collections用法,比较器,Set(TreeSet,TreeMap),异常

    1. Collections用法 Collections: 集合的工具类public static <T> void sort(List<T> list) 排序,升序publi ...

  3. 用户名、密码、整数等常用的js正则表达式

    1 用户名正则 //用户名正则,4到16位(字母,数字,下划线,减号) var uPattern = /^[a-zA-Z0-9_-]{4,16}$/; //输出 true console.log(uP ...

  4. 图的存储(Java)以及遍历

    // 深搜 private void dfs(int v) { visited[v] = true; System.out.print(v+" "); for (int i = 0 ...

  5. Default Constructors

    A constructor without any arguments or with default value for every argument, is said to be default ...

  6. bjdctf_2020_babystack2

    此题考整型的有符号无符号的东西... 下载文件还是,先检查一下保护. 64位程序,只开启了堆栈不可执行,看一下ida的伪代码. 大概流程就是先让你输入一个数,这个数就是后面read的可以输入的长度,要 ...

  7. [BUUCTF]PWN3——warmup_csaw_2016

    [BUUCTF]PWN3--warmup_csaw_2016 题目网址:https://buuoj.cn/challenges#warmup_csaw_2016 步骤: 例行检查,64位,没有开启任何 ...

  8. Windows服务(.net Core 3.1-Topshelf-log4net-quartz)

    https://github.com/yezei/Topshelf-log4net-quartz.git

  9. 如何在 GitHub 上高效阅读源码?

    原文链接: 如何在 GitHub 上高效阅读源码? 之前听说过一个故事,一个领导为了提高团队战斗力,把团队成员集中起来,搞封闭开发,重点还是在没有网的条件下. 结果就是一个月过去了,产出基本为零. 我 ...

  10. 【紧急】Log4j又发新版2.17.0,只有彻底搞懂漏洞原因,才能以不变应万变,小白也能看懂

    1 事件背景 经过一周时间的Log4j2 RCE事件的发酵,事情也变也越来越复杂和有趣,就连 Log4j 官方紧急发布了 2.15.0 版本之后没有过多久,又发声明说 2.15.0 版本也没有完全解决 ...