Function-Level Execution Feedback for Code Preference Optimization
تقدم الورقة البحثية إطار عمل STEP-KTODER، وهو إطار لتحسين تفضيل الكود البرمجي يعرّف الخطوات كدوال على مستوى الوحدة (module-level) مع تسميات صحة ثنائية مستمدة من اختبارات الوحدة، مما يثبت أن عملية الإشراف القائمة على التنفيذ هذه تتفوق بشكل كبير على الأساليب القائمة على النتيجة فقط، مع تجنب فساد التسميات الناتج عن تعليقات النماذج اللغوية الكبيرة المستخدمة كحكم.
البحث الأصلي مرخَّص بموجب CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/). هذا شرح مولَّده بالذكاء الاصطناعي للبحث أدناه. لم يكتبه المؤلفون ولم يصادقوا عليه. وللتحقق من الدقة التقنية، يرجى الرجوع إلى البحث الأصلي. اقرأ إخلاء المسؤولية الكامل
في عالم الذكاء الاصطناعي، هناك فجوة متزايدة بين النماذج التي يمكنها ببساطة تقديم إجابة، وتلك التي تفهم الرحلة للوصول إليها. لسنوات، قام الباحثون بتدريب برامج الكمبيوتر على حل المسائل الرياضية من خلال مكافأتها ليس فقط على الرقم النهائي، بل على كل خطوة منطقية تتخذها في طريقها. هذا النهج، المعروف باسم الإشراف على العمليات (process supervision)، ساعد الآلات على أن تصبح أفضل بكثير في التفكير المنطقي. ومع ذلك، عندما يتعلق الأمر بكتابة أكواد الكمبيوتر، ظل هذا الأسلوب بعيد المنال. فخلافاً للمسألة الرياضية، التي تتفكك طبيعياً إلى تسلسل من الحسابات، غالباً ما يكون البرنامج البرمجي عبارة عن شبكة متشابكة من التعليمات حيث يصعب تحديد أي سطر هو الصحيح وأيها الخاطئ بدقة. وإذا فشل برنامج ما في التشغيل، فإن طرق التدريب التقليدية غالباً ما تعامل المخرج بأكمله كفشل، حتى لو كان تسعون بالمائة من الكود مثالياً. هذا التعليق الفج يترك الآلة في حالة تخمين حول الجزء المحدد من عملها الذي يحتاج إلى إصلاح.
لقد طور فريق من الباحثين في جامعة سيول الوطنية وجامعة كونكوك طريقة جديدة لتعليم هذه النماذج كيفية كتابة كود أفضل من خلال تفكيك المشكلة إلى قطع صغيرة قابلة للاختبار والإدارة. أطلقوا على طريقتهم اسم STEP-KTODER. فبدلاً من الحكم على برنامج كامل كوحدة واحدة، يعلمون النموذج رؤية البرنامج كمجموعة من الدوال المستقلة، أو أدوات صغيرة ذاتية الاحتواء تؤدي وظيفة واحدة محددة. يقوم الباحثون بأخذ حل صحيح وتفكيكه إلى هذه الدوال المنفصلة. ثم، يقومون تلقائياً بإنشاء مجموعة من الفحوصات البسيطة، تشبه مفتش مراقبة الجودة الذي يختبر جزءاً واحداً من آلة، للتأكد مما إذا كانت كل دالة تعمل بشكل صحيح بمفردها. وهذا يسمح لهم بإعطاء النموذج تعليقات دقيقة: "هذه الدالة المحددة صحيحة، لكن تلك الأخرى معطلة"، بدلاً من مجرد القول "الشيء بأكمله فشل".
اختبر الباحثون هذا النهج على عدة تحديات معيارية تُستخدم لقياس مدى قدرة الذكاء الاصطناعي على كتابة الكود. ووجدوا أنه باستخدام هذه الفحوصات الدقيقة القائمة على التنفيذ، تحسنت نماذجهم بشكل ملحوظ أكثر من النماذج التي تم تدريبها باستخدام الطرق القديمة التي كانت تنظر فقط إلى النتيجة النهائية. في الواقع، في أصعب تحديات البرمجة، عززت طريقتهم الجديدة الأداء بنسبة تقارب سبعة وعشرين بالمائة مقارنة بأفضل التقنيات السابقة. كما كشفت الدراسة عن رؤية حاسمة حول كيفية تقييمنا للكود: مجرد سؤال نموذج لغوي قوي لتخمين ما إذا كان جزء من الكود صحيحاً ليس كافياً. فعندما حاول الباحثون استبدال فحوصاتهم التلقائية القائمة على التنفيذ بأحكام من ذكاء اصطناعي آخر، ساءت النتائج. فقد كان الذكاء الاصطناعي الذي يقوم بدور الحكم يميل إلى أن يكون ناقداً بشكل مفرط، حيث يصنف الكود الصحيح بشكل خاطئ على أنه معطل، مما أدى إلى إرباك عملية التدريب. وقد أثبت هذا أن الطريقة الوحيدة الموثوقة لتعليم النموذج قيمة الخطوة الصحيحة هي تشغيل الكود فعلياً ورؤية ما إذا كان يعمل.
يكمن جوهر هذا الاكتشاف في كيفية تعامل الباحثين مع الواقع الفوضوي للبرمجة، حيث قد يجتاز برنامج ما جميع اختباراته النهائية حتى لو كان أحد أجزائه الداخلية معيباً. في الماضي، كان يتم تجاهل مثل هذه التناقضات أو تسويتها غالباً. ومع ذلك، وجد الفريق أن هذه الصراعات هي في الواقع قيمة. فمن خلال الحفاظ على الحالات التي يعمل فيها البرنامج ككل ولكن تفشل فيها دالة معينة، قدموا للنموذج درساً دقيقاً: يمكن للبرنامج أن يكون ناجحاً بشكل عام مع احتواء أجزاء تحتاج إلى إصلاح. يسمح هذا النهج للنموذذ بتعلم تعزيز الأجزاء التي تعمل جيداً في الكود الخاص به مع استهداف الأجزاء التي لا تعمل بشكل محدد، تماماً مثل الميكانيكي الذي يعرف بالضبط أي مسمار يجب شده بدلاً من استبدال المحرك بالكامل.
يشير هذا العمل إلى مسار عملي للمضي قدماً في جعل الذكاء الاصطناعي أكثر موثوقية في المهام المعقدة. فمن خلال الابتعاد عن الحكم على المنتج النهائي بمعزل عن غيره والتركيز على صحة المكونات الفردية التي يتكون منها، يمكن للباحثين توجيه هذه الأنظمة للتعلم بشكل أكثر فعالية. وتظهر الدراسة أنه بالنسبة لتوليد الكود، فإن الإشراف الأكثر فعالية يأتي من تشغيل الكود واختباره، وليس من رأي ثانٍ. هذا التحول من التغذية الراجعة القائمة على النتيجة إلى التغذية الراجعة القائمة على العملية، والمستندة إلى التنفيذ الفعلي، يقدم طريقة أكثر وضوحاً ومباشرة لتعلم الآلات حرفة البرمجة.
غارق في أبحاث مجالك؟
تصلك نشرة يومية بأحدث الأبحاث المطابقة لكلماتك البحثية المفتاحية — مع ملخصات تقنية، بلغتك.