← नवीनतम पेपर
💻 संगणक विज्ञान

False Proximity: Frozen Code Embeddings Invert Similarity on Behaviourally Divergent Mutant Pairs

यह शोध पत्र प्रदर्शित करता है कि फ्रोजन (frozen) CodeBERT एम्बेडिंग्स व्यवहार संबंधी रूप से भिन्न म्यूटेंट युग्मों के लिए समानता संकेतों को व्यवस्थित रूप से उलट देते हैं, जिससे उन्हें वास्तव में समान कोड की तुलना में अधिक समान के रूप में गलत तरीके से स्कोर किया जाता है, जिससे यह प्रकट होता है कि ऐसे एम्बेडिंग्स व्यवहारिक समानता के बजाय सतही निकटता को दर्शाते हैं और विश्वसनीय कोड विश्लेषण के लिए कंट्रास्टिव फाइन-ट्यूनिंग या निष्पादन-आधारित सत्यापन की आवश्यकता होती है।

मूल लेखक: Keletso J. Letsholo, Nourchene Elleuch Ben Ayed, Achraf Ghorbel, Muath Alrammal

प्रकाशित 2026-10-20
📖 6 मिनट में पढ़ें🧠 गहराई से पढ़ें

मूल लेखक: Keletso J. Letsholo, Nourchene Elleuch Ben Ayed, Achraf Ghorbel, Muath Alrammal

मूल पेपर CC BY 4.0 (https://creativecommons.org/licenses/by/4.0/) के तहत लाइसेंस किया गया है। ✨ नीचे दिए गए पेपर की यह व्याख्या AI से तैयार की गई है। इसे लेखकों ने न तो लिखा है, न इसका समर्थन किया है। तकनीकी सटीकता के लिए मूल पेपर देखें। पूरा डिस्क्लेमर पढ़ें

आधुनिक सॉफ़्टवेयर के विशाल परिदृश्य में, प्रोग्रामों के साथ अक्सर ऐसा व्यवहार किया जाता है जैसे वे एक ऐसी भाषा बोलते हों जिसे कंप्यूटर तुरंत समझ और तुलना कर सकता है। इस जटिलता को समझने के लिए, शोधकर्ताओं ने ऐसे उपकरण विकसित किए हैं जो कोड की पंक्तियों को एक उच्च-आयामी स्थान (high-dimensional space) में गणितीय बिंदुओं में अनुवादित करते हैं। इन बिंदुओं की कल्पना एक मानचित्र पर स्थानों के रूप में करें; यदि दो कोड अपने कार्य में समान हैं, तो उनके बिंदु पास में होने चाहिए। इस पद्धति को 'एम्बेडिंग' (embedding) कहा जाता है, और यह कोड खोजने, डुप्लिकेट प्रोग्राम खोजने या सॉफ़्टवेयर को चलाए बिना त्रुटियों का अनुमान लगाने का एक मानक तरीका बन गया है। इस कार्य के लिए सबसे लोकप्रिय उपकरण विशाल मात्रा में टेक्स्ट और कोड पर प्रशिक्षित मॉडलों पर निर्भर करते हैं, जो शब्दों और प्रतीकों के व्यवस्थित होने के पैटर्न को पहचानना सीखते हैं। प्रचलित धारणा यह रही है कि यदि दो प्रोग्राम सतही तौर पर बहुत समान दिखते हैं—समान शब्दों और संरचना को साझा करते हैं—तो वे एक ही काम कर रहे होंगे। यह विश्वास कई स्वचालित प्रणालियों का आधार है जो डेवलपर्स को उनके कोड को प्रबंधित करने में मदद करती हैं, लेकिन यह एक नाजुक अंतर्ज्ञान पर आधारित है: कि दृश्य समानता हमेशा कार्यात्मक समानता के बराबर होती है।

शोधकर्ताओं के एक दल ने इस अंतर्ज्ञान का परीक्षण करने के लिए एक कठोर प्रयोग के साथ एक सरल लेकिन खतरनाक प्रश्न पूछा: क्या होता है जब दो प्रोग्राम लगभग एक जैसे दिखते हैं लेकिन बिल्कुल विपरीत कार्य करते हैं? उन्होंने हजारों वास्तविक दुनिया की प्रोग्रामिंग समस्याओं का उपयोग करके एक नियंत्रित वातावरण बनाया। 800 विशिष्ट चुनौतियों के संग्रह से, उन्होंने कोड के उन जोड़ों को एकत्र किया जिन्हें सही और कार्यात्मक रूप से समान माना जाता था, जिसका अर्थ है कि वे समस्या को एक ही तरीके से हल करते थे। फिर, उन्होंने एक दूसरा सेट बनाया जिसमें एक सही प्रोग्राम लेकर उसमें एक सूक्ष्म, एकल परिवर्तन किया—जैसे किसी स्थिति (condition) को "हाँ" से "नहीं" में बदलना, "बड़ा है" के चिह्न को "छोटा है" से बदलना, या एक सूची के क्रम को उलटना। ये परिवर्तन इतने छोटे थे कि कोड लगभग एक जैसा ही दिखता था, लेकिन वे इतने गंभीर थे कि प्रोग्राम को हर एक परीक्षण मामले (test case) में विफल कर दें। शोधकर्ताओं ने फिर दोनों सेटों को मानक कोड-तुलना उपकरणों में डाला ताकि यह देखा जा सके कि क्या उपकरण एक सही प्रोग्राम और उसके टूटे हुए, उल्टे जुड़वां के बीच अंतर कर सकते हैं।

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

शोधकर्ताओं ने फिर इस बात की जांच की कि क्या इस त्रुटि को बिना विशाल मॉडलों को पुन: प्रशिक्षित किए, कम लागत वाले समायोजनों के माध्यम से ठीक किया जा सकता है। उन्होंने गणितीय युक्तियों का उपयोग किया जो कोड बिंदुओं को उनके स्थान में अधिक समान रूप से फैलाने के लिए डिज़ाइन की गई थीं, इस उम्मीद में कि इससे अंतर अधिक स्पष्ट हो जाएगा। उन्होंने कोड तुलना को एक संरचनात्मक विश्लेषण के साथ जोड़ने का भी प्रयास किया जो यह गिनता है कि कोड ट्री की कितनी पंक्तियाँ भिन्न हैं। इनमें से कोई भी विधि काम नहीं आई। वास्तव में, संरचनात्मक विश्लेषण जोड़ने से समस्या और भी खराब हो गई। क्योंकि टूटे हुए प्रोग्राम मूल के संरचनात्मक रूप से लगभग समान थे—केवल एक पंक्ति से भिन्न थे—संरचनात्मक उपकरण ने उन्हें उच्च समानता स्कोर दिया, जिससे त्रुटि सुधरने के बजाय और बढ़ गई। उपकरण कोड के सतही स्वरूप पर इतने केंद्रित थे कि वे कार्यात्मक उलटाव (functional inversion) को नहीं देख सके, भले ही शोधकर्ताओं ने उन्हें गहराई से देखने के लिए स्पष्ट रूप से मजबूर करने का प्रयास किया था।

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

अपने क्षेत्र के पेपरों की भीड़ में उलझे हुए हैं?

आपके रिसर्च कीवर्ड से मेल खाने वाले सबसे नए और अलग सोच वाले पेपरों का रोज़ाना Digest पाएँ—तकनीकी सारांश के साथ, आपकी भाषा में।

Digest आज़माएँ →