فهم مبدأ عمل MLP
إذا كنت على دراية بخوارزمية المستقلات Perceptron Algorithm، فإننا في المستقبلات فقط نضرب الأوزان Weights في المدخلات Inputs و نضيف الانحياز Bias، لكننا نقوم بذلك فقط في طبقة واحدة.
حيث نقوم بتحديث الاوزان عندما نجد خطأ في التصنيف. معادلة تحديث الوزن كالتالي
الوزن = الوزن السابق + معدل التعلم *( القيمة المتوقعه – القيمة التي تم ايجادها ) * قيمة المدخل
weight = weight + learning_rate * (expected – predicted) * x
الآن لنرى إل MLP أو الشبكة العصبية ذات التغذية الأمامية (Feed Forward Neural Network (FFNN
في MLP، يمكن أن يكون هناك أكثر من طبقة خطية واحدة (مجموعات من العصبونات). إذا أخذنا المثال البسيط للشبكة المكونة من ثلاث طبقات، فستكون الطبقة الأولى هي طبقة المدخل input layer، الطبقة الوسطى الطبقة المخفية hidden layer، و الطبقة الاخيرة طبقة المخرج output layer. نقوم بتغذية طبقة المدخل ببيانات الإدخال الخاصة بنا ونحصل على النتائج من طبقة المخرج. يمكننا زيادة عدد الطبقة المخفية بقدر ما نشاء، لجعل النموذج أكثر دقة و تعقيدا وفقًا للمهمة التي نريد إنجازها.
المخرج طبقة المخرج الطبقة المخفية 2 الطبقة المخفية 1 طبقة المدخل المدخل
الشبكة العصبية ذات التغذية الأمامية FFNN، تعتبر أكثر نماذج الشبكات العصبية شيوعًا. وظيفتها الاساسية هي تقريب بعض الدوال ()f. على سبيل المثال ، المصنف classifier الذي يربط المدخل x لفئة المخرج y، حيث MLP تجد أفضل تقريب لهذا المصنف classifier عن طريق تحديد العلاقة
و معرفة أفضل قيمة للمعامل ذاك. تتكون شبكات MLP من العديد من الدوال التي يتم ربطها معًا. ستشكل شبكة بثلاث وظائف أو طبقات
. تتكون كل طبقة من هذه الطبقات من وحدات تقوم بالتحويل التآلفي affine transformation للمجموع الخطي لقيم المدخلات. يتم تمثيل كل طبقة على أنها.
حيث f هي دالة التنشيط، W هي الأوزان في الطبقة ، x هي متجه قيم المدخل، والذي يمكن أن يكون أيضًا ناتج الطبقة السابقة ، و b هو قيمة التحيز.
تتكون طبقات MLP من عدة طبقات متصلة بعضها ببعض لأن كل وحدة في الطبقة متصلة بجميع الوحدات في الطبقة السابقة. في طبقة متصلة بالكامل ، تكون عوامل كل وحدة مستقلة عن بقية الوحدات في الطبقة ، وهذا يعني أن كل وحدة تمتلك مجموعة مختلفة من الأوزان.
في نظام التصنيف الخاضع للإشراف ، يرتبط كل متجه من متجهات المدخل بعلامة او ملصق ويتم تحديد تعريف صنفه أو ملصقه مع البيانات. يعطي ناتج الشبكة درجة أو توقع لكل فصل. لقياس أداء المصنف classifier، يتم ايجاد دالة الفقد loss function. سيكون الفقد عالي إذا لم تتوافق القيمة المتوقعة مع القيمة الحقيقية ، فستكون منخفضة بخلاف ذلك.
في بعض الأحيان تحدث مشكلة الإفراط في الملائمة في وقت تدريب النموذج. في هذه الحالة، يعمل النموذج بشكل جيد جدًا على بيانات التدريب ولكن ليس على بيانات الاختبار. من أجل تدريب الشبكة، يلزم إجراء تحسين لذلك نحتاج إلى دالة الفقد loss function و المنظم optimizer. هذا الإجراء يجد قيم مجموعة الأوزان W التي تقلل من دالة الفقد loss functططion.
الإستراتيجية الشائعة التي يتم تطبيقها هي تهيئة الأوزان للقيم العشوائية وتحسينها بشكل متكرر للحصول على فقد أقل. يتم تحقيق هذا التحسين من خلال التحرك في الاتجاه المحدد بواسطة ميل دالة الفقد loss function gradient. ومن المهم معرفة معدل التعلم الذي يحدد عدد الخطوات الذي تتحرك فيه الخوارزمية في كل تكرار.
دالة التنشيط Activation function:
تعرف دالة التنشيط أيضًا بانها دالة غير خطية، وتصف العلاقات بين المدخلات والمخرجات بطريقة غير خطية. وهذا يعطي القوة النموذجية لتكون أكثر مرونة في وصف العلاقات المعقدة. فيما يلي بعض دوال التنشيط الشائعة Sigmoid و Relu و TanH.
تدريب النموذج Training the Model:
هناك ثلاث خطوات أساسية يجب اتباعها عن تدريب النموذج.
1- تمرير إلى الأمام
في هذه الخطوة من تدريب النموذج ، نقوم بتمرير المدخلات إلى النموذج وضربهن بالأوزان وإضافة قيمة التحيز في كل طبقة والعثور على المخرجات التي تم حسابها للنموذج.
2- حساب نسبة الخطأ أو الفقد
بمقارنة المخرجات التي تم تخمينها Predicted output مع البيانات المتوقع الحصول عليها Expected output، نحسب الفقد أو نسبة الخطأ التي يتعين علينا إعادة نشرها (باستخدام خوارزمية Backpropagation). هناك العديد من دوال الفقد التي نستخدمها بناءً على مخرجاتنا ومتطلباتنا.
3- الانتشار الخلفي Backpropagation
نصائح يمكنك أستخدامها عند تدريب MLP
اللاخطية Nonlinearity
دالتان اثنتان من أكثر الدوال شيوعًا هما دالة و دالة
. للأسباب الموضحة في القسم 4.4 ، يفضل الدوال اللاخطية المتناظرة حول المنشا لأنها تميل إلى إخراج مدخلات متوسطة الصفر zero-mean inputs للطبقة التالية (وهي خاصية مرغوبة). تجريبيا ، دالة
لها خصائص تقارب أفضل.
تهيئة الوزن Weight initialization
عند التهيئة ، نريد أن تكون الأوزان صغيرة بما يكفي حول المنشأ بحيث تعمل دالة التنشيط في نظامها الخطي ، حيث ان قيم الميل gradient تكون الاكبر. يوجد أيضا خصائص أخرى غير مرغوب بها، خاصة في الشبكات العميقة ، هي الحفاظ على تباين التنشيط وكذلك تباين الميل المنتشرة خلفيا back-propagated gradients من طبقة إلى أخرى. وهذا يسمح بتدفق المعلومات بشكل جيد لأعلى ولأسفل في الشبكة ويقلل التناقضات و الاختلافات بين الطبقات. في ظل بعض الافتراضات ، يؤدي الحل الوسط بين هذين التقيدين إلى التهيئة التالية:
لدالة tanh
uniform[-6fanin+fanout,6fanin+fanout]لدالة sigmoid
حيث أن:
fanout عدد الوحدات المخفية the number of hidden units –
faninعدد المدخلات the number of inputs.
معدل التعلم Learning rate
الحل الأبسط و الامثل هو الحصول على معدل ثابت. القاعدة الأساسية: جرب عدة قيم متباعدة في السجل
(10-1,10-2,…)وقم بتضييق بحث الشبكة (اللوغاريتمية) logarithmic) grid search) إلى النقطة التي تحصل عندها على أدنى نسبة خطأ validation error.
أحيانًا يكون تقليل معدل التعلم بمرور الوقت فكرة جيدة. إحدى القواعد البسيطة للقيام بذلك هي
μ01+d×tحيث
μ0هو القيمة الاولية لمعدل التعلم (يتم اختياره عادتا باستخدام تقنية البحث عن الشبكة الموضحة أعلاه) ، d هو ثابت التقليل decrease constant الذي يتحكم في المعدل الذي يقل فيه معدل التعلم (عادة ، رقم موجب
10-3 وأصغر) و t هي الدورة epoch/المرحلة stage.
عدد الوحدات المخفية hidden units
هذالعامل الفائق hyper-parameter يعتمد بشكل كبير على مجموعة البيانات.أي كلما كان توزيع المدخلات أكثر تعقيدًا ، زادت السعة التي ستحتاجها الشبكة لوضع نموذج لها ، وبالتالي كلما زاد عدد الوحدات المخفية التي ستكون مطلوبة (لاحظ أن عدد الأوزان في طبقة ما يساوي ( D هو عدد المدخلات و Dh هو عدد الوحدات المخفية). ما لم نستخدم بعض أنظمة التسوية (التوقف المبكر early stopping أو L1/L2 penalties ) ، سيكون العدد المثالي للوحدات المخفية مقابل الرسم البياني لأداء التعميم generalization performance graph على شكل حرف U.
معامل التنظيم Regularization parameter
القيم النموذجية التي ينبغي تجربتها لمعامل التنظيم
λهي
10-2,10-3,….. في الإطار الذي وصفناه حتى الآن ، فإن تحسين هذه المعامل لن يؤدي إلى حلول أفضل بكثير ، ولكنه يستحق الاستكشاف.
المصادر
1- Medium. (12.04.2020). Understanding of Multilayer perceptron (MLP)
https://medium.com/@AI_with_Kain/understanding-of-multilayer-perceptron-mlp-8f179c4a135f
2- deeplearning. (12.04.2020). Multilayer Perceptron
http://deeplearning.net/tutorial/mlp.html