Assessing the Impact of Code Changes on the Fault Localizability of Large Language Models
यह शोध पत्र फॉल्ट लोकलाइजेशन (fault localization) में लार्ज लैंग्वेज मॉडल्स की मजबूती का आकलन करने के लिए एक बड़े पैमाने के, म्यूटेशन-आधारित मूल्यांकन ढांचे को प्रस्तुत करता है, जो यह प्रकट करता है कि उनका तर्क अक्सर नाजुक होता है और गहरे अर्थपूर्ण बोध के बजाय सिंटैक्टिक संकेतों पर निर्भर करता है, जैसा कि अर्थ-संरक्षण करने वाले कोड परिवर्तनों के अधीन होने पर 78% विफलता दर से प्रमाणित होता है।
मूल पेपर CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/) के तहत लाइसेंस किया गया है। नीचे दिए गए पेपर की यह व्याख्या AI से तैयार की गई है। इसे लेखकों ने न तो लिखा है, न इसका समर्थन किया है। तकनीकी सटीकता के लिए मूल पेपर देखें। पूरा डिस्क्लेमर पढ़ें
कल्पना कीजिए कि आपने एक बेहद बुद्धिमान और सुपर-फास्ट जासूस (Large Language Model, या LLM) को एक रहस्य सुलझाने के लिए काम पर रखा है। आपका लक्ष्य इस जासूस को किताबों के एक विशाल पुस्तकालय (कोड) में से एक छोटी सी गलती खोजने के लिए कहना है और फिर यह बताना है कि वह गलती किस पेज और किस लाइन पर है। इसे फॉल्ट लोकलाइजेशन (Fault Localization) कहा जाता है।
लंबे समय से, हम इन जासूसों का परीक्षण उन पहेलियों के साथ कर रहे हैं जिन्हें उन्होंने अपने प्रशिक्षण की किताबों में पहले ही देख लिया है। यह उन्हें एक ऐसे "वॉलडो कहाँ है" (Where's Waldo) वाले पजल देने जैसा है जिसे वे हजार बार हल कर चुके हैं। बेशक, वे इसे सही कर लेंगे! लेकिन क्या इसका मतलब यह है कि वे वास्तव में नए रहस्यों को सुलझाने में अच्छे हैं, या वे केवल उत्तरों को रट रहे हैं?
यह शोध पत्र इन AI जासूसों के लिए एक तनाव परीक्षण (Stress Test) की तरह है। शोधकर्ता यह देखना चाहते थे: यदि हम कहानी सुनाने का तरीका बदल दें, लेकिन कथानक (Plot) बिल्कुल वही रखें, तो क्या जासूस अभी भी गलती ढूंढ पाएगा?
यहाँ उनके प्रयोग का सरल उपमाओं (Analogies) के साथ विवरण दिया गया है:
1. सेटअप: एक "नकली" अपराध स्थल बनाना
शोधकर्ताओं ने पुराने, ज्ञात पहेलियों का उपयोग नहीं किया। इसके बजाय, उन्होंने हजारों साफ-सुथरे, काम करने वाले प्रोग्राम (जैसे केक बनाने की एक सटीक रेसिपी) लिए और उनमें एक विशिष्ट त्रुटि (Error) डाल दी (जैसे चीनी की जगह गलती से नमक डाल देना)।
फिर उन्होंने AI से पूछा: "यहाँ रेसिपी है और यह है कि केक का स्वाद कैसा होना चाहिए। क्या आप मुझे बता सकते हैं कि मैंने नमक किस लाइन पर डाला है?"
2. ट्विस्ट: "सिमेंटिक-प्रिजर्विंग" जादू का खेल
यह सबसे महत्वपूर्ण हिस्सा है। एक बार जब AI ने मूल रेसिपी में नमक को सफलतापूर्वक ढूंढ लिया, तो शोधकर्ताओं ने उनके साथ एक चाल चली। उन्होंने सिमेंटिक-प्रिजर्विंग म्यूटेशन (Semantic-Preserving Mutations - SPMs) लागू किए।
इसे बिना फर्नीचर बदले कमरे को पुनर्व्यवस्थित करने के रूप में सोचें:
- मूल कमरा: एक कुर्सी कोने में है।
- चाल: उन्होंने कुर्सी को नीला रंग दिया, कालीन को खिसका दिया, एक नकली पौधा रख दिया, और कुर्सी का नाम बदलकर "द ब्लू थ्रोन" (The Blue Throne) रख दिया।
- वास्तविकता: कुर्सी अभी भी ठीक उसी जगह पर है। कमरा बिल्कुल वैसे ही काम करता है।
कोड के संदर्भ में, उन्होंने:
- वेरिएबल्स के नाम बदल दिए (जैसे
countकोindexमें बदलना)। - भ्रामक कमेंट्स (Comments) डाले (जैसे यह लिखना कि "यह कोड ड्रैगन्स के लिए है" जबकि यह वास्तव में एक कैलकुलेटर के लिए है)।
- "डेड कोड" (Dead Code) डाला (ऐसी लाइनें जो कभी चलती ही नहीं, जैसे एक ऐसा दरवाजा जिस पर पेंट करके उसे बंद कर दिया गया हो)।
प्रश्न: यदि AI वास्तव में बुद्धिमान है और रेसिपी के तर्क (Logic) को समझता है, तो उसे पेंट और नकली पौधे को अनदेखा करना चाहिए और फिर भी नमक की ओर इशारा करना चाहिए। यदि वह केवल सतह को देख रहा है, तो वह नए पेंट जॉब से भ्रमित हो जाएगा।
3. परिणाम: जासूस भ्रमित हो गए
परिणाम चौंकाने वाले थे। भले ही कोड का "कथानक" बिल्कुल नहीं बदला था:
- 78% बार, AI विफल रहा।
- जब शोधकर्ताओं ने "डेड कोड" (नकली पौधे) जोड़ा, तो AI की सटीकता गिरकर लगभग 20% रह गई।
- जब उन्होंने "भ्रामक कमेंट्स" (नकली संकेत) जोड़े, तो AI आसानी से चकमा खा गया।
इससे पता चला कि AI जासूस कहानी को गहराई से नहीं पढ़ रहे थे। वे केवल कवर और फॉन्ट को सरसरी तौर पर देख रहे थे। यदि आप फॉन्ट का रंग बदल देते या कवर पर एक अजीब स्टिकर लगा देते, तो वे भूल जाते कि कहानी क्या थी।
4. अन्य दिलचस्प निष्कर्ष
- "पहले पेज" का पूर्वाग्रह (First Page Bias): AI कोड के पहले 25% हिस्से (किताब की शुरुआत) में गलतियाँ खोजने में बहुत बेहतर था और आखिरी 25% में बहुत खराब। यह उस पाठक की तरह है जो कुछ अध्यायों के बाद थक जाता है और ध्यान देना बंद कर देता है।
- Python बनाम Java: AI को Java (एक बहुत ही सख्त, विस्तृत भाषा) के साथ अधिक संघर्ष करना पड़ा, Python (एक अधिक लचीली भाषा) की तुलना में, क्योंकि संभवतः Java में खो जाने के लिए अधिक "शब्द" होते हैं।
- नया हमेशा बेहतर नहीं होता: यहाँ तक कि नवीनतम, सबसे महंगे AI मॉडल (जैसे नवीनतम Claude या Gemini) भी केवल थोड़ा बेहतर हुए। वे अभी भी साधारण चालों से आसानी से चकमा खा जाते हैं।
मुख्य निष्कर्ष (The Big Takeaway)
यह शोध पत्र एक चेतावनी है। यह हमें बताता है कि जबकि AI कोड लिखने (कहानी बनाने) में अद्भुत है, यह वर्तमान में कोड के बारे में तर्क (Reasoning) करने (रहस्य सुलझाने) में बहुत अच्छा नहीं है।
AI उस छात्र की तरह है जिसने गणित की परीक्षा के उत्तर रट लिए हैं लेकिन वास्तव में बीजगणित (Algebra) को नहीं समझता। यदि आप नंबरों को थोड़ा बदल देते हैं या प्रश्न को अलग लिखावट में लिखते हैं, तो वे असफल हो जाते हैं।
हमें क्या करने की आवश्यकता है?
हमें इन AI मॉडलों को "फॉन्ट" और "स्टिकर" देखना बंद करने और उसके नीचे के तर्क (Logic) को समझना सीखने की आवश्यकता है। जब तक वे ऐसा नहीं कर पाते, हम अपने महत्वपूर्ण सॉफ्टवेयर में बग्स को ठीक करने के लिए उन पर पूरी तरह भरोसा नहीं कर सकते, क्योंकि कोड के दिखने के तरीके में एक छोटा सा बदलाव भी उन्हें बड़ी आपदा से चूक सकता है।
अपने क्षेत्र के पेपरों की भीड़ में उलझे हुए हैं?
आपके रिसर्च कीवर्ड से मेल खाने वाले सबसे नए और अलग सोच वाले पेपरों का रोज़ाना Digest पाएँ—तकनीकी सारांश के साथ, आपकी भाषा में।