Reliable evaluation of adversarial robustness with an ensemble of diverse parameter-free attacks

本文主要是介绍Reliable evaluation of adversarial robustness with an ensemble of diverse parameter-free attacks,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

    • 主要内容
      • Auto-PGD
      • Momentum
      • Step Size
      • 损失函数
      • AutoAttack

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的估计更为有效可靠. 特别是不需要调参.

主要内容

image-20201102211158402

Auto-PGD

Auto-PGD, 其最大的改进的地方就是不需要调节参数(其实作者自己调得比较好啦). 普通的PGD:
x ( k + 1 ) = P S ( x ( k ) + η ( k ) ∇ f ( x ( k ) ) ) , x^{(k+1)} = P_S (x^{(k)} + \eta^{(k)}\nabla f(x^{(k)})), x(k+1)=PS(x(k)+η(k)f(x(k))),
其中 P P P是投影算子, η \eta η 是学习率, f f f是损失函数.

Momentum

z ( k + 1 ) = P S ( x ( k ) + η ( k ) ∇ f ( x ( k ) ) ) x ( k + 1 ) = P S ( x ( k ) + α ⋅ ( z ( k + 1 ) − x ( k ) ) + ( 1 − α ) ⋅ ( x ( k ) − x ( k − 1 ) ) ) . 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)})). z(k+1)=PS(x(k)+η(k)f(x(k)))x(k+1)=PS(x(k)+α(z(k+1)x(k))+(1α)(x(k)x(k1))).

注: 作者选择 α = 0.75 \alpha=0.75 α=0.75

Step Size

首先确定总的迭代次数 N i t e r N_{iter} Niter, 然后确定一些检查的结点 w 0 = 0 , w 1 , ⋯ , w n w_0=0, w_1, \cdots, w_n w0=0,w1,,wn, 在每一个检查结点检查如下条件

  1. ∑ i = w i − 1 w i − 1 1 f ( x ( i + 1 ) > f ( x ( i ) ) ) < ρ ⋅ ( w j − w j − 1 ) \sum_{i={w_{i-1}}}^{w_{i}-1} 1_{f(x^{(i+1)}> f(x^{(i)}))}< \rho \cdot (w_j - w_{j-1}) i=wi1wi11f(x(i+1)>f(x(i)))<ρ(wjwj1);

  2. η w j − 1 ≡ η w j \eta^{w_{j-1}}\equiv \eta^{w_j} ηwj1ηwj and f m a x ( w j − 1 ) ≡ f m a x ( w j ) . f_{max}^{(w_{j-1})}\equiv f_{max}^{(w_j)}. fmax(wj1)fmax(wj).

其中 f m a x ( k ) f_{max}^{(k)} fmax(k)是前 k k k个结点前的最高的函数值, 若其中条件之一满足, 则对之后的迭代的学习率减半, 即
η ( k ) : = η ( w j ) / 2 , ∀ k = w j + 1 , … w j + 1 . \eta^{(k)}:= \eta^{(w_j)} /2, \forall k=w_j+1, \ldots w_{j+1}. η(k):=η(wj)/2,k=wj+1,wj+1.

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

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

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

剩下一个问题是, 如何选择 w i w_i wi, 作者采取如下方案
w j = [ p j N i t e r ] ≤ N i t e r p j + 1 = p j + max ⁡ { p j − p j − 1 − 0.03 , 0.06 } , p 0 = 0 , p 1 = 0.22. 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. wj=[pjNiter]Niterpj+1=pj+max{pjpj10.03,0.06},p0=0,p1=0.22.

损失函数

一般来说, 大家用的是交叉熵, 即
C E ( x , y ) = − log ⁡ p y = − z y + log ⁡ ( ∑ j = 1 K e z j ) , \mathrm{CE}(x, y) = -\log p_y = -z_y + \log (\sum_{j=1}^K e_{z_j}), CE(x,y)=logpy=zy+log(j=1Kezj),
其梯度为
∇ x C E ( x , y ) = ( − 1 + p y ) ∇ x z y + ∇ i ≠ y p i ∇ x z i , \nabla_x \mathrm{CE}(x, y) = (-1 + p_y) \nabla_x z_y + \nabla_{i\not=y} p_i \nabla_xz_i, xCE(x,y)=(1+py)xzy+i=ypixzi,
p y p_y py比较接近于 1 1 1, 也就是说分类的置信度比较高, 则会导致梯度消失, 而置信度可以单纯通过 h = α g h=\alpha g h=αg来提高, 即这个损失对scale是敏感的. 替代的损失使用DLR损失
D L R ( x , y ) = − z y − max ⁡ i ≠ y z i z π 1 − z π 3 , \mathrm{DLR} (x, y) = -\frac{z_y -\max_{i \not=y}z_i}{z_{\pi_1}-z_{\pi_3}}, DLR(x,y)=zπ1zπ3zymaxi=yzi,

其中 π i \pi_i πi是按照从大到小的一个序. 这个损失就能避免scale的影响, 同时还有一个target版本
T a r g e t e d − D L R ( x , y ) = − z y − z t z π 1 − ( z π 3 + z π 4 ) / 2 . \mathrm{Targeted-DLR}(x, y) = - \frac{z_y-z_t}{z_{\pi_1}- (z_{\pi_3}+z_{\pi_4})/2}. TargetedDLR(x,y)=zπ1(zπ3+zπ4)/2zyzt.

AutoAttack

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

  • A P G D C E \mathrm{APGD_{CE}} APGDCE
  • A P G D D L R \mathrm{APGD_{DLR}} APGDDLR
  • F A B \mathrm{FAB} FAB
  • S q u a r e A t t a c k \mathrm{Square \: Attack} SquareAttack: black-box

这篇关于Reliable evaluation of adversarial robustness with an ensemble of diverse parameter-free attacks的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/328335

相关文章

瑞芯微Parameter File Format解析

Rockchip android系统平台使用parameter文件来配置一些系统参数 主要包含:串口号:nandflash分区 固件版本,按键信息等; 如下是台电P98HD的parameter参数: FIRMWARE_VER:4.1.1        // 固件版本 //固件版本,打包 updata.img 时会使用到,升级工具会根据这个识别固件版本。 //Boot loader 会读取

深度学习--对抗生成网络(GAN, Generative Adversarial Network)

对抗生成网络(GAN, Generative Adversarial Network)是一种深度学习模型,由Ian Goodfellow等人在2014年提出。GAN主要用于生成数据,通过两个神经网络相互对抗,来生成以假乱真的新数据。以下是对GAN的详细阐述,包括其概念、作用、核心要点、实现过程、代码实现和适用场景。 1. 概念 GAN由两个神经网络组成:生成器(Generator)和判别器(D

HumanNeRF:Free-viewpoint Rendering of Moving People from Monocular Video 翻译

HumanNeRF:单目视频中运动人物的自由视点绘制 引言。我们介绍了一种自由视点渲染方法- HumanNeRF -它适用于一个给定的单眼视频ofa人类执行复杂的身体运动,例如,从YouTube的视频。我们的方法可以在任何帧暂停视频,并从任意新的摄像机视点或甚至针对该特定帧和身体姿势的完整360度摄像机路径渲染主体。这项任务特别具有挑战性,因为它需要合成身体的照片级真实感细节,如从输入视频中可能

delphi : 窗体的close,free,destroy的区别

一、我用application.create(TForm2,Form2)语句,创建了Form2,可是调用了Form2.close后,重新调用Form2.show. 刚才所创建的Form2仍然存在。问为了节约资源,应该怎样使用close,free,destroy. 三者的关系是什么? 1、Action:=caFree。 2、 with TForm1.Create(Application) do

【机器学习】生成对抗网络(Generative Adversarial Networks, GANs)详解

🌈个人主页: 鑫宝Code 🔥热门专栏: 闲话杂谈| 炫酷HTML | JavaScript基础 ​💫个人格言: "如无必要,勿增实体" 文章目录 生成对抗网络(Generative Adversarial Networks, GANs)详解GANs的基本原理GANs的训练过程GANs的发展历程GANs在实际任务中的应用小结 生成对

C语言动态内存空间分配(malloc,calloc,realloc,free)

为了代码观感美观,我将代码部分的注释删了 malloc #include<stdio.h>#include<stdlib.h>#include<errno.h>//使用动态内存分配函数的注意事项://1.要判断指针是否为空指针,如果没有成功开辟动态内存空间,则不能继续使用该指针//2.分配的动态内存空间的数量要大于等于赋值的元素的数量,不能造成动态内存的越界访问//3.动态内存空间中

Image Transformation can make Neural Networks more robust against Adversarial Examples

Image Transformation can make Neural Networks more robust against Adversarial Examples 创新点 1.旋转解决误分类 总结 可以说简单粗暴有效

【SPOJ】1825 Free tour II 点分治

传送门:【SPOJ】1825 Free tour II 题目分析:敲了两遍。。。 本题是论文题,具体见漆子超论文《分治算法在树的路径问题中的应用》。 在以root为根的第 i 棵子树上,我们用G[ i ,j ]表示root的第 i 棵子树的路径上严格有 j 个黑点的路径的最长长度。用F[ i ,j ]表示在root为根的第 i 棵子树的路径上不超过 j 个黑点的路径的最长长度。因

阅读笔记(五)多线程无锁的C++实现《Lock-Free Data Structures》

1. 前言   本文介绍使用C++实现多线程中无锁算法的实现和优化过程。 2. 无锁&CAS   在多线程程序中,加锁是一种必要的手段,由于保证数据操作的正确性(原子性)。但是这也在很多时候带来了性能的极度下降,因为所有共享数据的操作均需要加锁,有些时候会严重影响性能,比如当读键盘或者一些较慢的I/O操作时,锁会延误了其他线程的操作。更糟糕的是,不当操作可能会带来死锁。   首先介绍最经典

CodeForces 386C Diverse Substrings

题意: 一个字符串的价值等于它包含的不同字母的个数(abcdabcdabcd 的价值为4) 给你一个字符串  求该字符串所有子串的价值 输出最大的价值是多少  再分别输出价值为x的字符串有多少个 思路: MAXstringlen=3*10^5  数据较大  所以我首先尝试可否从左到右扫描一遍每次添加一个字符的想法 但是最简单的加一个字符回头判断一下价值为x的字符串增加了多少个复杂