用一個畫素攻陷神經網路

weixin_34194087發表於2018-10-14

僅用一個畫素就能讓神經網路蒙圈,產生對圖片錯誤的判斷。

1908904-85e3db4564b275b3.jpg

One Pixel Attack

如果我們只改變一個畫素點,能否讓深度神經網路把圖片錯誤分類?

相信我們,用一個畫素點,足以實現對神經網路攻陷。

在很多情況下,我們甚至可以讓神經網路給出我們想要的任何答案。

以下專案是 Keras 重現和教程:One pixel attack for fooling deep neural networks

它是如何工作的

在這套攻擊中,我們使用了 Cifar10 dataset。資料集的任務是將 32X32 畫素的圖片進行正確分類,分類池有十個選項(如鳥、鹿、卡車等)。這個黑盒(black-box)攻擊僅需要由神經網路輸出的概率標籤(每個分類的概率值)即可。我們通過選擇一個畫素並且將其修改為某種顏色來生成偽分類。

通過使用被稱為差分進化(Differential Evolution,DE)的進化演算法,迭代出對抗影象以試圖最小化神經網路分類的置信度。

1908904-4848ad1ac2242a5b.gif

首先,生成幾個對抗樣本,隨機修改一個畫素點,用神經網路執行影象。

接下來,將改變後的影象和先前的畫素位置和顏色結合在一起,從產生更多的對抗樣本,然後繼續通過神經網路執行這些樣本。如果上一步,有畫素降低了神經網路的置信度,那就將它們替換為當前的 best know 解決方案。

重複上述的步驟並進行幾次迭代;在最後一步返回對抗影象,最大程度的降低神經網路的置信度。如果成功了,置信度會大大降低,以至於新的(不正確的)類別現在具有最大概率的可信度。

可以參考以下攻擊成功的示例:

1908904-3148988b29d83ae3.jpg

示例攻擊過程詳解:Hyperparticle/one-pixel-attack-keras

Getting Started

如果你想要閱讀專案和程式碼,可以看:View the tutorial notebook on GitHub.

要執行教程中的程式碼,推薦使用適合執行 keras 專用 GPU(TensorFlow - GPU)。

需要 python 3.5+。

1.克隆倉庫(repository)

gitclonehttps://github.com/Hyperparticle/one-pixel-attack-kerascd./one-pixel-attack-keras

2.如果你還沒有安裝過 requirement.txt 中的 python 包,那就先安裝它

pip install -r ./requirements.txt

3.用 Jupyter 執行 iPython tutoriol notebook

jupyter notebook ./one-pixel-attack.ipynb

訓練和測試

執行train.py來訓練模型,在執行模型後,會自動將檢查點儲存在 networks/models 目錄下。

舉個例子,用 200 個檢查點和 128 位元組的批處理來訓練 ResNet:

pythontrain.py--modelresnet--epochs200--batch_size128

目前可用的模型:

lecun_net

pure_cnn

net_in_net

resnet

densenet

wide_resnet

capsnet

結果

執行幾次試驗後的初步結果:

對每個 100 個樣本的 1、2、3 個畫素無差別攻擊

1908904-c9ecd5c34bae688e.jpg

看起來攻擊成功率和本文闡述的還有一些差距,但是這主要是由於差異演化實施的低效率,這也是下一步我們要儘快解決的問題。

圖表中可以看出,CapsNet 對比其他神經網路,能更好的抵禦一個畫素的攻擊,但是仍然也是很脆弱的。

里程碑

Cifar10 dataset(√)

Tutorial notebook(√)

Lecun Network, Network in Network, Residual Network, DenseNet models(√)

CapsNet (capsule network) model(√)

Configurable command-line interface(√)

Efficient differential evolution implementation

MNIST dataset

ImageNet dataset

譯者@孫生光注:對抗影象隨機改變一個畫素點,用神經網路執行;然後這個點和對抗圖樣再結合結合繼續用神經網路執行;如果有畫素點讓神經網路的置信度降低,就將這個替換為當前最佳解決方案;重複迭代上述步驟,將使神經網路產生誤判。

英文原文:Hyperparticle/one-pixel-attack-keras

推薦閱讀深度學習的侷限性

作者:極小光

連結:https://www.jianshu.com/p/c46ce558ee47

來源:簡書

簡書著作權歸作者所有,任何形式的轉載都請聯絡作者獲得授權並註明出處。

相關文章