日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

FGSM(Fast Gradient Sign Method)生成对抗样本

發(fā)布時間:2023/12/15 综合教程 25 生活家
生活随笔 收集整理的這篇文章主要介紹了 FGSM(Fast Gradient Sign Method)生成对抗样本 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

https://blog.csdn.net/u014038273/article/details/78773515

https://blog.csdn.net/qq_35414569/article/details/80770121

對抗樣本

通過對原始圖片添加噪聲來使得網絡對生成的圖片X’進行誤分類,需要注意的是,生成圖片X’和原始圖片X很像,人的肉眼無法進行辨別,生成的圖片X’即為對抗樣本。

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

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

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

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

FGSM

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

針對指定預期分類的對抗樣本生成來說,我們需要更改它的loss損失函數(shù),交叉熵損失函數(shù)變?yōu)椋?/p>

loss = tf.nn.sparse_softmax_cross_entropy_with_logits(logits=y_logits, labels=[pl_cls_target]),通過計算網絡對于參數(shù)的梯度進行噪聲的生成即對抗樣本的生成。

  在2014年提出了神經網絡可以很容易被輕微的擾動的樣本所欺騙之后,又對產生對抗樣本的原因進行了分析,Goodfellow等人認為高維空間下的線性行為足以產生對抗樣本。

對抗樣本的線性解釋

  常見的數(shù)據(jù)圖像大部分表示成1-255,8bit/像素點的形式,所以能夠表示樣本的精度十分有限,由于這種有限的表達能力,可能在原始樣本上加小小的擾動就被誤分類。現(xiàn)在我們有:

原始圖像:x
擾動:η
對抗樣本:

當存在一個小到可忽略的ε滿足,我們期望分類器對這兩個樣本的分類結果一致,然而……

現(xiàn)在考慮加入權值向量ω信息,則:

對抗擾動通過ωTη影響激活函數(shù)從而影響分類結果。如果ω有n個維度,權向量的一個元素的平均大小是m,那么激活函數(shù)就會增加εmn。雖然∥η∥∞不會隨著維度增加而增加,但是η會隨n線性增長,然后就有高維問題了。

非線性模型的線性擾動

  我們假設神經網絡都太線性了以至于不能抵抗對抗樣本。常見的LSTM、ReLU和maxout網絡都趨向于線性表現(xiàn),而類似sigmod這種非線性性模型也把大量的時間花在非飽和和線性系統(tǒng)中。

我們從公式開始理解(fast gradient sign method):

模型參數(shù):θ
模型輸入,即圖像:x
結果標簽:y
損失函數(shù):J(θ,x,y)
符號函數(shù):sign()
我們可以線性化代價函數(shù)的當前值θ,獲得最優(yōu)max-norm η

算法的主要思想:讓我們的變化量與梯度的變化方向完全一致,那么我們的誤差函數(shù)就會增大,那么將會對分類結果產生最大化的變化。

sign函數(shù)保證了變化方法同梯度方向一致。對損失函數(shù)求偏導,即得到權值向量ω有關的函數(shù)。

首先明確,橫坐標表示單維x輸入值,縱坐標表示損失值,函數(shù)圖像是損失函數(shù)J,損失值越大表示越大概率分類錯誤,假設灰的線上方為分類錯誤,下方為分類正確。

以樣本點x1為例。根據(jù)公式,此時的偏導函數(shù)為負,則黑色箭頭方向為擾動方向,同理x2樣本在取值為正時,也沿著黑色箭頭方向變化,只要我們的 ε取值合適,就能生成對抗樣本,使得分類錯誤。

線性模型與權值衰減的對抗性訓練

如果我們可以考慮的最簡單的模型是邏輯回歸。在這種情況下,F(xiàn)GSM是準確的。

代碼

代碼實現(xiàn)主要參考鏈接:Python3環(huán)境下cleverhans對抗樣本防護編譯與測試(含F(xiàn)GSM攻擊與ADV防護),但是原博客沒有直接給出可運行的代碼,所以自己基于基礎代碼改了一下,在博客最后附下載鏈接。

工程如下:

fgsm.py 可直接運行主程序,實現(xiàn)FGSM算法生成對抗樣本,也能實現(xiàn)防御
eval_on_adversarisl.py 實現(xiàn)防御訓練模型
checkpoint 兩個防御模型
input 原始輸入圖像
output 對抗樣本
通過修改checkpoint_path來實現(xiàn)調用不同模型:

inception_v3.ckpt 是原始經典模型
adv_inception_v3.ckpt 是Step L.L.防御訓練后的模型
ens4_adv_inception_v3.ckpt 是集成四個模型Step L.L.防御訓練后的模型
結果展示函數(shù):
classify() 展示預測結果最高的類別
show_classify() 展示圖像以及預測結果最高的前十個結果,如下圖:

代碼主要調用cleverhans集成庫,里頭還有許多現(xiàn)成的攻擊算法可以調用。

總結

以上是生活随笔為你收集整理的FGSM(Fast Gradient Sign Method)生成对抗样本的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。