#gradient-descent — الشبكات العصبية
الخسارة تضاريس. يخبرنا التدرج بأي اتجاه هو الأعلى، فنخطو في الاتجاه المعاكس.
ما ستُجرّبه
- مرحبًا بك في #gradient-descent. السطح الذي تراه هو الخسارة
L(x, y)لنموذج بوزنين فقط،xوy: الأزرق = منخفض، الوردي = مرتفع. الكرة هي أوزاننا الحالية. الهدف: بلوغ أخفض نقطة. عدا أن لا أحد يملك الخريطة — نحن نستشعر فقط الميل تحت أقدامنا. هذا الميل هو التدرج∇L. - دحرج الكرة:
/step 10. يُظهر ا لسهم الأحمر-∇L، أي اتجاه الانحدار الأشد. عند كل خطوة نتحرك بمقدارlr × ∇Lفي هذا الاتجاه، ثم نعيد حساب الميل. - يحدّد معدل التعلم (
lr) طول كل خطوة. لنرفعه:/lr 0.9. - الآن،
/step 10. بخطوة كبيرة جدًا، تقفز الكرة فوق القاع، وتحطّ أعلى على الجانب الآخر… وتنطلق في النهاية بعيدًا: تتباعد الخسارة. - على العكس، الخطوة الصغيرة جدًا آمنة… لكنها بطيئة. اضبط
/lr 0.05، ثم سلسل/step 50بحرية: تنخفض الخسارة عند كل خطوة، ومع ذلك لا تزال بعيدًا عن القاع. - الزخم (momentum) يعطي الكرة قصورًا ذاتيًا:
v ← μ·v − lr·∇L، ثمp ← p + v. التعرّجات (التي تعكس إشارتها عند كل خطوة) تُلغى، والخطوات المتّسقة تتراكم. شغّله:/momentum 0.9، ثم/start -2.5 2و/step 40للمقارنة. - الخسائر الحقيقية ليست أوعية. انتقل إلى
/surface hills: انخفاضان، واحد فقط هو الأخفض. شغّل/momentum 0ثم/step 80، ثم غيّر البداية باستخدام/start -2 2وأعد تشغيل/step 80. - تجربتان أخيرتان.
/surface saddle: عند المركز التدرج صفر… ومع ذلك ليست نقطة حد أدنى — شغّل/step 10عدة مرات وشاهد الكرة تفلت./surface valleyمع/momentum 0.7ثم/step 30: هنا يتألق الزخم، في وادٍ منحنٍ يزحف فيه الانحدار المحض. يبقى سؤال واحد: كيف نحصل على∇Lلملايين الأوزان؟ الجواب في قناة #backpropagation.
أوامر القناة
/step <n=1..200>— شغّل n تكرارًا من الانحدار (10 افتراضيًا)./lr <0.001..2>— اضبط معدل التعلم./momentum <0..0.99>— أعطِ الكرة قصورًا ذاتيًا (0 = انحدار تدرجي محض)./surface <bowl|valley|saddle|hills>— غيّر تضاريس الخسارة وأعد الكرة إلى نقطة البداية./start <x=-3..3> <y=-3..3>— حرّك الكرة وامسح المسار./reset— العودة إلى bowl، lr 0.1، بلا زخم.
المسرد
- الانحدار التدرّجي
- خوارزمية تحسين: في كل خطوة نُحرّك الوسائط عكس تدرّج الخسارة،
θ ← θ − η·∇L. إنها «الكرة تتدحرج إلى الأسفل». - التدرّج
- شعاع المشتقّات الجزئية للخسارة بالنسبة لكل وسيط. يشير إلى اتجاه الصعود الأشدّ؛ نتّبع عكسه.
- معدّل التعلّم
- حجم الخطوة
η(إيتا). صغير جدًا: آلاف التكرارات. كبير جدًا: تتجاوز الحدّ الأدنى فتتباعد. الزرّ الأهم عمليًا. - دالة الخسارة
- تقيس الفجوة بين التنبؤات والأهداف (MSE، cross-entropy…). التعلّم هو تصغيرها؛ وسطحها هو المشهد الذي تتدحرج فيه الكرة.
- الحدّ الأدنى المحلّي
- حفرة يصعد فيها كل اتجاه، دون أن تكون أخفض نقطة في السطح. قد يعلق الانحدار التدرّجي هنا.
- نقطة السرج
- نقطة يكون فيها التدرّج صفرًا لكن السطح يصعد في اتجاه وينزل في آخر (شكل سرج الحصان). في الأبعاد العالية أكثر شيوعًا من الحدود الدنيا الحقيقية.
- الزخم
- نحتفظ «بسرعة»: تُراكم كل تحديث تدرّجات ماضية. تتخطّى الكرة الحفر الصغيرة وتتسارع على المنحدرات الطويلة.
- الانحدار التدرّجي العشوائي
- نحسب التدرّج على دفعة صغيرة من الأمثلة (mini-batch) عوض المجموعة كلّها: أرخص، والضوضاء تساعد على الخروج من الحدود الدنيا المحلية.
- التقارب
- اللحظة التي تصبح فيها الخطوات مهملة: لم تعد الخسارة تنخفض. لا يضمن الحدّ الأدنى العام.
قنوات أخرى في الشبكات العصبية
- #neuron — لنفكّك عصبونًا: مداخل، أوزان، مجموع، دالة تفعيل.
- #dropout — تنظيم dropout: الصديق الأفضل للشبكات العميقة.
- #activation — لماذا نحتاج دالة تفعيل؟ ReLU وsigmoid وtanh وLeaky ReLU وGELU وتلاشي التدرج.
- #gradient-descent — الخسارة تضاريس. يخبرنا التدرج بأي اتجاه هو الأعلى، فنخطو في الاتجاه المعاكس.
- #backpropagation — مخطّط الحسابات يُعاد تشغيله معكوسًا: كل عقدة تستقبل ∂L/∂(نفسها) وقاعدة السلسلة تتكفّل بالباقي.
- #overfitting — نموذج كبير على قليل من النقاط: يلتوي حدّ القرار حتى يحفظ الضجيج عن ظهر قلب.
- #cnn-filters — الصورة شبكة من الأرقام. مرشّح 3×3 ينزلق فوقها، يضرب، يجمع: هذا هو الالتفاف.
- #is-it-einstein — هل هذا أينشتاين؟ وجهان يمرّان بماسح شبكة لم تتعلّم سوى أينشتاين: هيثم → لا، أينشتاين → نعم. المشاهدة مجانية؛ التعديل بريميوم.
- #embeddings-3d — الكلمة تصبح متّجهًا: القُرب في الفضاء = القُرب في المعنى، ويمكنك إجراء عمليات حسابية عليها.