用一個畫素攻陷神經網路
:僅用一個畫素就能讓神經網路蒙圈,產生對圖片錯誤的判斷。
One Pixel Attack
如果我們只改變一個畫素點,能否讓深度神經網路把圖片錯誤分類?
相信我們,用一個畫素點,足以實現對神經網路攻陷。
在很多情況下,我們甚至可以讓神經網路給出我們想要的任何答案。
以下專案是 Keras 重現和教程:One pixel attack for fooling deep neural networks
它是如何工作的?
在這套攻擊中,我們使用了 Cifar10 dataset。資料集的任務是將 32X32 畫素的圖片進行正確分類,分類池有十個選項(如鳥、鹿、卡車等)。這個黑盒(black-box)攻擊僅需要由神經網路輸出的概率標籤(每個分類的概率值)即可。我們通過選擇一個畫素並且將其修改為某種顏色來生成偽分類。
通過使用被稱為差分進化(Differential Evolution,DE)的進化演算法,迭代出對抗影象以試圖最小化神經網路分類的置信度。
首先,生成幾個對抗樣本,隨機修改一個畫素點,用神經網路執行影象。
接下來,將改變後的影象和先前的畫素位置和顏色結合在一起,從產生更多的對抗樣本,然後繼續通過神經網路執行這些樣本。如果上一步,有畫素降低了神經網路的置信度,那就將它們替換為當前的 best know 解決方案。
重複上述的步驟並進行幾次迭代;在最後一步返回對抗影象,最大程度的降低神經網路的置信度。如果成功了,置信度會大大降低,以至於新的(不正確的)類別現在具有最大概率的可信度。
可以參考以下攻擊成功的示例:
示例攻擊過程詳解: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 個畫素無差別攻擊
看起來攻擊成功率和本文闡述的還有一些差距,但是這主要是由於差異演化實施的低效率,這也是下一步我們要儘快解決的問題。
圖表中可以看出,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
來源:簡書
簡書著作權歸作者所有,任何形式的轉載都請聯絡作者獲得授權並註明出處。
相關文章
- AI在用 | 一個超級提示,用Claude 3生成神經網路架構動畫AI神經網路架構動畫
- 動畫圖解迴圈神經網路動畫圖解神經網路
- 漫畫版:什麼是神經網路?神經網路
- 一個故事看懂AI神經網路工作原理AI神經網路
- 初識神經網路----一神經網路
- 神經網路:numpy實現神經網路框架神經網路框架
- 用Keras框架構建一個簡單的卷積神經網路!Keras框架架構卷積神經網路
- 神經網路神經網路
- 如何調整一個不收斂的神經網路神經網路
- 33個神經網路「煉丹」技巧神經網路
- 8、神經網路神經網路
- LSTM神經網路神經網路
- 聊聊從腦神經到神經網路神經網路
- 圖神經網路GNN 庫,液體神經網路LNN/LFM神經網路GNN
- 卷積神經網路-啟用函式卷積神經網路函式
- 神經網路不收斂的 11 個原因神經網路
- Make Your First GAN With PyTorch 之 第一個 PyTorch 神經網路PyTorch神經網路
- 神經網路篇——從程式碼出發理解BP神經網路神經網路
- 【神經網路篇】--RNN遞迴神經網路初始與詳解神經網路RNN遞迴
- 【深度學習篇】--神經網路中的卷積神經網路深度學習神經網路卷積
- 神經網路(neural networks)神經網路
- 人工神經網路(ANN)神經網路
- 卷積神經網路卷積神經網路
- 迴圈神經網路神經網路
- 生成型神經網路神經網路
- 用 CSS 做畫素畫CSS
- 吳恩達神經網路-第一週吳恩達神經網路
- 一文看懂卷積神經網路卷積神經網路
- 一文看懂神經網路工作原理神經網路
- (一)線性迴圈神經網路(RNN)神經網路RNN
- 神經網路中使用的啟用函式神經網路函式
- 圖神經網路綜述:模型與應用神經網路模型
- 神經網路的啟用函式總結神經網路函式
- 隨機森林VS神經網路:哪個更好?隨機森林神經網路
- DLL:一個炙手可熱的快速深度神經網路庫神經網路
- 卷積神經網路學習筆記——Siamese networks(孿生神經網路)卷積神經網路筆記
- Tensorflow系列專題(四):神經網路篇之前饋神經網路綜述神經網路
- 三、淺層神經網路神經網路