أطر عمل الشبكات العصبية
مثل ما تعلمنا، عشان ندرّب الشبكات العصبية بكفاءة نحتاج نسوي شغلتين:
- نتعامل مع الموترات؛ مثلًا نضربها ونجمعها ونحسب عليها دوال مثل sigmoid أو softmax
- نحسب تدرجات كل التعابير عشان نطبّق تحسين الانحدار المتدرج
مكتبة numpy تقدر تسوي الجزء الأول، لكننا نحتاج آلية تحسب التدرجات. في إطار العمل اللي بنيناه بالقسم السابق، اضطرينا نبرمج مشتقات كل الدوال يدويًا داخل الدالة backward اللي تنفّذ الانتشار العكسي. والأفضل إن إطار العمل يحسب لنا تدرجات أي تعبير نعرّفه.
بعد، من المهم نقدر ننفّذ الحسابات على GPU، أو على وحدات حوسبة متخصصة ثانية مثل TPU. تدريب الشبكات العصبية العميقة يحتاج حسابات كثيرة، لذلك توزيع هالحسابات وتشغيلها بالتوازي على أكثر من GPU يفرق كثير.
✅ كلمة «بالتوازي» هنا تعني إننا نوزّع الحسابات على عدة أجهزة.
مسارا إطار العمل المستخدمان في هالدورة هما TensorFlow وPyTorch. وتوفر Keras 3 واجهة نماذج عالية المستوى تشتغل فوق TensorFlow أو JAX أو PyTorch. ولثبات التجارب، تستخدم دفاتر Keras في هالنسخة خلفية TensorFlow إلا إذا قال الدفتر غير كذا.
واجهات الإطار الأصلية تعطيكم تحكمًا مباشرًا في العمليات وحلقة التدريب. أما واجهات النماذج الأعلى مستوى فتنظم الطبقات والخسائر والمحسّنات والتدريب المعتاد. تقدرون تخلطون المستويين عند الحاجة؛ مثلًا تبنون طبقة مخصصة ثم تدربون النموذج باستخدام fit أو حلقة تدريب مخصصة.
وش بنتعلم
في هالدورة نوفر أغلب المحتوى بمساري PyTorch وTensorFlow. اختاروا المسار من لوحة الدورة واثبتوا عليه داخل الدرس؛ وتقدرون تبدّلون للمقارنة من غير ما يضيع تقدمكم.
كل ما أمكن بنستخدم واجهات API عالية المستوى لأنها أبسط. لكن فهم الشبكات العصبية من الأساس مهم، لذلك نبدأ بواجهة API منخفضة المستوى والموترات. وإذا تبون تنطلقون بسرعة وما ودكم تتعمقون بهالتفاصيل من البداية، عادي تتجاوزونها وتروحون مباشرة لدفاتر الـ APIs عالية المستوى.
✍️ تمارين: أطر العمل
كمّلوا التعلّم في الدفاتر هذي:
بعد ما تتمكنون من أطر العمل، خلونا نراجع مفهوم فرط التكيّف.
فرط التكيّف
فرط التكيّف مفهوم أساسي جدًا في تعلم الآلة، ومن المهم نفهمه مضبوط.
خلونا نفترض إننا نبي نقرّب 5 نقاط—يمثلها الرمز x في الرسمين تحت:
وصف الشكل: نموذج خطي | > وصف الشكل: فرط التكيّف
-------------------------|--------------------------
نموذج خطي، معاملان 2 | نموذج غير خطي، معاملات 7
خطأ التدريب = 5.3 | خطأ التدريب = 0
خطأ التحقق = 5.1 | خطأ التحقق = 20
- على اليسار نشوف تقريب زين بخط مستقيم. عدد المعاملات مناسب، لذلك النموذج التقط النمط العام لتوزيع النقاط.
- على اليمين النموذج أقوى من اللازم. عندنا 5 نقاط والنموذج فيه 7 معاملات، فيقدر يضبط نفسه ويمر بكل النقاط ويخلّي خطأ التدريب 0. لكن كذا ما يتعلم النمط الصحيح وراء البيانات، ولذلك يصير خطأ التحقق عالي جدًا.
المهم نوازن بين سعة النموذج—أي عدد معاملاته—وعدد عينات التدريب.
ليه يصير فرط التكيّف
- بيانات التدريب قليلة
- النموذج أقوى من المطلوب
- التشويش في بيانات الإدخال كثير
كيف نكتشف فرط التكيّف
مثل ما يوضح الرسم فوق، نكتشف فرط التكيّف لما يكون خطأ التدريب منخفض جدًا وخطأ التحقق مرتفع. غالبًا أثناء التدريب نشوف الخطأين ينزلون بالبداية، ثم يوقف خطأ التحقق عن النزول ويبدأ يرتفع. هذي علامة على فرط التكيّف، وتعني إن الأفضل نوقف التدريب عند هالنقطة—أو على الأقل نحفظ لقطة من النموذج.
وصف الشكل: منحنى فرط التكيّف
كيف نمنع فرط التكيّف
إذا لاحظنا فرط التكيّف، نقدر نسوي واحد من هالحلول:
فرط التكيّف ومقايضة التحيز والتباين
فرط التكيّف حالة خاصة من مشكلة إحصائية أعم اسمها مقايضة التحيز والتباين. وإذا تأملنا مصادر الخطأ المحتملة في النموذج، بنلقى نوعين:
- خطأ التحيز يصير لما الخوارزمية ما تقدر تلتقط العلاقة بين بيانات التدريب بشكل صحيح. وقد يكون السبب إن النموذج مب قوي بما يكفي، وهذا يسمّى قصور التكيّف.
- خطأ التباين يصير لما النموذج يقرّب التشويش الموجود في بيانات الإدخال بدل العلاقة المفيدة، وهذا هو فرط التكيّف.
أثناء التدريب ينخفض خطأ التحيز لأن النموذج يتعلم تقريب البيانات، بينما يرتفع خطأ التباين. عشان نمنع فرط التكيّف، نوقف التدريب بالوقت المناسب: يدويًا إذا اكتشفناه، أو آليًا باستخدام التنظيم.
الخلاصة
بهالدرس قارنتوا بين سير العمل في مساري TensorFlow وPyTorch، وبين واجهات الإطار الأصلية وواجهات النماذج الأعلى مستوى. وتعلمتوا بعد مفهوم مهم جدًا: فرط التكيّف.
🚀 التحدي
بتلقون «مهام» في آخر الدفاتر المرفقة؛ امشوا على الدفاتر ونفّذوا هالمهام.
المراجعة والتعلّم الذاتي
ابحثوا عن المواضيع هذي:
- TensorFlow
- PyTorch
- فرط التكيّف
واسألوا أنفسكم:
- وش الفرق بين TensorFlow وPyTorch؟
- وش الفرق بين فرط التكيّف وقصور التكيّف؟
في هالمختبر، المطلوب تحلون مسألتين في التصنيف باستخدام شبكات كاملة الاتصال ذات طبقة وحدة، وشبكات كاملة الاتصال متعددة الطبقات، باستخدام PyTorch أو TensorFlow.