Learn AI with Python · درس

الضبط الدقيق: إلغاء تجميد الطبقات وإعادة تدريبها

‏base_model.trainable = True، وإلغاء تجميد الطبقات طبقةً تلو الأخرى، ومعدلات التعلم التفاضلية

الدرس 3 من 413 خطوة

الضبط الدقيق: إلغاء تجميد الطبقات وإعادة تدريبها درس مجاني في Learn AI with Python على CoddyKit. هذا هو الدرس 3 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Learn AI with Python، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Learn AI with Python 4 دروس في المجموع.

متى نُجري الضبط الدقيق

بعد أن يدرّب استخراج السمات رأسكم، يستخرج الضبط الدقيق دقة إضافية من خلال السماح للجزء العلوي من النموذج الأساسي المدرّب مسبقًا بالتكيف مع بياناتكم. نفّذوا ذلك فقط بعد استقرار الرأس، وإلا فقد تؤدي التدرجات الكبيرة الناتجة عن رأس عشوائي إلى إتلاف النموذج الأساسي.

إلغاء تجميد النموذج الأساسي

اضبطوا base.trainable = True لجعل الأوزان قابلة للتحديث من جديد. لكن هذا الإعداد يلغي تجميد كل الطبقات، وهو ما يكون قويًا أكثر من اللازم عادةً.

base.trainable = True
print("Trainable layers:", sum(l.trainable for l in base.layers))

تجميد أول N من الطبقات

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

base.trainable = True
freeze_until = 100   # keep first 100 layers frozen

for layer in base.layers[:freeze_until]:
    layer.trainable = False
for layer in base.layers[freeze_until:]:
    layer.trainable = True

لماذا نستخدم معدل تعلم منخفضًا جدًا

يتطلب الضبط الدقيق معدل تعلم صغيرًا جدًا، مثل 1e-5. فالأوزان المدرّبة مسبقًا جيدة بالفعل، وكل ما نريده هو إجراء تعديلات طفيفة عليها. ويؤدي المعدل الكبير إلى النسيان الكارثي، فيمحو المعرفة المستفادة من ImageNet.

إعادة التجميع بعد إلغاء التجميد

يجب إعادة التجميع بعد تغيير علامات trainable حتى تعيد Keras بناء قائمة الأوزان التي ستحصل على التدرجات. اضبطوا معدل التعلم المنخفض هنا.

from tensorflow.keras.optimizers import Adam

model.compile(
    optimizer=Adam(learning_rate=1e-5),
    loss="categorical_crossentropy",
    metrics=["accuracy"]
)

العملية المكوّنة من مرحلتين

  1. المرحلة 1، استخراج السمات: النموذج الأساسي مجمّد، ويُدرَّب الرأس بمعدل يقارب 1e-3 حتى تستقر دقة التحقق.
  2. المرحلة 2، الضبط الدقيق: إلغاء تجميد الطبقات العليا، وإعادة التجميع بمعدل يقارب 1e-5، ثم متابعة التدريب.

يؤدي تقسيم العملية بهذه الطريقة إلى استقرار التدريب وحماية السمات المدرّبة مسبقًا.

متابعة التدريب في المرحلة 2

استأنفوا التدريب من النقطة التي توقفت عندها المرحلة 1 باستخدام initial_epoch، حتى تظل السجلات والجداول الزمنية متصلة.

history2 = model.fit(
    train_ds,
    validation_data=val_ds,
    epochs=20,
    initial_epoch=10   # phase 1 ended at epoch 10
)

جدولة معدل التعلم

يخفض المجدول معدل التعلم بمرور الوقت، بحيث تصغر التحديثات مع اقتراب النموذج من التقارب. ويخفض ReduceLROnPlateau المعدل تلقائيًا عندما تتوقف خسارة التحقق عن التحسن.

from tensorflow.keras.callbacks import ReduceLROnPlateau

lr_cb = ReduceLROnPlateau(
    monitor="val_loss", factor=0.5,
    patience=2, min_lr=1e-7
)
model.fit(train_ds, validation_data=val_ds,
          epochs=20, callbacks=[lr_cb])

تنبيه بشأن BatchNorm

تحتوي ResNet وEfficientNet على طبقات BatchNormalization التي تتعقب الإحصاءات الجارية. عند إجراء الضبط الدقيق، يؤدي إبقاء طبقات BN مجمّدة، أو إبقاؤها في وضع الاستدلال، غالبًا إلى نتائج أكثر استقرارًا، لأن تحديث إحصاءاتها باستخدام مجموعة بيانات صغيرة قد يضر بالدقة.

انتبه إلى فرط التخصيص

تضيف عملية الضبط الدقيق العديد من المعلمات القابلة للتدريب، ولذلك يرتفع خطر فرط التخصيص. كافحه باستخدام زيادة البيانات وdropout وEarlyStopping اعتمادًا على خسارة التحقق.

from tensorflow.keras.callbacks import EarlyStopping

stop = EarlyStopping(monitor="val_loss",
                     patience=4,
                     restore_best_weights=True)

جمع العناصر معًا

تتضمن عملية الضبط الدقيق المتينة تدريب الرأس، ثم إلغاء تجميد الطبقات العليا، وتجميد BN، ثم إعادة تجميع النموذج بمعدل تعلم قدره 1e-5، وبعد ذلك تدريبه باستخدام مجدول والإيقاف المبكر. قارن دائمًا دقة التحقق قبل الضبط الدقيق وبعده للتأكد من أن الضبط الدقيق قد حقق فائدة فعلية.

اختبار سريع

اختبر معرفتك بالضبط الدقيق.

مراجعة

تعلمت إجراء الضبط الدقيق من خلال ضبط base.trainable=True، ثم إعادة تجميد أول N طبقة، وإعادة تجميع النموذج بمعدل تعلم صغير جدًا (1e-5)، وتنفيذ العملية على مرحلتين. يحافظ مجدول معدل التعلم والإيقاف المبكر على استقرار العملية، كما تتطلب طبقات BatchNorm عناية خاصة. التالي: نماذج خفيفة الوزن للنشر على الأجهزة الطرفية.

البدء مجانًا

تعلم Python مع معلم ذكاء اصطناعي — مجانًا

اكتب وقم بتشغيل أكوادك الفعلية في المتصفح، واحصل على مساعدة فورية من معلم ذكاء اصطناعي متاح 24/7، واستمر من حيث توقفت على الويب أو في التطبيق.

الدورات
53
الدروس
225

الأسئلة الشائعة

هل درس «الضبط الدقيق: إلغاء تجميد الطبقات وإعادة تدريبها» مجاني؟

نعم — نص درس «الضبط الدقيق: إلغاء تجميد الطبقات وإعادة تدريبها» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Learn AI with Python، انتقل إلى CoddyKit PRO. تتضمن دورة Learn AI with Python 4 دروس في المجموع.

ماذا ستتعلم في «الضبط الدقيق: إلغاء تجميد الطبقات وإعادة تدريبها»؟

‏base_model.trainable = True، وإلغاء تجميد الطبقات طبقةً تلو الأخرى، ومعدلات التعلم التفاضلية تتمرن على Learn AI with Python مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ Learn AI with Python؟

لا تُشترط خبرة سابقة. Learn AI with Python على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 3 من أصل 4.

كم من الوقت يستغرق درس «الضبط الدقيق: إلغاء تجميد الطبقات وإعادة تدريبها»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس Learn AI with Python هذا؟

نعم. كل درس في Learn AI with Python يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. مفاهيم واستراتيجيات التعلم بالنقل
  2. استخدام VGG16 وResNet50 كنموذجين أساسيين
  3. الضبط الدقيق: إلغاء تجميد الطبقات وإعادة تدريبها
  4. ‏MobileNet وEfficientNet للنشر على الأجهزة الطرفية
← العودة إلى Learn AI with Python