मॉडल के अंदर: इंटरप्रिटेबिलिटीएडवांस्डपाठ 3105 मिनट का पाठ

Probing: एक लेयर क्या जानती है?

यह देखने के लिए कि लेयर के एक्टिवेशन्स में क्या जानकारी मौजूद है, उस पर एक साधारण क्लासिफायर को ट्रेन करें। फिर समझें कि 'जानकारी का मौजूद होना' और 'मॉडल द्वारा उसका इस्तेमाल किया जाना' एक ही बात क्यों नहीं हैं।

पाठ वीडियो में

60 सेकंड में

Probing: एक लेयर क्या जानती है?

यह देखने के लिए कि लेयर के एक्टिवेशन्स में क्या जानकारी मौजूद है, उस पर एक साधारण क्लासिफायर को ट्रेन करें। फिर समझें कि 'जानकारी का मौजूद होना' और 'मॉडल द्वारा उसका इस्तेमाल किया…

1/5
आसान शब्दों में
मान लीजिए आप जानना चाहते हैं कि आपके दोस्त ने यह नोटिस किया या नहीं कि बारिश हो रही थी। आप उसका दिमाग तो नहीं पढ़ सकते। लेकिन अगर आप सिर्फ उसके भीगे हुए छाते को देखकर यह अंदाज़ा लगा सकते हैं कि "हाँ, उसने नोटिस किया", तो वह जानकारी वहाँ मौजूद थी। एक probe भी मॉडल के अंदरूनी नंबर्स से लगाया जाने वाला इसी तरह का अंदाज़ा है।
एक probe एक छोटा, साधारण मॉडल होता है जिसे किसी लेयर के एक्टिवेशन्स से किसी प्रॉपर्टी का अनुमान लगाने के लिए ट्रेन किया जाता है। उदाहरण के लिए: एक मॉडल से कई वाक्य गुज़ारें, लेयर 6 पर रेजिडुअल-स्ट्रीम वेक्टर को सेव करें, और यह अनुमान लगाने के लिए एक क्लासिफायर ट्रेन करें कि "क्या यह वाक्य खेल (sport) के बारे में है?"। यदि probe नए वाक्यों पर तुक्के (chance) से कहीं बेहतर प्रदर्शन करता है, तो वह जानकारी उस लेयर से डिकोड करने योग्य (decodable) है।

Probe को साधारण क्यों रखें

हम आमतौर पर एक linear probe का उपयोग करते हैं: लॉजिस्टिक रिग्रेशन, जिसमें केवल एक वेट वेक्टर और एक बायस होता है। यदि किसी बड़े और शक्तिशाली probe की ज़रूरत पड़ती है, तो हो सकता है कि काम वह probe खुद ही कर रहा हो। एक linear probe ज़्यादा सटीक सवाल पूछता है: क्या वह प्रॉपर्टी एक्टिवेशन स्पेस में एक दिशा (direction) के रूप में स्टोर है? कई मॉडल्स में, रिसर्चर्स ने पाया है कि कई प्रॉपर्टीज़ को इस तरह से पढ़ा जा सकता है, जिससे पता चलता है कि मॉडल्स अक्सर कॉन्सेप्ट्स को लगभग लीनियर दिशाओं के रूप में स्टोर करते हैं।
  1. 1

    इकट्ठा करें (Collect)

    मॉडल से लेबल्ड उदाहरण गुज़ारें और एक लेयर पर एक्टिवेशन्स सेव करें।
  2. 2

    अलग करें (Split)

    एक टेस्ट सेट अलग रखें जिस पर probe कभी ट्रेन न हो।
  3. 3

    ट्रेन करें (Train)

    ट्रेनिंग एक्टिवेशन्स पर लॉजिस्टिक रिग्रेशन को फिट करें।
  4. 4

    तुलना करें (Compare)

    टेस्ट एक्यूरेसी की तुलना चांस (तुक्के) और एक कंट्रोल टास्क से करें।
  5. 5

    हर लेयर के लिए दोहराएँ (Repeat per layer)

    यह देखने के लिए कि जानकारी कहाँ सामने आती है, लेयर के अनुसार एक्यूरेसी का ग्राफ बनाएँ।

Numpy में एक probe

असली एक्टिवेशन्स के लिए एक असली मॉडल की ज़रूरत होती है। यहाँ हम उन्हें बनावटी (fake) रूप से तैयार करते हैं: हम 64-डायमेंशनल नॉइज़ में एक गुप्त दिशा के साथ एक हाँ/ना वाला फैक्ट छिपाते हैं। Probe को उस दिशा को खोजना होगा।
Logistic-regression probepython
import numpy as np

def train_probe(X, y, steps=500, lr=0.1):
    w, b = np.zeros(X.shape[1]), 0.0
    for _ in range(steps):
        p = 1 / (1 + np.exp(-(X @ w + b)))      # sigmoid
        w -= lr * X.T @ (p - y) / len(y)        # gradient of log-loss
        b -= lr * np.mean(p - y)
    return w, b

def accuracy(X, y, w, b):
    return np.mean(((X @ w + b) > 0) == y)
लैब में आप इसे इन बनावटी एक्टिवेशन्स पर चलाएंगे। Probe को असली लेबल्स पर अच्छा प्रदर्शन करना चाहिए, और इसके वेट वेक्टर को लगभग उसी दिशा में पॉइंट करना चाहिए जो गुप्त दिशा है।

दो जाल: कंट्रोल टास्क और कोरिलेशन

  • हो सकता है कि probe टास्क को खुद ही सीख ले। बहुत सारे डायमेंशन्स और कम उदाहरणों के साथ, ट्रेनिंग डेटा पर रैंडम लेबल्स भी फिट हो सकते हैं। हमेशा अलग रखे गए (held-out) डेटा पर टेस्ट करें, और एक कंट्रोल टास्क चलाएं, जैसे कि शफ़ल किए गए लेबल्स। एक अच्छा probe असली टास्क पर अच्छा प्रदर्शन करता है और कंट्रोल टास्क पर उसका रिजल्ट चांस के करीब होता है।
  • डिकोड किया जा सकना, इस्तेमाल होने जैसा नहीं है। किसी लेयर में ऐसी जानकारी हो सकती है जिसका इस्तेमाल मॉडल अपने आउटपुट के लिए कभी नहीं करता। उदाहरण के लिए, एक probe किसी लेयर से वाक्य की लंबाई को पढ़ सकता है, भले ही मॉडल का जवाब लंबाई पर निर्भर न करता हो।
Probe के आधार पर बढ़ा-चढ़ाकर किए गए दावे
  • "मॉडल खेल को समझता है"
  • "लेयर 6 वह जगह है जहाँ मॉडल विषय तय करता है"
  • केवल ट्रेनिंग एक्यूरेसी रिपोर्ट करना
सावधानीपूर्वक किए गए दावे
  • "विषय लेयर 6 के एक्टिवेशन्स से लीनियर रूप से डिकोड करने योग्य है"
  • "इस दिशा को हटाने से आउटपुट बदल जाता है, इसलिए ऐसा लगता है कि मॉडल इसका इस्तेमाल करता है"
  • टेस्ट एक्यूरेसी, एक कंट्रोल टास्क और एक बेसलाइन रिपोर्ट करना
नोट
यह टेस्ट करने के लिए कि जानकारी का इस्तेमाल हो रहा है या नहीं, आपको एक इंटरवेंशन की ज़रूरत होती है: probe द्वारा खोजी गई दिशा को हटाएँ या बदलें, फिर देखें कि क्या मॉडल का व्यवहार बदलता है। हम सर्किट्स और स्टीयरिंग वाले पाठों में इस विचार पर वापस आएँगे।
इसे आज़माएँ। मान लीजिए कि हिंदी-अंग्रेजी मॉडल की लेयर 2 पर मौजूद एक probe यह बता सकता है कि कोई शब्द किस भाषा में है। इस खोज को सावधानी से बताते हुए एक वाक्य लिखें, बिना यह दावा किए कि मॉडल भाषाएँ "जानता" है।

और देखें और पढ़ें

लैब

सिंथेटिक एक्टिवेशन्स पर काम करने वाला एक numpy probe, एक कंट्रोल टास्क और इसके द्वारा सीखी गई दिशा की जाँच के साथ।

~30 min

समस्या

अपने कंप्यूटर पर स्टार्टर कोड चलाएं (इसके लिए numpy की आवश्यकता है)। फिर:

  1. टेस्ट एक्यूरेसी, कंट्रोल एक्यूरेसी और probe तथा वास्तविक दिशा के बीच कोसाइन (cosine) को रिकॉर्ड करें।
  2. सिग्नल स्ट्रेंथ को 1.5 से बदलकर 0.3, और फिर 0.0 करें। तीनों नंबरों का क्या होता है?
  3. n = 100 सेट करें (स्लाइस बदलकर 75/25 का अनुपात बनाए रखें) और ट्रेनिंग एक्यूरेसी की तुलना टेस्ट एक्यूरेसी से करें। इस अंतर को समझाएं।
  4. दो वाक्य लिखें कि यह खिलौना प्रयोग (toy) आपको किसी असली मॉडल की प्रोबिंग के बारे में क्या बता सकता है और क्या नहीं।

प्रैक्टिस लैब

कोड में बदलाव करें और इसे रन करें। Python आपके ब्राउज़र में चलता है — हमारे सर्वर पर कुछ नहीं भेजा जाता।

आउटपुट

कोई आउटपुट नहीं। वैल्यूज़ देखने के लिए print(...) जोड़ें।

आपका काम तब पूरा होगा जब

कठिन सवाल

उत्तर देखने से पहले ख़ुद जवाब देने की कोशिश करें। अगर आप इनके जवाब दे सकते हैं, तो आप पाठ समझ गए हैं।

Q1आपका probe किसी मॉडल में हाई एक्यूरेसी के साथ यह खोज लेता है कि "क्या यह टेक्स्ट टॉक्सिक है?"। एक साथी कहता है: "बहुत बढ़िया, मॉडल के अंदर एक टॉक्सिसिटी डिटेक्टर मौजूद है।" इस दावे में क्या ग़लती है?दिखाएं

Probe यह दिखाता है कि जानकारी डिकोड करने योग्य है, यह नहीं कि मॉडल के पास कोई समर्पित डिटेक्टर है या वह इसका इस्तेमाल करता है। टॉक्सिक टेक्स्ट का संबंध दूसरी चीज़ों से भी हो सकता है, जैसे कि कुछ ख़ास शब्द या विषय, जिन्हें probe इसके बजाय पकड़ सकता है। ऐसा बड़ा दावा करने के लिए, आपको इंटरवेंशन करने होंगे: उस दिशा को हटाकर देखें कि क्या टॉक्सिसिटी से जुड़ा व्यवहार बदलता है, और ऐसे उदाहरणों पर टेस्ट करें जहाँ एक-दूसरे से जुड़े इन फीचर्स को अलग-अलग किया गया हो।

Q2कोई प्रॉपर्टी लगभग हर लेयर से डिकोड करने योग्य क्यों हो सकती है, और यह कहाँ 'कंप्यूट' होती है, इसके लिए इसका क्या मतलब है?दिखाएं

रेजिडुअल स्ट्रीम जानकारी को आगे ले जाती है, इसलिए एक बार जब किसी शुरुआती लेयर में कोई प्रॉपर्टी लिख दी जाती है, तो वह बाद की लेयर्स में भी पढ़ने योग्य रह सकती है। कुछ प्रॉपर्टीज़ को किसी भी लेयर पर इनपुट से दोबारा कंप्यूट करना भी आसान होता है। इसलिए लेयर्स में डिकोड होने की क्षमता यह बहुत कम बताती है कि कंप्यूटेशन वास्तव में कहाँ होता है। इसे ढूँढने के लिए, देखें कि एक्यूरेसी सबसे पहले तेज़ी से कहाँ बढ़ती है और फिर पैचिंग का इस्तेमाल करके टेस्ट करें कि कौन-से कंपोनेंट्स इसका कारण हैं।

जारी रखने के लिए कृपया साइन इन करें।

अक्सर पूछे जाने वाले सवाल

Probe के रूप में डीप न्यूरल नेटवर्क का उपयोग क्यों नहीं करते?

क्योंकि एक शक्तिशाली probe उलझे हुए इनपुट्स से भी उस प्रॉपर्टी को खुद ही कैलकुलेट कर सकता है। तब हाई एक्यूरेसी आपको probe के बारे में बताती है, मॉडल के बारे में नहीं। साधारण probes सवाल को निष्पक्ष और ईमानदार रखते हैं। कुछ रिसर्चर्स छोटे नॉन-लीनियर probes का उपयोग ज़रूर करते हैं, लेकिन वे इस अंतर को सावधानी से रिपोर्ट करते हैं।

कंट्रोल टास्क क्या होता है?

टास्क का एक ऐसा रूप जहाँ लेबल्स में इनपुट के बारे में कोई वास्तविक जानकारी नहीं होती, उदाहरण के लिए शफ़ल किए गए लेबल्स। यदि आपका probe उस पर भी अच्छा स्कोर करता है, तो वह चीज़ों को याद (memorise) कर रहा है, न कि मॉडल द्वारा स्टोर की गई किसी चीज़ को पढ़ रहा है।

मुझे किसी असली मॉडल से एक्टिवेशन्स कहाँ से मिलेंगे?

एक ओपन-वेट मॉडल से, आप फ़ॉरवर्ड पास के दौरान प्रत्येक ब्लॉक के आउटपुट को सेव कर सकते हैं। Hugging Face और PyTorch की दुनिया में इसके लिए लाइब्रेरीज़ मौजूद हैं, और कुछ तो ख़ास तौर पर इंटरप्रिटेबिलिटी के लिए बनाई गई हैं। उनके मौजूदा डॉक्स देखें, क्योंकि ये टूल्स अक्सर बदलते रहते हैं।

यदि probe की एक्यूरेसी लेयर 2 से लेयर 8 तक बढ़ती है, तो इससे मुझे क्या पता चलता है?

यह कि बाद की लेयर्स में जानकारी को लीनियर रूप से पढ़ना आसान हो जाता है। यह आपको यह नहीं बताता कि मॉडल इसे वहाँ जानबूझकर कैलकुलेट करता है या इसका इस्तेमाल करता है। यह एक उपयोगी मैप है कि आगे कहाँ देखना है।

पाठ का टेस्ट

5 सवाल। पास होने और इस पाठ को पूरा करने के लिए 3 सही होने चाहिए (60%)।

टेस्ट देने और अपनी प्रोग्रेस सेव करने के लिए साइन इन करें