تهانينا! لقد نشرت نموذج يونيكورن. يجب أن يعمل النموذج على مدار الساعة طوال أيام الأسبوع بدون أي مشاكل. لضمان ذلك، عليك مراقبة مسار تعلُّم الآلة (ML).
كتابة مخطط بيانات للتحقّق من صحة البيانات الأولية
لمراقبة بياناتك، عليك التحقّق منها باستمرار للتأكّد من توافقها مع القيم الإحصائية المتوقّعة من خلال كتابة قواعد يجب أن تستوفيها البيانات. تُعرف مجموعة القواعد هذه باسم مخطط البيانات. حدِّد مخطط بيانات باتّباع الخطوات التالية:
التعرّف على نطاق ميزاتك وتوزيعها بالنسبة إلى الميزات الفئوية، يجب فهم مجموعة القيم المحتملة.
ترميز فهمك في مخطط البيانات في ما يلي أمثلة على القواعد:
- تأكَّد من أنّ التقييمات التي يرسلها المستخدمون تتراوح دائمًا بين 1 و5.
- تأكَّد من أنّ الكلمة the تظهر بشكل متكرّر (بالنسبة إلى ميزة النص الإنجليزي).
- تأكَّد من ضبط كل ميزة فئوية على قيمة من مجموعة ثابتة من القيم المحتملة.
اختبِر بياناتك مقارنةً بمخطط البيانات. يجب أن يرصد المخطط أخطاء البيانات، مثل:
- الِقَيم الشاذة
- قيم غير متوقّعة للمتغيرات الفئوية
- توزيعات البيانات غير المتوقّعة
كتابة اختبارات الوحدة للتحقّق من صحة تصميم الميزات
على الرغم من أنّ بياناتك الأولية قد تستوفي مخطط البيانات، لا يتم تدريب نموذجك على البيانات الأولية. بدلاً من ذلك، يتدرب النموذج على البيانات التي تم تصميم ميزاتها. على سبيل المثال، يتدرب النموذج على سمات رقمية موحّدة بدلاً من البيانات الرقمية الأولية. نظرًا لأنّ البيانات التي تمّت هندستها يمكن أن تختلف كثيرًا عن بيانات الإدخال الأولية، يجب التحقّق من البيانات التي تمّت هندستها بشكل منفصل عن عمليات التحقّق من بيانات الإدخال الأولية.
اكتب اختبارات الوحدات استنادًا إلى فهمك للبيانات المصمَّمة للميزات. على سبيل المثال، يمكنك كتابة اختبارات الوحدة للتحقّق من شروط مثل ما يلي:
- يتم قياس جميع الميزات الرقمية، مثلاً بين 0 و1.
- لا تحتوي متجهات الترميز الأحادي إلا على الرقم 1 واحد وN-1 من الأصفار.
- تتوافق توزيعات البيانات بعد التحويل مع التوقّعات. على سبيل المثال، إذا كنت قد نفّذت التسوية باستخدام الدرجات المعيارية، يجب أن يكون متوسط الدرجات المعيارية 0.
- يتم التعامل مع القيم الشاذة، مثلاً من خلال تغيير المقياس أو القص.
التحقّق من مقاييس شرائح البيانات المهمة
في بعض الأحيان، يحجب النجاح الكلي مجموعة فرعية غير ناجحة. بعبارة أخرى، قد يقدّم نموذج يتضمّن مقاييس إجمالية رائعة توقّعات سيئة في بعض الحالات. على سبيل المثال:
يحقّق نموذجك الخاص بحصان وحيد القرن أداءً جيدًا بشكل عام، ولكنّه يحقّق أداءً ضعيفًا عند تقديم توقّعات بشأن صحراء "الصحراء الكبرى".
إذا كنت من المهندسين الذين يكتفون بمعدّل AUC مرتفع بشكل عام، قد لا تلاحظ مشاكل النموذج في صحراء "الصحراء الكبرى". إذا كان من المهم تقديم توقعات جيدة لكل منطقة، عليك تتبُّع الأداء في كل منطقة. تُعرف المجموعات الفرعية من البيانات، مثل تلك المرتبطة بصحراء الصحراء الكبرى، باسم شرائح البيانات.
تحديد شرائح البيانات التي تهمّك بعد ذلك، قارِن مقاييس النموذج لشرائح البيانات هذه بمقاييس مجموعة البيانات بأكملها. يساعد التأكّد من أنّ النموذج يحقّق أداءً جيدًا في جميع شرائح البيانات في إزالة التحيز. يمكنك الاطّلاع على مقالة الإنصاف: تقييم التحيز للحصول على مزيد من المعلومات.
استخدام مقاييس واقعية
لا تقيس مقاييس النماذج بالضرورة التأثير الفعلي لنموذجك. على سبيل المثال، قد يؤدي تغيير أحد المعلمات الفائقة إلى زيادة مساحة AUC الخاصة بأحد النماذج، ولكن كيف أثّر هذا التغيير في تجربة المستخدم؟ لقياس التأثير في العالم الحقيقي، عليك تحديد مقاييس منفصلة. على سبيل المثال، يمكنك إجراء استطلاع لآراء مستخدمي النموذج للتأكّد من أنّهم رأوا وحيد القرن بالفعل عندما توقّع النموذج ذلك.
التحقّق من اختلاف التوزيع بين بيانات التدريب وبيانات العرض
يشير اختلاف التوزيع بين التدريب والعرض إلى أنّ بيانات الإدخال أثناء التدريب تختلف عن بيانات الإدخال أثناء العرض. يوضّح الجدول التالي النوعَين المهمَّين من الانحراف:
النوع | التعريف | مثال | الحل |
---|---|---|---|
انحراف المخطط | لا تتوافق بيانات الإدخال المستخدَمة في التدريب والعرض مع المخطط نفسه. | تغيير تنسيق بيانات العرض أو توزيعها بينما يواصل نموذجك التدريب على البيانات القديمة | استخدِم المخطط نفسه للتحقّق من صحة بيانات التدريب وبيانات العرض. تأكَّد من التحقّق بشكل منفصل من الإحصاءات التي لم يتحقّق منها المخطط، مثل نسبة القيم الناقصة. |
انحراف الميزات | تختلف البيانات المصمَّمة بين التدريب والعرض. | يختلف رمز هندسة الميزات بين التدريب والعرض، ما يؤدي إلى إنتاج بيانات مهندسة مختلفة. | على غرار انحراف المخطط، طبِّق القواعد الإحصائية نفسها على البيانات المصمَّمة للتدريب والتقديم. تتبُّع عدد الميزات المنحرفة التي تم رصدها ونسبة الأمثلة المنحرفة لكل ميزة |
يمكن أن تكون أسباب اختلاف التدريب عن العرض طفيفة. ضَع في اعتبارك دائمًا البيانات المتاحة لنموذجك عند إجراء التوقّعات. أثناء التدريب، استخدِم الميزات التي ستكون متاحة لك عند عرض الإعلانات فقط.
تمرين: التحقّق من فهمك
لنفترض أنّ لديك متجرًا على الإنترنت وتريد توقّع مقدار الأرباح التي ستحقّقها في يوم معيّن. هدف تعلُّم الآلة هو التنبؤ بالأرباح اليومية باستخدام عدد العملاء كخاصية.
الإجابة: المشكلة هي أنّك لا تعرف عدد العملاء في وقت التوقّع، أي قبل اكتمال مبيعات اليوم. وبالتالي، لا تكون هذه الميزة مفيدة، حتى إذا كانت تشير بشكل كبير إلى إمكانية تحقيق أرباح يومية. وبالمثل، عند تدريب نموذج والحصول على مقاييس تقييم مذهلة (مثل 0.99 AUC)، ابحث عن هذه الأنواع من الميزات التي يمكن أن تتداخل مع التصنيف.
التحقّق من تسرُّب التصنيفات
تسريب التصنيفات يعني أنّ تصنيفات الحقيقة الأساسية التي تحاول توقّعها قد دخلت عن غير قصد في ميزات التدريب. يصعب أحيانًا رصد تسريب التصنيفات.
تمرين: التحقّق من فهمك
لنفترض أنّك أنشأت نموذج تصنيف ثنائيًا للتنبؤ بما إذا كان مريض جديد في المستشفى مصابًا بالسرطان أم لا. يستخدم النموذج ميزات مثل ما يلي:
- عمر المريض
- جنس المريض
- الحالات الطبية السابقة
- اسم المستشفى
- بيانات المؤشرات الحيوية
- نتائج الاختبار
- الوراثة
التصنيف هو كما يلي:
- قيمة منطقية: هل يعاني المريض من السرطان؟
عليك تقسيم البيانات بعناية، مع التأكّد من أنّ مجموعة التدريب معزولة تمامًا عن مجموعة التحقّق ومجموعة الاختبار. يحقّق النموذج أداءً جيدًا للغاية في مجموعة التحقّق ومجموعة الاختبار، والمقاييس رائعة. لسوء الحظ، كان أداء النموذج سيئًا للغاية عند تطبيقه على مرضى جدد في الواقع.
الإجابة: إحدى ميزات النموذج هي اسم المستشفى. تتخصّص بعض المستشفيات في علاج السرطان. أثناء التدريب، تعلّم النموذج بسرعة أنّ المرضى الذين تم نقلهم إلى مستشفيات معيّنة من المرجّح جدًا أن يكونوا مصابين بالسرطان. لذلك، أصبح اسم المستشفى سمة ذات وزن كبير.
في وقت الاستنتاج، لم يكن قد تم بعد تحديد المستشفى الذي سيتم نقل معظم المرضى إليه. ففي النهاية، كان الغرض من النموذج هو تشخيص وجود السرطان أو عدمه، ثم استخدام هذا التشخيص لتحديد المستشفى المناسب للمريض. نتيجةً لذلك، لم تكن ميزة اسم المستشفى متاحة أثناء الاستدلال، واضطر النموذج إلى الاعتماد على ميزات أخرى.
مراقبة عمر النموذج طوال عملية الإنشاء
إذا تطوّرت بيانات العرض بمرور الوقت ولكن لم تتم إعادة تدريب النموذج بانتظام، ستلاحظ انخفاضًا في جودة النموذج. تتبُّع الوقت المنقضي منذ إعادة تدريب النموذج على بيانات جديدة وتحديد حدّ أدنى للعمر لإرسال التنبيهات بالإضافة إلى مراقبة عمر النموذج عند عرضه، يجب مراقبة عمر النموذج طوال عملية الإنشاء لرصد أي توقّف في العملية.
اختبار استقرار أوزان النموذج ونتائجه عدديًا
أثناء تدريب النموذج، يجب ألّا تكون الأوزان ومخرجات الطبقة NaN (ليس رقمًا) أو Inf (لا نهائي). اكتب اختبارات للتحقّق من قيم NaN وInf للأوزان ومخرجات الطبقات. بالإضافة إلى ذلك، اختبِر ما إذا كان أكثر من نصف نواتج إحدى الطبقات ليس صفرًا.
مراقبة أداء النموذج
لقد حقّق توقّع ظهور أحادي القرن رواجًا أكبر من المتوقّع. تتلقّى الكثير من طلبات التوقّعات والمزيد من بيانات التدريب. يبدو ذلك رائعًا إلى أن تدرك أنّ النموذج يستهلك المزيد والمزيد من الذاكرة والوقت للتدريب. قرّرت مراقبة أداء النموذج باتّباع الخطوات التالية:
- تتبُّع أداء النموذج حسب إصدارات الرمز والنموذج والبيانات ويتيح لك هذا التتبُّع تحديد السبب الدقيق لأي انخفاض في الأداء.
- اختبِر عدد خطوات التدريب في الثانية لإصدار نموذج جديد مقارنةً بالإصدار السابق وبحدّ ثابت.
- رصد تسربات الذاكرة من خلال ضبط حدّ لاستخدام الذاكرة
- تتبُّع أوقات استجابة واجهة برمجة التطبيقات ونسبها المئوية على الرغم من أنّ أوقات استجابة واجهة برمجة التطبيقات قد تكون خارج نطاق تحكّمك، إلا أنّ الاستجابات البطيئة قد تؤدي إلى انخفاض مقاييس الأداء في العالم الحقيقي.
- تتبُّع عدد طلبات البحث التي يتم الردّ عليها في الثانية
اختبار جودة النموذج النشط على البيانات المعروضة
لقد تحقّقت من صحة النموذج. ولكن ماذا لو تغيّرت السيناريوهات الواقعية، مثل سلوك أحادي القرن، بعد تسجيل بيانات التحقّق؟ وبالتالي، ستنخفض جودة النموذج الذي يتم عرضه. ومع ذلك، يصعب اختبار جودة العرض لأنّ البيانات الواقعية لا تكون مصنّفة دائمًا. إذا لم يتم تصنيف بيانات العرض، ننصحك بإجراء الاختبارات التالية:
التحقيق في النماذج التي تُظهر تحيّزًا إحصائيًا كبيرًا في التوقّعات اطّلِع على التصنيف: التوقّع التحيّز.
تتبُّع مقاييس النموذج في العالم الواقعي على سبيل المثال، إذا كنت تصنّف الرسائل غير المرغوب فيها، قارِن توقّعاتك بالرسائل غير المرغوب فيها التي أبلغ عنها المستخدمون.
يمكنك الحدّ من التباين المحتمل بين بيانات التدريب وبيانات العرض من خلال عرض إصدار جديد من النموذج على جزء من طلبات البحث. أثناء التحقّق من صحة نموذج العرض الجديد، يمكنك نقل جميع طلبات البحث تدريجيًا إلى الإصدار الجديد.
باستخدام هذه الاختبارات، تذكَّر مراقبة الانخفاض المفاجئ والبطيء في جودة التوقّعات.
التوزيع العشوائي
تأكَّد من إمكانية إعادة إنتاج مسار إنشاء البيانات. لنفترض أنّك تريد إضافة ميزة لمعرفة مدى تأثيرها في جودة النموذج. لإجراء تجربة عادلة، يجب أن تكون مجموعات البيانات متطابقة باستثناء هذه الميزة الجديدة. لذلك، احرص على أن يكون أي عشوائية في إنشاء البيانات قابلاً للتحديد:
- تحديد مصدر الأرقام العشوائية (RNG). تضمن عملية التعبئة أن ينتج مولّد الأرقام العشوائية القيم نفسها بالترتيب نفسه في كل مرة يتم تشغيله فيها، ما يؤدي إلى إعادة إنشاء مجموعة البيانات.
- استخدام مفاتيح التجزئة الثابتة: التجزئة هي طريقة شائعة لتقسيم البيانات أو أخذ عيّنات منها. يمكنك تجزئة كل مثال واستخدام العدد الصحيح الناتج لتحديد الجزء الذي سيتم وضع المثال فيه. يجب ألا تتغيّر المدخلات إلى دالة التجزئة في كل مرة تشغّل فيها برنامج إنشاء البيانات. لا تستخدِم الوقت الحالي أو رقمًا عشوائيًا في التجزئة، مثلاً إذا أردت إعادة إنشاء التجزئات عند الطلب.
تنطبق الأساليب السابقة على كلّ من أخذ العيّنات وتقسيم بياناتك.
اعتبارات بشأن التجزئة
لنفترض مجددًا أنّك كنت تجمع طلبات بحث على "بحث Google" وتستخدم التجزئة لتضمين طلبات البحث أو استبعادها. إذا كان مفتاح التجزئة يستخدم طلب البحث فقط، سيتضمّن دائمًا طلب البحث هذا أو يستبعده دائمًا على مدار عدّة أيام من البيانات. إنّ تضمين استعلام أو استبعاده دائمًا أمر غير جيد للأسباب التالية:
- ستتضمّن مجموعة التدريب عددًا أقل من طلبات البحث المتنوّعة.
- ستكون مجموعات التقييم صعبة بشكل مصطنع لأنّها لن تتداخل مع بيانات التدريب. في الواقع، عند عرض الإعلانات، ستكون قد رأيت بعض بيانات حركة المرور المباشرة في بيانات التدريب، لذا يجب أن يعكس التقييم ذلك.
بدلاً من ذلك، يمكنك التجزئة حسب طلب البحث + تاريخ طلب البحث، ما يؤدي إلى تجزئة مختلفة لكل يوم.
