
ما مدى سهولة التسبب في أن شبكة عصبية عميقة تسيء تصنيف صورة ما إذا لم يُسمح للمهاجم إلا بتعديل لون بكسل واحد فقط ويرى احتمال التنبؤ فقط؟ تبين أنه بسيط للغاية. في كثير من الحالات ، يمكن للمهاجم حتى أن يتسبب في إرجاع الشبكة أي إجابة تريدها.
المشروع التالي هو إعادة تخطيط Keras والتعليمي لـ "One Pixel Attack لخداع الشبكات العصبية العميقة". يمكن العثور على الرمز الرسمي للورقة هنا.
لهذا الهجوم ، سوف نستخدم مجموعة بيانات CIFAR10. تتمثل مهمة مجموعة البيانات في تصنيف صورة 32 × 32 بكسل بشكل صحيح في 1 من 10 فئات (على سبيل المثال ، الطيور ، الغزلان ، الشاحنة). لا يتطلب هجوم الصندوق الأسود فقط ملصقات الاحتمالات (قيمة الاحتمال لكل فئة) التي يتم إخراجها بواسطة الشبكة العصبية. نقوم بإنشاء صور عدوانية عن طريق اختيار بكسل وتعديلها إلى لون معين.
باستخدام خوارزمية تطورية تسمى التطور التفاضلي (DE) ، يمكننا توليد صور عدائية بشكل تكراري لمحاولة تقليل ثقة (احتمال) تصنيف الشبكة العصبية.

الائتمان: مدونة بابلو ر. مير
أولاً ، قم بإنشاء العديد من العينات العدائية التي تعدل بكسل عشوائي وتشغيل الصور من خلال الشبكة العصبية. بعد ذلك ، اجمع بين مواضع البكسلات السابقة وألوانها معًا ، وإنشاء العديد من العينات العدائية منها ، وتشغيل الصور الجديدة عبر الشبكة العصبية. إذا كانت هناك وحدات البكسل التي خفضت ثقة الشبكة من الخطوة الأخيرة ، استبدلها كأفضل حلول حالية معروفة. كرر هذه الخطوات لبعض التكرارات. ثم في الخطوة الأخيرة ، أعد الصورة العدائية التي قللت من ثقة الشبكة أكثر من غيرها. إذا نجحت ، سيتم تقليل الثقة لدرجة أن فئة جديدة (غير صحيحة) لديها الآن أعلى ثقة في التصنيف.
انظر أدناه للحصول على بعض الأمثلة على الهجمات الناجحة:

هل تحتاج إلى وحدة معالجة الرسومات أو تريد فقط القراءة؟ عرض دفتر ملاحظات تعليمي أول مع Google Colab.
لتشغيل الكود في البرنامج التعليمي محليًا ، يوصى باستخدام وحدة معالجة الرسومات المخصصة للتشغيل مع Keras ( tensorflow-gpu ). 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 لتدريب نموذج ، قم بتشغيل train.py . سيتم تحديد النموذج (حفظ) بعد كل عصر إلى دليل networks/models .
على سبيل المثال ، لتدريب Resnet مع 200 عصر وحجم دفعة 128:
python train.py --model resnet --epochs 200 --batch_size 128 لأداء الهجوم ، RUN attack.py . بشكل افتراضي ، سيقوم هذا بتشغيل جميع النماذج مع المعلمات الافتراضية. لتحديد أنواع النماذج للاختبار ، استخدم --model .
python attack.py --model densenet capsnetالنماذج المتاحة حاليا:
lenet - Lenet ، نموذج CNN الأولpure_cnn - A nn مع طبقات تلافيفية فقطnet_in_net - شبكة في الشبكةresnet - التعلم المتبقي العميق للتعرف على الصورdensenet - شبكات تلافيفية متصلة بكثافةwide_resnet - شبكات متبقية واسعةcapsnet - التوجيه الديناميكي بين الكبسولات النتائج الأولية بعد إجراء العديد من التجارب على نماذج مختلفة. تقوم كل تجربة بإنشاء 100 صورة عدوانية ويحسب معدل نجاح الهجوم ، أي نسبة الصور التي تسببت بنجاح في إساءة تصنيف صورة على إجمالي عدد الصور. بالنسبة لنموذج معين ، يتم تشغيل تجارب متعددة بناءً على عدد البكسلات التي يمكن تعديلها في صورة (1،3 ، أو 5). تم تشغيل الخوارزمية التفاضلية بحجم 400 عدد من السكان وعدد التكرار القصوى البالغ 75.
هجوم على 1،3،5 بيكسل اضطرابات (100 عينة)
| نموذج | حدود | دقة الاختبار | بكسل | نجاح الهجوم (غير مستهدف) | نجاح الهجوم (المستهدف) |
|---|---|---|---|---|---|
| لينيت | 62 كيلو | 74.9 ٪ | 1 | 63.0 ٪ | 34.4 ٪ |
| 3 | 92.0 ٪ | 64.4 ٪ | |||
| 5 | 93.0 ٪ | 64.4 ٪ | |||
| CNN النقي | 1.4m | 88.8 ٪ | 1 | 13.0 ٪ | 6.67 ٪ |
| 3 | 58.0 ٪ | 13.3 ٪ | |||
| 5 | 63.0 ٪ | 18.9 ٪ | |||
| شبكة في الشبكة | 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 واسعة | 11 م | 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 ٪ |
يبدو أن شبكة Capsule Network Capsnet ، على الرغم من أنها أكثر مرونة في هجوم بكسل واحد من جميع CNNs الأخرى ، لا تزال عرضة للخطر.