← أحدث الأبحاث
🤖 AI

BoostAPR: Boosting Automated Program Repair via Execution-Grounded Reinforcement Learning with Dual Reward Models

يُعد BoostAPR إطار عمل ثلاثي المراحل يعزز إصلاح البرامج الآلي من خلال الجمع بين الضبط الدقيق الخاضع للإشراف والاستدلال المتحقق منه عبر التنفيذ ونماذج المكافأة المزدوجة لتمكين تخصيص الائتمان الدقيق على مستوى السطر أثناء التعلم المعزز، محققاً أداءً هو الأفضل في فئته وقدرة قوية على التعميم عبر اللغات في مختلف معايير القياس.

المؤلفون الأصليون: Yuanhao Li, Hongbo Wang, Xiaotang Shang, Xunzhu Tang, Yiming Cao, Xuhong Chen

نُشر 2026-05-12
📖 4 دقيقة قراءة☕ قراءة في استراحة قهوة

المؤلفون الأصليون: Yuanhao Li, Hongbo Wang, Xiaotang Shang, Xunzhu Tang, Yiming Cao, Xuhong Chen

البحث الأصلي مرخَّص بموجب CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/). هذا شرح مولَّده بالذكاء الاصطناعي للبحث أدناه. لم يكتبه المؤلفون ولم يصادقوا عليه. وللتحقق من الدقة التقنية، يرجى الرجوع إلى البحث الأصلي. اقرأ إخلاء المسؤولية الكامل

تخيل أنك تحاول تعليم متدرب ذكي جدًا، ولكنه أخرق قليلاً، كيفية إصلاح آلة معطلة. الآلة هي عبارة عن كود برمجي، و"العطل" هو خطأ برمي (bug) يتسبب في فشل اختبار ما.

لفترة طويلة، حاولنا تعليم هؤلاء المتدربين (نماذج الذكاء الاصطناعي) عبر عرض أمثلة لآلات معطلة وإصلاحاتها. ولكن هناك مشكلة: عندما يجرب المتدرب إصلاحًا ما، فإن الآلة إما تعمل بشكل مثالي أو تنفجر. هي لا تخبر المتدرب أي مسمار تحديدًا قام بشده أو أي سلك قام بقطعه الذي أحدث الفرق. هم يحصلون فقط على نتيجة ثنائية: "عمل جيد" أو "عمل سيء". هذا يجعل التعلم بطيئًا ومحبطًا.

تقدم الورقة البحثية نظامًا جديدًا يسمى BOOSTAPR لحل هذه المشكلة. فكر في الأمر كمعسكر تدريبي مكون من ثلاث خطوات مصمم لتحويل ذلك المتدرب الأخرق إلى ميكانيكي ماهر.

الخطوة 1: "فكر ثم افعل" - الواجب المنزلي (الضبط الدقيق الخاضع للإشراف - Supervised Fine-Tuning)

أولاً، النظام لا يكتفي بعرض الإصلاح النهائي للمتدرب؛ بل يعرض عليه دفتر ملاحظات الميكانيكي الخبير.

  • التشبيه: تخيل أن ميكانيكيًا خبيرًا لا يسلمك المحرك بعد إصلاحه فحًا، بل يدون عملية تفكيره أولًا: "لاحظت أن الضجيج يأتي من اليسار، لذا فحصت الحزام، ووجدت أنه مرتخٍ، فشددته".
  • ادعاء الورقة: يتم تدريب الذكاء الاصطناعي على "نماذج مثبتة التنفيذ". وهذا يعني أننا لا نتعلم إلا من الأمثلة التي قام فيها الميكانيكي الخبير بإصلاح المشكلة فعليًا و دون عملية التفكير الخاصة به. يتعلم الذكاء الاصطناعي ليس فقط ماذا يغير، بل كيف يفكر تجاه المشكلة.

الخطوة 2: توظيف مدربين مختلفين (نماذج مكافأة مزدوجة - Dual Reward Models)

بمج once يبدأ المتدرب في الممارسة، فإنه يحتاج إلى تقييم. في الأيام الخوالي، كان المدرب يقول فقط: "هذا الإصلاح نجح!" أو "هذا الإصلاح فشل!". تقول الورقة إن هذا غامض للغاية. لذا، تم توظيف مدربين متخصصين:

  1. مدرب "الصورة الكبيرة" (RseqR_{seq}): ينظر هذا المدرب إلى عملية الإصلاح بأكملها. هل اشتغلت الآلة؟ نعم أم لا؟ هو يعطي درجة لعملية الإصلاح كاملة.
  2. مدرب "المجهر" (RlineR_{line}): هذا هو السر الجديد. ينظر هذا المدرب إلى الإصلاح سطرًا بسطر.
    • التشبيه: تخيل أن المتدرب أصلح المحرك ولكنه أيضًا طلى السيارة بلون غريب وغير محطة الراديو. مدرب "الصورة الكبيرة" يقول: "إنها تعمل، لذا فالعمل جيد". لكن مدرب "المجهر" يقول: "انتظر، الطلاء وتغيير الراديو لم يساعدا في إصلاح المحرك. فقط شد الحزام هو ما ساعد. لنعطِ الفضل لشد الحزام، وليس للطلاء".
    • ادعاء الورقة: يتعلم هذا المدرب تحديد أي أسطر من الكود (نطاقات التعديل - edit spans) هي التي أصلحت الخطأ فعليًا وأيها كان مجرد ضجيج. إنه يأخذ درجة "الصورة الكبيرة" ويعيد توزيع الفضل على الأسطر المحددة التي كانت مؤثرة.

الخطوة 3: جولة تجريبية بتغذية راجعة ذكية (تحسين PPO - PPO Optimization)

أخيرًا، يدخل المتدرب في محاكاة لممارسة إصلاح الأخطاء في الوقت الفعلي.

  • التشبيه: في كل مرة يقوم فيها المتدرب بحركة، يتحدث المدربان مع بعضهما البعض. مدرب "المجهر" يخبر مدرب "الصورة الكبيرة": "لا تعطه نقاطًا للعمل بأكمله فقط؛ بل أعطِ نقاطًا إضافية للمتدرب لشده لذلك المسمار المحدد، وصفرًا للنقاط عن الكتابة العشوائية التي قام بها في المنتصف".
  • ادعاء الورقة: يستخدم الذك الذكاء الاصطناعي طريقة تسمى PPO (نوع من التعلم المعزز) لتحديث دماغه. ولأن مدرب "المجهر" يقدم تغذية راجعة مفصلة للغاية، يتعلم الذكاء الاصطناعي بشكل أسرع وأكثر دقة مما لو حصل فقط على إشارة عامة "جيد/سيء".

النتائج: ما مدى نجاح ذلك؟

اختبر المؤلفون هذا المعسكر التدريبي الجديد على أربعة "ورش عمل" (معايير قياسية) تحتوي على آلاف الأمثلة للأكواد المعطلة:

  • SWE-bench (أخطاء GitHub الواقعية): أصلح الذكاء الاصطناعي 40.7% من الأخطاء. هذه قفزة هائلة قدرها 22.9% عن نفس نموذج الذكاء الاصطناعي بدون هذا التدريب الخاص.
  • Defects4J (أخطاء Java): على الرغم من أن الذكاء الاصطناعي تم تدريبه غالبًا على Python، إلا أنه نجح في إصلاح 24.8% من أخطاء Java. هذا يوضح أن مدرب "المجهر" ساعد المتدرب على تعلم مهارات الإصلاح العامة، وليس فقط حيل Python المحددة.
  • HumanEval-Java & QuixBugs: حقق درجات عالية جدًا (84.5% و 95.0%) في هذه التحديات البرمجية المحددة.

لماذا يهم هذا (وفقًا للورقة البحثية)

تجادل الورقة بأن الاختراق الأكبر ليس فقط في أن الذكاء الاصطناعي أصبح أكثر ذكاءً، بل في كيفية صيرورته كذلك. من خلال الانتقال من "هل نجح الأمر؟" (على مستوى التسلسل - Sequence-level) إلى "أي أسطر محددة جعلت الأمر ينجح؟" (على مستوى السطر - Line-level)، فقد حلوا مشكلة رئيسية في التعلم.

لم يقم مدرب "المجهر" (RlineR_{line}) بكل العمل الثقيل بمفرده؛ بل قام مدرب "الصورة الكبيرة" (RseqR_{seq}) بمعظم العمل. ومع ذلك، وفر مدرب المجهر الدفعة الإضافية اللازمة للتعميم على المشكلات الجديدة والصعبة وجعل عملية التدريب أكثر استقرارًا وكفاءة.

باختًا: يعلم BOOSTAPR الذكاء الاصطناعي كيفية إصلاح الكود عبر إطلاعه على عمليات التفكير الخبيرة، وتوظيف مدرب لتقييم العمل بأكمله، وتوظيف مدرب ثانٍ لتقييم كل مسمار يتم ربطه، مما يضمن تعلم الذكاء الاصطناعي لما يجب فعله بالضبط في المرة القادمة.

غارق في أبحاث مجالك؟

تصلك نشرة يومية بأحدث الأبحاث المطابقة لكلماتك البحثية المفتاحية — مع ملخصات تقنية، بلغتك.

جرّب Digest →