الـ backpropagation
الشبكة غلطت. وبعدين؟ الـ backpropagation (الانتشار الخلفي) بيجاوب على أصعب سؤال في الـ deep learning: أنهي weights مسؤولة عن الغلط، وكل weight المفروض يتغيّر قد إيه بالظبط؟
تحديد المسؤولية
ملايين الـ weights، وerror signal واحدة. weight في أول layer مبيأثّرش على الـ output غير عن طريق كل layer فوقه. إزاي توزّع اللوم بالعدل على عشرات المستويات؟ دي الـ credit assignment problem (مشكلة إسناد الفضل).
الـ chain rule
الـ neural network تركيب متداخل من الـ functions. وgradient الـ loss بالنسبة لأي weight هو حاصل ضرب المشتقات الجزئية على طول المسار من الـ weight ده للـ loss. والحاصل ده بيتحسب بالـ chain rule (قاعدة السلسلة).
الـ forward pass: خزّن كل حاجة
الـ forward pass بيحسب الـ prediction — وبيخزّن كل قيمة في النص. الـ pre-activations z[l] والـ activations a[l] في كل layer بتتحفظ في الـ memory. والـ backward pass هيحتاجها عشان يحسب المشتقات المحلية.
أول delta
ابدأ من الـ output. الـ error signal δ[L] هي gradient الـ loss مضروب في مشتقة الـ activation function. ومع softmax + cross-entropy، المعادلة بتتبسّط لـ â − y بس — المتوقع ناقص الصح.
نشر الإشارة
اعمل projection لـ delta الـ layer اللي بعدها لورا عن طريق matrix الـ weights الـ transpose، وبعدين اضربها عنصر بعنصر في مشتقة الـ activation المحلية. ده بيطلّع δ[l] — الـ recursion الأساسية اللي بتنقل اللوم لورا على كل layer.
الـ gradient في إيدك
أول ما δ[l] تبقى معروفة، gradient الـ weight بيبقى على طول: الـ outer product بين δ[l] وactivations الـ layer اللي قبلها. وgradient الـ bias هو δ[l] نفسها. سلّمهم للـ optimizer وهو هيحدّث الـ weights.
لفّة التدريب
- اختار mini-batch من B مثال
- الـ forward pass: احسب الـ predictions، وخزّن كل z وa
- احسب الـ loss على predictions الـ batch قصاد الـ labels
- الـ backward pass: احسب كل الـ deltas والـ gradients
- الـ optimizer بيحدّث كل weight — وعيد
الـ vanishing gradients
كل layer بتضرب الـ gradient في رقم أقل من 1. وأقصى مشتقة للـ sigmoid هي 0.25. بعد 20 layer: 0.2520 ≈ 10−12. الـ layers الأولى بتبطّل تتعلّم خالص — والشبكة بتفقد قدرتها الهرمية. دي الـ vanishing gradients (التدرجات المتلاشية).
الـ exploding gradients
الكارثة العكسية: الـ gradients بتكبر أُسّيًا layer ورا layer. التحديثات بتبقى ضخمة جدًا. التدريب بيتباعد وبتظهر قيم NaN. ومشهورة في الـ recurrent networks مع الـ sequences الطويلة.
البداية الصح
- كلها أصفار — مشكلة التماثل: كل الـ neurons زي بعض، وعمرهم ما هيختلفوا
- كبيرة أوي — الـ activations بتتشبّع قبل ما التدريب يبدأ
- Xavier — scaling بـ 1/√nin؛ لشبكات الـ sigmoid/tanh
- He — scaling بـ √(2/nin)؛ لشبكات الـ ReLU
اتعلّمت إيه
الـ backpropagation = الـ chain rule متطبّقة لورا. الـ forward pass بيخزّن الـ activations؛ والـ backward pass بيحسب الـ deltas layer ورا layer. delta الـ output هي â−y مع softmax+CE. وdelta الـ hidden بتتعمل لها projection عن طريق WT وبعدين بتتضرب في f′(z). والـ gradients هي الـ outer products. وخد بالك من الـ vanishing والـ exploding gradients، واعمل initialization للـ weights بعناية.