تخطَّ إلى المحتوى

Activation Functions

دوال التنشيط (Activation Functions) Activation Functions

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

دالة التنشيط تطبّق على ناتج الطبقة (مجموع الأوزان × المُدخل + الانحياز) لإنتاج المُخرج الذي يدخل الطبقة التالية. بدونها، طبقات خطية مكدّسة = طبقة خطية واحدة — لا فائدة من العمق. دوال مثل ReLU (max(0,x))، Tanh، Sigmoid تضيف اللاخطية التي تجعل الشبكة قادرة على تمثيل أنماط معقّدة.

ReLU الأكثر استخدامًا للطبقات المخفية: بسيطة حسابيًا، تخفّف مشكلة vanishing gradient مقارنة بـ Sigmoid/Tanh. سلبيتها: ظاهرة Dying ReLU حين تخرج الخلية من التعلّم (تدرّج صفر لكل مُدخل سالب). Leaky ReLU و GELU و SiLU بدائل تعالج هذه الحالة.

لطبقة المُخرج، الاختيار يعتمد على المهمة: Sigmoid لتصنيف ثنائي (احتمال)، Softmax لتصنيف متعدد (احتمالات مجموعها 1)، Linear (بدون تنشيط) للانحدار، Tanh لمُخرج بين -1 و 1.

الصياغة

ReLU(x)      = max(0, x)
LeakyReLU(x) = x if x > 0 else α·x  (α صغير)
Sigmoid(x)   = 1 / (1 + exp(−x))
Tanh(x)      = (exp(x) − exp(−x)) / (exp(x) + exp(−x))
Softmax(xᵢ)  = exp(xᵢ) / Σ exp(xⱼ)

📄 مثال

import torch.nn as nn

# طبقات مخفية ReLU (الأكثر شيوعًا)
hidden = nn.Sequential(
    nn.Linear(64, 32),
    nn.ReLU(),            # تنشيط للطبقة المخفية
    nn.Linear(32, 16),
    nn.LeakyReLU(0.01),   # بديل يحلّ مشكلة Dying ReLU
)

# مُخرج التصنيف الثنائي
binary_out = nn.Linear(16, 1)
activation = nn.Sigmoid()  # يحول الرقم لاحتمال بين 0 و 1

# مُخرج التصنيف المتعدد
multi_out = nn.Linear(16, 10)
softmax = nn.Softmax(dim=1)  # مجموع الاحتمالات = 1

أهم النقاط

النقطةالوظيفة
ReLUmax(0, x) — الافتراضي للطبقات المخفية
LeakyReLUيسمح بتدرّج صغير للقيم السالبة — يحلّ Dying ReLU
GELU / SiLUبدائل حديثة — شائعة في Transformers
Softmaxلطبقة مُخرج التصنيف المتعدد — يحول logits لاحتمالات

💡 نصائح عملية

  • استخدم ReLU أو LeakyReLU للطبقات المخفية كقاعدة عامة — Sigmoid/Tanh للطبقات المخفية تسبب vanishing gradient
  • لا تطبّق تنشيط على مُخرج الانحدار — استخدم Linear (أو nn.Identity) كآخر طبقة

⚠️ أخطاء شائعة

  • تطبيق Softmax داخل خسارة CrossEntropyLoss في PyTorch — nn.CrossEntropyLoss تطبّقها داخليًا، التكرار يسبب خطأ
  • اختيار Sigmoid لمُخرج تصنيف متعدد — يعطي احتمالات مستقلة قد لا مجموعها 1. استخدم Softmax

خصائص ذات صلة

🎓 تريد فهم الصورة الكاملة خطوة بخطوة؟ ابدأ من مسار AI-ML الكامل بالعربي.

📚 للتعمق التقني الكامل بالإنجليزية: PyTorch Documentation