1. 程式人生 > >FGSM(Fast Gradient Sign Method)生成對抗樣本(32)---《深度學習》

FGSM(Fast Gradient Sign Method)生成對抗樣本(32)---《深度學習》

利用FGSM方法生成對抗樣本的基本原理如下圖所示,通過對原始圖片新增噪聲來使得網路對生成的圖片X’進行誤分類,需要注意的是,生成圖片X’和原始圖片X很像,人的肉眼無法進行辨別,生成的圖片X’即為對抗樣本!

1)定向對抗樣本
注意是對X’(n-1)求偏導,並非X,而且注意loss函式J中的引數是X’和Y’,而不是X和Y!這個是定向對抗樣本生成的過程,f(x)是針對噪聲的裁剪過程!

X’(n)=X+ε*f(sign(∇X’J(θ,X’(n-1),Y’)))

2)不定向對抗樣本
針對不定向對抗樣本的生成過程,則直接對x和y求偏導數即可!

X’=X+ε*sign(∇X’J(θ,X,Y))

這裡寫圖片描述

現在

我們需要考慮如何產生噪聲η,有很多種的方法,這裡我們採用的是Fast Gradient Sign Method,即通過在梯度方向上進行新增增量來誘導網路對生成的圖片X’進行誤分類,我們可以通過指定我們期待的分類使得網路針對任何輸入圖片均產生指定分類的對抗樣本,同時也可以不指定期待的分類,只需要使得生成的圖片被網路識別為與正確分類不同的分類即可!

針對指定預期分類的對抗樣本生成來說,我們需要更改它的loss損失函式,交叉熵損失函式變為:loss = tf.nn.sparse_softmax_cross_entropy_with_logits(logits=y_logits, labels=[pl_cls_target])

,通過計算網路對於引數的梯度進行噪聲的生成即對抗樣本的生成!