Croce F. & Hein M. Reliable evaluation of adversarial robustness with an ensemble of diverse parameter-free attacks. In International Conference on Machine Learning (ICML), 2020.

作者改进了PGD攻击方法, 并糅合了不同种类的攻击方法于一体, 使得AA的估计更为有效可靠. 特别是不需要调参.

主要内容

Auto-PGD

Auto-PGD, 其最大的改进的地方就是不需要调节参数(其实作者自己调得比较好啦). 普通的PGD:

\[x^{(k+1)} = P_S (x^{(k)} + \eta^{(k)}\nabla f(x^{(k)})),
\]

其中\(P\)是投影算子, \(\eta\) 是学习率, \(f\)是损失函数.

Momentum

\[z^{(k+1)} = P_S (x^{(k)}+\eta^{(k)}\nabla f(x^{(k)})) \\
x^{(k+1)} = P_S(x^{(k)}+\alpha \cdot (z^{(k+1)}-x^{(k)})+(1-\alpha) \cdot (x^{(k)}-x^{(k-1)})).
\]

注: 作者选择 \(\alpha=0.75\)

Step Size

首先确定总的迭代次数\(N_{iter}\), 然后确定一些检查的结点\(w_0=0, w_1, \cdots, w_n\), 在每一个检查结点检查如下条件

  1. \(\sum_{i={w_{i-1}}}^{w_{i}-1} 1_{f(x^{(i+1)}> f(x^{(i)}))}< \rho \cdot (w_j - w_{j-1})\);

  2. \(\eta^{w_{j-1}}\equiv \eta^{w_j}\) and \(f_{max}^{(w_{j-1})}\equiv f_{max}^{(w_j)}.\)

其中\(f_{max}^{(k)}\)是前\(k\)个结点前的最高的函数值, 若其中条件之一满足, 则对之后的迭代的学习率减半, 即

\[\eta^{(k)}:= \eta^{(w_j)} /2, \forall k=w_j+1, \ldots w_{j+1}.
\]

注: 学习率\(\eta^{(0)}=2\epsilon\).

  1. 条件1是为了检查这一阶段的迭代是否有效(即损失是否升高的次数), 这里作者选择\(\rho=0.75\);
  2. 条件二如果成立了, 说明这一阶段相较于之前的阶段并没有提升, 所以需要减半学习率.

注: 一旦学习率减半了, 作者会令\(x^{(w_j+1)}:=x_{max}\), 从最好的结果处restart.

剩下一个问题是, 如何选择\(w_i\), 作者采取如下方案

\[w_j = [p_jN_{iter}] \le N_{iter} \\
p_{j+1} = p_j + \max \{p_j - p_{j-1} - 0.03, 0.06\}, p_0=0, p_1=0.22.
\]

损失函数

一般来说, 大家用的是交叉熵, 即

\[\mathrm{CE}(x, y) = -\log p_y = -z_y + \log (\sum_{j=1}^K e_{z_j}),
\]

其梯度为

\[\nabla_x \mathrm{CE}(x, y) = (-1 + p_y) \nabla_x z_y + \nabla_{i\not=y} p_i \nabla_xz_i,
\]

若\(p_y\)比较接近于\(1\), 也就是说分类的置信度比较高, 则会导致梯度消失, 而置信度可以单纯通过\(h=\alpha g\)来提高, 即这个损失对scale是敏感的. 替代的损失使用DLR损失

\[\mathrm{DLR} (x, y) = -\frac{z_y -\max_{i \not=y}z_i}{z_{\pi_1}-z_{\pi_3}},
\]

其中\(\pi_i\)是按照从大到小的一个序. 这个损失就能避免scale的影响, 同时还有一个target版本

\[\mathrm{Targeted-DLR}(x, y) = - \frac{z_y-z_t}{z_{\pi_1}- (z_{\pi_3}+z_{\pi_4})/2}.
\]

AutoAttack

AutoAttack糅合了不同的攻击方法:

  • \(\mathrm{APGD_{CE}}\)
  • \(\mathrm{APGD_{DLR}}\)
  • \(\mathrm{FAB}\)
  • \(\mathrm{Square \: Attack}\): black-box

Reliable evaluation of adversarial robustness with an ensemble of diverse parameter-free attacks的更多相关文章

  1. Improving Adversarial Robustness via Channel-Wise Activation Suppressing

    目录 概 主要内容 代码 Bai Y., Zeng Y., Jiang Y., Xia S., Ma X., Wang Y. Improving adversarial robustness via ...

  2. Improving Adversarial Robustness Using Proxy Distributions

    目录 概 主要内容 proxy distribution 如何利用构造的数据 Sehwag V., Mahloujifar S., Handina T., Dai S., Xiang C., Chia ...

  3. Second Order Optimization for Adversarial Robustness and Interpretability

    目录 概 主要内容 (4)式的求解 超参数 Tsiligkaridis T., Roberts J. Second Order Optimization for Adversarial Robustn ...

  4. Certified Adversarial Robustness via Randomized Smoothing

    目录 概 主要内容 定理1 代码 Cohen J., Rosenfeld E., Kolter J. Certified Adversarial Robustness via Randomized S ...

  5. IMPROVING ADVERSARIAL ROBUSTNESS REQUIRES REVISITING MISCLASSIFIED EXAMPLES

    目录 概 主要内容 符号 MART Wang Y, Zou D, Yi J, et al. Improving Adversarial Robustness Requires Revisiting M ...

  6. Inherent Adversarial Robustness of Deep Spiking Neural Networks: Effects of Discrete Input Encoding and Non-Linear Activations

    郑重声明:原文参见标题,如有侵权,请联系作者,将会撤销发布! arXiv:2003.10399v2 [cs.CV] 23 Jul 2020 ECCV 2020 1 https://github.com ...

  7. Adversarial Detection methods

    目录 Kernel Density (KD) Local Intrinsic Dimensionality (LID) Gaussian Discriminant Analysis (GDA) Gau ...

  8. 壁虎书7 Ensemble Learning and Random Forests

    if you aggregate the predictions of a group of predictors,you will often get better predictions than ...

  9. 生成对抗网络资源 Adversarial Nets Papers

    来源:https://github.com/zhangqianhui/AdversarialNetsPapers AdversarialNetsPapers The classical Papers ...

随机推荐

  1. Go Robot

    1 <html> 2 <meta http-equiv="Content-Type" content="text/html; charset=utf-8 ...

  2. day07 MySQL索引事务

    day07 MySQL索引事务 昨日内容回顾 pymysql模块 # 链接数据库都是使用这个模块的 # 创建链接 import pymysql conn = pymysql.connect( host ...

  3. 大数据学习day31------spark11-------1. Redis的安装和启动,2 redis客户端 3.Redis的数据类型 4. kafka(安装和常用命令)5.kafka java客户端

    1. Redis Redis是目前一个非常优秀的key-value存储系统(内存的NoSQL数据库).和Memcached类似,它支持存储的value类型相对更多,包括string(字符串).list ...

  4. Linux学习 - 文件系统常用命令

    一.文件系统查看命令df df [选项] [挂载点] -a 查看所有文件系统信息,包括特殊文件系统 -h 使用习惯单位显示容量 -T 显示文件系统类型 -m 以MB为单位显示容量 -k 以KB为单位显 ...

  5. linux基本操作命令2

    复制文件 格式: cp [参数] [ 被复制的文件路径] [ 复制的文件路径] -r :递归复制  (需要复制文件夹时使用) 案例:将/root目录下的test文件夹及其内部的文件复制到/tmp中 [ ...

  6. <转>C/S架构分析

    系统架构师-基础到企业应用架构-客户端/服务器 开篇 上篇,我们介绍了,单机软件的架构,其实不管什么软件系统,都是为了解决实际中的一些问题,软件上为了更好的解决实际的问题才会产生,那么对于单机软 件的 ...

  7. [Java Web 王者归来]读书笔记3

    第四章 JSP JSP基本语法 1 JSP中嵌入Java 代码 <% Java code %> 2 JSP中输出 <%= num %> 3 JSP 中的注释 <%-- - ...

  8. SpringCloud微服务实战——搭建企业级开发框架(三十四):SpringCloud + Docker + k8s实现微服务集群打包部署-Maven打包配置

      SpringCloud微服务包含多个SpringBoot可运行的应用程序,在单应用程序下,版本发布时的打包部署还相对简单,当有多个应用程序的微服务发布部署时,原先的单应用程序部署方式就会显得复杂且 ...

  9. Flask与Django的比较

    Flask与Django的区别 Flask Flask确实很"轻",不愧是Micro Framework,从Django转向Flask的开发者一定会如此感慨,除非二者均为深入使用过 ...

  10. .NET Core基础篇之:白话管道中间件

    在.Net Core中,管道往往伴随着请求一起出现.客户端发起Http请求,服务端去响应这个请求,之间的过程都在管道内进行. 举一个生活中比较常见的例子:旅游景区. 我们都知道,有些景区大门离景区很远 ...