Adversarial examples: मॉडल को चकमा देना
किसी इनपुट में किया गया एक छोटा सा, सोच-समझकर चुना गया बदलाव मॉडल के जवाब को पलट सकता है। जानिए ऐसा क्यों होता है, यह कहाँ मायने रखता है, और बचाव के उपाय असल में क्या हासिल करते हैं।
60 सेकंड में
Adversarial examples: मॉडल को चकमा देना
किसी इनपुट में किया गया एक छोटा सा, सोच-समझकर चुना गया बदलाव मॉडल के जवाब को पलट सकता है। जानिए ऐसा क्यों होता है, यह कहाँ मायने रखता है, और बचाव के उपाय असल में क्या हासिल करते…
यह कैसा दिखता है
| इनपुट का प्रकार | छोटा बदलाव | संभावित गलत परिणाम |
|---|---|---|
| इमेज | पिक्सेल में इतने बारीक बदलाव जिन्हें लोग देख न सकें, या एक छोटा सा स्टिकर | क्लासिफायर गलत वस्तु का नाम बताता है |
| टेक्स्ट | अदला-बदला गया कोई अक्षर, मिलता-जुलता दिखने वाला कैरेक्टर, कोई पर्यायवाची शब्द, या अतिरिक्त स्पेस | स्पैम या टॉक्सिसिटी फ़िल्टर मैसेज को आगे जाने देता है |
| ऑडियो | क्लिप में मिलाई गई हल्की सी आवाज़ (noise) | स्पीच सिस्टम को अलग शब्द सुनाई देते हैं |
| टेबल वाला डेटा (Tabular data) | कुछ फ़ील्ड्स में छोटे-मोटे बदलाव, जैसे समय या रकम | फ़्रॉड पकड़ने वाला मॉडल किसी जोखिम भरे लेन-देन को सुरक्षित मान लेता है |
सहज रूप से समझें कि ऐसा क्यों होता है
- एक मॉडल बहुत सारे आयामों (dimensions) वाले स्पेस में अलग-अलग क्लास के बीच सीमाएं (boundaries) खींचता है। कई पॉइंट्स सीमा के बहुत करीब होते हैं, भले ही वे हमें सामान्य दिखें।
- कई पिक्सेल या फ़ीचर्स में फैले छोटे-छोटे बदलाव मिलकर बढ़ जाते हैं, और किसी इनपुट को उस सीमा के पार धकेल सकते हैं।
- मॉडल अक्सर शॉर्टकट सीख लेते हैं: ऐसे पैटर्न जो ट्रेनिंग डेटा पर तो काम करते हैं लेकिन इंसान उनका इस्तेमाल नहीं करते, जैसे आकार के बजाय बनावट (texture)।
- अगर कोई हमलावर मॉडल से बार-बार सवाल पूछ (query कर) सकता है, तो वह ऐसे बदलाव को ढूंढ सकता है जो काम कर जाए। एक मॉडल पर बनाए गए हमले अक्सर वैसे ही दूसरे मॉडल्स पर भी असर कर जाते हैं।
बचाव के उपाय और उनकी सीमाएं
| बचाव का उपाय | यह क्या करता है | सीमा |
|---|---|---|
| Adversarial training | ट्रेनिंग में ऐसे उदाहरण जोड़ना जिन पर हमला किया गया हो, ताकि मॉडल उनका मुकाबला करना सीख सके | इसमें ज़्यादा कंप्यूट खर्च होता है, सामान्य सटीकता कम हो सकती है, और यह मुख्य रूप से उन्हीं हमलों से बचाता है जिनके लिए ट्रेनिंग दी गई थी |
| इनपुट की जांच और सफ़ाई | टेक्स्ट को सामान्य (normalise) करना (जैसे मिलते-जुलते कैरेक्टर्स को ठीक करना), इमेज का साइज़ बदलना या कंप्रेस करना, असामान्य इनपुट्स को खारिज करना | होशियार हमलावर ऐसे बदलाव तैयार करते हैं जो सफ़ाई के बाद भी बच निकलें |
| एन्सेम्बल (Ensembles) और दूसरी राय | कई अलग-अलग मॉडल्स का इस्तेमाल करना या साथ में नियमों पर आधारित जांच भी रखना | हमले की लागत तो बढ़ा देता है लेकिन खतरे को पूरी तरह खत्म नहीं करता |
| क्वेरी (सवाल पूछने) पर सीमा | रेट लिमिट (rate limits) लगाना और सटीक स्कोर छिपाना खोज को मुश्किल बना देता है | कॉपी मॉडल पर बनाए गए ट्रांसफर हमलों को नहीं रोकता |
| गलती की गुंजाइश मानकर डिज़ाइन करना | किसी अकेले मॉडल स्कोर के भरोसे कोई महत्वपूर्ण फ़ैसला न छोड़ें | इसके लिए सिर्फ़ ML का काम नहीं, बल्कि पूरी प्रक्रिया में बदलाव की ज़रूरत होती है |
खतरे को व्यावहारिक नज़रिए से समझें
- 1
फायदा किसे है?
क्या मॉडल के गलत होने से किसी को फायदा होगा? आमतौर पर स्पैमर, धोखेबाज़ और नकलची फ़ायदे में रहते हैं। - 2
पहुंच कितनी है?
क्या वे मॉडल से खुलकर सवाल पूछ सकते हैं, स्कोर देख सकते हैं, या सिर्फ हाँ या ना देख सकते हैं? - 3
नुकसान क्या है?
फ़िल्म का गलत टैग लगना छोटा नुकसान है। फ़्रॉड का अलर्ट छूट जाना या मेडिकल रिपोर्ट में गलत फ़्लैग होना बड़ा नुकसान है। - 4
और क्या चीज़ इसे पकड़ सकती है?
इंसानी समीक्षा, नियम, सीमाएं और बाद में होने वाली जांच एक गलत जवाब से होने वाले नुकसान को कम कर देती हैं।
और देखें और पढ़ें
लैब
आपके द्वारा खुद चलाए जाने वाले टेक्स्ट क्लासिफायर के लिए एक छोटा evasion टेस्ट सेट और नतीजों की टेबल।
समस्या
अपनी मशीन पर एक साधारण स्पैम या सेंटिमेंट क्लासिफायर का इस्तेमाल करें (scikit-learn से एक छोटा सा मॉडल ट्रेन करें, या कोई भी छोटा ओपन मॉडल इस्तेमाल करें)। उन सिस्टम्स की जांच न करें जो आपके नहीं हैं।
- ऐसे 10 मैसेज चुनें जिनका मॉडल सही जवाब देता है।
- हर एक में 3 छोटे बदलाव करें जिन्हें इंसान अब भी समझ सके: एक गलत स्पेलिंग, मिलता-जुलता कैरेक्टर (जैसे o अक्षर की जगह 0 अंक), और अतिरिक्त स्पेस या विराम चिह्न।
- रिकॉर्ड करें कि किन बदलावों से अनुमान पलट जाता है।
- इनपुट सफ़ाई का एक चरण जोड़ें (लोअरकेस करना, अतिरिक्त स्पेस हटाना, आम मिलते-जुलते कैरेक्टर्स को ठीक करना) और टेस्ट को फिर से चलाएं।
- 3 वाक्यों में लिखें कि सफ़ाई से क्या ठीक हुआ और क्या नहीं।
प्रैक्टिस लैब
कोड में बदलाव करें और इसे रन करें। Python आपके ब्राउज़र में चलता है — हमारे सर्वर पर कुछ नहीं भेजा जाता।
कोई आउटपुट नहीं। वैल्यूज़ देखने के लिए print(...) जोड़ें।
आपका काम तब पूरा होगा जब
कठिन सवाल
उत्तर देखने से पहले ख़ुद जवाब देने की कोशिश करें। अगर आप इनके जवाब दे सकते हैं, तो आप पाठ समझ गए हैं।
Q1एक मॉडल के ख़िलाफ़ बनाए गए हमले अक्सर किसी दूसरे मॉडल पर भी काम क्यों कर जाते हैं?दिखाएं
एक ही काम के लिए मिलते-जुलते डेटा पर ट्रेन किए गए मॉडल अक्सर एक जैसे फ़ीचर्स और मिलती-जुलती निर्णय सीमाएं सीख लेते हैं। जो बदलाव किसी इनपुट को एक मॉडल की सीमा के पार धकेलता है, वह अक्सर उसे दूसरे मॉडल की सीमा के पार भी धकेल देता है। यही कारण है कि अपने मॉडल की बारीकियों को छिपाना मददगार तो है, लेकिन यह पूरी तरह से बचाव नहीं है।
Q2इनपुट की सफ़ाई वाला चरण आपके सभी टेस्ट हमलों को रोक देता है। यह इस बात का पक्का सबूत क्यों नहीं है कि सिस्टम सुरक्षित है?दिखाएं
आपके टेस्ट केवल उन हमलों को दिखाते हैं जिनके बारे में आपने सोचा था। जो हमलावर सफ़ाई के इस चरण के बारे में जानता है, वह ऐसे बदलाव तैयार कर सकता है जो इससे बच निकलें, जैसे कि नए मिलते-जुलते कैरेक्टर या अलग शब्द। नए मामले जोड़ते रहें, evasion की कोशिशों के लिए असली ट्रैफ़िक पर नज़र रखें, और यह पक्का करें कि ज़रूरी फ़ैसलों के लिए मॉडल के अलावा भी कोई बैकस्टॉप मौजूद हो।
अक्सर पूछे जाने वाले सवाल
क्या ये हमले सिर्फ़ सेल्फ़-ड्राइविंग कारों और तस्वीरों के लिए मायने रखते हैं?
नहीं। ऐसा कोई भी मॉडल जो ऐसे लोगों के इनपुट की जांच करता है जो अलग जवाब चाहते हों, इस खतरे के दायरे में आता है: स्पैम और दुर्व्यवहार फ़िल्टर, फ़्रॉड स्कोर, दस्तावेज़ जांच, रेज़्युमे स्क्रीनिंग, मैलवेयर क्लासिफायर और कंटेंट मॉडरेशन। असल ज़िंदगी में टेक्स्ट-आधारित evasion बहुत आम है।
क्या लार्ज लैंग्वेज मॉडल्स पर भी इसका असर पड़ता है?
हाँ। अजीबोगरीब स्ट्रिंग्स, बात को घुमा-फिराकर कहना, दूसरी भाषाएं और एन्कोडिंग किसी लैंग्वेज मॉडल के व्यवहार को बदल सकते हैं, जिसमें सेफ्टी फ़िल्टर्स से बच निकलना भी शामिल है। Prompt injection इससे जुड़ी लेकिन एक अलग समस्या है, जिसे दूसरे ट्रैक्स में कवर किया गया है।
क्या हमें हर मॉडल पर adversarial training करनी चाहिए?
हर बार ऐसा करने की ज़रूरत नहीं है। इसमें कंप्यूट खर्च होता है और यह सामान्य सटीकता को कम कर सकता है। इसका इस्तेमाल वहाँ करें जहाँ हमलावर को बच निकलने से साफ़ तौर पर फ़ायदा मिलता हो और नुकसान बड़ा हो। कई सिस्टम्स के लिए, इनपुट चेक्स, रेट लिमिट्स और इंसानी या नियम-आधारित बैकस्टॉप इस मेहनत के बदले कहीं ज़्यादा फ़ायदेमंद साबित होते हैं।
हम अपने मॉडल की जांच कैसे करें?
अपने डोमेन के हिसाब से असली लगने वाले evasions का एक छोटा टेस्ट सेट बनाएं: गलत स्पेलिंग, मिलते-जुलते कैरेक्टर, मिली-जुली लिपियां जैसे अंग्रेज़ी अक्षरों में लिखी गई हिंदी, और अंकों वाले फ़ील्ड्स में छोटे बदलाव। हर रिलीज़ से पहले इसे चलाकर देखें और किसी भी अन्य मेट्रिक की तरह इसके नतीजों पर नज़र रखें। इमेज और टेबल वाले डेटा के लिए ओपन-सोर्स adversarial ML लाइब्रेरीज़ मददगार हो सकती हैं।
पाठ का टेस्ट
5 सवाल। पास होने और इस पाठ को पूरा करने के लिए 3 सही होने चाहिए (60%)।