نسبة الثقة التي يعطيها نموذج اللغة عند التصنيف ليست احتمالًا حقيقيًا
حد ثقة مثل 0.9 في نظام إنتاجي لا يعني أن 90% من الحالات التي تتجاوزه صحيحة، فالرقم يقيس ثقة النموذج في الكلمة التالية، وغالبًا ما يكون متفائلًا.
تصدّرت Hacker News في 23 سبتمبر 2026 تدوينة بعنوان “Jev in 25 Lines of Python” على موقع nobodywho.ai. تعرض التدوينة كودًا من 25 سطرًا يصنّف النصوص محليًا باستخدام مكتبة llama-cpp-python ونموذج Qwen3-0.6B. يأخذ الكود مخرجات النموذج الخام (logits)، ويمررها عبر دالة softmax، فيُخرج أرقامًا مثل: phishing بنسبة 0.885، وspam بنسبة 0.084، وlegitimate بنسبة 0.031.
تبدو هذه الأرقام احتمالات. لكن النقاش التقني تحت التدوينة تركّز على أنها ليست كذلك، لسببين.
مشكلتان في الرقم
الأولى أبسط. فالنموذج المدرّب على المحادثة يوزّع الاحتمال على كل الصيغ الممكنة للإجابة. وكلمات مثل phishing وPhishing و“this is phishing” تُعد tokens مختلفة. لذلك فالرقم المقروء لا يعبّر عن ثقة النموذج في التصنيف، بل عن ثقته في الـ token التالي.
والثانية أعمق، وتُعرف بمشكلة المعايرة (calibration). فالشبكات العصبية معروفة بإعطاء أرقام قريبة من 99% في حالات يُفترض أن تكون متساوية الاحتمال. أي أن الرقم ليس احتمالًا فحسب، بل هو احتمال متفائل أيضًا.
يظهر أثر ذلك في الأنظمة الإنتاجية التي تعتمد قاعدة مثل “إذا تجاوزت الثقة 0.9 يُمرَّر القرار آليًا”. فالرقم 0.9 هنا لا يعني أن 90% من هذه الحالات ستكون صحيحة.
وبحسب ما طُرح في النقاش، هناك طريقتان للتخفيف من المشكلة. الأولى استخدام constrained decoding أو structured outputs لحصر الإجابة في صيغ محددة. والثانية معايرة الرقم على بيانات الفريق نفسه قبل بناء أي قرار عليه.