LEVER: تعلّم التحقق من توليد الكود من اللغة الطبيعية باستخدام التنفيذ

أدى ظهور نماذج اللغة الكبيرة المدربة على الكود (LLMs المُدرّبة على الكود) إلى تقدم كبير في مجال توليد الكود من اللغة الطبيعية. تجمع الأساليب الرائدة في هذا المجال بين فك تشفير نماذج اللغة الكبيرة وتقنيات تقليل العينات وإعادة ترتيبها باستخدام حالات اختبار أو قواعد استدلال تعتمد على نتائج التنفيذ. ومع ذلك، يُعد الحصول على حالات اختبار لتطبيقات اللغة إلى الكود الواقعية في العديد من الحالات أمرًا صعبًا، كما أن القواعد الاستدلالية لا تستطيع التقاط السمات الدلالية لنتائج التنفيذ بشكل جيد، مثل نوع البيانات ونطاق القيم، والتي غالبًا ما تشير إلى صحة البرنامج. في هذا العمل، نقترح LEVER، وهي طريقة بسيطة لتحسين توليد الكود من اللغة الطبيعية من خلال تعلُّم التحقق من البرامج المولّدة باستخدام نتائج تنفيذها. بشكل محدد، ندرّب مُحققين لتحديد ما إذا كان البرنامج الذي تم استخلاصه من النماذج الكبيرة للغة صحيحًا أم لا، بناءً على المدخل النصي الطبيعي، والبرنامج نفسه، ونتائج تنفيذه. يتم إعادة ترتيب البرامج المستخرجة من خلال دمج درجة التحقق مع احتمالية توليد النموذج الكبيرة للغة، مع تعميم النتائج على البرامج التي تُنتج نفس نتائج التنفيذ. وقد أظهر LEVER تحسينًا مستمرًا على النماذج الأساسية المُدرّبة على الكود (بمقدار 4.6% إلى 10.9% باستخدام code-davinci-002) على أربع مجموعات بيانات تمتد عبر مجالات الاستفسار عن الجداول، والاستفسار الرياضي، والبرمجة الأساسية بلغة بايثون، وحقق نتائج جديدة في الصدارة على جميع هذه المجموعات.