Wednesday, April 1, 2026

مبدأ الاستبعاد

 أنا مش مهندس ذكاء اصطناعي، والكلام ده مش محتوى موثّق—دي مجرد وجهة نظري الشخصية عن نماذج اللغة الكبيرة (LLMs).

النهارده حابب أتكلم عن نمط لاحظته وأنا بشتغل مع الـ LLMs، وسميته "مبدأ الاستبعاد" (principle of elimination)، لأنه ببساطة بيعبر عن طريقة الشغل معاها. أفضل طريقة للتعامل مع النماذج دي مش إنك تقولها إزاي توصل للإجابة الصح، لكن إنك تستبعد كل الإجابات الغلط المحتملة—أو بمعنى أدق، تقلّص كل (search space) ممكن.

تخيل معايا إن عندنا كرة صغيرة حمرا في مساحة ضخمة جدًا وفاضية، والكرة دي هتتحرك لوحدها، بس إحنا مش عارفين سرعتها كام، ولا هتتحرك في أي اتجاه، ولا هتمشي كام متر… تقدر تقولّي عدد الاحتمالات لمكانها بعد ما تتحرك؟

تقريبًا لا نهائي!

ممكن تتحرك متر واحد لليسار، أو مترين، أو تنزل 3 متر أو 4 متر… وهكذا.

ده غير متوقع بشكل كبير جدًا… طب نقلل العشوائية دي إزاي؟

عن طريق إننا نحدد شوية عوامل تقلل عدد الاحتمالات (combinatorial possibilities).

مثلًا، خلينا نقول إننا متأكدين إن الكرة هتتحرك ناحية اليسار، بس مش عارفين سرعتها ولا المسافة اللي هتمشيها.

دلوقتي عدد الاحتمالات كام؟

لسه كبير جدًا، لكننا على الأقل ضيّقنا (search space)—بقينا بندور بس في الجهة اليسار من مكان الكرة!

طيب نحدد عامل كمان: لنفترض إنها هتتحرك لليسار بمقدار 5 متر بالضبط.

دلوقتي تقدر تحدد مكانها؟

أيوه، هتبقى على بُعد 5 متر ناحية اليسار من مكانها الحالي.

احتجنا عاملين بس علشان نحل المشكلة!

طيب لو سألتك: هتاخد كام ثانية علشان توصل للمكان الجديد؟

مش هتقدر تجاوب لو عارف الاتجاه والمسافة بس—محتاج عامل تالت: السرعة.

خلينا نقول سرعتها 5 متر/ثانية.

يبقى هتاخد كام ثانية؟

ببساطة: ثانية واحدة.

وبرضه احتجنا عاملين علشان نجاوب السؤال ده: المسافة والسرعة.

بعد المثال البسيط ده، نرجع للـ LLMs… إزاي نطلع منها بأفضل نتيجة؟

الـ LLMs شبه جدًا بمحاولة توقع مكان الكرة، لكنها بدل كده بتحاول تتوقع "الإجابة الصح" اللي إنت عايزها.

لو كتبت prompt فاضي، فكأنك بتقولها: توقعي الإجابة الصح من غير أي عوامل محددة!

وده معناه (search space) ضخم جدًا—مش لا نهائي عمليًا، لكنه هائل جدًا لأنه مبني على بيانات الإنترنت كلها تقريبًا.

طب إيه اللي هيحصل؟

غالبًا هتديك إجابة غلط.

طيب لو قلت لها:

"اعمل آلة حاسبة بسيطة بلغة بايثون"

إنت كده قلّصت (search space) بشكل كبير، وبقى عندها فكرة عامة عن المطلوب… لكن لسه مش عارفة التفاصيل.

هل عايزها تاخد 3 inputs منفصلين (رقم، عملية، رقم)؟ ولا تعالج expression كنص؟

إيه العمليات اللي تدعمها؟

هل ده مشروع بسيط لمادة في الكلية؟ ولا محاكاة لآلة حاسبة علمية؟

كل سؤال من دول بيغيّر الكود بشكل كبير.

والمشكلة إن الـ LLMs مش متدربة تسأل الأسئلة دي—هي متدربة تدي إجابات "مفيدة" وخلاص. الشخص اللي يقدر يحدد التفاصيل دي غالبًا بيكون مهندس عنده خبرة.

طيب تخيل إنك كتبت:

"اعمل implementation بلغة بايثون لآلة حاسبة بسيطة بتاخد 3 مدخلات من المستخدم: الرقم الأول، والعملية، والرقم الثاني، وتنفذ العملية بناءً على المدخل، وتدعم العمليات الحسابية الأساسية بس (جمع، طرح، ضرب، قسمة) مع التعامل مع خطأ القسمة على صفر"

الـ prompt ده أطول بكتير، لكن أقدر أقولك بثقة إن لو اديته لأكتر من نموذج، هيدّوا نتائج شبه بعض جدًا.

ليه؟

لأنك قلّصت (search space) لعدد صغير جدًا من الاحتمالات—الاختلاف هيكون بس في أسماء المتغيرات أو الدوال مثلًا…

لكن المنطق نفسه بقى واضح تمامًا.

المهندس الشاطر هو اللي عارف العوامل اللي بتأثر على تصميم وتنفيذ المشروع اللي بيطلبه من الـ LLM، ويقدر يحدد قيم واضحة للعوامل دي… علشان النموذج ما يضطرش "يتخيل" أو "يخمّن" هو إنت تقصد إيه.

(البوست تمت ترجمته بواسطة تشات جي بي تي)

No comments:

Post a Comment

any inappropriate comments will be deleted and the commenter will get blocked permanently unless I'm free to fuck him.

on behalf of the user, by the name of laziness

 people tend to see engineering as a mysterious field only the chosen people can specialize in, today, as a software engineer, I'll spoi...