ML 101
M06 · L03
الوحدة السادسة

الـ backpropagation

الشبكة غلطت. وبعدين؟ الـ backpropagation (الانتشار الخلفي) بيجاوب على أصعب سؤال في الـ deep learning: أنهي weights مسؤولة عن الغلط، وكل weight المفروض يتغيّر قد إيه بالظبط؟

1 / 13
ML 101
M06 · L03
المشكلة الأساسية

تحديد المسؤولية

ملايين الـ weights، وerror signal واحدة. weight في أول layer مبيأثّرش على الـ output غير عن طريق كل layer فوقه. إزاي توزّع اللوم بالعدل على عشرات المستويات؟ دي الـ credit assignment problem (مشكلة إسناد الفضل).

الإجابة
الـ chain rule
الطريقة
الـ backpropagation
2 / 13
ML 101
M06 · L03
الأساس

الـ chain rule

الـ neural network تركيب متداخل من الـ functions. وgradient الـ loss بالنسبة لأي weight هو حاصل ضرب المشتقات الجزئية على طول المسار من الـ weight ده للـ loss. والحاصل ده بيتحسب بالـ chain rule (قاعدة السلسلة).

الـ chain rule
\frac{\partial L}{\partial z} = \frac{\partial L}{\partial a} \cdot f'(z)
3 / 13
ML 101
M06 · L03
التمريرة الأولى

الـ forward pass: خزّن كل حاجة

الـ forward pass بيحسب الـ prediction — وبيخزّن كل قيمة في النص. الـ pre-activations z[l] والـ activations a[l] في كل layer بتتحفظ في الـ memory. والـ backward pass هيحتاجها عشان يحسب المشتقات المحلية.

تكلفة الـ memory
كل الـ activations المتخزّنة ممكن تاكل gigabytes في الشبكات العميقة — ده تمن الكفاءة
4 / 13
ML 101
M06 · L03
الـ output layer

أول delta

ابدأ من الـ output. الـ error signal δ[L] هي gradient الـ loss مضروب في مشتقة الـ activation function. ومع softmax + cross-entropy، المعادلة بتتبسّط لـ â − y بس — المتوقع ناقص الصح.

delta الـ output
\boldsymbol{\delta}^{[L]} = \nabla_{\mathbf{a}}L \odot f'\!\bigl(\mathbf{z}^{[L]}\bigr)
5 / 13
ML 101
M06 · L03
التمريرة التانية: الخلفي

نشر الإشارة

اعمل projection لـ delta الـ layer اللي بعدها لورا عن طريق matrix الـ weights الـ transpose، وبعدين اضربها عنصر بعنصر في مشتقة الـ activation المحلية. ده بيطلّع δ[l] — الـ recursion الأساسية اللي بتنقل اللوم لورا على كل layer.

delta الـ hidden layer
\boldsymbol{\delta}^{[l]} = \bigl(W^{[l+1]\top}\boldsymbol{\delta}^{[l+1]}\bigr) \odot f'\!\bigl(\mathbf{z}^{[l]}\bigr)
6 / 13
ML 101
M06 · L03
تحديث الـ weights

الـ gradient في إيدك

أول ما δ[l] تبقى معروفة، gradient الـ weight بيبقى على طول: الـ outer product بين δ[l] وactivations الـ layer اللي قبلها. وgradient الـ bias هو δ[l] نفسها. سلّمهم للـ optimizer وهو هيحدّث الـ weights.

gradient الـ weight
\frac{\partial L}{\partial W^{[l]}} = \boldsymbol{\delta}^{[l]}\,\mathbf{a}^{[l-1]\top}
7 / 13
ML 101
M06 · L03
الـ algorithm

لفّة التدريب

  • اختار mini-batch من B مثال
  • الـ forward pass: احسب الـ predictions، وخزّن كل z وa
  • احسب الـ loss على predictions الـ batch قصاد الـ labels
  • الـ backward pass: احسب كل الـ deltas والـ gradients
  • الـ optimizer بيحدّث كل weight — وعيد
8 / 13
ML 101
M06 · L03
المشكلة الأولى

الـ vanishing gradients

كل layer بتضرب الـ gradient في رقم أقل من 1. وأقصى مشتقة للـ sigmoid هي 0.25. بعد 20 layer: 0.2520 ≈ 10−12. الـ layers الأولى بتبطّل تتعلّم خالص — والشبكة بتفقد قدرتها الهرمية. دي الـ vanishing gradients (التدرجات المتلاشية).

الحل
activations الـ ReLU، والـ skip connections، والـ batch normalization، وgates الـ LSTM
9 / 13
ML 101
M06 · L03
المشكلة التانية

الـ exploding gradients

الكارثة العكسية: الـ gradients بتكبر أُسّيًا layer ورا layer. التحديثات بتبقى ضخمة جدًا. التدريب بيتباعد وبتظهر قيم NaN. ومشهورة في الـ recurrent networks مع الـ sequences الطويلة.

الحل
الـ gradient clipping — لو ‖g‖ عدّى الحد، صغّره عشان ‖g‖ = الحد المحدّد
10 / 13
ML 101
اختبار سريع

شوف إيه الليثبت

أربع أسئلة عن الـ backpropagation — توزيع المسؤولية، وتخزين الـ forward pass، وdelta الـ output، والـ vanishing gradients.

السؤال 1 من 0
النتيجة 0/0

11 / 13
ML 101
M06 · L03
الـ weight initialization

البداية الصح

  • كلها أصفار — مشكلة التماثل: كل الـ neurons زي بعض، وعمرهم ما هيختلفوا
  • كبيرة أوي — الـ activations بتتشبّع قبل ما التدريب يبدأ
  • Xavier — scaling بـ 1/√nin؛ لشبكات الـ sigmoid/tanh
  • He — scaling بـ √(2/nin)؛ لشبكات الـ ReLU
12 / 13
ML 101
الخلاصة
مراجعة

اتعلّمت إيه

الـ 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 بعناية.

الوحدة خلصت
الوحدة السابعة: الـ regularization ←
13 / 13