
มันง่ายแค่ไหนที่จะทำให้เครือข่ายประสาทลึกทำการจำแนกรูปภาพหากผู้โจมตีได้รับอนุญาตให้ปรับเปลี่ยนสีของหนึ่งพิกเซลและเห็นความน่าจะเป็นในการทำนายเท่านั้น? กลับกลายเป็นว่ามันง่ายมาก ในหลายกรณีผู้โจมตีสามารถทำให้เครือข่ายส่งคืนคำตอบใด ๆ ที่พวกเขาต้องการ
โครงการต่อไปนี้คือการพิจารณาใหม่ของ Keras และการสอนของ "One Pixel Attack สำหรับการหลอกเครือข่ายประสาทลึก" รหัสอย่างเป็นทางการสำหรับกระดาษสามารถพบได้ที่นี่
สำหรับการโจมตีครั้งนี้เราจะใช้ชุดข้อมูล CIFAR10 ภารกิจของชุดข้อมูลคือการจำแนกภาพ 32x32 พิกเซลอย่างถูกต้องใน 1 ใน 10 หมวดหมู่ (เช่นนก, กวาง, รถบรรทุก) การโจมตีแบบกล่องดำต้องการเฉพาะฉลากความน่าจะเป็น (ค่าความน่าจะเป็นสำหรับแต่ละหมวดหมู่) ที่ได้รับการส่งออกโดยเครือข่ายประสาท เราสร้างภาพที่เป็นปฏิปักษ์โดยเลือกพิกเซลและปรับเปลี่ยนเป็นสีที่แน่นอน
ด้วยการใช้อัลกอริทึมวิวัฒนาการที่เรียกว่า Differential Evolution (DE) เราสามารถสร้างภาพที่เป็นปฏิปักษ์เพื่อพยายามลดความมั่นใจ (ความน่าจะเป็น) ของการจำแนกประเภทของเครือข่ายประสาท

เครดิต: บล็อกของ Pablo R. Mier
ขั้นแรกให้สร้างตัวอย่างที่เป็นปฏิปักษ์หลายประการที่ปรับเปลี่ยนพิกเซลแบบสุ่มและเรียกใช้ภาพผ่านเครือข่ายประสาท จากนั้นรวมตำแหน่งและสีของพิกเซลก่อนหน้าเข้าด้วยกันสร้างตัวอย่างที่เป็นปฏิปักษ์ต่อพวกเขาและเรียกใช้ภาพใหม่ผ่านเครือข่ายประสาท หากมีพิกเซลที่ลดความเชื่อมั่นของเครือข่ายจากขั้นตอนสุดท้ายให้แทนที่พวกเขาเป็นโซลูชันที่รู้จักกันดีในปัจจุบัน ทำซ้ำขั้นตอนเหล่านี้สำหรับการทำซ้ำสองสามครั้ง จากนั้นในขั้นตอนสุดท้ายจะส่งคืนภาพที่เป็นปฏิปักษ์ที่ลดความมั่นใจของเครือข่ายมากที่สุด หากประสบความสำเร็จความเชื่อมั่นจะลดลงมากจนหมวดใหม่ (ไม่ถูกต้อง) ตอนนี้มีความมั่นใจในการจำแนกประเภทสูงสุด
ดูตัวอย่างด้านล่างสำหรับการโจมตีที่ประสบความสำเร็จ:

ต้องการ GPU หรือแค่อยากอ่าน? ดูสมุดบันทึกการสอนครั้งแรกด้วย Google Colab
ในการเรียกใช้รหัสในบทช่วยสอนในพื้นที่แนะนำให้ใช้ GPU เฉพาะที่เหมาะสำหรับการทำงานกับ 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 Epochs และขนาดแบทช์ 128:
python train.py --model resnet --epochs 200 --batch_size 128 หากต้องการทำการโจมตีให้เรียกใช้ attack.py โดยค่าเริ่มต้นสิ่งนี้จะเรียกใช้ทุกรุ่นที่มีพารามิเตอร์เริ่มต้น เพื่อระบุประเภทของแบบจำลองที่จะทดสอบใช้ --model โมเดล
python attack.py --model densenet capsnetรุ่นที่มีอยู่ในปัจจุบันคือ:
lenet - Lenet รุ่นแรกของ CNNpure_cnn - nn ที่มีเพียงชั้น convolutionalnet_in_net - เครือข่ายในเครือข่ายresnet - การเรียนรู้ที่เหลืออยู่ลึกสำหรับการจดจำภาพdensenet - เครือข่าย Convolutional ที่เชื่อมต่อหนาแน่นwide_resnet - เครือข่ายที่เหลืออยู่กว้างcapsnet - การกำหนดเส้นทางแบบไดนามิกระหว่างแคปซูล ผลลัพธ์เบื้องต้นหลังจากทำการทดลองหลายครั้งในรุ่นต่าง ๆ การทดลองแต่ละครั้งจะสร้างภาพที่เป็นปฏิปักษ์ 100 ภาพและคำนวณอัตราความสำเร็จในการโจมตีเช่นอัตราส่วนของภาพที่ทำให้โมเดลประสบความสำเร็จในการจำแนกภาพที่ผิดพลาดมากกว่าจำนวนภาพทั้งหมด สำหรับรุ่นที่กำหนดการทดลองหลายครั้งจะทำงานตามจำนวนพิกเซลที่อาจแก้ไขในภาพ (1,3 หรือ 5) อัลกอริทึมที่แตกต่างกันทำงานด้วยขนาดประชากร 400 และจำนวนการวนซ้ำสูงสุด 75
โจมตีการก่อกวน 1,3,5 พิกเซล (100 ตัวอย่าง)
| แบบอย่าง | พารามิเตอร์ | ทดสอบความแม่นยำ | พิกเซล | การโจมตีความสำเร็จ (ไม่มีเป้าหมาย) | โจมตีความสำเร็จ (เป้าหมาย) |
|---|---|---|---|---|---|
| เลนเน็ต | 62K | 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% | |||
| เดนเซเนต | 850K | 94.7% | 1 | 31.0% | 4.44% |
| 3 | 71.0% | 23.3% | |||
| 5 | 69.0% | 28.9% | |||
| resnet กว้าง | 11m | 95.3% | 1 | 19.0% | 1.11% |
| 3 | 58.0% | 18.9% | |||
| 5 | 65.0% | 22.2% | |||
| แคปเน็ต | 12m | 79.8% | 1 | 19.0% | 0.00% |
| 3 | 39.0% | 4.44% | |||
| 5 | 36.0% | 4.44% |
ปรากฏว่าแคปเครือข่ายแคปซูลในขณะที่มีความยืดหยุ่นในการโจมตีหนึ่งพิกเซลมากกว่า CNN อื่น ๆ ทั้งหมดยังคงมีความเสี่ยง