大白话之One Pixel Attack for Fooling Deep Neural Networks论文讲解
生活随笔
收集整理的這篇文章主要介紹了
大白话之One Pixel Attack for Fooling Deep Neural Networks论文讲解
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
目錄
- 1 引言
- 2 算法原理
- 2.1 第一印象
- 2.2 初步設想
- 2.3 在此之前
- 2.4 承上:what is differential evolution(差分進化)
- 3 總結
- 附錄
1 引言
- 使用單像素點愚弄深度神經網絡。2017 CVPR 論文地址
- 對抗樣本生成的一種策略。
- 本文采取一種獨立思考的方式,來理解與講解這篇論文。
2 算法原理
2.1 第一印象
- what the fuck?改變一個像素點就能使網絡分類錯誤?想法great,但怎么可能
- 逐漸冷靜。。。單像素點真的能攻擊成功?
2.2 初步設想
- Can we:貌似 ”goodfellow的模型高度線性化,使得圖像會有擾動放大效應“ 為改設想提供了一定的理論依據。
- How:假設確實改動某個像素點的值能實現對抗攻擊。那如何去做?
- Ask:既然只是更改一個像素點,自然而然,我們想到暴力求解可不可行?
- Answer:如果用cifar數據集,一張圖片意味著要進行 32 * 32 * 3 * 256次迭代。代價太大,不可行。
- Ask:那梯度求解方式?
- Answer:類似FGSM用梯度求解,是建立在基本改變圖片全部像素點的前提下。這種場景和只改動單個像素點差遠了。
- Ask:那進化算法總行吧?既能實現黑盒攻擊,問題解空間也不大。進化算法:你直接報我身份證得了。想要詳細與進化算法深入接觸?跳轉
- Focus(注意了哈):作者提出使用差分進化算法來求解。恭喜你,最終還是說對了。
2.3 在此之前
- 先拋開差分進化不管。首先 Focus on 優化目標,即我們要找的那個像素點應該滿足何種標準。
max ? e ( x ) f a d v ( x + e ( x ) ) s u b j e c t t o ∣ ∣ e ( x ) ∣ ∣ 0 ≤ d \max_{e(x)} f_{adv}\left(x+e(x)\right)\\ subject\; to \qquad ||e(x)||_0\le d\\ e(x)max?fadv?(x+e(x))subjectto∣∣e(x)∣∣0?≤d
f : 模 型 的 類 別 概 率 輸 出 層 d : 改 變 像 素 點 的 個 數 該 算 法 中 d = 1 a d v : 待 攻 擊 成 的 類 別 該 算 法 是 實 現 有 目 標 攻 擊 f:模型的類別概率輸出層\\ d:改變像素點的個數\\ 該算法中 d = 1\\ adv:待攻擊成的類別\\ 該算法是實現有目標攻擊 f:模型的類別概率輸出層d:改變像素點的個數該算法中d=1adv:待攻擊成的類別該算法是實現有目標攻擊
- 如上公式,簡而言之就是希望待攻擊成的類別的置信度盡可能的大
2.4 承上:what is differential evolution(差分進化)
1. 定義求解空間
- 假設是cifar10數據集,其解空間就是:
( x , y , R , G , B ) s u b j e c t t o x , y ∈ [ 0 , 31 ] ; R , G , B ∈ [ 0 , 255 ] (x,y,R,G,B)\\ subject\;to\quad x,y \in[0,31]; R,G,B\in [0,255] (x,y,R,G,B)subjecttox,y∈[0,31];R,G,B∈[0,255] - 視覺上的解空間如下圖:
2. 初始化解集
- 使用均勻分布 U ( 1 , 32 ) U(1,32) U(1,32)來生成 x , y x,y x,y,使用正態分布 N ( μ = 128 , σ = 127 ) N(\mu =128,\sigma=127) N(μ=128,σ=127)來生成 R , G , B R,G,B R,G,B
- 以如上方式生成400個候選解集
3. 生成解集
x i ( g + 1 ) = x r 1 ( g ) + F ( x r 2 ( g ) ? x r 3 ( g ) ) , r 1 ≠ r 2 ≠ r 3 x_i(g+1)= x_{r1}(g)+F\left( x_{r2}(g)-x_{r3}(g)\right), \\r1\neq r2\neq r3\\ xi?(g+1)=xr1?(g)+F(xr2?(g)?xr3?(g)),r1?=r2?=r3
- 其中, x i x_i xi? 是候選解集中的一個元素, r 1 , r 2 , r 3 r1,r2,r3 r1,r2,r3是在候選解范圍的隨機數 r 1 , r 2 , r 3 ∈ [ 0 , 399 ] r1,r2,r3 \in [0,399] r1,r2,r3∈[0,399] ; F F F是超參數,這里設置為0.5; g g g是當前迭代代數。
4、種群適應
- 400個父代候選解 使用步驟3公式 又生成了400個子代解。共800,按照之前講的優化目標從800個解中選出400個最優秀的解集。不斷迭代即可。
5、最終選擇
- 自己設定迭代多少次。反正最終還是會獲得400個候選解集,按照之前的優化目標,找到其中最好的一個解,作為該問題的解。
- 這個解就包含了需要修改的像素位置以及改動多少像素值的信息。將其該解運用到干凈樣本中,就生成了能夠愚弄分類器的對抗樣本。
3 總結
- 典型的A+B論文吧。
- 經了解得知,差分進化其實是數學上的一個優化方法,大概在90年代提出。
- 經coding發現,差分進化算法在scipy庫中就有。
- 但是實驗發現使用scipy庫的差分進化算法比較慢,作者在代碼上做了一些速度上的提升。
附錄
- 論文作者代碼:
https://github.com/Hyperparticle/one-pixel-attack-keras - My Coding:
不好意思拿出來(狗頭) - 參考資料:
[論文總結] One Pixel Attack for Fooling DNN 對抗樣本單像素攻擊
OnePixel攻擊
采用寫作新形式,任何問題,評論區留言,力所能及,必答之。
總結
以上是生活随笔為你收集整理的大白话之One Pixel Attack for Fooling Deep Neural Networks论文讲解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 最近很多人问我:saiku下载不下来
- 下一篇: 使用CSS写正方体,结合JS实现3D轮播