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(x)if(x)_i: 樣本xx爲類別ii的概率;
fj()f^j(\cdot): 第jj層;
f1..j()f^{1..j}(\cdot): 第11jj層;
c(x)c(x): argmaxif(x)i\arg \max_i f(x)_i;
c(x)c^*(x): 真實標籤.

Obfuscated Gradients

  • Shattered Gradients: 一些不可微的defense, 或者一些令導數不存在的defense造成;
  • Stochastic Gradients: 一些隨機化的defense造成;
  • Exploding & Vanishing Gradients: 通常由一些包括多次評估的defense造成.

BPDA

特例

有很多方法, 會構建一個不可微(或者其導數"不好用")的函數gg, 然後用模型f(g(x))f(g(x))替代f(x)f(x), 從而防禦一些基於梯度的攻擊方法, 而且這類方法往往要求g(x)xg(x) \approx x.

這類防禦方法, 可以很簡單地用
xf(g(x))x=x^xf(x)x=g(x^), \nabla_x f(g(x))|_{x=\hat{x}} \leftarrow \nabla_x f(x)|_{x=g(\hat{x})},
替代, 從而被攻破(如果我們把g(x)g(x)視爲模型的第1層, 那我們實際上就是攻擊第二層).

一般情形

假設fi(x)f^i(x)(即第i層)是不可微, 或者導數“不好用", 則我們首先構造一個可微函數g(x)g(x), 使得g(x)fi(x)g(x) \approx f^i(x), 在反向傳遞導數的時候(注意只在反向用到gg), 用xg\nabla_x g替代fi(x)\nabla f^i(x).

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

EOT

這類方法使用於攻破那些隨機化的defense的, 這類方法往往會從一個變換集合TT中採樣tt, 並建立模型f(t(x))f(t(x)), 如果單純用f(t(x))\nabla f(t(x)) 來攻擊效果不好, 可以轉而用EtTf(t(x))=EtTf(t(x))\nabla \mathbb{E}_{t \sim T} f(t(x)) = \mathbb{E}_{t \sim T} \nabla f(t(x))替代.

Reparameterization

重參用於針對梯度爆炸或者消失的情況, 因爲這種情況往往出現於f(g(x))f(g(x)), 而g(x)g(x)是對xx的一個多次評估(所以f(g(x))f(g(x))可以理解爲一個很深的網絡).

策略是利用構建x=h(z)x=h(z), 並且滿足g(h(z))=h(z)g(h(z))=h(z) (咋看起來很奇怪, 看了下面的DefenseGAN就明白了).

利用f(h(z))f(h(z)), 我們找到對應的對抗樣本h(zadv)h(z_{adv}).

具體的案例

Thermometer encoding

這裏的τ\tau是針對樣本每一個元素xi,j,cx_{i,j,c}的, τ:xi,j,cRl\tau:x_{i,j,c} \rightarrow \mathbb{R}^l:
τ(xi,j,c)k={1xi,j,c>k/l0else. \tau(x_{i, j, c})_k= \left \{ \begin{array}{ll} 1 & x_{i,j,c}>k/l \\ 0 & else. \end{array} \right.

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

Input transformations

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

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

LID

LID能夠防禦
minxx22+α((x)+LIDloss(x)), \min \quad \| x-x'\|_2^2 + \alpha(\ell(x')+\mathrm{LID_{loss}} (x')),
的攻擊的主要原因是由於該函數陷入了局部最優. 因爲LID高的樣本不都是對抗樣本, 也有很多普通樣本.
忽視LID, 用原始的L2attack就能夠有效攻破LID.

Stochastic Activation Pruning

SAP實際上是dropout的一個變種, SAP會隨機將某層的fif^i的某些元素突變爲0(其概率正比於元素的絕對值大小).

這個方法可以用EOT攻破, 即用i=1kxf(x)\sum_{i=1}^k \nabla_xf(x)來代替xf(x)\nabla_x f(x).

Mitigating through randomization

這個方法的輸入是229×229229\times 229的圖片, 他會被隨機變換到r×rr\times r大小, r[229,331)r\in[229, 331), 並隨機補零使得其大小爲331×331331\times 331.

同樣, 用EOT可以攻破.

PixelDefend

pass

DenfenseGAN

對於每一個樣本, 首先初始化RR個隨機種子z0(1),,z0(R)z_0^{(1)}, \ldots, z_0^{(R)}, 對每一個種子, 利用梯度下降(LL步)以求最小化
minG(z)x22,(DGAN) \tag{DGAN} \min \quad \|G(z)-x\|_2^2,
其中G(z)G(z)爲利用訓練樣本訓練的生成器.

得到RR個點z(1),,z(R)z_*^{(1)},\ldots, z_*^{(R)}, 設使得(DGAN)最小的爲zz^*, 以及x^=G(z)\hat{x} = G(z^*), 則x^\hat{x}就是我們要的, 樣本xx在普通樣本數據中的投影. 將x^\hat{x}喂入網絡, 判斷其類別.
在這裏插入圖片描述

這個方法, 利用梯度方法更新的難處在於, xx^x \rightarrow \hat{x}這一過程, 包含了LL步的內循環, 如果直接反向傳梯度會造成梯度爆炸或者消失.

所以攻擊的策略是:

minG(z)x22+c(G(z)) \min \quad \|G(z)-x\|_2^2 + c \cdot \ell (G(z))
找到zadvz_{adv}, 於是xadv=G(zadv)x_{adv}=G(z_{adv}).

注意, 通過這個式子能找到對抗樣本說明, 由訓練樣本訓練生成器, 生成器的分佈pGp_G, 實際上並不能能夠撇去對抗樣本.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章