تدريب النموذج في TensorFlow.js
بعد جمع البيانات وتنظيفها وبناء النموذج، تأتي المرحلة التي تعطي
النموذج قيمته الحقيقية، وهي مرحلة التدريب.
في هذه المرحلة يبدأ النموذج في تعديل أوزانه الداخلية تدريجيًا
حتى يقترب من العلاقة الصحيحة بين المدخلات والمخرجات.
وتوضح الصفحة الأصلية أن تدريب نموذج TensorFlow في هذا المثال
يتم عبر دالة مستقلة مخصصة للتدريب، ثم بعد ذلك تأتي خطوة
اختبار النموذج وتقييمه من خلال مقارنة ما يتوقعه
بما تعطيه البيانات الفعلية.
دالة التدريب Training Function
تبدأ الصفحة بتعريف دالة كاملة مسؤولة عن تدريب النموذج.
هذه الدالة تستقبل:
- model وهو النموذج نفسه
- inputs وهي بيانات الإدخال بعد تجهيزها
- labels وهي القيم الصحيحة المقابلة
- surface وهو سطح الرسم المستخدم لعرض نتائج التدريب
ما معنى batchSize؟
توضح الصفحة أن:
تعني أن التدريب لا يتم على كل البيانات دفعة واحدة في كل خطوة،
بل يتم تقسيم البيانات إلى دفعات صغيرة،
وكل دفعة تحتوي هنا على 25 عنصرًا.
هذا الأسلوب يساعد النموذج على التعلّم تدريجيًا،
ويجعل عملية التدريب أكثر تنظيمًا وكفاءة.
ما معنى epochs؟
ثم تعرض الصفحة:
وتوضح أن epochs تعني عدد مرات المرور الكامل
على بيانات التدريب.
أي أن النموذج في هذا المثال يمر على البيانات
50 مرة أثناء عملية التعلم.
وكل مرور جديد يمنحه فرصة إضافية لتحسين الأوزان
والتقليل من الخطأ.
دور model.fit()
الجزء الأهم في دالة التدريب هو:
وتوضح الصفحة أن:
- model.fit() هي الدالة التي تشغّل حلقات التدريب فعليًا
- inputs هي بيانات الإدخال
- labels هي القيم الصحيحة التي يتعلم منها النموذج
- shuffle: true تعني خلط البيانات أثناء التدريب
وهذا يعني أن التدريب هنا ليس مجرد تنفيذ سطر واحد،
بل هو تشغيل فعلي لعملية التعلم عبر تكرارات متعددة،
وفي كل مرة يحاول النموذج تقليل الخطأ.
متابعة التدريب بصريًا
ميزة هذا المثال أنه لا يكتفي بتدريب النموذج فقط،
بل يعرض أيضًا تقدم التدريب بصريًا باستخدام
tfjs-vis.
ولهذا تستخدم الصفحة:
وتوضح الصفحة أن callbacks تحدد
الدالة التي يتم استدعاؤها عندما يريد النموذج
إعادة رسم النتائج الرسومية أثناء التدريب.
وفي هذا المثال يتم تتبع قيمة واحدة أساسية هي:
أي أن الرسم يعرض كيف تنخفض قيمة الخطأ
مع تقدم التدريب من epoch إلى أخرى.
لماذا قيمة loss مهمة؟
قيمة loss تمثل مقدار الخطأ الحالي للنموذج.
فكلما انخفضت هذه القيمة، دلّ ذلك على أن النموذج
أصبح أقرب إلى العلاقة الحقيقية بين البيانات.
ولهذا فإن تتبع loss أثناء التدريب
يمنحنا مؤشرًا بصريًا سريعًا على ما إذا كان النموذج
يتحسن أم لا.
اختبار النموذج بعد التدريب
بعد انتهاء التدريب، لا تتوقف الصفحة عند هذه النقطة،
بل تنتقل مباشرة إلى خطوة
اختبار النموذج وتقييمه.
وتوضح الصفحة أن ذلك يتم عبر فحص
ما يتوقعه النموذج على مجموعة من القيم المختلفة،
أي أننا نطلب منه أن ينتج مخرجات جديدة
حتى نرى هل تعلّم العلاقة بالفعل أم لا.
فك التطبيع Un Normalize
لكن قبل عرض النتائج، تذكر الصفحة نقطة مهمة جدًا:
البيانات التي دخلت التدريب كانت قد خضعت مسبقًا
لعملية Normalization.
ولذلك يجب الآن
فك هذا التطبيع
حتى تعود النتائج إلى مقياسها الحقيقي.
في هذا الجزء:
- يتم إنشاء 100 قيمة موزعة بين 0 و1
- يتم تمريرها إلى النموذج باستخدام predict()
- ثم يتم تحويل النتائج إلى مقياسها الحقيقي باستخدام حدود البيانات الأصلية
وهذا مهم لأن نتائج النموذج بعد التدريب تكون ما تزال
في النطاق المطبّع، بينما نحن نريد رؤيتها
بالقيم الواقعية المفهومة.
رسم النتيجة النهائية
بعد فك التطبيع، تعرض الصفحة كيفية بناء مصفوفة جديدة
تحتوي على القيم المتوقعة، ثم رسمها:
هذا يعني أن الرسم النهائي سيحتوي على:
- values وهي البيانات الأصلية
- predicted وهي القيم التي توقعها النموذج
وبهذه الطريقة يمكننا مقارنة الخط الناتج من النموذج
مع النقاط الأصلية بصريًا، ورؤية مدى جودة التعلّم.
ما الذي نتعلمه من هذه الصفحة؟
تكمن أهمية هذه الصفحة في أنها توضح أن
التدريب لا يعني فقط تشغيل fit،
بل يشمل أيضًا:
- اختيار عدد مناسب من الدفعات batchSize
- تحديد عدد مرات المرور epochs
- متابعة loss أثناء التدريب
- اختبار النموذج على قيم جديدة
- فك التطبيع قبل قراءة النتائج النهائية
- عرض النتائج بصريًا للمقارنة والتقييم
وهذا يجعل الصفحة خطوة حاسمة جدًا بين
بناء النموذج والحكم على جودته.
الخلاصة
يوضح هذا الدرس أن تدريب نموذج TensorFlow.js
يتم عبر model.fit() داخل دالة مخصصة،
مع استخدام batchSize = 25 وepochs = 50
وتفعيل callbacks لمتابعة قيمة loss
بصورة رسومية. ثم ينتقل إلى مرحلة الاختبار،
حيث يتم إنشاء قيم جديدة، وتمريرها إلى
predict()، ثم فك التطبيع
ورسم النتائج النهائية إلى جانب البيانات الأصلية.
وبهذا يوضح الدرس كيف ننتقل من نموذج تم بناؤه فقط
إلى نموذج تم تدريبه واختباره فعليًا.
