تعلم الآلةمترجم

التعميم في الشبكات العصبية

كاتب المقال: Harsha Bommana   ترجمة: Laila Bashmal   مراجعة: هيا الداود

[المقال الأصلي باللغة الإنجليزية اضغط هنا]

في مجال التعلم العميق عندما نقوم بتدريب شبكة عصبية فإن أداء هذه الشبكة يتوقف على قابليتها للتعميم (generalization)، أي قدرتها على معالجة بيانات جديدة لم تتدرَّب عليها من قبل. تحسين تعميم الشبكة يعتمد على منعها من الوصول لحالة تُعرف بفرط التخصيص (overfitting). سنناقش في هذا المقال كيف يمكن منع الشبكة العصبية من الوصول لحالة فرط التخصيص باستخدام طرق متعددة.

عندما تقوم بتدريب شبكة عصبية لابد من الاهتمام بما يسمى تعميم الشبكة العصبية. يعرّف التعميم بمدى قدرة الشبكة على التعلم من البيانات المقدمة لها وتطبيق ما تعلمته على بيانات أخرى مختلفة. عند تدريب شبكة عصبية ستكون هناك البيانات التي تدربت عليها الشبكة، وبعض البيانات المحجوزة جانباً للتحقق من أداءها. إذا كان أداء الشبكة العصبية جيداً في البيانات المحجوزة جانباً والتي لم تتدرب عليها، عندها يمكننا القول بأن الشبكة قد عُمِّمَت بشكل جيد على البيانات، دعونا نفهم ذلك بمثال.

لنفترض أننا نقوم بتدريب شبكة عصبية لتخبرنا ما إذا كانت صورة معينة تحتوي على كلب أم لا. لنفترض أيضاً أن لدينا مجموعة من الصور لكلاب كل كلب فيها ينتمي لسلالة معينة من ١٢ سلالة مختلفة. سنقوم بتدريب نموذج على صور ١٠ سلالات من الكلاب فقط وسنُبقِي جانباً صور سلالتين اثنتين في الوقت الحالي.

تقسيم صور الكلاب إلى مجموعة تدريب ومجموعة اختبار

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

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

الحديث عن التعميم أسهل قولاً منه عملاً وتطبيقاً، إذ أن تدريب شبكة عصبية عامة هي واحدة من أكثر المهام صعوبة للعاملين في مجال التعلم العميق. هذا يُعزَى لوجود ظاهرة في الشبكات العصبية تعرف بفرط التخصيص. بالعودة لمثالنا إذا كانت الشبكة العصبية قد تدربت على سلالات الكلاب العشرة ورفضت تصنيف سلالات الكلاب الأخرى على أنها كلاب، فإن هذه الشبكة العصبية قد وصلت لحالة من فرط التخصيص. وهذا يعني أنها حفظت السلالات العشرة من الكلاب ولم تتعلمها واعتبرت أنها هي فقط الكلاب. ولذلك فإن الشبكة العصبية تكون قد فشلت في تكوين فهم عام لما تبدو عليه الكلاب. مواجهة هذه المشكلة أثناء تدريب الشبكات العصبية هو ما سنقوم ببحثه في هذا المقال.

تقسيم بياناتنا على أساس مثل السلالة كالمثال السابق ليس متاحاً في الواقع دائماً. لذلك عادة ما نقوم بتقسيم البيانات بحيث نستخدم جزء واحد منها لتدريب النموذج، غالباً ما يكون الجزء الأكبر (يمثل حوالي ٨٠-٩٠٪)، ونستخدم الجزء الباقي لاختباره، هدفنا هو التأكد من أن أداء النموذج على بيانات الاختبار هو تقريباً نفس أداؤه على بيانات التدريب. سنستخدم مقاييس مثل دالة الخسارة (loss function) والدقة لقياس هذا الأداء.

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

١. عدد العوامل (Number of Parameters)

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

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

بنية الشبكة العصبية

في الشكل تمثل كل من W2 ،W1، وW3 مصفوفات الوزن لهذه الشبكة العصبية. ما نود التركيز عليه هنا هو دالة التنشيط (activation function) في هذه المعادلة والتي يتم تطبيقها في كل طبقة. بسبب دوال التنشيط هذه تتصل كل طبقة بشكل غير خطي بالطبقة التالية. مُخرج الطبقة الأولى هو (f (W_1 * X لنفترض أنه يساوي L1، ومخرج الطبقة الثانية هو (f (W_2 * L1 كما نرى هنا بسبب دالة التنشيط f، فإن مُخرج الطبقة الثانية له علاقة غير خطية مع الطبقة الأولى. لذلك في نهاية الشبكة العصبية ستكون للقيمة النهائية Y درجة معينة من اللاخطية بالنسبة للمُدخل X اعتماداً على عدد الطبقات في الشبكة العصبية.

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

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

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

هناك طريقة أخرى يمكن استخدامها لمنع فرط التخصيص وهي استخدام ما يسمى إسقاط الخلايا العصبية.

٢. إسقاط الخلايا العصبية (Dropout Neuron)

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

إسقاط الخلايا العصبية

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

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

تجميع الأوزان

هذه هي الطريقة التي تعمل بها عملية إسقاط الخلايا في الشبكة العصبية، ولكن لماذا يمنع إسقاط الخلايا العصبية فرط التخصيص؟ هناك سببان رئيسيان لهذا الأمر. السبب الأول هو أن إسقاط الخلايا العصبية من الشبكة يُعزز من استقلال الخلية العصبية. وذلك يرجع إلى حقيقة أن الخلايا العصبية المحيطة بخلايا عصبية معينة قد تكون موجودة أو غير موجودة خلال لحظة معينة، بالتالي لا يمكن لهذه الخلية الاعتماد على الخلايا العصبية المحيطة بها. مما يدفعها لأن تكون أكثر استقلالية أثناء عملية التدريب.

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

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

التقنية التالية لتقليل فرط التخصيص هي ضبط الأوزان.

٣. ضبط الأوزان (Weight Regularization)

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

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

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

القاعدة العامة للأوزان في الشبكات العصبية هي أنه كلما زادت قيمة أوزان الشبكة العصبية كلما زاد تعقيد الشبكة العصبية. ولهذا تميل الشبكات العصبية ذات الأوزان الأعلى عموماً إلى فرط التخصيص.

لذلك نحتاج إلى الحد من زيادة الأوزان بحيث لا تزيد أكثر من اللازم، ولكن كيف يمكننا القيام بذلك؟ كما نعلم تحاول الشبكات العصبية دائماً تقليل دالة الخسارة أثناء التدريب، لذا من الممكن أن نقوم بتضمين جزء من الأوزان في دالة الخسارة بحيث تقل الأوزان أيضاً أثناء عملية التدريب، ولكن بالطبع تكون الأولوية لتقليل دالة الخسارة.

هناك طريقتان للقيام بذلك تسمى ضبط L1 وL2. في L1 نأخذ جزءاً صغيراً من مجموع جميع القيم المطلقة للأوزان في الشبكة. في L2 نأخذ جزءاً صغيراً من مجموع جميع القيم التربيعية للأوزان في الشبكة. نضيف هذا الجزء إلى دالة الخسارة الكلية للشبكة العصبية. المعادلات التي تمثل ضبط L1 وL2 تكتب كما يلي:

لامدا هي قيمة تسمح لنا بالتحكم بمدى التغيير المراد للوزن. عندما نضيف ضبط L1  أو L2 إلى دالة الخسارة في الشبكة العصبية، فإن الشبكة ستحاول أيضاً تقليل هذه المصطلحات. وستحد الشبكة من نمو أوزانها نظراً لأن قيمة الأوزان الآن أصبحت جزءاً من دالة الخسارة، والشبكة تحاول دائمًا تقليل دالة الخسارة.

ولكن مالفرق بين L1 و L2؟ في ضبط L1 وعندما ينقص الوزن بسبب الضبط يحاول L1 دفعه إلى أسفل تمامًا إلى القيمة صفر. وبالتالي فإن الأوزان غير المهمة التي لا تسهم كثيراً في الشبكة العصبية ستصبح في النهاية ذات قيمة صفرية. ولكن في حالة L2 نظراً لأن الدالة المربعة تصبح متناسبة عكسياً مع القيم التي تقل عن ١ فإن الأوزان لا يتم دفعها إلى الصفر ولكن يتم دفعها إلى قيم صغيرة. وبالتالي الأوزان غير المهمة سيكون لها قيم ولكن أقل بكثير من البقية.

 

بهذا نكون قد غطينا الطرق المهمة التي تمنع أو تقلل من ظاهرة فرط التخصيص. في التعلم العميق غالباً ما نستخدم مزيجًا من هذه الطرق والأساليب لتحسين أداء شبكاتنا العصبية وتحسين تعميم نماذجنا.

اظهر المزيد

Laila Bashmal

طالبة دكتوراه في هندسة الحاسب الآلي، مهتمة بالمواضيع المتعلقة بتعلم الآلة والرؤية باستخدام الحاسب

اترك تعليقاً

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

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