انتقل إلى المحتوى الرئيسي

جارٍ تحميل المختبر المرئي…

#backpropagationالشبكات العصبية

مخطّط الحسابات يُعاد تشغيله معكوسًا: كل عقدة تستقبل ∂L/∂(نفسها) وقاعدة السلسلة تتكفّل بالباقي.

ما ستُجرّبه

  1. مرحبًا في قناة #backpropagation. على الشاشة: مخطّط حسابي. مدخلان أزرقان x1 وx2، وعصبونان خفيّان ورديّان h1 وh2 (tanh)، ومخرج أخضر o (sigmoid)، وإلى أقصى اليمين الخسارة الصفراء L = ½(o − y)². كلّ وصلة تحمل وزنًا. أوّلًا نحسب من اليسار إلى اليمين، ثم نشتقّ من اليمين إلى اليسار: كل عقدة تستقبل ∂L/∂(نفسها)، وقاعدة السلسلة (chain rule) تتكفّل بالباقي.
  2. لنبدأ بـالتمريرة الأمامية. اكتب /forward: تُضاء القيم من اليسار إلى اليمين، من المدخلات وصولًا إلى الخسارة، وتتحوّل الوصلات المقطوعة إلى اللون الأزرق.
  3. الخسارة صارت معلومة. لنبدأ الرجوع الآن. أوّل خطوة خلفية: ∂L/∂o. اكتب /step.
  4. عقدة أخرى إلى الأمام: ∂L/∂zo = ∂L/∂o · σ'(zo)، مع σ'(zo) = o(1 − o). هذه هي قاعدة السلسلة بأكملها: عند كل عقدة نجتازها للخلف، ضربٌ واحد بالمشتقّة المحلّية. اكتب /step.
  5. النمط دائمًا نفسه، لذلك دع التدرّج يتدفّق حتى المدخلات دفعةً واحدة: /backward. انتبه إلى سُمك الوصلات الحمراء: تدرّجات أوزان الطبقة الأولى (w11، w12، w21، w22) أصغر من تدرّجات المخرج، لأنها مرّت بضربات متتالية أكثر.
  6. أصبحنا نعرف ∂L/∂w لكلّ واحد من المُعامِلات التسعة. لنُحدّثها: w ← w − lr · ∂L/∂w. اكتب /update وقارن الخسارة قبل/بعد في الردّ وفي اللوحة اليمنى.
  7. غيّر الهدف: /target 0. على الشبكة أن تتنبّأ بالقيمة 0 بدل 1. أعِد /forward ثم /backward بحرّية: تتدرّجات تنقلب إشارتها، ويدفع الانحدار التدرّجي الأوزانَ في الاتجاه الآخر.
  8. هذا بالضبط ما يفعله PyTorch عندما تكتب loss.backward(): يُعيد تشغيل مخطّط الحسابات معكوسًا، مشتقّة محلّية واحدة لكل عقدة، ثم يطبّق optimizer.step() عملية /update. العب بحرّية: /input 1.5 -1، /lr 1.5، /reset. بعدها: قناة #overfitting، حيث سنرى ماذا يحصل حين نأخذ الكثير من الخطوات.

أوامر القناة

  • /stepيكشف العملية التالية من المخطّط (أمامًا ثم خلفًا).
  • /forwardينفّذ التمريرة الأمامية كاملةً حتى الخسارة.
  • /backwardينفّذ التمريرة الخلفية كاملةً: كلّ التدرّجات دفعة واحدة.
  • /input <x1=-2..2> <x2=-2..2>يغيّر المدخلين ويُعيد حساب المخطّط.
  • /target <0|1>يغيّر الهدف y (0 أو 1) ويُعيد حساب المخطّط.
  • /updateيطبّق خطوة انحدار تدرّجي واحدة (w ← w − lr · ∂L/∂w) ويُعيد الحساب.
  • /lr <0.01..2>يضبط معدّل التعلّم المستخدَم في /update.
  • /resetيعيد المدخلات والهدف والأوزان والمؤشّر إلى قيمتها الابتدائية.

المسرد

الانتشار الخلفي
خوارزمية تحسب تدرّج الخسارة بالنسبة لكل وزن بنشر الخطأ من المُخرَج إلى المُدخَل مستعملةً قاعدة السلسلة. فعّالة: مرور خلفي واحد يعطي كل التدرّجات.
المرور الأمامي
حساب مُخرَج الشبكة من المُدخَل، طبقةً طبقة. تُحفَظ التنشيطات: سيحتاجها المرور الخلفي.
المرور الخلفي
الرحلة العائدة: انطلاقًا من خطأ المُخرَج، نحسب التدرّجات طبقة بعد أخرى بالعكس.
قاعدة السلسلة
مشتقّة تركيب: (f∘g)' = f'(g)·g'. الانتشار الخلفي ليس إلا تطبيقًا لهذه القاعدة على آلاف الدوال المتداخلة.
دلتا
تدرّج الخسارة بالنسبة إلى ما قبل تنشيط عصبون، δ = ∂L/∂z. يتدفّق من طبقة إلى أخرى؛ تدرّج الوزن هو δ × تنشيط المُدخَل.
التدرّج المحلّي
مشتقّة عقدة بالنسبة إلى مُدخلاتها المباشرة (مثلًا مشتقّة التنشيط). التدرّج الكلّي هو حاصل ضرب التدرّجات المحلية على طول المسار.
الرسم البياني الحسابي
تمثيل العمليات كرسم بياني موجَّه. يبنيه PyTorch وTensorFlow تلقائيًا لاشتقاق أيّ نموذج (الاشتقاق التلقائي).
تحديث الأوزان
ما إن تُعرَف التدرّجات: w ← w − η·∂L/∂w. خطوة انحدار تدرّجي واحدة لكل وزن، دفعةً واحدة.

قنوات أخرى في الشبكات العصبية

  • #neuronلنفكّك عصبونًا: مداخل، أوزان، مجموع، دالة تفعيل.
  • #dropoutتنظيم dropout: الصديق الأفضل للشبكات العميقة.
  • #activationلماذا نحتاج دالة تفعيل؟ ReLU وsigmoid وtanh وLeaky ReLU وGELU وتلاشي التدرج.
  • #gradient-descentالخسارة تضاريس. يخبرنا التدرج بأي اتجاه هو الأعلى، فنخطو في الاتجاه المعاكس.
  • #backpropagationمخطّط الحسابات يُعاد تشغيله معكوسًا: كل عقدة تستقبل ∂L/∂(نفسها) وقاعدة السلسلة تتكفّل بالباقي.
  • #overfittingنموذج كبير على قليل من النقاط: يلتوي حدّ القرار حتى يحفظ الضجيج عن ظهر قلب.
  • #cnn-filtersالصورة شبكة من الأرقام. مرشّح 3×3 ينزلق فوقها، يضرب، يجمع: هذا هو الالتفاف.
  • #is-it-einsteinهل هذا أينشتاين؟ وجهان يمرّان بماسح شبكة لم تتعلّم سوى أينشتاين: هيثم → لا، أينشتاين → نعم. المشاهدة مجانية؛ التعديل بريميوم.
  • #embeddings-3dالكلمة تصبح متّجهًا: القُرب في الفضاء = القُرب في المعنى، ويمكنك إجراء عمليات حسابية عليها.