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

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

#gradient-descentالشبكات العصبية

الخسارة تضاريس. يخبرنا التدرج بأي اتجاه هو الأعلى، فنخطو في الاتجاه المعاكس.

ما ستُجرّبه

  1. مرحبًا بك في #gradient-descent. السطح الذي تراه هو الخسارة L(x, y) لنموذج بوزنين فقط، x وy: الأزرق = منخفض، الوردي = مرتفع. الكرة هي أوزاننا الحالية. الهدف: بلوغ أخفض نقطة. عدا أن لا أحد يملك الخريطة — نحن نستشعر فقط الميل تحت أقدامنا. هذا الميل هو التدرج ∇L.
  2. دحرج الكرة: /step 10. يُظهر السهم الأحمر -∇L، أي اتجاه الانحدار الأشد. عند كل خطوة نتحرك بمقدار lr × ∇L في هذا الاتجاه، ثم نعيد حساب الميل.
  3. يحدّد معدل التعلم (lr) طول كل خطوة. لنرفعه: /lr 0.9.
  4. الآن، /step 10. بخطوة كبيرة جدًا، تقفز الكرة فوق القاع، وتحطّ أعلى على الجانب الآخر… وتنطلق في النهاية بعيدًا: تتباعد الخسارة.
  5. على العكس، الخطوة الصغيرة جدًا آمنة… لكنها بطيئة. اضبط /lr 0.05، ثم سلسل /step 50 بحرية: تنخفض الخسارة عند كل خطوة، ومع ذلك لا تزال بعيدًا عن القاع.
  6. الزخم (momentum) يعطي الكرة قصورًا ذاتيًا: v ← μ·v − lr·∇L، ثم p ← p + v. التعرّجات (التي تعكس إشارتها عند كل خطوة) تُلغى، والخطوات المتّسقة تتراكم. شغّله: /momentum 0.9، ثم /start -2.5 2 و/step 40 للمقارنة.
  7. الخسائر الحقيقية ليست أوعية. انتقل إلى /surface hills: انخفاضان، واحد فقط هو الأخفض. شغّل /momentum 0 ثم /step 80، ثم غيّر البداية باستخدام /start -2 2 وأعد تشغيل /step 80.
  8. تجربتان أخيرتان. /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الكلمة تصبح متّجهًا: القُرب في الفضاء = القُرب في المعنى، ويمكنك إجراء عمليات حسابية عليها.