Task Abstention for Large Language Models in Code Generation
تقترح هذه الورقة طريقة قائمة على أسس نظرية وغير مقيدة بتوزيع معين، تتيح للنماذج اللغوية الكبيرة الامتناع عن مهام توليد الكود البرمجي التي يُحتمل أن تنتج هلوسات، وذلك من خلال تقييم اتساق التوليد عبر نتائج تنفيذ الكود، مما يُمكّن من برمجة مؤتمتة أكثر أماناً ومتانة دون الاعتماد على حالات اختبار خارجية.
البحث الأصلي مرخَّص بموجب CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/). هذا شرح مولَّده بالذكاء الاصطناعي للبحث أدناه. لم يكتبه المؤلفون ولم يصادقوا عليه. وللتحقق من الدقة التقنية، يرجى الرجوع إلى البحث الأصلي. اقرأ إخلاء المسؤولية الكامل
إليك شرح لورقة بحثية بعنوان "الامتناع عن المهام في توليد الكود لنماذج اللغات الكبيرة" باستخدام لغة بسيطة وتشبيهات إبداعية.
المشكلة الجوهرية: "الطاهي شديد الثقة"
تخيل أنك وظفت طباخاً عبقرياً ولكنه مفرط في الثقة (نموذج لغة كبيرة أو LLM) ليطهو طبقاً معقداً بناءً على وصف وصفة غامضة. أحياناً يكون الطباخ مذهلاً ويصنع وجبة مثالية، لكن في كثير من الأحيان، يزداد الطباخ ثقةً فيصنع طبقاً يبدو لذيذاً في المظهر، لكن طعمه سيء للغاية أو قد يكون ساماً في الواقع (وهذا ما يسمى بـ "الهلوسة").
حالياً، معظم فحوصات السلامة تحدث بعد أن ينتهي الطباخ بالفعل من طهي الطبق؛ حيث يتذوقون الطعام ليروا ما إذا كان جيداً أم لا، وإذا كان سيئاً، يقومون برميِه. ولكن بحلول ذلك الوقت، يكون الطباخ قد أضاع الوقت والمكونات بالفعل، وقد قُدمت لك وجبة سيئة.
تسأل هذه الورقة سؤالاً مختلفاً: هل يمكننا تعليم الطباخ أن يقول "لا أعرف كيف أطبخ هذا الطبق"، قبل حتى أن يبدأ في تقطيع الخضروات؟
هذا ما يسمى "الامتناع عن المهمة" (Task Abstention). الأمر يتعلق بمعرفة متى يجب رفض المهمة لتجنب الوقوع في الخطأ.
الحل: CODEREFUSER
قام المؤلفون ببناء نظام يسمى CODEREFUSER. تخيله كأنه "مدير سلامة" للطباخ. هذا المدير لا يكتفي بالنظر إلى الوصفة فحسب، بل يقوم بإجراء محاكاة ليرى ما إذا كان الطباخ مرجحاً للنجاح قبل إعطاء الضوء الأخضر.
إليك كيف يعمل مدير السلامة، مقسماً إلى ثلاث خطوات بسيطة:
1. "جولة التدريب" (مرحلة المعايرة)
قبل أن يتمكن مدير السلامة من اتخاذ القرارات، يحتاج إلى تعلم حدود الطباخ.
- التشبيه: تخيل أن المدير يعطي الطباخ 100 وصفة تدريبية. لكل وصفة منها، يحاول الطباخ طهيها 64 مرة.
- اللمسة المميزة: المدير لا ينظر فقط إلى الطبق النهائي، بل يطلب أيضاً من الطباخ ابتكار "اختبار تذوق" (حالات اختبار) لكل وصفة.
- المشكلة: أحياناً يكون الطباخ سيئاً جداً في ابتكار اختبارات التذوق، لدرجة أن الاختبار نفسه يكون معيباً (مثل طلب عدد سالب من البيض).
- الحل (الترشيح المزدوج للعينة والاختبار): يستخدم المدير حيلة ذكية تسمى "الترشيح المزدوج للعينة والاختبار" (Sample-Test Dual Filtering). ينظر المدير إلى محاولات الطباخ الـ 64؛ فإذا كانت "اختبارات التذوق" التي ابتكرها الطباخ تؤدي إلى نتائج فوضوية ومختلفة (بعضها ينفجر، وبعضها يتوقف عن العمل)، يدرك المدير قائلاً: "مهلاً، هذا الاختبار معيب، وليس الطباخ!". عندها يستبعد المدير الاختبار السيئ ويحتفظ بالاختبارات الجيدة، مما يضمن عدم خداع المدير بتخبط الطباخ.
2. وضع القواعد (القدرة على تحمل المخاطر)
بمج after أن يتدرب المدير، يضع القواعد للعالم الحقيقي.
- الهدف: يريد المدير التأكد من أنه إذا قال "ابدأ الطهي"، فهناك فرصة عالية جداً لنجاح الطباخ.
- الرياضيات (مبسطة): يستخدم المدير طريقة إحصائية تسمى "اختبار الفرضيات المتعددة". تخيل أن المدير لديه قائمة تضم 1,000 "علامة توقف" (عتبات) مختلفة. يقوم باختبارها جميعاً مقابل بيانات التدريب لإيجح العتبة المحددة التي تضمن عدم فشل الطباخ أكثر من، لنقل، 20% من الوقت.
- النتيجة: يضع المدير كتاب قواعد صارم: "إذا كانت ثقة الطباخ أقل من (س)، أو إذا كانت نتائج الاختبار فوضوية للغاية، توقف".
3. المهمة الحقيقية (مرحلة الاختبار)
الآن، يطلب عميل حقيقي طبقاً معيناً.
- يحاول الطباخ طهي هذا الطبق عدة مرات (توليد عينات الكود).
- يبتكر الطباخ اختبار تذوق جديداً لهذا الطبق تحديداً.
- يقوم مدير السلامة بتشغيل عملية "الترشيح المزدوج للعينة والاختبار" مرة أخرى لتنقية الاختبارات المعيبة.
- يتحقق المدير من كتاب القواعد:
- السيناريو (أ): محاولات الطباخ كلها متسقة وتجتاز الاختبارات. يقول المدير: "اعتراف: ابدأ الطهي، يمكنك طهو هذا الطبق".
- السيناريو (ب): محاولات الطباخ مشتتة للغاية، أو أن الاختبارات مربكة جداً. يقول المدير: "امتناع: أنا آسف، لا يمكنني السماح لك بطهو هذا الطبق. إنه أمر محفوف بالمخاطر".
لماذا هذا الأسلوب أفضل من الطرق الأخرى؟
تقارن الورقة طريقتها بطرق أخرى للتحقق من الأخطاء:
- الطرق الساكنة (شرطة القواعد): هذه الطرق تقرأ الكود فقط لترى ما إذا كان يبدو صحيحاً، مثل التحقق من الإملاء. وتوضح الورقة أن هذا غير مفيد للكود لأن الجملة قد تكون مكتوبة إملائياً بشكل مثالي ومع ذلك لا تعني أي شيء (مثلاً: "اللون الأزرق أكل الرقم").
- طرق التنفيذ القديمة: تحاول تشغيل الكود ولكنها لا تقوم بتنقية الاختبارات السيئة. وغالباً ما ترتبك بسبب أسئلة الاختبار السيئة التي يضعها الطباخ، مما يجعلها تمنع الطباخ من الطهو حتى لو كان بإمكانه النجاح.
النتيجة: نظام CODEREF , CODEREFUSER أفضل بكثير في معرفة متى يقول "لا أعرف". في الاختبارات، نجح في تحسين القدرة على رصد المهام الخطيرة بنسبة 26% مقارنة بأفضل الطرق الموجودة.
الخلاصة
تقدم هذه الورقة طريقة لجعل مبرمجي الذكاء الاصطناعي أكثر أماناً. بدلاً من انتظار وقوع الذكاء الاصطناعي في الخطأ ثم إصلاحه، يعمل هذا النظام كمشرف ذكي يعرف متى يتجاوز الذكاء الاصطناعي قدراته. إنه يجبر الذكاء الاصطناعي على قول "لا أعرف" قبل إنشاء أي كود، مما يمنع إنشاء برمجيات معيبة أو خطيرة.
الفكرة الرئيسية: من الأفضل للذكاء الاصطناعي أن يعترف بعدم قدرته على أداء مهمة ما، بدلاً من أدائها بثقة خاطئة. لقد علم CODEREFUSER الذكاء الاصطناعي كيفية تقديم هذا الاعتراف بشكل آمن وموثوق.
غارق في أبحاث مجالك؟
تصلك نشرة يومية بأحدث الأبحاث المطابقة لكلماتك البحثية المفتاحية — مع ملخصات تقنية، بلغتك.