CodeRL: إتقان توليد الكود من خلال النماذج المُدرَّبة مسبقًا والتعلم التعزيزي العميق

يهدف التوليد البرمجي أو توليد البرنامج إلى إنشاء برنامج يحقق مواصفات المشكلة المحددة. أظهرت النماذج الحديثة التي تعتمد على نماذج لغوية كبيرة مُدرّبة مسبقًا (LMs) نتائج واعدة، لكنها تواجه بعض القيود الحرجة. وبشكل خاص، فإنها تتبع غالبًا إجراءً معياريًا للضبط المُراقب (supervised fine-tuning) لتدريب نموذج توليد الشفرة فقط من أزواج مكونة من وصفات لغوية طبيعية وبرامج صحيحة (ground-truth). يتجاهل هذا النموذج بشكل كبير إشارات مهمة ولكن محتملًا أن تكون مفيدة جدًا في مواصفات المشكلة، مثل اختبارات الوحدة (unit tests)، مما يؤدي غالبًا إلى أداء ضعيف عند حل مهام برمجية معقدة غير مُدرّب عليها مسبقًا. ولحل هذه القيود، نقترح إطار عمل جديد يُسمى "CodeRL"، يعتمد على النماذج اللغوية المُدرّبة مسبقًا والتعلم المعزز العميق (Deep Reinforcement Learning) لمهام توليد البرامج. بشكل محدد، أثناء التدريب، نعامل نموذج التوليد البرمجي (LM) كشبكة "مُنفّذة" (actor)، ونُدخل شبكة "مُقيّمة" (critic) تُدرّب لتنبؤ صحة البرنامج الوظيفية وتوفير إشارات تغذية راجعة كثيفة للمنفذ. أثناء الاستدلال، نُقدّم إجراء جديد لتوليد البرامج يعتمد على استراتيجية عينة حاسمة تسمح للنموذج بإعادة إنتاج البرامج تلقائيًا بناءً على تغذية راجعة من اختبارات الوحدة النموذجية ودرجات التقييم من الشبكة المُقيّمة. بالنسبة للهياكل الأساسية للنموذج، قمنا بتوسيع بنية المُشفّر-المُفكّك (encoder-decoder) الخاصة بـ CodeT5 من خلال أهداف تعلم مُحسّنة، وحجم نموذج أكبر، وبيانات تدريب مُحسّنة. تُحقّق طريقة عملنا نتائج جديدة قياسية (SOTA) على معيار APPS التحدي، كما تُظهر قدرة قوية على التحويل الصفرية (zero-shot transfer) مع تحقيق نتائج قياسية جديدة على معيار MBPP الأسهل.