يمكن لنموذج تعلُّم آلي أن يحقِّق دقةً بنسبة ٩٩٪ في الاختبار، ثم يفشل فشلًا ذريعًا في العالم الحقيقي. والسبب المعتاد لهذه المشكلة له اسم: الانحراف الزائد (Overfitting). وهي أكثر الأخطاء شيوعًا في تطبيقات التعلُّم الآلي، وفهمها أمرٌ جوهريٌّ لبناء نماذج تعمل فعليًّا. ويوضِّح هذا الدليل ظاهرة التخصُّص الزائد بشكلٍ واضح، ويقدِّم لك الطرق المثبتة علميًّا لمنعها.
أبرز الاستنتاجات
- التخصُّص الزائد (Overfitting) هو أن يحفظ النموذج بيانات التدريب الخاصة به بدلًا من تعلُّم النمط العام.
- المؤشر الدال عليه هو: أداءٌ ممتازٌ على بيانات التدريب، وأداءٌ ضعيفٌ على البيانات الجديدة.
- أما المشكلة المقابلة فهي التعميم الناقص (Underfitting)، أي أن يكون النموذج بسيطًا جدًّا لدرجة عدم قدرته على تعلُّم النمط أساسًا.
- ويمكن الوقاية منها عبر: زيادة كمية البيانات، واختيار نموذج أبسط، وتطبيق التنظيم (Regularization)، والاستعانة بالتحقق المتقاطع (Cross-Validation)، والتوقف المبكر (Early Stopping).
- اختبر نموذجك دائمًا على بيانات لم يرها من قبل — فهذه الطريقة الوحيدة الصادقة لتقييم جودته.
ما المقصود بالتخصُّص الزائد؟
يحدث التخصُّص الزائد عندما يتعلَّم النموذج بيانات التدريب الخاصة به بشكلٍ مفرط — بما في ذلك الضوضاء والسلوكيات غير المنتظمة والحوادث العشوائية التي لا تمثّل النمط الحقيقي. فبدلاً من تعلُّم القاعدة العامة، يكتسب النموذج ذاكرةً لحالات محددة.
يتمحور هدف تعلُّم الآلة حول التعميمأي الأداء الجيد على بيانات جديدة لم يسبق رؤيتها. أما النموذج المُفرط التخصُّص (Overfit) فيفشل تمامًا في تحقيق هذا الهدف. فهو في الأساس قد حفظ إجابات الاختبار التدريبي، ولذلك يتفوق فيه — ثم ينهار أمام الاختبار الفعلي، لأن الأسئلة مختلفة.
تشبيهٌ بسيط
تصوَّر طالبين يستعدان لامتحان رياضيات.
الأول يفهم المفاهيم — أي الطرق والأساليب المنطقية. فإذا قدِّمت له أية مسألة، حتى لو كانت جديدة كليًّا، فيستطيع حلَّها.
أما الثاني فيحفظ مسائل التدريب الدقيقة وإجاباتها حرفيًّا. وفي اختبار التدريب، يحصل على الدرجة الكاملة. أما في الاختبار الفعلي، الذي تتغيَّر فيه الأرقام، فيشعر بالحيرة — لأنه لم يتعلَّم الطريقة إطلاقًا، بل حفظ الإجابات المحددة فقط.
هذا الطالب الثاني هو نموذجٌ مُفرط التخصُّص: مثاليٌّ على بيانات التدريب، لكنه عاجزٌ تمامًا أمام أي بيانات جديدة.
كيفية اكتشاف التخصُّص المفرط
يتسم التخصُّص المفرط بعلامة كلاسيكية واحدة لا لبس فيها: فجوة كبيرة بين أداء النموذج على بيانات التدريب وأدائه على بيانات الاختبار.
ولهذا السبب نقسم البيانات دائمًا إلى أجزاء. فندرِّب النموذج على جزء منها (مجموعة التدريب)، ونقيِّمه على جزء آخر لم يره قط (مجموعة الاختبار). وبعد ذلك:
- فجوة صغيرة، مع ارتفاع درجتي الأداء → النموذج يتعمَّم جيدًا. وهذا مؤشر صحي.
- درجة التدريب عالية، بينما درجة الاختبار منخفضةٌ جدًّا → التخصُّص المفرط. فالنموذج قد حفظ البيانات بدلًا من تعلُّمها.
- كلا الدرجتين ضعيفتان → التخصُّص الناقص (Underfitting). فالنموذج بسيطٌ جدًّا (وسوف نتطرَّق إلى ذلك لاحقًا).
إذا كان أداء نموذجك ممتازًا على بيانات التدريب ومتوسطًا على بيانات الاختبار، فأنت بالتأكيد تتعامل مع حالة تخصُّص مفرط — لا لبس في ذلك.
المشكلة المقابلة: التخصُّص الناقص
يوجد مقابلٌ للتخصُّص المفرط. التخصُّص الناقص يحدث عندما يكون النموذج بسيطًا جدًّا بحيث لا يستطيع التقاط النمط الحقيقي، فيؤدي أداءً ضعيفًا على كلاهما بيانات التدريب وبيانات الاختبار معًا. فهو لم يحفظ البيانات — بل لم يتعلَّم شيئًا أصلًا.
وهاتان الحالتان تُشكِّلان توازنًا يجب أن يُداره كل ممارس لتعلُّم الآلة:
| المشكلة | درجة التدريب | درجة الاختبار | السبب |
|---|---|---|---|
| التخصُّص الناقص | ضعيفة | ضعيفة | النموذج بسيطٌ جدًّا |
| ملائم جيدًا | جيد | جيد | تعقيد مناسب |
| التخصُّص الزائد (Overfitting) | ممتاز | ضعيفة | النموذج معقَّدٌ جدًّا أو عدد بيانات التدريب قليلٌ جدًّا |
والهدف هو الصف الأوسط: نموذجٌ معقَّدٌ بما يكفي لتعلُّم النمط، لكنه ليس معقَّدًا لدرجة أنه يحفظ الضوضاء.
أسباب حدوث التخصُّص المفرط
الأسباب الشائعة هي:
- قلة بيانات التدريب — فمع وجود أمثلة قليلة جدًّا، يمكن للنموذج حفظها جميعًا بدلًا من التعميم.
- نموذجٌ معقَّدٌ جدًّا — فالنموذج المرِن جدًّا يمتلك سعة كافية ليتناسب مع كل سلوك غير منتظم في البيانات.
- التدريب لفترة طويلة جدًّا — فبعد نقطة معينة، يؤدي التدريب الإضافي إلى تناسب أدق مع الضوضاء بدلًا من تحسين التعميم.
- بيانات مشوشة أو منخفضة الجودة — وكلما زادت كمية البيانات العشوائية أو غير المفيدة في المجموعة، زاد ما يمكن للنموذج «تعلُّمه» خطأً.
- عدد كبير جدًّا من الخصائص (Features) — فالإدخالات غير ذات الصلة تمنح النموذج أنماطًا خاطئة يمكنه التشبُّث بها.
كيفية الوقاية من التخصُّص المفرط
لا يوجد حلٌّ واحدٌ شاملٌ — بل يجمع الممارسون عادةً بين عدة تقنيات.
1. الحصول على مزيد من بيانات التدريب
وهو العلاج الأكثر فعالية. فمع زيادة عدد الأمثلة، يصبح الحفظ مستحيلًا، ويُجبَر النموذج على تعلُّم النمط الحقيقي. وعندما لا يمكن جمع بيانات إضافية، تكبير البيانات (Data Augmentation) — فإن إنشاء تنوع واقعي من البيانات الموجودة (مثل تدوير الصور أو اقتصاصها، على سبيل المثال) — يساعد في هذا الصدد.
2. تبسيط النموذج
إذا كان النموذج معقَّدًا جدًّا، فقلِّل سعته: استخدم عددًا أقل من المعاملات (Parameters)، أو بنيةً أسطحيةً أكثر (أقل عمقًا)، أو عددًا أقل من الخصائص. وجرب دائمًا نموذجًا أبسط أولًا — فهو أقل عرضة للتخصُّص المفرط، وأسهل في الفهم.
3. استخدام التنظيم (Regularization)
ويُضيف التنظيم عقوبةً على التعقيد أثناء التدريب، مما يثبِّط النموذج عن الاعتماد المفرط على أي خاصية واحدة أو عن محاولة التكيُّف مع القيم المتطرفة. وهو خيار قياسي مدمج في معظم خوارزميات تعلُّم الآلة، ويُعَدُّ أحد أكثر الأدوات فعاليةً المتاحة.
4. استخدام التحقق المتقاطع
يختبر التحقق المتقاطع النموذج على عدة تقسيمات مختلفة للبيانات بدلًا من تقسيم واحد فقط. ويوفر هذا تقديرًا أكثر صدقًا واستقرارًا للأداء في العالم الحقيقي، ويُظهر بسرعة نموذجًا يبدو جيدًا فقط بسبب تقسيمٍ محظوظ.
5. إيقاف التدريب مبكرًا
راقب أداء النموذج على مجموعة التحقق أثناء التدريب. وعندما يتوقف أداء هذه المجموعة عن التحسُّن ويبدأ في التراجع، توقَّف فورًا — فالاستمرار بعد تلك النقطة لا يؤدي إلا إلى تكيُّف النموذج مع الضوضاء العشوائية. وهذه العملية تُسمى: الإيقاف المبكر.
6. استخدام تقنية الإسقاط العشوائي (Dropout) (للشبكات العصبية)
لـ الشبكات العصبية, إسقاط الوحدات (Dropout) وهي تقنية تُطفئ عُقدًا عصبيةً عشوائيًّا خلال كل خطوة تدريب. وهذا يمنع الشبكة من الاعتماد المفرط على أي مسارٍ واحد، ويجبرها على تعلُّم أنماطٍ أكثر متانةً وعمومية.
7. احتفظ دائمًا بمجموعة اختبار حقيقية منفصلة
شرطٌ غير قابل للتفاوض: احتفظ بجزءٍ من البيانات لا يراه النموذج إطلاقًا أثناء التدريب أو ضبط المعايير، وقيِّم أداء النموذج بناءً فقط على تلك المجموعة. فهي المقياس الوحيد الصادق لكيفية أداء النموذج في العالم الحقيقي.
تسرب البيانات: السبب الخفي وراء النتائج الزائفة الجيدة
يعالج الجزء الأكبر من هذا الدليل الإفراط في التخصُّص باعتباره مشكلة نمذجة — أي نموذجًا معقَّدًا جدًّا بالنسبة لكمية ضئيلة من البيانات. لكن هناك سببًا خفيًّا آخر يُنتج نفس الأعراض ويخدع عددًا أكبر بكثير من الممارسين: تسرب البيانات. ويحدث التسرب عندما تتسلل معلوماتٌ لن تكون متاحة وقت التنبؤ إلى مرحلة التدريب. وبذلك يبدو النموذج رائعًا في الاختبار، ثم ينهار تمامًا في البيئة التشغيلية. فإذا بدت درجات التحقق لديك جيدة جدًّا لدرجة يصعب تصديقها، فاشتبه أولًا في وجود تسربٍ قبل أن تفترض أنك محظوظ.
وهناك نوعان رئيسيان يجب الانتباه إليهما:
- تلوُّث التدريب-الاختبار. وتتمثل في تسرب بيانات الاختبار إلى عملية التدريب. والخطأ الكلاسيكي هو إجراء المعالجة المسبقة قبل تقسيم البيانات: فإذا قمت بتوحيد القيم أو تطبيعها أو تعويض القيم المفقودة باستخدام إحصائيات المستخلصة من مجموعة البيانات بأكملها، فإن مجموعة التدريب تكون قد «رأت» بالفعل متوسط ونطاق مجموعة الاختبار. لذا يجب دائمًا تقسيم البيانات أولًا، ثم تطبيق أي عملية تحويل على مجموعة التدريب وحدها، ثم تطبيق نفس التحويلات على مجموعة الاختبار. قبل تقسيم البيانات
- تسرب الهدف. وهو وجود ميزة (Feature) تُشفِّر الإجابة سرًّا. فعلى سبيل المثال، سيكون أداء نموذج تنبؤه بوجود مرض لدى مريض ممتازًا تقريبًا إذا كانت إحدى مدخلاته هي «الدواء الموصوف لهذا المرض» — وهي معلومة لا توجد بعد تشخيص المرض. وبما أن هذه الميزة غير متاحة وقت الحاجة الفعلية إلى التنبؤ، فإن الدرجة التي يحصل عليها النموذج تكون وهمية.
وتضيف البيانات المرتبطة زمنيًّا فخًّا ثالثًا. فخلط سلسلة زمنية عشوائيًّا قبل تقسيمها يسمح للنموذج بالتدرب على المستقبل للتنبؤ بالماضي، مما ينتهك مبدأ السببية ويزيد دقة القياس بشكل مضلل. ولأي بيانات تحمل طابعًا زمنيًّا، يجب تقسيمها ترتيبًا زمنيًّا: أي التدرب على الفترات المبكرة واختبار النموذج على الفترات اللاحقة.
ويكمن خطر التسرب في كون الحلول الأخرى المذكورة في هذه المقالة لا تكتشفه أصلًا. فزيادة البيانات، وتقنيات التنظيم، والإيقاف المبكر، تفترض جميعها أن تقييمك للنموذج صادق. أما إذا كانت مجموعة الاختبار ملوثة، فإن كل إشارة تعتمد عليها لاكتشاف الإفراط في التخصُّص تكون نفسها ملوثة — وبالتالي يجتاز النموذج جميع الاختبارات، ومع ذلك يفشل أمام المستخدمين الحقيقيين.
وهناك ثلاث عادات تمنع الغالبية العظمى من حالات التسرب. أولًا: ضمّ المعالجة المسبقة والنموذج معًا في خط أنابيب واحد (Pipeline) — وتتيح مكتبة scikit-learn هذه الميزة عبر كلاس خط أنابيب (Pipeline) — بحيث تُطبَّق عمليات التحويل فقط على مجموعات التدريب ضمن كل تقسيم. ثانيًا: فحص الميزات ذات الأداء المذهل من خلال طرح السؤال التالي: هل سأعرف هذه القيمة فعليًّا في لحظة إصدار التنبؤ؟ وإذا كانت الإجابة «لا»، فاحذف هذه الميزة. ثالثًا: عندما تبدو النتائج مذهلة، فتعامل مع ذلك كإشارة تحذيرية تستدعي التحقيق، لا كانتصارٍ يستحق الاحتفال. فالقدرة الحقيقية على التعميم نادرًا ما تبدو سهلة أو بلا جهد.
الأسئلة الشائعة
ما المقصود بالإفراط في التخصُّص (Overfitting) في تعلُّم الآلة؟
الإفراط في التخصُّص هو عندما يتعلَّم النموذج بيانات التدريب الخاصة به بشكلٍ مفرط — فيحفظ الضوضاء والتفاصيل العابرة بدلًا من النمط العام. ونتيجةً لذلك، يؤدي أداءً ممتازًا على بيانات التدريب، لكنه يفشل في بيانات جديدة لم يرها من قبل، لأنه لم يتعلَّم كيفية التعميم أصلًا.
كيف أعرف ما إذا كان نموذجي يعاني من الإفراط في التخصُّص؟
قارن أداؤه على بيانات التدريب مقابل بيانات الاختبار (أي البيانات التي لم يرها مطلقًا). فإذا حقَّق درجاتٍ أعلى بكثيرٍ على بيانات التدريب مقارنةً ببيانات الاختبار، فهذا دليلٌ على حدوث الإفراط في التخصُّص. أما النموذج السليم فيؤدي أداءً جيدًا ومتسقًا على كلا المجموعتين.
ما الفرق بين الإفراط في التخصُّص (Overfitting) وقلة التخصُّص (Underfitting)؟
الإفراط في التخصُّص يحدث عندما يكون النموذج معقَّدًا جدًّا لدرجة أنه يحفظ بيانات التدريب ولا ينجح في التعامل مع بيانات جديدة. أما قلة التخصُّص فتحدث عندما يكون النموذج بسيطًا جدًّا بحيث لا يستطيع تعلُّم النمط أساسًا، فيؤدي أداءً ضعيفًا على كلٍّ من بيانات التدريب والبيانات الجديدة. والهدف هو إيجاد التوازن الأمثل بينهما.
كيف تمنع الإفراط في التخصُّص؟
استخدم بيانات تدريب أكثر، واختر نموذجًا أبسط، وطبِّق تقنيات التنظيم (Regularization)، واستخدم التحقق المتقاطع، وأوقف التدريب مبكرًا عند توقف أداء مجموعة التحقق عن التحسُّن. أما بالنسبة للشبكات العصبية، فإن تقنية الإسقاط العشوائي (Dropout) تساعد أيضًا. ويجمع معظم الممارسين عمليًّا بين عدة من هذه التقنيات معًا.
هل تحلّ زيادة البيانات المشكلة دائمًا؟
زيادة البيانات عالية الجودة هي العلاج الأكثر موثوقية، لأنها تجعل عملية الحفظ مستحيلة وتفرض التعلُّم الحقيقي. لكنها ليست دائمًا متاحة — ولذلك تكتسب تبسيط النموذج، وتقنيات التنظيم، والإيقاف المبكر أهميةً بالغة كبدائل عملية.
ما المقصود بتسرب البيانات، وكيف يختلف عن الإفراط في التخصُّص؟
الإفراط في التخصُّص هو تعلُّم النموذج للضوضاء في بيانات التدريب المتاحة بشكل مشروع. أما تسرب البيانات فهو دخول معلومات لا ينبغي أن تكون متاحة — مثل الإحصائيات المستخلصة من مجموعة الاختبار أو ميزة تُشفِّر الإجابة مباشرةً — إلى مرحلة التدريب. وكلا الحالتين ينتجان نفس العرض (درجات ممتازة في الاختبار، وأداء ضعيف في الواقع)، لكن التسرب أشد خُبثًا: فهو يجعل تقييمك نفسه غير موثوق، وبالتالي تفشل آليات كشف الإفراط في التخصُّص المعتادة في اكتشافه. والعلاج هو النظافة البياناتية: قسِّم البيانات أولًا، ثم عالجها، وافحص أي ميزة تبدو تنبؤية أكثر من اللازم.
لماذا يعاني نموذجي من الإفراط في التخصُّص عند ضبط نموذج لغوي كبير (LLM) على مجموعة بيانات صغيرة؟
مجموعات الضبط الدقيق الصغيرة تشكل خطرًا كلاسيكيًّا للإفراط في التخصُّص: فمع قلة الأمثلة، يميل النموذج إلى حفظها بدلًا من تعلُّم النمط الكامن. والعلامة الدالة على ذلك هي انخفاض خسارة التدريب بينما ترتفع خسارة التحقق. أما الحلول القياسية فهي تقليل عدد الدورات التدريبية (غالبًا لا تتجاوز بضعة دورات) مع تفعيل الإيقاف المبكر، واستخدام طريقة فعّالة من حيث المعايير مثل LoRA، التي تقتصر التحديثات على مجموعة صغيرة من الأوزان، وتؤدي وظيفة تنظيم مدمجة تقاوم الحفظ.
هل يُعتبر وجود فجوة صغيرة بين دقة التدريب واختبار مقبولًا؟
نعم. والفجوة الصغيرة أمرٌ طبيعي وصحي — فلا يوجد نموذج يؤدي أداءً متطابقًا تمامًا على البيانات التي رآها مسبقًا مقابل تلك التي لم يرها. أما الإفراط في التخصُّص فيُشار إليه بفجوة كبيرة أو متزايدة ، حيث تستمر دقة التدريب في الارتفاع بينما تتوقف دقة الاختبار عن التحسُّن أو تبدأ في الانخفاض. والسعي وراء فجوة تساوي صفرًا غالبًا ما يؤدي إلى قلة التخصُّص بدلًا من ذلك. وقيِّم النموذج دائمًا بناءً على أدائه على مجموعة الاختبار، واعتبر الفجوة مؤشرًا توجيهيًّا يُنبِّهك إلى اتجاه الأداء، وليس رقمًا يجب القضاء عليه.
الخلاصة
الإفراط في التخصُّص هو الفجوة بين المظهر الجيد والأداء الجيد فعليًّا. فالنموذج الذي يحفظ بيانات التدريب سيذهلك في الاختبارات، لكنه سيخيب ظنك في البيئة التشغيلية الفعلية — فقد تعلَّم الإجابات لا الطريقة.
والدفاع ضد هذه المشكلة بسيط: قيِّم النموذج دائمًا على بيانات لم يرها مطلقًا، وراقب الفجوة بين أداء التدريب والاختبار، ومنع الإفراط في التخصُّص عبر زيادة البيانات، واختيار نماذج أبسط، وتطبيق تقنيات التنظيم، والاستعانة بالتحقق المتقاطع، والإيقاف المبكر. وعندما تتقن هذا التوازن، ستتمكن من بناء نماذج لا تعمل جيدًا فقط على جهازك الشخصي، بل في العالم الحقيقي فعلًا. وللإطلالة على الصورة الأشمل، راجع دليلنا: دليل شامل للتعلُّم الآلي.

