
Seberapa sederhana untuk menyebabkan jaringan saraf yang dalam untuk salah mengklasifikasikan gambar jika penyerang hanya diizinkan untuk memodifikasi warna satu piksel dan hanya melihat probabilitas prediksi? Ternyata itu sangat sederhana. Dalam banyak kasus, penyerang bahkan dapat menyebabkan jaringan mengembalikan jawaban apa pun yang mereka inginkan.
Proyek berikut adalah implementasi ulang KERAS dan tutorial "One Pixel Attack for Fooling Deep Neural Networks". Kode resmi untuk makalah ini dapat ditemukan di sini.
Untuk serangan ini, kami akan menggunakan dataset CIFAR10. Tugas dataset adalah untuk mengklasifikasikan dengan benar gambar piksel 32x32 dalam 1 dari 10 kategori (misalnya, burung, rusa, truk). Serangan kotak hitam hanya membutuhkan label probabilitas (nilai probabilitas untuk setiap kategori) yang dikeluarkan oleh jaringan saraf. Kami menghasilkan gambar permusuhan dengan memilih piksel dan memodifikasinya menjadi warna tertentu.
Dengan menggunakan algoritma evolusioner yang disebut diferensial Evolution (DE), kami dapat secara iteratif menghasilkan gambar permusuhan untuk mencoba meminimalkan kepercayaan (probabilitas) dari klasifikasi jaringan saraf.

Kredit: Blog Pablo R. Mier
Pertama, hasilkan beberapa sampel permusuhan yang memodifikasi piksel acak dan jalankan gambar melalui jaringan saraf. Selanjutnya, gabungkan posisi dan warna piksel sebelumnya bersama -sama, menghasilkan beberapa sampel yang lebih bermanfaat dari mereka, dan jalankan gambar baru melalui jaringan saraf. Jika ada piksel yang menurunkan kepercayaan jaringan dari langkah terakhir, ganti mereka sebagai solusi paling terkenal saat ini. Ulangi langkah -langkah ini untuk beberapa iterasi; Kemudian pada langkah terakhir, kembalikan citra permusuhan yang paling mengurangi kepercayaan jaringan. Jika berhasil, kepercayaan diri akan berkurang begitu banyak sehingga kategori baru (salah) sekarang memiliki kepercayaan klasifikasi tertinggi.
Lihat di bawah untuk beberapa contoh serangan yang berhasil:

Butuh GPU atau hanya ingin membaca? Lihat buku catatan tutorial pertama dengan Google Colab.
Untuk menjalankan kode di tutorial secara lokal, GPU khusus yang cocok untuk berjalan dengan keras ( tensorflow-gpu ) direkomendasikan. Diperlukan Python 3.5+.
git clone https://github.com/Hyperparticle/one-pixel-attack-keras
cd ./one-pixel-attack-keraspip install -r ./requirements.txtjupyter notebook ./one-pixel-attack.ipynb Untuk melatih model, jalankan train.py . Model ini akan dicatat (disimpan) setelah setiap zaman ke direktori networks/models .
Misalnya, untuk melatih resnet dengan 200 zaman dan ukuran batch 128:
python train.py --model resnet --epochs 200 --batch_size 128 Untuk melakukan serangan, jalankan attack.py . Secara default ini akan menjalankan semua model dengan parameter default. Untuk menentukan jenis model yang akan diuji, gunakan --model .
python attack.py --model densenet capsnetModel yang tersedia saat ini adalah:
lenet - Lenet, model CNN pertamapure_cnn - A NN dengan lapisan konvolusional yang adilnet_in_net - jaringan di jaringanresnet - Pembelajaran residu yang mendalam untuk pengenalan gambardensenet - jaringan konvolusional yang terhubung padatwide_resnet - Jaringan residu yang luascapsnet - Routing Dinamis Antara Kapsul Hasil awal setelah menjalankan beberapa percobaan pada berbagai model. Setiap percobaan menghasilkan 100 gambar permusuhan dan menghitung tingkat keberhasilan serangan, yaitu, rasio gambar yang berhasil menyebabkan model salah mengklasifikasikan gambar atas jumlah total gambar. Untuk model yang diberikan, beberapa percobaan dijalankan berdasarkan jumlah piksel yang dapat dimodifikasi dalam suatu gambar (1,3, atau 5). Algoritma diferensial dijalankan dengan ukuran populasi 400 dan jumlah iterasi maksimal 75.
Serangan terhadap gangguan piksel 1,3,5 (100 sampel)
| model | parameter | akurasi uji | piksel | Serangan Sukses (tanpa penargetan) | serangan kesuksesan (ditargetkan) |
|---|---|---|---|---|---|
| Lenet | 62k | 74,9% | 1 | 63,0% | 34,4% |
| 3 | 92,0% | 64,4% | |||
| 5 | 93,0% | 64,4% | |||
| CNN murni | 1.4m | 88,8% | 1 | 13,0% | 6,67% |
| 3 | 58,0% | 13,3% | |||
| 5 | 63,0% | 18,9% | |||
| Jaringan di Jaringan | 970k | 90,8% | 1 | 34,0% | 10,0% |
| 3 | 73,0% | 24,4% | |||
| 5 | 73,0% | 31,1% | |||
| Resnet | 470k | 92,3% | 1 | 34,0% | 14,4% |
| 3 | 79,0% | 21,1% | |||
| 5 | 79,0% | 22,2% | |||
| Densenet | 850k | 94,7% | 1 | 31,0% | 4,44% |
| 3 | 71,0% | 23,3% | |||
| 5 | 69,0% | 28,9% | |||
| Resnet lebar | 11m | 95,3% | 1 | 19,0% | 1,11% |
| 3 | 58,0% | 18,9% | |||
| 5 | 65,0% | 22,2% | |||
| Capsnet | 12m | 79,8% | 1 | 19,0% | 0,00% |
| 3 | 39,0% | 4,44% | |||
| 5 | 36,0% | 4,44% |
Tampaknya capsnet jaringan kapsul, sementara lebih tangguh terhadap serangan satu piksel daripada semua CNN lainnya, masih rentan.