Binary Decompilation LLM with Feedback-Driven Multi-Turn Refinement
यह शोध पत्र AutoDecompiler को प्रस्तुत करता है, जो एक सुदृढीकरण शिक्षण (reinforcement learning) आधारित LLM है जो संकलन (compilation), निष्पादन (execution) और अर्थपूर्ण निरंतरता (semantic consistency) पुरस्कारों द्वारा निर्देशित एक पुनरावृत्ति, फीडबैक-संचालित परिशोधन प्रक्रिया में कार्य को परिवर्तित करके बाइनरी डिकंपाइलेशन की कार्यात्मक शुद्धता में सुधार करता है।
मूल पेपर CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/) के तहत लाइसेंस किया गया है। नीचे दिए गए पेपर की यह व्याख्या AI से तैयार की गई है। इसे लेखकों ने न तो लिखा है, न इसका समर्थन किया है। तकनीकी सटीकता के लिए मूल पेपर देखें। पूरा डिस्क्लेमर पढ़ें
कल्पना कीजिए कि आपके पास एक बंद, प्राचीन मशीन है (बाइनरी कोड में एक कंप्यूटर प्रोग्राम)। आप इसके अंदर के गियर नहीं देख सकते, केवल कच्चे विद्युत संकेतों (electrical signals) को देख सकते हैं। आपका लक्ष्य एक मैनुअल (सोर्स कोड) लिखना है जो विस्तार से समझा सके कि वह मशीन वास्तव में कैसे काम करती है, ताकि अन्य मनुष्य इसे समझ सकें, ठीक कर सकें या इसमें सुधार कर सकें। इस प्रक्रिया को डीकंपाइलेशन (decompilation) कहा जाता है।
लंबे समय तक, इस मैनुअल को लिखने की कोशिश करना एक छात्र से एक सटीक अनुमान लगाने के लिए कहने जैसा था। वे मशीन को देखते, मैनुअल लिखते और रुक जाते। यदि मैनुअल ऊपर से देखने में अच्छा लगता लेकिन उसमें कोई छिपा हुआ गणितीय त्रुटि होती, तो छात्र को पासिंग ग्रेड मिल जाता, भले ही वह मशीन वास्तवं में काम करते समय टूट जाती।
AutoDecompiler एक नया AI सिस्टम है जो खेल के नियम बदल देता है। एक बार में एक अनुमान लगाने और रुक जाने के बजाय, यह डीकंपाइलेशन को "हॉट एंड कोल्ड" (Hot and Cold) के खेल और एक मददगार कोच की तरह देखता है।
यह कैसे काम करता है, इसे सरल अवधारणाओं में विभाजित किया गया है:
1. "प्रयास करें, विफल हों, सुधारें" लूप (Multi-Turn Refinement)
कल्पना कीजिए कि आप एक टूटी हुई घड़ी को ठीक करने की कोशिश कर रहे हैं।
- पुराना तरीका: आप घड़ी को देखते हैं, उसे ठीक करने का अनुमान लगाते हैं, निर्देश लिखते हैं, और उन्हें बॉस को सौंप देते हैं। यदि घड़ी अभी भी नहीं चलती, तो आपको दोबारा प्रयास करने का मौका नहीं मिलता।
- AutoDecompiler का तरीका: आप निर्देश लिखते हैं। बॉस घड़ी बनाने की कोशिश करता है।
- यदि घड़ी के पुर्जे आपस में फिट नहीं बैठते (एक कंपाइलेशन एरर), तो बॉस आपको टूटे हुए हिस्से सौंपता है और कहता है, "आपने एक ऐसा गियर लगाने की कोशिश की जो मौजूद ही नहीं है।" आप इसे ठीक करते हैं और फिर से प्रयास करते हैं।
- यदि घड़ी फिट बैठती है लेकिन उल्टी चलती है (एक एग्जीक्यूशन एरर), तो बॉस कहता है, "यह काम तो कर रही है, लेकिन यह गलत काम कर रही है।" आप लॉजिक को ठीक करते हैं और फिर से प्रयास करते हैं।
- आप इस लूप को जारी रखते हैं—प्रयास करें, फीडबैक प्राप्त करें, सुधारें—जब तक कि घड़ी पूरी तरह से सही न चलने लगे।
2. कोच का स्कोरकार्ड (Reinforcement Learning)
AI को कैसे पता चलता है कि घड़ी को कैसे ठीक करना है? यह एक विशेष प्रशिक्षण पद्धति का उपयोग करता है जिसे रीइन्फोर्समेंट लर्निंग (Reinforcement Learning) कहा जाता है। इसे एक वीडियो गेम की तरह समझें जहाँ AI को अच्छे मूव्स के लिए अंक मिलते हैं और बुरे मूव्स के लिए अंक गंवाने पड़ते हैं।
शोधकर्ताओं ने AI के लिए एक बहुत ही विशिष्ट "स्कोरकार्ड" डिजाइन किया है जो केवल यह नहीं देखता कि कोड दिखने में कैसा है। यह चार चीजों की जांच करता है:
- क्या यह वैध है? (क्या यह वास्तविक कोड की तरह दिखता है, या सिर्फ बड़बड़ाहट है?)
- क्या इसे बनाया जा सकता है? (क्या कंपाइलर इसे स्वीकार करता है?)
- क्या यह चलता है? (क्या प्रोग्राम बिना क्रैश हुए वास्तव में शुरू होता है?)
- क्या यह सही काम करता है? (यदि आप इसे संख्या 3 देते हैं, तो क्या यह वापस सही उत्तर देता है, या सिर्फ एक रैंडम नंबर?)
AI इस स्कोर को अधिकतम करने के लिए सीखता है, वह उन विशिष्ट त्रुटियों पर ध्यान देता है जो "कोच" (कंप्यूटर वातावरण) द्वारा दी जाती हैं।
3. "प्रोग्रेस ट्रैकर" (पीछे की ओर कदम बढ़ाने से बचना)
चीजों को ठीक करने का एक कठिन हिस्सा यह है कि कभी-कभी, जब आप एक समस्या को ठीक करते हैं, तो आप अनजाने में कुछ ऐसा तोड़ देते हैं जो पहले से ही काम कर रहा था।
- समस्या: AI एक गणितीय त्रुटि को ठीक कर सकता है लेकिन अनजाने में कोड की एक ऐसी लाइन हटा सकता है जो सही थी, जिससे घड़ी पहले से भी बदतर हो जाती है।
- समाधान: AutoDecompiler के पास एक "प्रोग्रेस ट्रैकर" है। यह सुधारों के इतिहास को देखता है। यदि कोई नया सुधार पिछले संस्करण की तुलना में घड़ी को बेहतर बनाता है, तो इसे बोनस मिलता है। यदि कोई सुधार परिणाम को खराब बनाता है, तो इसे दंडित किया जाता है। यह AI को यह सिखाता है कि केवल वही बदलाव किए जाएं जो परिणाम में वास्तविक सुधार लाएं, चरण-दर-चरण।
4. परिणाम: कम डेटा के साथ अधिक स्मार्ट
शोधकर्ताओं ने इस AI को अपेक्षाकृत कम डेटा (लगभग 310,000 उदाहरण) पर प्रशिक्षित किया है, जबकि अन्य विशाल AI मॉडल लाखों उदाहरणों का उपयोग करते हैं।
- उपमा: यह एक मास्टर मैकेनिक की तरह है जिसने लाइब्रेरी की हर किताब को पढ़ने के बजाय एक विशिष्ट, अच्छी तरह से व्यवस्थित रिपेयर मैनुअल का अध्ययन करके सीखा है।
- परिणाम: परीक्षण के दौरान, AutoDecompiler अन्य AI मॉडलों की तुलना में ऐसा कोड बनाने में बेहतर था जो वास्तव में काम करता है (सही ढंग से चलता है) और कंपाइल होता है (जिसे प्रोग्राम के रूप में बनाया जा सकता है)। इसने केवल ऐसा कोड नहीं बनाया जो सही दिखता था; इसने ऐसा कोड बनाया जो सही काम करता था।
सारांश में
AutoDecompiler एक ऐसा AI है जो केवल प्रोग्राम के सोर्स कोड का "अनुमान" नहीं लगाता है। इसके बजाय, यह एक निरंतर काम करने वाले संपादक (editor) की तरह कार्य करता है:
- यह एक ड्राफ्ट लिखता है।
- यह ड्राफ्ट का परीक्षण करता है।
- यह त्रुटि संदेशों (फीडबैक) को पढ़ता है।
- यह उन विशिष्ट त्रुटियों को ठीक करने के लिए ड्राफ्ट को फिर से लिखता है।
- यह तब तक दोहराता रहता है जब तक कि कोड परफेक्ट न हो जाए।
इस "फीडबैक-संचालित" दृष्टिकोण का उपयोग करके, यह पिछले तरीकों की तुलना में बहुत अधिक विश्वसनीय और कार्यात्मक सॉफ्टवेयर मैनुअल बनाता है, जो केवल एक ही बार में सही होने की कोशिश करते थे।
अपने क्षेत्र के पेपरों की भीड़ में उलझे हुए हैं?
आपके रिसर्च कीवर्ड से मेल खाने वाले सबसे नए और अलग सोच वाले पेपरों का रोज़ाना Digest पाएँ—तकनीकी सारांश के साथ, आपकी भाषा में।