
مكتبة أمثلة خصومية لبناء الهجمات، وبناء الدفاعات، وتقييم أداء كليهما.
يحتوي هذا المستودع على الكود المصدري لـ CleverHans، وهي مكتبة بايثون لوضع معايير لقياس قابلية أنظمة التعلم الآلي للاختراق عبر الأمثلة الخصومية. يمكنك معرفة المزيد حول هذه الثغرات على المدونة المصاحبة.
مكتبة CleverHans قيد التطوير المستمر، وترحب دائمًا بالمساهمات التي تتضمن أحدث الهجمات والدفاعات. على وجه الخصوص، نرحب دائمًا بالمساعدة في حل المشكلات المفتوحة حاليًا.
منذ الإصدار v4.0.0، تدعم CleverHans ثلاثة أطر عمل: JAX وPyTorch وTF2. ونعطي حاليًا الأولوية لتنفيذ
الهجمات في PyTorch، لكننا نرحب كثيرًا بالمساهمات لجميع الأطر الثلاثة. في الإصدارات v3.1.0 وما قبلها،
كانت CleverHans تدعم TF1؛ يمكن العثور على كود v3.1.0 في مجلد cleverhans_v3.1.0/ أو عن طريق التحقق من
إصدار سابق على GitHub.
تركّز المكتبة على توفير تنفيذ مرجعي للهجمات ضد نماذج التعلم الآلي للمساعدة في قياس أداء النماذج مقابل الأمثلة الخصومية.
هيكل الدليل كما يلي:
يحتوي cleverhans/ على تطبيقات الهجمات، وtutorials/ على نصوص برمجية توضح ميزات
CleverHans، وdefenses/ على تطبيقات الدفاعات. لكل إطار عمل دليله الفرعي الخاص
داخل هذه المجلدات، على سبيل المثال: cleverhans/jax.
تستخدم هذه المكتبة Jax أو PyTorch أو TensorFlow 2 لتسريع العمليات الحسابية للرسوم البيانية التي تنفذها العديد من نماذج التعلم الآلي. لذلك، يعد تثبيت إحدى هذه المكتبات شرطًا أساسيًا.
بمجرد التعامل مع التبعيات، يمكنك تثبيت CleverHans باستخدام
pip أو عن طريق استنساخ مستودع GitHub هذا.
pipإذا كنت تثبّت CleverHans باستخدام pip، فشغّل الأمر التالي:
pip install cleverhans
سيؤدي هذا إلى تثبيت آخر إصدار تم رفعه إلى Pypi. إذا كنت تفضل بدلاً من ذلك تثبيت النسخة المتطورة، فاستخدم:
pip install git+https://github.com/cleverhans-lab/cleverhans.git#egg=cleverhans
إذا كنت تريد إجراء تثبيت قابل للتعديل (editable) لـ CleverHans بحيث يمكنك تطوير المكتبة وإعادة المساهمات، فقم أولاً بعمل fork للمستودع على GitHub ثم استنسخ fork الخاص بك إلى دليل من اختيارك:
git clone https://github.com/<your-org>/cleverhans
يمكنك بعد ذلك تثبيت الحزمة المحلية في وضع "editable" لإضافتها إلى
PYTHONPATH:
cd cleverhans
pip install -e .
على الرغم من أن CleverHans من المرجح أن يعمل على العديد من تكوينات الأجهزة الأخرى، فإننا نختبرها حاليًا مع Python 3.6 وJax 0.2 وPyTorch 1.7 وTensorflow 2.4 على Ubuntu 18.04 LTS (Bionic Beaver).
إذا كان لديك طلب دعم، فيرجى طرح سؤال على StackOverflow بدلاً من فتح مشكلة في متتبع GitHub. يجب استخدام متتبع مشكلات GitHub فقط للإبلاغ عن الأخطاء أو تقديم طلبات ميزات.
المساهمات مرحب بها! لتسريع عملية مراجعة الكود، نطلب:
Black
أسلوب الترميز في طلبات السحب الخاصة بك.يمكن بدء إصلاحات الأخطاء من خلال طلبات السحب على GitHub.
tutorialsلمساعدتك على البدء مع الوظائف التي توفرها هذه المكتبة، يأتي مجلد
tutorials/ مع الدروس التعليمية التالية:
ملاحظة: يتم صيانة الدروس التعليمية بعناية، بمعنى أننا نستخدم التكامل المستمر للتأكد من استمرار عملها. لا تعتبر جزءًا من API ويمكن أن تتغير في أي وقت دون سابق إنذار. يجب ألا تكتب كودًا من جهات خارجية يستورد الدروس التعليمية وتتوقع بعدم تعطل الواجهة. فقط المكتبة الرئيسية تخضع لقاعدة التحذير الخاصة بإهمال الواجهة لمدة ستة أشهر.
ملاحظة: يرجى بدء موضوع على لوحة المناقشة قبل كتابة درس تعليمي جديد. نظرًا لأن كل درس تعليمي جديد يتضمن قدرًا كبيرًا من الكود المكرر مقارنة بالدروس الحالية، ولأن كل سطر من الكود يتطلب اختبارًا وصيانة مستمرة إلى أجل غير مسمى، فإننا نفضل عمومًا عدم إضافة دروس تعليمية جديدة. يجب أن يعرض كل درس تعليمي طريقة مختلفة تمامًا لاستخدام المكتبة. مجرد استدعاء هجوم أو نموذج أو مجموعة بيانات مختلفة ليس كافيًا لتبرير صيانة درس تعليمي موازٍ.
examplesيحتوي مجلد examples/ على نصوص برمجية إضافية لعرض استخدامات مختلفة
لمكتبة CleverHans أو لمساعدتك على البدء في المنافسة في مسابقات الأمثلة الخصومية المختلفة.
نحن لا نقدم نفس القدر من الصيانة أو الدعم المستمر
لهذا المجلد مقارنة ببقية المكتبة، وإذا تعطل الكود الموجود هنا
فقد نقوم بحذفه دون سابق إنذار.
نظرًا لأننا أوقفنا مؤخرًا دعم TF1، فإن مجلد examples/ فارغ حاليًا،
لكننا نرحب بتقديم استخداماتك عبر طلب سحب :)
يمكن العثور على الأمثلة القديمة لـ CleverHans v3.1.0 والإصدارات السابقة في cleverhans_v3.1.0/examples/.
عند الإبلاغ عن المعايير، يرجى:
على سبيل المثال، يمكنك الإبلاغ: "قمنا بقياس متانة طريقتنا ضد الهجوم الخصومي باستخدام الإصدار 4.0.0 من CleverHans. على مجموعة اختبار معدّلة بواسطة FastGradientMethod بمعيار أقصى (max-norm) eps يساوي 0.3، حصلنا على دقة مجموعة اختبار بلغت 71.3%."
إذا كنت تستخدم CleverHans للبحث الأكاديمي، فنحن نشجعك بشدة (وإن لم يكن إلزاميًا) على الاستشهاد بهذه الورقة:
@article{papernot2018cleverhans,
title={Technical Report on the CleverHans v2.1.0 Adversarial Examples Library},
author={Nicolas Papernot and Fartash Faghri and Nicholas Carlini and
Ian Goodfellow and Reuben Feinman and Alexey Kurakin and Cihang Xie and
Yash Sharma and Tom Brown and Aurko Roy and Alexander Matyasko and
Vahid Behzadan and Karen Hambardzumyan and Zhishuai Zhang and
Yi-Lin Juang and Zhi Li and Ryan Sheatsley and Abhibhav Garg and
Jonathan Uesato and Willi Gierke and Yinpeng Dong and David Berthelot and
Paul Hendricks and Jonas Rauber and Rujun Long},
journal={arXiv preprint arXiv:1610.00768},
year={2018}
}
اسم CleverHans هو إشارة إلى عرض تقديمي من قبل بوب ستورم بعنوان “Clever Hans, Clever Algorithms: Are Your Machine Learnings Learning What You Think?" والمنشور المقابل، "A Simple Method to Determine if a Music Information Retrieval System is a 'Horse'." كان كليفر هانز حصانًا بدا أنه تعلّم الإجابة على أسئلة حسابية، لكنه في الواقع لم يتعلم سوى قراءة الإشارات الاجتماعية التي مكّنته من إعطاء الإجابة الصحيحة. في البيئات المضبوطة حيث لم يتمكن من رؤية وجوه الناس أو تلقي أي ملاحظات أخرى، كان عاجزًا عن الإجابة على نفس الأسئلة. قصة كليفر هانز هي استعارة لأنظمة التعلم الآلي التي قد تحقق دقة عالية جدًا على مجموعة اختبار مأخوذة من نفس توزيع بيانات التدريب، لكنها لا تفهم المهمة الأساسية فعليًا وتؤدي بشكل سيئ على المدخلات الأخرى.
تتم صيانة هذه المكتبة بشكل جماعي من قبل مختبر CleverHans في جامعة تورنتو. نقطة الاتصال الحالية هي جوناس جوان. كانت تُصان سابقًا من قبل إيان جودفيلو ونيكولاس بابيرنوت.
ساهم المؤلفون التاليون بـ 100 سطر أو أكثر (مرتبون وفقًا لصفحة المساهمين على GitHub):
حقوق النشر 2021 - Google Inc.، OpenAI، جامعة ولاية بنسلفانيا، جامعة تورنتو.