مراقبة النماذج والانحراف
درس 2 من 3
2مراقبة النماذج والانحراف
الصورة الكبيرةالخادم يعمل والرد 200 والنموذج يجيب، لكن إجاباته تسوء تدريجيًا لأن الزبائن تغيروا. المراقبة التقليدية لا ترى هذا. مراقبة النموذج ترى.
ماذا تشاهد في الرسم: حلقة المراقبة: مقارنة ما يراه النموذج اليوم بما تعلّم منه، وإعادة التدريب حين يتباعدان.
خارطة هذا الجزء
المفاهيم بالترتيب، اضغط أيًّا منها للقفز إليه:
طريقان إلى نفس الفكرة
خريطة مدينة رسمتها قبل خمس سنوات: كانت دقيقة، لكن شوارع جديدة فُتحت وأخرى أُغلقت. الخريطة لم تخطئ، العالم تغير. النموذج خريطة للبيانات التي رآها، ويحتاج تحديثًا حين تتغير المدينة.
انحراف البيانات (covariate shift): توزيع المدخلات يتغير (أعمار المستخدمين، لغة جديدة، جهاز جديد). انحراف المفهوم: العلاقة نفسها تتغير (ما كان احتيالًا لم يعد). القياس بلا تسميات: PSI أو KS أو مسافة Jensen-Shannon بين توزيع التدريب والإنتاج لكل ميزة، وتوزيع المخرجات والثقة. القياس بالتسميات: تسميات متأخرة (هل دفع العميل فعلًا؟) أو عينة يراجعها بشر. السياسة: عتبات تنبيه (PSI > 0.2 انحراف كبير)، إعادة تدريب تلقائية بخط مسجل، تقييم على بيانات حديثة، ثم نشر بالظل (النموذج الجديد يتنبأ دون أن يُستخدم) أو كناري (5% من الحركة) قبل الكل. للنماذج اللغوية: مراقبة الهلوسة والرفض وطول الرد والتكلفة بعينات تقييم.
قبل أن تبدأ
🧪خطوط التدريب
الدرس السابق.
📏الإحصاء التطبيقي
التوزيعات والمقارنة.
الفكرة الجوهرية
1PSI: قياس الانحراف
مؤشر ثبات المجتمع يقارن نسب كل فئة بين التدريب والإنتاج. تحت 0.1 مستقر، و0.1 إلى 0.2 راقب، وفوق 0.2 انحراف كبير:
import math
def psi(expected, actual):
total = 0.0
for e, a in zip(expected, actual):
e, a = max(e, 1e-4), max(a, 1e-4)
total += (a - e) * math.log(a / e)
return round(total, 3)
# share of users per age bucket: 18-24, 25-34, 35-44, 45+
training = [0.30, 0.40, 0.20, 0.10]
week_1 = [0.29, 0.41, 0.20, 0.10]
week_9 = [0.12, 0.30, 0.28, 0.30]
for name, prod in [("week 1", week_1), ("week 9", week_9)]:
score = psi(training, prod)
status = "stable" if score < 0.1 else "watch" if score < 0.2 else "DRIFT"
print(name, score, status)2المراقبة بلا تسميات
في أغلب الأحيان لا تعرف الإجابة الصحيحة فورًا. راقب ما تستطيع: توزيع المدخلات، ونسبة كل تنبؤ، ومتوسط الثقة. لو كان النموذج يقول «احتيال» في 2% دائمًا وصار 9%، فشيء تغيّر:
from statistics import mean
baseline = {"fraud_rate": 0.02, "confidence": 0.91}
today = [{"pred": "fraud", "conf": 0.55}] * 9 + [{"pred": "ok", "conf": 0.80}] * 91
fraud_rate = sum(p["pred"] == "fraud" for p in today) / len(today)
confidence = mean(p["conf"] for p in today)
if fraud_rate > baseline["fraud_rate"] * 2:
print(f"ALERT: fraud rate {fraud_rate:.0%} vs {baseline['fraud_rate']:.0%} baseline")
if confidence < baseline["confidence"] - 0.1:
print(f"ALERT: mean confidence {confidence:.2f} vs {baseline['confidence']:.2f}")3النشر بالظل والكناري
قبل أن يستبدل النموذج الجديد القديم: في الظل يستقبل نفس الطلبات ويُسجّل تنبؤاته دون استخدامها، فتقارنها بالقديم وبالتسميات حين تصل. ثم كناري: نسبة صغيرة من المستخدمين ترى النموذج الجديد، وتزيد تدريجيًا إن بقيت المقاييس سليمة.
مثال محلول
المسألة: نموذج تصنيف تذاكر الدعم دقته 92% عند النشر، وبعد 3 أشهر يشتكي الفريق من تصنيفات غريبة. القياس: PSI لطول النص 0.31، وتوزيع الكلمات يظهر مصطلحات منتج جديد لم تكن في التدريب. الحل: جمع 2000 تذكرة حديثة مُصنفة، إعادة التدريب بالخط المسجل، تقييم على بيانات الشهر الأخير (90%)، نشر بالظل أسبوعًا، ثم الاستبدال. وتنبيه دائم على PSI > 0.2.
خرافة مقابل حقيقة
| الخرافة | الحقيقة |
|---|---|
| أعد التدريب كل شهر وانتهى الأمر. | قد تعيد التدريب بلا داعٍ أو تتأخر عن انحراف مفاجئ. دع المقاييس تقرر. |
| دقة الاختبار تبقى ثابتة في الإنتاج. | بيانات الاختبار صورة من الماضي. الإنتاج يتغير كل يوم. |
اختبر فهمك
ما انحراف المفهوم؟
نفس المدخل صار يستحق إجابة مختلفة.
PSI = 0.27 لميزة مهمة. ماذا يعني؟
فوق 0.2 يُعد انحرافًا كبيرًا عادة.
ما النشر بالظل؟
تقارن بأمان قبل أن يتأثر أي مستخدم.
بطاقات مراجعة سريعة
تحقق من فهمك
لماذا لا تكفي مراقبة الخادم؟
لأن النموذج المتدهور يرد بسرعة وبلا أخطاء تقنية، لكن بإجابات خاطئة.
كيف تراقب بلا تسميات؟
بتوزيع المدخلات (PSI) ونسب التنبؤات ومتوسط الثقة.
متى تعيد التدريب؟
حين يتجاوز الانحراف عتبة أو تسوء المقاييس على التسميات الحديثة.
مصادر هذا الدرس
مرتّبة بالنوع. ابدأ بالتوثيق الرسمي إذا تبي المرجع الدقيق، وبالمقال أو الفيديو إذا تبي الشرح أولًا.
توثيق رسمي1
خلّصت الدرس؟
سجّل الدخول ليُحفظ تقدّمك.