
हमलों का निर्माण करने, सुरक्षा उपाय बनाने और दोनों की बेंचमार्किंग करने के लिए एक एडवर्सेरियल उदाहरण लाइब्रेरी
इस रिपॉज़िटरी में CleverHans का स्रोत कोड शामिल है, जो मशीन लर्निंग सिस्टम की प्रतिकूल उदाहरणों के प्रति भेद्यता का बेंचमार्क करने हेतु एक Python लाइब्रेरी है। आप संबंधित ब्लॉग पर ऐसी भेद्यताओं के बारे में अधिक जान सकते हैं।
CleverHans लाइब्रेरी निरंतर विकास के अधीन है, और नवीनतम हमलों और बचावों के योगदानों का हमेशा स्वागत करती है। विशेष रूप से, हम वर्तमान में खुले मुद्दों को हल करने में सहायता का हमेशा स्वागत करते हैं।
v4.0.0 के बाद से, CleverHans 3 फ्रेमवर्क का समर्थन करता है: 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 का उपयोग करती है। इसलिए, इनमें से किसी एक लाइब्रेरी को स्थापित करना एक पूर्व-आवश्यकता है।
एक बार निर्भरताओं का ध्यान रख लिए जाने पर, आप pip का उपयोग करके या इस Github रिपॉज़िटरी को क्लोन करके CleverHans स्थापित कर सकते हैं।
pip स्थापनायदि आप pip का उपयोग करके CleverHans स्थापित कर रहे हैं, तो निम्न कमांड चलाएँ:
pip install cleverhans
यह Pypi पर अपलोड किए गए अंतिम संस्करण को स्थापित करेगा। यदि आप इसके बजाय नवीनतम विकास संस्करण (bleeding edge version) स्थापित करना चाहते हैं, तो उपयोग करें:
pip install git+https://github.com/cleverhans-lab/cleverhans.git#egg=cleverhans
यदि आप CleverHans की एक संपादन योग्य (editable) स्थापना करना चाहते हैं ताकि आप लाइब्रेरी विकसित कर सकें और परिवर्तनों का योगदान वापस कर सकें, तो पहले GitHub पर रिपॉज़िटरी को फोर्क करें और फिर अपने फोर्क को अपनी पसंद की निर्देशिका में क्लोन करें:
git clone https://github.com/<your-org>/cleverhans
फिर आप इसे अपने PYTHONPATH में जोड़ने के लिए स्थानीय पैकेज को "editable" मोड में स्थापित कर सकते हैं:
cd cleverhans
pip install -e .
यद्यपि CleverHans कई अन्य मशीन कॉन्फ़िगरेशनों पर काम करने की संभावना रखता है, हम वर्तमान में उबंटू 18.04 LTS (Bionic Beaver) पर Python 3.6, Jax 0.2, PyTorch 1.7 और Tensorflow 2.4 के साथ इसका परीक्षण करते हैं।
यदि आपके पास सहायता का अनुरोध है, तो GitHub ट्रैकर में एक मुद्दा खोलने के बजाय StackOverflow पर प्रश्न पूछें। GitHub मुद्दा ट्रैकर का उपयोग केवल बग रिपोर्ट करने या फीचर अनुरोध करने के लिए किया जाना चाहिए।
योगदानों का स्वागत है! कोड समीक्षा प्रक्रिया को तेज करने के लिए, हम अनुरोध करते हैं कि:
Black कोडिंग शैली का पालन करना चाहिए।बग फिक्स GitHub पुल रिक्वेस्ट के माध्यम से शुरू किए जा सकते हैं।
tutorials निर्देशिकाइस लाइब्रेरी द्वारा प्रदान की गई कार्यक्षमताओं के साथ शुरुआत करने में आपकी सहायता के लिए, tutorials/ फोल्डर में निम्नलिखित ट्यूटोरियल शामिल हैं:
नोट: ट्यूटोरियल सावधानीपूर्वक बनाए रखे जाते हैं, इस अर्थ में कि हम यह सुनिश्चित करने के लिए सतत एकीकरण का उपयोग करते हैं कि वे काम करते रहें। उन्हें API का हिस्सा नहीं माना जाता है और वे बिना चेतावनी के किसी भी समय बदल सकते हैं। आपको तृतीय-पक्ष कोड नहीं लिखना चाहिए जो ट्यूटोरियल आयात करता है और यह उम्मीद करता है कि इंटरफ़ेस नहीं टूटेगा। केवल मुख्य लाइब्रेरी ही हमारे छह माह के इंटरफ़ेस अप्रचलन चेतावनी नियम के अधीन है।
नोट: कृपया नया ट्यूटोरियल लिखने से पहले चर्चा बोर्ड पर एक थ्रेड शुरू करें। क्योंकि प्रत्येक नए ट्यूटोरियल में मौजूदा ट्यूटोरियल की तुलना में बड़ी मात्रा में डुप्लिकेट कोड शामिल होता है, और क्योंकि कोड की हर पंक्ति के लिए अनिश्चित काल तक निरंतर परीक्षण और रखरखाव की आवश्यकता होती है, हम आम तौर पर नए ट्यूटोरियल जोड़ना पसंद नहीं करते हैं। प्रत्येक ट्यूटोरियल को लाइब्रेरी का उपयोग करने के अत्यंत भिन्न तरीके को प्रदर्शित करना चाहिए। केवल एक अलग हमले, मॉडल या डेटासेट को कॉल करना समानांतर ट्यूटोरियल बनाए रखने को उचित ठहराने के लिए पर्याप्त नहीं है।
examples निर्देशिकाexamples/ फोल्डर में CleverHans लाइब्रेरी के विभिन्न उपयोगों को प्रदर्शित करने या विभिन्न प्रतिकूल उदाहरण प्रतियोगिताओं में भाग लेने में आपकी मदद करने के लिए अतिरिक्त स्क्रिप्ट शामिल हैं। हम इस निर्देशिका के लिए लाइब्रेरी के बाकी हिस्सों जितना निरंतर रखरखाव या समर्थन प्रदान नहीं करते हैं, और यदि यहाँ का कोड टूट जाता है तो हम बिना चेतावनी के इसे हटा सकते हैं।
चूँकि हमने हाल ही में TF1 का समर्थन बंद कर दिया है, examples/ फोल्डर वर्तमान में
खाली है, लेकिन आप पुल रिक्वेस्ट के माध्यम से अपने उपयोगों को सबमिट करने के लिए स्वागत हैं :)
CleverHans v3.1.0 और उससे पहले के पुराने उदाहरण cleverhans_v3.1.0/examples/ के अंतर्गत पाए जा सकते हैं।
बेंचमार्क रिपोर्ट करते समय, कृपया:
उदाहरण के लिए, आप रिपोर्ट कर सकते हैं "हमने CleverHans के v4.0.0 का उपयोग करके प्रतिकूल हमले के प्रति अपनी विधि की मजबूती का बेंचमार्क किया। FastGradientMethod द्वारा 0.3 के अधिकतम-नॉर्म eps के साथ संशोधित एक परीक्षण सेट पर, हमने 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 नाम बॉब स्टर्म की एक प्रस्तुति का संदर्भ है जिसका शीर्षक है "क्लीवर हैंस, क्लीवर एल्गोरिदम: क्या आपकी मशीन लर्निंग वह सीख रही है जो आप सोचते हैं?" और संबंधित प्रकाशन, "यह निर्धारित करने की एक सरल विधि कि क्या एक संगीत सूचना पुनर्प्राप्ति प्रणाली 'घोड़ा' है।" क्लीवर हैंस एक घोड़ा था जो अंकगणितीय प्रश्नों का उत्तर देना सीख चुका था, लेकिन वास्तव में उसने केवल सामाजिक संकेतों को पढ़ना सीखा था जो उसे सही उत्तर देने में सक्षम बनाते थे। नियंत्रित सेटिंग्स में जहाँ वह लोगों के चेहरे नहीं देख सकता था या अन्य फीडबैक प्राप्त नहीं कर सकता था, वह उन्हीं प्रश्नों का उत्तर देने में असमर्थ था। क्लीवर हैंस की कहानी मशीन लर्निंग सिस्टम के लिए एक रूपक है जो प्रशिक्षण डेटा के समान वितरण से लिए गए परीक्षण सेट पर बहुत उच्च सटीकता प्राप्त कर सकते हैं, लेकिन जो वास्तव में अंतर्निहित कार्य को नहीं समझते हैं और अन्य इनपुट पर खराब प्रदर्शन करते हैं।
यह लाइब्रेरी सामूहिक रूप से टोरंटो विश्वविद्यालय में CleverHans Lab द्वारा बनाए रखी जाती है। वर्तमान संपर्क बिंदु Jonas Guan है। इसे पहले Ian Goodfellow और Nicolas Papernot द्वारा बनाए रखा गया था।
निम्नलिखित लेखकों ने 100 या अधिक पंक्तियों का योगदान दिया (GitHub योगदानकर्ता पृष्ठ के अनुसार क्रमबद्ध):
कॉपीराइट 2021 - Google Inc., OpenAI, पेंसिल्वेनिया स्टेट विश्वविद्यालय, टोरंटो विश्वविद्यालय।