Obfuscated Gradients Give a False Sense of Security: Circumventing Defenses to Adversarial Examples

Athalye A, Carlini N, Wagner D, et al. Obfuscated Gradients Give a False Sense of Security: Circumventing Defenses to Adversarial Examples[J]. arXiv: Learning, 2018.

@article{athalye2018obfuscated,
title={Obfuscated Gradients Give a False Sense of Security: Circumventing Defenses to Adversarial Examples},
author={Athalye, Anish and Carlini, Nicholas and Wagner, David},
journal={arXiv: Learning},
year={2018}}

由于有很多defense方法都是基于破坏梯度(不能有效计算梯度, 梯度爆炸, 消失), 但是作者提出一种算法能够攻破这一类方法, 并提议以后的defense方法不要以破坏梯度为前提.

主要内容

f ( ⋅ ) f(\cdot) f(): 模型;
f ( x ) i f(x)_i f(x)i: 样本 x x x为类别 i i i的概率;
f j ( ⋅ ) f^j(\cdot) fj(): 第 j j j层;
f 1.. j ( ⋅ ) f^{1..j}(\cdot) f1..j(): 第 1 1 1 j j j层;
c ( x ) c(x) c(x): arg ⁡ max ⁡ i f ( x ) i \arg \max_i f(x)_i argmaxif(x)i;
c ∗ ( x ) c^*(x) c(x): 真实标签.

Obfuscated Gradients

  • Shattered Gradients: 一些不可微的defense, 或者一些令导数不存在的defense造成;
  • Stochastic Gradients: 一些随机化的defense造成;
  • Exploding & Vanishing Gradients: 通常由一些包括多次评估的defense造成.

BPDA

特例

有很多方法, 会构建一个不可微(或者其导数"不好用")的函数 g g g, 然后用模型 f ( g ( x ) ) f(g(x)) f(g(x))替代 f ( x ) f(x) f(x), 从而防御一些基于梯度的攻击方法, 而且这类方法往往要求 g ( x ) ≈ x g(x) \approx x g(x)x.

这类防御方法, 可以很简单地用
∇ x f ( g ( x ) ) ∣ x = x ^ ← ∇ x f ( x ) ∣ x = g ( x ^ ) , \nabla_x f(g(x))|_{x=\hat{x}} \leftarrow \nabla_x f(x)|_{x=g(\hat{x})}, xf(g(x))x=x^xf(x)x=g(x^),
替代, 从而被攻破(如果我们把 g ( x ) g(x) g(x)视为模型的第1层, 那我们实际上就是攻击第二层).

一般情形

假设 f i ( x ) f^i(x) fi(x)(即第i层)是不可微, 或者导数“不好用", 则我们首先构造一个可微函数 g ( x ) g(x) g(x), 使得 g ( x ) ≈ f i ( x ) g(x) \approx f^i(x) g(x)fi(x), 在反向传递导数的时候(注意只在反向用到 g g g), 用 ∇ x g \nabla_x g xg替代 ∇ f i ( x ) \nabla f^i(x) fi(x).

注: 作者说在前向也用 g ( x ) g(x) g(x)是低效的.

EOT

这类方法使用于攻破那些随机化的defense的, 这类方法往往会从一个变换集合 T T T中采样 t t t, 并建立模型 f ( t ( x ) ) f(t(x)) f(t(x)), 如果单纯用 ∇ f ( t ( x ) ) \nabla f(t(x)) f(t(x)) 来攻击效果不好, 可以转而用 ∇ E t ∼ T f ( t ( x ) ) = E t ∼ T ∇ f ( t ( x ) ) \nabla \mathbb{E}_{t \sim T} f(t(x)) = \mathbb{E}_{t \sim T} \nabla f(t(x)) EtTf(t(x))=EtTf(t(x))替代.

Reparameterization

重参用于针对梯度爆炸或者消失的情况, 因为这种情况往往出现于 f ( g ( x ) ) f(g(x)) f(g(x)), 而 g ( x ) g(x) g(x)是对 x x x的一个多次评估(所以 f ( g ( x ) ) f(g(x)) f(g(x))可以理解为一个很深的网络).

策略是利用构建 x = h ( z ) x=h(z) x=h(z), 并且满足 g ( h ( z ) ) = h ( z ) g(h(z))=h(z) g(h(z))=h(z) (咋看起来很奇怪, 看了下面的DefenseGAN就明白了).

利用 f ( h ( z ) ) f(h(z)) f(h(z)), 我们找到对应的对抗样本 h ( z a d v ) h(z_{adv}) h(zadv).

具体的案例

Thermometer encoding

这里的 τ \tau τ是针对样本每一个元素 x i , j , c x_{i,j,c} xi,j,c的, τ : x i , j , c → R l \tau:x_{i,j,c} \rightarrow \mathbb{R}^l τ:xi,j,cRl:
τ ( x i , j , c ) k = { 1 x i , j , c > k / l 0 e l s e . \tau(x_{i, j, c})_k= \left \{ \begin{array}{ll} 1 & x_{i,j,c}>k/l \\ 0 & else. \end{array} \right. τ(xi,j,c)k={10xi,j,c>k/lelse.

只需令
g ( x i , j , c ) k = min ⁡ ( max ⁡ ( x i , j , c − k / l , 0 ) , 1 ) . g(x_{i,j,c})_k= \min (\max (x_{i, j, c} - k/l, 0),1). g(xi,j,c)k=min(max(xi,j,ck/l,0),1).

Input transformations

包括:
image cropping, rescaling, bit-depth reduction, JPEG compression, image quilting

既包括随机化又包括了不可微, 所以既要用EPDA, 也要用EOT.

LID

LID能够防御
min ⁡ ∥ x − x ′ ∥ 2 2 + α ( ℓ ( x ′ ) + L I D l o s s ( x ′ ) ) , \min \quad \| x-x'\|_2^2 + \alpha(\ell(x')+\mathrm{LID_{loss}} (x')), minxx22+α((x)+LIDloss(x)),
的攻击的主要原因是由于该函数陷入了局部最优. 因为LID高的样本不都是对抗样本, 也有很多普通样本.
忽视LID, 用原始的L2attack就能够有效攻破LID.

Stochastic Activation Pruning

SAP实际上是dropout的一个变种, SAP会随机将某层的 f i f^i fi的某些元素突变为0(其概率正比于元素的绝对值大小).

这个方法可以用EOT攻破, 即用 ∑ i = 1 k ∇ x f ( x ) \sum_{i=1}^k \nabla_xf(x) i=1kxf(x)来代替 ∇ x f ( x ) \nabla_x f(x) xf(x).

Mitigating through randomization

这个方法的输入是 229 × 229 229\times 229 229×229的图片, 他会被随机变换到 r × r r\times r r×r大小, r ∈ [ 229 , 331 ) r\in[229, 331) r[229,331), 并随机补零使得其大小为 331 × 331 331\times 331 331×331.

同样, 用EOT可以攻破.

PixelDefend

pass

DenfenseGAN

对于每一个样本, 首先初始化 R R R个随机种子 z 0 ( 1 ) , … , z 0 ( R ) z_0^{(1)}, \ldots, z_0^{(R)} z0(1),,z0(R), 对每一个种子, 利用梯度下降( L L L步)以求最小化
min ⁡ ∥ G ( z ) − x ∥ 2 2 , (DGAN) \tag{DGAN} \min \quad \|G(z)-x\|_2^2, minG(z)x22,(DGAN)
其中 G ( z ) G(z) G(z)为利用训练样本训练的生成器.

得到 R R R个点 z ∗ ( 1 ) , … , z ∗ ( R ) z_*^{(1)},\ldots, z_*^{(R)} z(1),,z(R), 设使得(DGAN)最小的为 z ∗ z^* z, 以及 x ^ = G ( z ∗ ) \hat{x} = G(z^*) x^=G(z), 则 x ^ \hat{x} x^就是我们要的, 样本 x x x在普通样本数据中的投影. 将 x ^ \hat{x} x^喂入网络, 判断其类别.
在这里插入图片描述

这个方法, 利用梯度方法更新的难处在于, x → x ^ x \rightarrow \hat{x} xx^这一过程, 包含了 L L L步的内循环, 如果直接反向传梯度会造成梯度爆炸或者消失.

所以攻击的策略是:

min ⁡ ∥ G ( z ) − x ∥ 2 2 + c ⋅ ℓ ( G ( z ) ) \min \quad \|G(z)-x\|_2^2 + c \cdot \ell (G(z)) minG(z)x22+c(G(z))
找到 z a d v z_{adv} zadv, 于是 x a d v = G ( z a d v ) x_{adv}=G(z_{adv}) xadv=G(zadv).

注意, 通过这个式子能找到对抗样本说明, 由训练样本训练生成器, 生成器的分布 p G p_G pG, 实际上并不能能够撇去对抗样本.

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值