تعلم الآلة

الضبط (Regularization) في نماذج تعلم الآلة

هل سبق أن حصلت على نتائج منخفضة بعد تطبيق أحد نماذج تعلم الآلة؟

أين تكمن المشكلة؟ في بياناتك أم في النموذج؟

نتفق جميعاً على أهمية ما قدمته لنا نماذج تعلم الآلة (Machine Learning Models) في العديد من مجالات الحياة، وعلى الانطباع المبهر الذي يظهر علينا بعد تطبيق أحدها. لكن مع الأسف هذا الانبهار قد يتلاشى بعد تطبيق أحد هذه النماذج على أرض الواقع، فليست جميع البيانات بذلك الشكل الذي يجعل هذه النماذج تحقق أفضل النتائج. لتتضح الأمور، يجب أن نعلم أنه عند تطبيق أي نموذج من نماذج تعلم الآلة فنحن أمام ثلاث حالات: حالة نسعى للوصول إليها وهي الأفضل (Optimal or Good Fit)، وحالتين تعدان من المشاكل التي نحاول تفاديها وهما فرط التخصيص (Overfitting) وفرط التعميم (Underfitting) كما هو موضح في الشكل (١).

شكل (١): حالات نماذج تعلم الآلة

ما نهدف إليه في هذه المقالة هو حل مشكلة فرط التخصيص باستخدام طريقة تسمى الضبط (Regularization).

١ فرط التخصيص (Overfitting)

لنتعرف قليلاً على المشكلة التي نسعى لحلها بالإجابة على ما هو فرط التخصيص؟ وما سببه؟

١.١ ما هو فرط التخصيص (Overfitting)؟

شكل (٢): فرط التخصيص (Overfitting)

في عملية تعلم الآلة نقوم بتقسيم البيانات إلى بيانات تدريب (Training data) وبيانات اختبار (Testing data)، فبيانات التدريب تستخدم لتدريب النموذج، وبيانات الاختبار تستخدم لتقييم أداء النموذج على بيانات لم يسبق له أن رآها. وتظهر مشكلة فرط التخصيص عندما يتعلم النموذج على بيانات التدريب بشكل مثالي حيث تكون نسبة الخطأ صغيرة، لكن أداءه يكون منخفضاً ونسبة الخطأ عالية على بيانات الاختبار.

٢.١ لماذا يحدث فرط التخصيص (Overfitting)؟  

من الأسباب التي تؤدي لحدوث مشكلة فرط التخصيص هو زيادة نسبة تعقيد النموذج (Model Complexity). وتختلف أسباب زيادة التعقيد (Complexity) بين نماذج تعلم الآلة، فقد يكون أحد أسبابها هو وجود عدد كبير من الخصائص (Features) مقابل عدد قليل من البيانات (Observations). من العوامل التي تعقّد النموذج أيضاً هي درجة كثيرة الحدود (Degree of Polynomial) التي تمثله، فكلما زادت زاد تعقيد النموذج.

٢ الضبط (Regularization)

يعد الضبط أحد الطرق المستخدمة لحل مشكلة فرط التخصيص، بحيث يقوم بتقليل تأثير معاملات المتغيرات وهذا بدوره سوف يؤدي إلى تقليل نسبة تعقيد النموذج. وبعبارة أخرى يمكن أن نصف عمل الضبط كالمقايضة بين الحصول على نموذج جيد مقابل تصغير قيم معاملات المتغيرات.

شكل (٣): Generalization Problem in Regression

يوجد العديد من أنواع الضبط، ومن أشهرها Ridge وLasso، بالإضافة إلى نوع آخر يعتبر دمج بين هذين النوعين السابقين وهو Elastic-net، وسوف نرى كيف يعمل كل نوع على حدة.

مراجعة: Least Squares Loss Function

سبق أن رأينا الارتباط الخطي المتعدد (Multiple Linear Regression) حيث تكتب معادلته بهذا الشكل:

\hat{y} = \omega _{0} + \omega _{1} \chi _{1}+ . . . + \omega _{n}\chi _{n}

هنا \hat{y} تمثل ما نريد توقعه و\omega هي معاملات المتغيرات (\chi).

عملية تدريب النموذج تتطلب منا حساب نسبة الخطأ، وأحد المعادلات المستخدمة لهذا الغرض هي RSS

(Residual Sum of Squares):

 RSS = \sum_{i=1}^{n} \left (y_{i} - \hat{y_{i}} \right ) ^2 = \sum_{i=1}^{n} \left (y_{i} - \left (\omega0 + \sum_{j=1}^{p} \omega _{j}x_{ij}\right) \right ) ^2 

حيث y هي القيمة الحقيقية و\hat{y} القيمة المتوقعة. الهدف من معادلة RSS هو ضبط قيم المعاملات حتى نحصل على المعاملات التي تعطينا أقل نسبة خطأ.

ما سوف يقوم به الضبط هو إضافة حد جديد إلى معادلة (Cost Function) سواء كانت RSS أو غيرها للحصول على ما يسمى عنصر الضبط (Regularization Component) والذي سيكون مسؤولاً عن عملية ضبط معاملات المتغيرات للنموذج كما في المعادلة التالية:

\lambda: Regularization term وتسمى ايضاً Hyperparameter للنموذج وهي تمثل مقدار التصغير الذي سوف نقوم به على المعاملات نحو الصفر، وسوف يختلف شكل Regularization Component حسب نوع الضبط الذي نطبقه كما سوف نرى.

١.٢ النوع الأول: L2) Ridge)

يعمل Ridge على إضافة مجموع تربيع المعاملات (باستثناء w0) إلى دالة RSS كما هو مظلل باللون الأصفر في المعادلة التالية:

يشمل الحد الأخير (Regularization Component) المتغيرات التالية:

\omega _{j}^{2}تربيع معامل المتغير \chi _{i}.

\sum_{j=1}^{p} \omega _{j}^{2}: مجموع تربيع جميع معاملات المتغيرات.

\lambda_{2}: ثابت يمثل مقدار قوة تأثير الضبط على المعاملات فكلما زادت قيمة \lambda_{2} كلما قلت قيم معاملات المتغيرات.

لتتضح الصورة بشكل أفضل، لنفترض أن لكل متغير قوة معينة نمثلها من خلال معامل هذا المتغير. فقبل تطبيق عملية الضبط ستكون جميع معاملات المتغيرات لها نفس قوة التأثير كما في الشكل التالي:

شكل (٤): قبل تطبيق الضبط (Regularization)

لكن بعد إضافة Ridge إلى معادلة RSS

شكل (٥): بعد تطبيق Ridge

كما نرى في الشكل أعلاه تأثير \lambda_{2} على معاملات المتغيرات، فكلما زادت قيمة \lambda_{2} كلما قلت قيمة معامل المتغير (لكنها لن تصل إلى الصفر أبداً)، حيث إن المتغيرات الأقل أهمية سيكون التأثير عليها أكبر كما نرى مع المتغير \chi _{3}.

ماذا سيحدث لو كانت قيمة \lambda_{2}=0؟

شاركنا إجابتك في التعليقات.

٢.٢ النوع الثاني: L1) Lasso)

يأخذ Lasso شكلاً مختلفاً عن Ridge بتغيير بسيط بالمعادلة، فبدلاً من إضافة المجموع التربيعي لمعاملات المتغيرات إلى معادلة RSS، يضيف Lasso مجموع القيمة المطلقة لمعاملات المتغيرات كما في المعادلة التالية:

كما نلاحظ:

|\omega _{j}|: هو القيمة المطلقة لمعامل المتغير \chi _{i}.

\lambda_{1}كما سبق فهي تمثل مقدار قوة الضبط على معاملات المتغيرات.

شكل (٦): بعد تطبيق Lasso

كما نشاهد بالشكل أعلاه أنه كلما زادت قيمة \lambda_{1} كلما قلت معاملات المتغيرات. ولكن بعكس ما يتبعه Ridge، هنا بعض المعاملات أصبحت قيمتها صفر، كما حصل مع \chi _{2} و\chi _{5}، وكأننا استبعدنا هذين المتغيرين عن نموذج التعلم، وهنا تكمن ميزة Lasso فهو يسمح بعمل ما يسمى باختيار الخصائص (Features Selection).

٣.٢ النوع الثالث: Elastic-net

بكل بساطة يعتبر Elastic-net دمجاً بين النوعين السابقين Lasso وRidge، فهو يعمل على إضافتهما سوياً إلى معادلة RSS كما في المعادلة التالية:

يمكننا ضبط تأثير كل من Lasso وRidge بشكل مستقل، فكما نلاحظ لدينا \lambda_{1} و\lambda_{2} وهذا بدوره يتيح لنا جعل تأثير Lasso أكبر من Ridge، أو العكس.

٣ متى نستخدم كل نوع ( Ridge، Lasso، Elastic Net)؟

يفضل غالباً تطبيق الضبط، خاصة إذا كانت المتغيرات لدينا كثيرة مقارنة بعدد الأمثلة (Observations)، ويكون التفضيل بين أنواع الضبط حسب الآتي:

في حال كنا نود استبعاد المتغيرات غير المفيدة والإبقاء على المهمة منها هنا يفضل اختيار Lasso أو Elastic Net، لأنها تقوم بعملية اختيار الخصائص (Features Selection) وهي تقليل قيم المتغيرات غير المجدية إلى الصفر، ولكن في حال كنا نود فقط ضبط درجات تأثير المتغيرات مع الإبقاء عليها كلها، عندها يكون Ridge الخيار الأفضل.

4 ما يمكننا تحقيقه من خلال عملية الضبط (Regularization)؟

تساعدنا عملية الضبط على حل مشكلة التداخل الخطي (Multicollinearity) في البيانات. وما نقصده بالتداخل الخطي هو أن يكون هناك ترابط عالي (High Correlations) بين المتغيرات المستقلة في النموذج، وهذا يعتبر من المشاكل التي تؤثر على أداء وصحة النموذج بشكل سلبي. ومن النماذج التي تساعدنا على حل هذه المشكلة نموذج Lasso، فهو يستطيع التعامل مع التداخل الخطي بين المتغيرات المستقلة، وقد يكون حله بشكل صارم حيث أنه يلغي المتغيرات الأقل تأثيراً.

وحتى نضمن تنفيذ عملية الضبط بأفضل شكل فيجب علينا اختيار قيمة \lambda (Tuning Parameter) بشكل دقيق، فكما رأينا أنه كلما زدنا من قيمة \lambda كلما تخلصنا أو قللنا من تأثير المتغيرات الأقل أهمية، وبالتالي تخلصنا من مشكلة فرط التخصيص وحصلنا على نموذج بنسبة صحة أكبر. لكن سوف نصل إلى نقطة معينة تكون زيادة قيمة \lambda بعدها تؤدي إلى استبعاد متغيرات مهمة للنموذج، وبالتالي ترتفع نسبة الانحياز (Bias) مما قد يؤدي للوقوع في بمشكلة أخرى وهي فرط التعميم.

كانت هذه أساسيات عملية الضبط بشكل مختصر، فهمها سيساعدك على التعمق بشكل أكبر في هذا المجال.

اظهر المزيد

‫22 تعليقات

  1. ماذا سيحدث لو كانت قيمة \lambda_{2}=0؟

    حسب مافهمت انه راح يتم إستبعاد كل قيم المتغيرات (معاملx) وبهذا راح ينتج عندنا دالة خطية

    1. يمكن يحتاج توضيح، الضبط هنا يتم في دالة التكلفة (cost function) وهي هنا RSS.
      إذا كان lambda_{2}= 0، تكون RSS بدون ضبط لأن حد الضبط سيزول.
      في كلتا الحالتين الانحدار الخطي هو دالة خطية، سواء مع أو بدون ضبط.

  2. ماشاء الله … مقال رائع … وفقكم الله وزادنا وزادكم من علمه وفضله
    محمد عيد … باحث ماجستير في الـ Big Data

  3. المقال رائع والشرح جدا دقيق و واضح لكن قلة الردود نوعا ما محبطه للكاتب ولكن يوما ما ستشاهدون نتيجة هذا العمل الجبار في الترجمة لإنكم من الأوائل فريق الأستاذ فارس لكم كل التحيه

    1. شكراً لك على كلماتك ومشاعرك الطيبة
      أحب التنويه بأن المشاركات المترجمة يتم الإشارة إلى الكاتب الأساسي في بدايتها.
      أغلب المشاركات في الموقع حالياً من الكتاب نفسهم، مثل هذا المقال.
      وسنزيد من المترجم بإذن الله مع الوقت.

    1. اهلاً ملاك شكراً لكلماتك

      الارتباط (Correlation): هو مقياس لمعرفة مدى ارتباط متغيرين ببعض وهل العلاقة بينهم خطية أم لا وله نوعين:
      ١- ارتباط موجب: تكون العلاقة بين المتغيرين بنفس الاتجاه بمعني إذا زاد المتغير الأول زاد المتغير الاخر
      ٢- ارتباط سالب: تكون العلاقة بين المتغيرين متعاكسة بمعني إذا زاد المتغير الأول نقص المتغير الاخر
      وما نقصد بالارتباط العالي (High Correlations) هو أن يكون بين المتغيرات علاقة خطية قوية
      هل الارتباط العالي جيد ام سيء؟
      أولاً يجب أن نوضح أنه يوجد نوعين من المتغيرات:
      ١) متغيرات مستقلة وهي الخصائص التي نعتمد عليها بالتوقع مثل مساحة المنزل وعدد الغرف
      ٢) متغير تابع وهو ما نريد توقعه مثل سعر المنزل
      يعتبر الارتباط العالي سيء عندما يكون بين المتغيرات المستقلة مثلا بين مساحة المنزل وعدد الغرف
      ولكن عندما يكون الارتباط عالي بين المتغيرات المستقلة والمتغير التابع مثلاً بين مساحة المنزل وسعره هنا يعتبر جيد وهو مطلب لنجاح تطبيق الارتباط الخطي.

  4. مقال ممتع وطرح سلس و واضح، شكرًا لجهدك نورة، بارك الله بك و بعلمك.
    وبالنسبة لإجابة السؤال،
    بشكل عام كأننا لم نطبق regularization
    لأن حد regularization سيكون دائمًا صفر.

  5. مقال مبسط وواضح عن Regularization لتعلم الاله، شكرا للكاتبة
    حسب المعادلة اعلاه بعد مساوة اللمدا بالصفر فإنها ستصبح معادلة RSS
    سيتم ضرب قيمة الصفر بجميع معاملات المتغيرات، وبذلك يكون الطرف المتبقي هو معادلة RSS

  6. سلمت أناملك. طرح سلس وجميل.
    عندما تكون Lambda=0 فسوف تصبح قيمة الحد الأخير صفراً ومن ثم نحصل على معادلة الخطأ RSS.

    سؤالي: بالرجوع الى الشكل ٤، تم افتراض أن جميع قيم المعاملات لها نفس قيمة التأثير، لكن في الشكل ٥ اختلفت قيمة هذه المعاملات مع قيم محددة ل Lambda 2 ، وكذلك في الشكل ٦ اختلفت القيم وبعدها أصبح صفراً مع قيم محددة من Lambda1. لماذا و كيف حصل هذا التفاوت في قيم المعاملات w في الشكلين ٥ و ٦ بعد تطبيق الضبط بإستخدام ridge &lasso؟

    1. الله يسلمك شكراً لك

      سبب حدوث هذا التغيير في معاملات المتغيرات هو نتيجة الزيادة بقيمة Lambda فكلما زادت قيمة Lambda أدى هذا للتقليل من قيم المعاملات.
      أتمنى الصورة وضحت

  7. شكرا نورة على شرحك المميز

    اضافة بسيطة
    ‏في العديد من التطبيقات، مثل تحديد الجينات المرتبطة ب مرض ما، نرغب في العثور على جميع المتغيرات المرتبطة، بدلاً من اختيار واحد فقط من كل مجموعة من المتغيرات المشتركة كما يحدث في LASSO وهذه احدى سلبيات الطريقة. ولذلك تم تقديم طريقة Elastic – Net

  8. مقال جميل شكرا لك… من المؤثر الاكبر على وجود “فرط التخصيص” وجود قيم شاذة ببيانات التدريب او بيانات الاختبار

    1. بالفعل القيم الشاذة (outliers) قد تكون سبب بحصول فرط التخصيص خاصة لو كانت البيانات لدينا صغيرة

      القيم الشاذة المؤثرة هي الموجودة في بيانات التدريب لأن النموذج يتدرب عليها

  9. في البداية اشكرك اختي نورة على المقال الثري في نوعه وقيمته .. سؤالي هنا هل القيم الشاذة ( اوت ليرز) تؤثر على فرط التخصيص وكيف يتم التعامل معها كعينة.. هل بالضرورة ان زيادة عدد السمات المستخدمة الهامة في بناء النموذج مع وجود عينة بيانات كبيرة يساعد في التغلب على فرط التخصيص.

    1. اهلاً اخ احمد

      نعم القيم الشاذة (outliers) قد تؤدي لحصول فرط التخصيص وهذا يرجع للخوارزمية المستخدمة (فبعض الخوارزميات تتأثر بالقيم الشاذة أكثر من غيرها) بالإضافة الى حجم البيانات‬

      بالنسبة لكيفية التعامل مع القيم الشاذة فهذا يعتمد على المشكلة التي نعمل عليها ومن الحلول المتبعة: قد تكون بإزالتها او تغيير قيمها (ويوجد عدة طرق لتغيير قيمها مثل: cappingو transformation)
      كما ذكرت التعامل معها يختلف حسب المشكلة.

اترك تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *

زر الذهاب إلى الأعلى