اذهب إلى المحتوى

السؤال

Recommended Posts

  • 0
نشر

دالة التنشيط ReLU الخيار الافتراضي الأول والأكثر استخدامًا للطبقات المخفية في معظم أنواع الشبكات العصبية، سواء كانت شبكات عصبية عميقة DNNs أو شبكات عصبية التفافية CNNs.

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

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

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

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

أيضًا لو ما تريد تنفيذه يتطلب أن تكون قيم المخرجات في نطاق محدد بين -1 و 1، فبعض أنواع الشبكات العصبية المتكررة RNNs أو مهام توليد النصوص التي تتطلب قيم احتمالية سالبة، بالتالي Tanh مناسبة للطبقة الأخيرة أي طبقة المخرجات.

  • 0
نشر
بتاريخ 19 دقائق مضت قال Ali Ahmed55:

تمام 

بس لو العمود هتنباء بي عبار عن قيمه زي كده 0.0-47.0 فا الافضل في الطبقه الاخير الsigmoid و الا الlinear ؟

إذا كانت القيم مستمرة فالخيار الأفضل هو ال linear حيث أن  الدالة الخطية مناسبة للتنبؤ بقيم مستمرة في نطاق غير محدود مثل 0.0 حتى 47.0. حيث إنها لا تقيد الناتج إلى نطاق معين (مثل 0 إلى 1 في حالة الـ sigmoid).

أما إذا كانت القيم فئوية مثل تصنيفات أو أرقام محددة فيمكنك استخدام softmax (إذا كانت الفئات متبادلة أي إذا كانت الميزة لها فئة واحدة) أو sigmoid (إذا كانت الفئات غير متبادلة أي إذا كانت الميزة لها عدة فئات).

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

ولكن إذا أردت إستخدام sigmoid فيمكنك تحويل القيمة في أخر طبقة للخرج هكذا :

output = 47 × sigmoid

وهنا  سيكون النطاق بين 0 و 47 . فإذا كان ال sigmoid ب 0 سيكون النطاق 0 وإذا كان ال sigmoid ب 1 سيكون النطاق ب 47.

  • 0
نشر

تمام جدا

الف شكراا جدا لحضرتكم

جزاكم الله كل خير

بتاريخ 23 دقائق مضت قال محمد عاطف17:

إذا كانت القيم مستمرة فالخيار الأفضل هو ال linear حيث أن  الدالة الخطية مناسبة للتنبؤ بقيم مستمرة في نطاق غير محدود مثل 0.0 حتى 47.0. حيث إنها لا تقيد الناتج إلى نطاق معين (مثل 0 إلى 1 في حالة الـ sigmoid).

أما إذا كانت القيم فئوية مثل تصنيفات أو أرقام محددة فيمكنك استخدام softmax (إذا كانت الفئات متبادلة أي إذا كانت الميزة لها فئة واحدة) أو sigmoid (إذا كانت الفئات غير متبادلة أي إذا كانت الميزة لها عدة فئات).

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

ولكن إذا أردت إستخدام sigmoid فيمكنك تحويل القيمة في أخر طبقة للخرج هكذا :

output = 47 × sigmoid

وهنا  سيكون النطاق بين 0 و 47 . فإذا كان ال sigmoid ب 0 سيكون النطاق 0 وإذا كان ال sigmoid ب 1 سيكون النطاق ب 47.

أ.محمد

هي توزيع البيانات عندي كده

efs_combined
0.0     13268
5.8       329
5.5       326
5.2       322
5.6       317
        ...
27.7        1
24.1        1
37.6        1
21.8        1
17.2        1

 

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...