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) f j ( ⋅ ) : 第j j j 層;
f 1.. j ( ⋅ ) f^{1..j}(\cdot) f 1 . . 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 arg max i f ( 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})},
∇ x f ( g ( x ) ) ∣ x = x ^ ← ∇ x f ( x ) ∣ x = g ( x ^ ) ,
替代, 從而被攻破(如果我們把g ( x ) g(x) g ( x ) 視爲模型的第1層, 那我們實際上就是攻擊第二層).
一般情形
假設f i ( x ) f^i(x) f i ( x ) (即第i層)是不可微, 或者導數“不好用", 則我們首先構造一個可微函數g ( x ) g(x) g ( x ) , 使得g ( x ) ≈ f i ( x ) g(x) \approx f^i(x) g ( x ) ≈ f i ( x ) , 在反向傳遞導數的時候(注意只在反向用到g g g ), 用∇ x g \nabla_x g ∇ x g 替代∇ f i ( x ) \nabla f^i(x) ∇ f i ( 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)) ∇ E t ∼ T f ( t ( x ) ) = E t ∼ T ∇ f ( 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 ( z a d v ) .
具體的案例
Thermometer encoding
這裏的τ \tau τ 是針對樣本每一個元素x i , j , c x_{i,j,c} x i , j , c 的, τ : x i , j , c → R l \tau:x_{i,j,c} \rightarrow \mathbb{R}^l τ : x i , j , c → R l :
τ ( 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.
τ ( x i , j , c ) k = { 1 0 x i , j , c > k / l e l s e .
只需令
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 ( 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能夠防禦
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')),
min ∥ x − x ′ ∥ 2 2 + α ( ℓ ( x ′ ) + L I D l o s s ( x ′ ) ) ,
的攻擊的主要原因是由於該函數陷入了局部最優. 因爲LID高的樣本不都是對抗樣本, 也有很多普通樣本.
忽視LID, 用原始的L2attack就能夠有效攻破LID.
Stochastic Activation Pruning
SAP實際上是dropout的一個變種, SAP會隨機將某層的f i f^i f i 的某些元素突變爲0(其概率正比於元素的絕對值大小).
這個方法可以用EOT攻破, 即用∑ i = 1 k ∇ x f ( x ) \sum_{i=1}^k \nabla_xf(x) ∑ i = 1 k ∇ x f ( x ) 來代替∇ x f ( x ) \nabla_x f(x) ∇ x f ( x ) .
Mitigating through randomization
這個方法的輸入是229 × 229 229\times 229 2 2 9 × 2 2 9 的圖片, 他會被隨機變換到r × r r\times r r × r 大小, r ∈ [ 229 , 331 ) r\in[229, 331) r ∈ [ 2 2 9 , 3 3 1 ) , 並隨機補零使得其大小爲331 × 331 331\times 331 3 3 1 × 3 3 1 .
同樣, 用EOT可以攻破.
PixelDefend
pass
DenfenseGAN
對於每一個樣本, 首先初始化R R R 個隨機種子z 0 ( 1 ) , … , z 0 ( R ) z_0^{(1)}, \ldots, z_0^{(R)} z 0 ( 1 ) , … , z 0 ( R ) , 對每一個種子, 利用梯度下降(L L L 步)以求最小化
min ∥ G ( z ) − x ∥ 2 2 , (DGAN)
\tag{DGAN}
\min \quad \|G(z)-x\|_2^2,
min ∥ G ( z ) − x ∥ 2 2 , ( D G A N )
其中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} x → x ^ 這一過程, 包含了L L L 步的內循環, 如果直接反向傳梯度會造成梯度爆炸或者消失.
所以攻擊的策略是:
min ∥ G ( z ) − x ∥ 2 2 + c ⋅ ℓ ( G ( z ) )
\min \quad \|G(z)-x\|_2^2 + c \cdot \ell (G(z))
min ∥ G ( z ) − x ∥ 2 2 + c ⋅ ℓ ( G ( z ) )
找到z a d v z_{adv} z a d v , 於是x a d v = G ( z a d v ) x_{adv}=G(z_{adv}) x a d v = G ( z a d v ) .
注意, 通過這個式子能找到對抗樣本說明, 由訓練樣本訓練生成器, 生成器的分佈p G p_G p G , 實際上並不能能夠撇去對抗樣本.