#overfitting — الشبكات العصبية
نموذج كبير على قليل من النقاط: يلتوي حدّ القرار حتى يحفظ الضجيج عن ظهر قلب.
ما ستُجرّبه
- مرحبًا في قناة #overfitting. على المسرح: 30 نقطة مشوّشة — الوردية للصنف 0، والزرقاء للصنف 1 — وشبكة MLP بمعماريّة
2-32-32-1وحوالي 1200 مُعامِل، كبيرة بشكل مفرط لثلاثين مثالًا. حدّ القرار هو الخطّ الذي يتردّد فيه النموذج (p = 0.5): وردي في جهة، وأزرق في الجهة الأخرى. للآن الخلفية موحّدة: لم يتعلّم النموذج شيئًا بعد. - اكتب
/train 30. يظهر حدّ القرار، وهو ما زال ناعمًا ومعقولًا: يفصل الهلالين بشكل تقريبي دون التوقّف عند الاستثناءات. - استمرّ:
/train 200. النموذج لديه سعة كافية لملاحقة كل نقطة مشوّشة: يلتوي حدّ القرار وتظهر مجسّات. تصعد دقّة التدريب نحو 100% بينما تتوقّف دقّة التحقّق أو تتراجع. - اكتب
/valلعرض نقاط التحقّق الثلاثمئة (صغيرة، شبه شفّافة) التي لم يرها النموذج أبدًا. كثيرٌ منها يقع على الجانب الخاطئ من المجسّات: هذه هي كلفة الحفظ عن ظهر قلب. - الحلّ رقم 1: مزيد من البيانات. اكتب
/points 200، ثم أعِد/train 200وقارِن. مع 200 مثال يتوسّط الضجيج نفسه: النموذج ذاته لم يعد يملك ما يكفي من قوّة لحفظ كل استثناء. - الحلّ رقم 2: نموذج أصغر. عُد إلى القليل من النقاط بـ
/points 30، ثم اكتب/size 2-4-1ثم/train 200. أربعة عصبونات لا تكفي لحفظ ثلاثين نقطة: يبقى حدّ القرار بسيطًا. - الحلّان رقم 3 و4: dropout (قناة #dropout) والإيقاف المبكر — توقّف بمجرّد أن تصعد خسارة التحقّق مجدّدًا؛ الخطّ المتقطّع في اللوحة اليمنى يُشير إلى تلك اللحظة. جرّب بحرّية:
/noise 0.8،/dataset circles،/size 2-64-64-64-1،/reset. بعدها: #cnn-filters، حيث تصبح الأنماط المُتعلَّمة مرئيّة.
أوامر القناة
/train <epochs=1..300>— يواصل تدريب النموذج الحالي (lr 0.05، ReLU، مخرج sigmoid)./size <2-…-1>— يغيّر المعمارية (مثل 2-4-1، 2-32-32-1، 2-64-64-64-1) ويبدأ من الصفر./points <10..300>— يغيّر عدد نقاط التدريب (يبقى التحقّق عند 300) ويبدأ من الصفر./noise <0..0.8>— يغيّر ضجيج البيانات (يُعاد توليد التدريب والتحقّق) ويبدأ من الصفر./dataset <moons|circles|xor>— يغيّر مجموعة البيانات ثنائية الأبعاد ويبدأ من الصفر./val— يُظهر أو يُخفي نقاط التحقّق في المشهد./reset— العودة إلى الحالة الابتدائية: moons، 30 نقطة، 2-32-32-1، لا تدريب.
المسرد
- فرط التخصيص
- يحفظ النموذج أمثلة التدريب (حتى ضوضاءها) بدل تعلّم القاعدة: أداء ممتاز على التدريب وضعيف على البيانات الجديدة. يلتوي الحدّ حول كل نقطة.
- قصور التخصيص
- النموذج أبسط من أن يستوعب بنية البيانات: أداء ضعيف في كل مكان، وحدٌّ ناعم أكثر من اللازم. الحلّ: سعة أكبر، تدريب أطول، سمات أفضل.
- التعميم
- قدرة النموذج على التنبؤ جيدًا ببيانات لم يرَها أبدًا. هذا الهدف الوحيد الذي يهمّ؛ خسارة التدريب مجرّد إشارة.
- مقايضة التحيّز-التباين
- التحيّز = خطأ نموذج مفرط البساطة؛ التباين = حساسية لبيانات التدريب (نموذج مفرط المرونة). سعة أكبر تُنقص التحيّز وتزيد التباين: نبحث عن التوازن.
- مجموعة التحقّق
- بيانات موضوعة جانبًا لقياس التعميم أثناء التدريب واختيار الفرط-وسائط. مختلفة عن مجموعة الاختبار المحفوظة للحكم النهائي.
- الإيقاف المبكر
- أوقف التدريب حين تتوقّف خسارة التحقّق عن الانخفاض، حتى لو استمرّت خسارة التدريب في الهبوط: تنظيم مجاني.
- السعة
- ثراء الدوال التي يستطيع نموذج تمثيلها (عدد الوسائط، العمق). سعة أكبر = خطر فرط تخصيص إذا كانت البيانات قليلة.
- الضوضاء
- الجزء من البيانات الذي لا يتّبع أيّ قاعدة (أخطاء قياس، عشوائية). نموذج يتعلّمها يُفرِط في التخصيص بحكم التعريف.
قنوات أخرى في الشبكات العصبية
- #neuron — لنفكّك عصبونًا: مداخل، أوزان، مجموع، دالة تفعيل.
- #dropout — تنظيم dropout: الصديق الأفضل للشبكات العميقة.
- #activation — لماذا نحتاج دالة تفعيل؟ ReLU وsigmoid وtanh وLeaky ReLU وGELU وتلاشي التدرج.
- #gradient-descent — الخسارة تضاريس. يخبرنا التدرج بأي اتجاه هو الأعلى، فنخطو في الاتجاه المعاكس.
- #backpropagation — مخطّط الحسابات يُعاد تشغيله معكوسًا: كل عقدة تستقبل ∂L/∂(نفسها) وقاعدة السلسلة تتكفّل بالباقي.
- #overfitting — نموذج كبير على قليل من النقاط: يلتوي حدّ القرار حتى يحفظ الضجيج عن ظهر قلب.
- #cnn-filters — الصورة شبكة من الأرقام. مرشّح 3×3 ينزلق فوقها، يضرب، يجمع: هذا هو الالتفاف.
- #is-it-einstein — هل هذا أينشتاين؟ وجهان يمرّان بماسح شبكة لم تتعلّم سوى أينشتاين: هيثم → لا، أينشتاين → نعم. المشاهدة مجانية؛ التعديل بريميوم.
- #embeddings-3d — الكلمة تصبح متّجهًا: القُرب في الفضاء = القُرب في المعنى، ويمكنك إجراء عمليات حسابية عليها.