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