ConcernBERT: Learning Responsibilities Using Class Membership
यह शोध पत्र ConcernBERT को प्रस्तुत करता है, जो दो मिलियन से अधिक जावा (Java) फाइलों के एक बड़े पैमाने के डेटासेट पर ट्रिपलेट लॉस (triplet loss) के साथ प्रशिक्षित एक BERT-आधारित एम्बेडिंग मॉडल है, जो सॉफ्टवेयर जिम्मेदारियों और क्लास मेंबरशिप को प्रभावी ढंग से सीखने के लिए बनाया गया है, जिससे यह आर्किटेक्चर रिकवरी और एक्सट्रैक्ट क्लास रिफैक्टरिंग जैसे कार्यों में मौजूदा मॉडलों से बेहतर प्रदर्शन करता है।
मूल पेपर CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/) के तहत लाइसेंस किया गया है। नीचे दिए गए पेपर की यह व्याख्या AI से तैयार की गई है। इसे लेखकों ने न तो लिखा है, न इसका समर्थन किया है। तकनीकी सटीकता के लिए मूल पेपर देखें। पूरा डिस्क्लेमर पढ़ें
कल्पना कीजिए कि आप एक विशाल, अस्त-व्यस्त पुस्तकालय में कदम रखते हैं जहाँ किताबों को बिना किसी क्रम के शेल्फ पर फेंक दिया गया है। कुछ किताबें खाना पकाने के बारे में हैं, कुछ अंतरिक्ष यात्रा के बारे में हैं, और कुछ बस अलग-अलग मैनुअल के फटे हुए रैंडम पन्ने हैं। आपका काम यह पता लगाना है कि कौन से पन्ने एक साथ मिलकर मूल किताबों को फिर से बना सकते हैं।
कंप्यूटर प्रोग्रामिंग की दुनिया में, यह एक आम समस्या है। प्रोग्रामर्स कोड को "क्लासेज" (सोचिए ये किताबें हैं) में लिखते हैं। एक अच्छी तरह से डिज़ाइन की गई क्लास को केवल एक विशिष्ट कार्य करना चाहिए (जैसे एक कुकबुक में केवल रेसिपी होनी चाहिए)। लेकिन समय के साथ, क्लासेज अव्यवस्थित हो सकती हैं, जिससे असंबंधित कार्य आपस में मिल जाते हैं। इसे "गॉड क्लास" (God Class) कहा जाता है, और इसे ठीक करना कठिन है क्योंकि यह बताना मुश्किल होता है कि कोड की कौन सी लाइनें किस काम से संबंधित हैं।
द दशकों से, सॉफ्टवेयर इंजीनियरों ने कंप्यूटर का उपयोग करके इस अव्यवस्था को सुलझाने की कोशिश की है। पुराना तरीका कोड में इस्तेमाल किए गए शब्दों (टोकन) को देखना था। यदि कोड के दो हिस्से दोनों में "log", "error" और "file" जैसे शब्द उपयोग किए गए थे, तो कंप्यूटर मान लेता था कि वे संबंधित हैं।
पुराने तरीके के साथ समस्या
यह लेख तर्क देता है कि केवल शब्दों को देखना किसी पुस्तकालय को केवल शीर्षक के पहले अक्षर को देखकर छाँटने जैसा है।
- परिदृश्य A: दो किताबों के शीर्षक में "Space" है। वे संभवतः अंतरिक्ष के बारे में हैं। (अच्छा मिलान)।
- परिदृश्य B: एक किताब "Space Travel" के बारे में है और दूसरी "The Space Between Stars" के बारे में। उनमें "Space" शब्द साझा है, लेकिन वे पूरी तरह से अलग विषय हैं। (खराब मिलान)।
- परिदृश्य C: एक किताब "Cooking" के बारे में है और दूसरी "Chemistry" के बारे में। वे कोई शब्द साझा नहीं करते हैं, लेकिन दोनों में सामग्री मिलाना शामिल है। (छूटा हुआ संबंध)।
पुराने कंप्यूटर मॉडल परिदृश्य B में धोखा खा रहे थे और परिदृश्य C को मिस कर रहे थे। वे सतही शब्दावली पर बहुत अधिक केंद्रित थे।
नया समाधान: ConcernBERT
लेखकों ने ConcernBERT नामक एक नया AI मॉडल बनाया है। केवल शब्दों को पढ़ने के बजाय, यह मॉडल यह देखकर सीखता है कि कोड किसके साथ घूम रहा है।
इसे हाई स्कूल के कैफेटेरिया की तरह समझें।
- पुराना मॉडल: यदि आप दो छात्रों को एक ही "Math Club" की टी-शर्ट पहने देखते हैं, तो मॉडल मान लेता है कि वे पक्के दोस्त हैं।
- ConcernBERT: यह देखता है कि वास्तव में कौन एक ही लंच टेबल पर बैठता है। भले ही दो छात्र अलग-अलग शर्ट पहने हों, यदि वे लगातार एक साथ बैठे हैं, एक जैसा भोजन कर रहे हैं, और एक जैसी बातें कर रहे हैं, तो मॉडल जान जाता है कि वे एक ही समूह के हैं।
सॉफ्टवेयर के संदर्भ में, मॉडल को लाखों मौजूदा कोडबेस पर प्रशिक्षित किया गया था। इसने एक सरल नियम सीखा: "यदि एक मेथड (कोड की एक लाइन) दूसरे मेथड के साथ एक ही क्लास फ़ाइल के अंदर है, तो वे संभवतः एक ही जिम्मेदारी साझा करते हैं।"
इन वास्तविक दुनिया के समूहों से सीखकर, मॉडल ने कोड के इरादे या "चिंता" (concern) को समझना सीख लिया, न कि केवल शब्दों को।
उन्होंने इसका परीक्षण कैसे किया
यह देखने के लिए कि क्या यह नया मॉडल काम करता है, शोधकर्ताओं ने "मिक्स एंड मैच" का खेल खेला:
- उन्होंने दो (या यहाँ तक कि 100) अलग-अलग क्लासेज के कोड लिया और उन्हें एक विशाल, अस्त-व्यस्त ढेर में मिला दिया।
- उन्होंने AI से उस ढेर को मूल समूहों में वापस छाँटने के लिए कहा।
- उन्होंने ConcernBERT की तुलना सात अन्य प्रसिद्ध AI मॉडलों (जैसे CodeBERT, LSI, और LDA) से की।
परिणाम
ConcernBERT एक बड़ा विजेता रहा।
- सरल परीक्षणों में (2 क्लासेज को छाँटना), यह अगले सबसे अच्छे मॉडल से 31% बेहतर था।
- कठिन परीक्षणों में (मिश्रित 100 क्लासेज को छाँटना), यह 55% बेहतर था।
- यहाँ तक कि अपने "कजिन" मॉडल (CodeBERT) की तुलना में, जिसका मस्तिष्क संरचना बिल्कुल वैसी ही है लेकिन जिसे अलग तरह से प्रशिक्षित किया गया था, ConcernBERT लगभग दोगुना बेहतर था।
यह पेपर दिखाता है कि AI को केवल शब्दावली (क्या शब्द उपयोग किए गए हैं) के बजाय संदर्भ (कौन एक ही क्लास में है) पर ध्यान देने के लिए सिखाकर, यह बहुत अधिक सटीकता से समझ सकता है कि सॉफ्टवेयर वास्तव में किस चीज़ के लिए जिम्मेदार है।
इसका क्या अर्थ है (पेपर के अनुसार)
पेपर निष्कर्ष निकालता है कि ConcernBERT कोई जादुई छड़ी नहीं है जो स्वचालित रूप से सभी सॉफ्टवेयर को ठीक कर दे। इसके बजाय, यह एक शक्तिशाली आधार (foundation) है। यह मापने का एक बहुत स्मार्ट तरीका प्रदान करता है कि कोड कितना "सुसंगत" (cohesive - यानी कितनी अच्छी तरह व्यवस्थित) है। यह भविष्य के कार्यों के लिए एक बेहतर उपकरण बनाता है, जैसे:
- अव्यवस्थित "गॉड क्लासेस" को छोटे, प्रबंधनीय टुकड़ों में तोड़ना।
- सॉफ्टवेयर की गुणवत्ता को अधिक सटीक रूप से मापना।
- डेवलपर्स को पुराने सॉफ्टवेयर के मूल आर्किटेक्चर को पुनः प्राप्त करने में मदद करना।
संक्षेप में, ConcernBERT कंप्यूटर को कोड के काम को समझने के लिए सिखाता है, न कि केवल उसकी शब्दावली को, क्योंकि यह सीखता है कि डेवलपर्स स्वाभाविक रूप से अपने काम को कैसे समूहबद्ध करते हैं।
अपने क्षेत्र के पेपरों की भीड़ में उलझे हुए हैं?
आपके रिसर्च कीवर्ड से मेल खाने वाले सबसे नए और अलग सोच वाले पेपरों का रोज़ाना Digest पाएँ—तकनीकी सारांश के साथ, आपकी भाषा में।