When Uncertainty Isn't Enough: An Empirical Study of Self-Correction in Code Generation
यह अनुभवजन्य अध्ययन प्रदर्शित करता है कि जबकि मल्टी-सैंपल कोड की शुद्धता के साथ सबसे अच्छा सहसंबंध रखता है, अनिश्चितता-आधारित स्व-सुधार विधियाँ आम तौर पर सटीकता में सुधार करने में विफल रहती हैं और अक्सर प्रदर्शन को कम कर देती हैं, जबकि सत्यापन-आधारित पुनरुत्पादन (regeneration) कोड जनरेशन को बढ़ाने के लिए एकमात्र विश्वसनीय रणनीति बना हुआ है।
मूल पेपर CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/) के तहत लाइसेंस किया गया है। नीचे दिए गए पेपर की यह व्याख्या AI से तैयार की गई है। इसे लेखकों ने न तो लिखा है, न इसका समर्थन किया है। तकनीकी सटीकता के लिए मूल पेपर देखें। पूरा डिस्क्लेमर पढ़ें
आर्टिफिशियल इंटेलिजेंस की दुनिया में, लार्ज लैंग्वेज मॉडल्स कंप्यूटर कोड लिखने में उल्लेखनीय रूप से कुशल हो गए हैं। वे किसी कार्य के सरल विवरण को लेकर एक काम करने वाला प्रोग्राम तैयार कर सकते हैं जो उसे हल करता है। फिर भी, इन डिजिटल सहायकों की एक अंध बिंदु (blind spot) है: वे अक्सर बिना यह जाने कि कोड टूटा हुआ है, त्रुटिपूर्ण कोड बना देते हैं। एक मानव प्रोग्रामर के विपरीत, जो शायद एक जटिल गणना को दोबारा जांचने के लिए रुक सकता है, मॉडल बस अपना उत्तर दे देता है, चाहे वह आश्वस्त हो या न हो, बिना उपयोगकर्ता को कोई चेतावनी संकेत दिए। यह एक निराशाजनक चक्र बनाता है जहाँ उपयोगकर्ताओं को यह देखने के लिए हर जनरेट किए गए कोड का मैन्युअल रूप से परीक्षण करना पड़ता है कि क्या वह काम करता है, जिससे उन समाधानों पर समय और कंप्यूटिंग शक्ति बर्बाद होती है जो विफल हो जाते हैं। शोधकर्ताओं ने लंबे समय से आशा की है कि यदि वे इन मॉडल्स को अपनी अनिश्चितता को पहचानना सिखा सकें—अनिवार्य रूप से उन्हें तब संदेह का अहसास करा सकें जब वे अनिश्चित हों—तो वे ऐसे सिस्टम बना सकते हैं जो परिणाम दिखाने से पहले अपनी गलतियों को खुद ठीक कर सकें।
शोधकर्ताओं की एक टीम ने इस विचार का परीक्षण करने के लिए एक विशिष्ट संदर्भ में हाथ आजमाया: कोड लिखना। वे जानना चाहते थे कि क्या प्राकृतिक भाषा (जैसे निबंध लिखना या प्रश्नों के उत्तर देना) में अनिश्चितता को मापने के लिए विकसित की गई विधियाँ प्रोग्रामिंग की कठोर और तार्किक दुनिया के लिए भी उतनी ही अच्छी तरह काम करेंगी। वे यह भी देखना चाहते थे कि क्या अनिश्चितता संकेतों का उपयोग करके स्व-सुधार (self-correction) को सक्रिय करने से वास्तव में कोड बेहतर होता है। टीम ने पांच अलग-अलग तरीकों का परीक्षण किया जिनसे यह मापा जा सके कि मॉडल अपने उत्तर के बारे में कितना अनिश्चित था। कुछ विधियों ने उस आंतरिक गणित (internal math) को देखा जिसका उपयोग मॉडल प्रत्येक शब्द चुनने के लिए करता था, जबकि अन्य ने मॉडल से केवल यह बताने के लिए कहा कि वह कितना आश्वस्त महसूस करता है, या एक ही कोड के कई संस्करण बनाए ताकि यह देखा जा सके कि उनमें कितना अंतर है। उन्होंने तीन अलग-अलग कोडिंग मॉडल्स पर दो मानक प्रोग्रामिंग चुनौतियों का उपयोग करके ये परीक्षण किए।
परिणामों ने एक स्पष्ट विभाजन को उजागर किया कि क्या काम करता है और क्या नहीं। कोड सही होने का पता लगाने का सबसे विश्वसनीय तरीका समाधान के कई अलग-अलग संस्करण बनाना और यह जांचना था कि कौन से परीक्षणों में सफल होते हैं, एक ऐसी विधि जिसने वास्तविक सफलता के साथ बहुत मजबूत संबंध दिखाया। हालाँकि, यह दृष्टिकोण महंगा और धीमा है क्योंकि इसके लिए मॉडल को कई बार कोड लिखने का काम करना पड़ता है। सस्ते और तेज़ तरीके, जिनसे शोधकर्ताओं को एक त्वरित चेतावनी प्रणाली के रूप में काम करने की उम्मीद थी, काफी हद तक विफल रहे। वे तकनीकें जो मॉडल के आंतरिक गणित को देखती थीं या उससे अपने आत्मविश्वास को रेट करने के लिए कहती थीं, उनमें यह अनुमान लगाने की लगभग कोई क्षमता नहीं दिखी कि कोड वास्तव में काम करेगा या नहीं। वास्तव में, छोटे मॉडल्स के लिए, मॉडल से अपने आत्मविश्वास को रेट करने के लिए कहने पर प्राप्त संख्याएँ अनिवार्य रूप से रैंडम शोर (random noise) के समान थीं।
जब शोधकर्ताओं ने इन कमजोर अनिश्चितता संकेतों का उपयोग करके कोड को ठीक करने की कोशिश की, तो परिणाम उम्मीद से भी बदतर रहा। उन्होंने एक ऐसा सिस्टम बनाया जो कोड को स्वचालित रूप से फिर से लिख देगा जब मॉडल अनिश्चित लगेगा। परिणामों में सुधार करने के बजाय, इस दृष्टिकोण ने अधिकांश मामलों में कोड को और खराब कर दिया। छह में से पांच अलग-अलग सेटअपों में, स्व-सुधार प्रणाली ने वास्तव में सफलता दर को कम कर दिया, जिससे मॉडल्स ने पहले वाले उत्तर को छोड़ने की तुलना में अधिक टूटे हुए कोड का उत्पादन किया। एकमात्र रणनीति जिसने लगातार कोड की गुणवत्ता में सुधार किया, वह थी जो कोड को सत्यापित करने के लिए परीक्षण मामलों (test cases) के विरुद्ध चलाने पर निर्भर थी। यह सुझाव देता है कि कोड जनरेशन के लिए, मॉडल की अनिश्चितता की आंतरिक भावना अपनी गलतियों को खुद ठीक करने के लिए एक उपयोगी उपकरण नहीं है।
अध्ययन यह निष्कर्ष निकालता है कि हालांकि अनिश्चितता के संकेत कोड को वास्तव में चलाने और परीक्षण करने की आवश्यकता को बदलने के लिए पर्याप्त मजबूत नहीं हैं, फिर भी उनकी एक भूमिका हो सकती है। शोधकर्ता सुझाव देते हैं कि इन सस्ते, अपूर्ण संकेतों का उपयोग एक 'गेटकीपर' के रूप में किया जा सकता है। कोड को खुद ठीक करने के बजाय, सिस्टम एक त्वरित अनिश्चितता जांच का उपयोग यह तय करने के लिए कर सकता है कि क्या पूर्ण, महंगे सत्यापन परीक्षणों के लिए अतिरिक्त समय और कंप्यूटिंग शक्ति खर्च करना सार्थक है। इस तरह, अनिश्चितता का संकेत एक स्विच की तरह कार्य करता है जो भारी-भरक जाँच को केवल तभी चालू करता है जब इसकी सबसे अधिक आवश्यकता होती है, बजाय इसके कि वह स्वयं समाधान बनने की कोशिश करे। ये निष्कर्ष इस उम्मीद को चुनौती देते हैं कि मॉडल केवल अधिक सावधान होने के लिए खुद को प्रशिक्षित कर सकते हैं, और विश्वसनीय कोड जनरेशन के लिए बाहरी जाँच की अनिवार्यता की ओर संकेत करते हैं।
अपने क्षेत्र के पेपरों की भीड़ में उलझे हुए हैं?
आपके रिसर्च कीवर्ड से मेल खाने वाले सबसे नए और अलग सोच वाले पेपरों का रोज़ाना Digest पाएँ—तकनीकी सारांश के साथ, आपकी भाषा में।