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