بناء نموذج المثال الثاني في TensorFlow.js
بعد جمع بيانات المثال الثاني وتنظيفها، تأتي مرحلة
بناء النموذج. في هذه الصفحة لا يتم تدريب النموذج بعد،
لكن يتم تجهيز البيانات بالشكل المناسب، ثم إنشاء
نموذج TensorFlow.js قادر على تعلّم العلاقة بين
المدخلات والمخرجات لاحقًا. وتوضح الصفحة أن هذه المرحلة
تشمل: خلط البيانات، وتحويلها إلى Tensors، وتطبيعها،
ثم إنشاء النموذج وتجميعه.
خلط البيانات قبل التدريب
تبدأ الصفحة بالتأكيد على نقطة مهمة جدًا:
يجب خلط البيانات قبل التدريب.
وتوضح أن البيانات أثناء التدريب تُقسّم إلى
دفعات صغيرة batches، وكل دفعة تُمرر إلى النموذج.
ولو دخلت البيانات دائمًا بنفس الترتيب، فقد يتعلم النموذج
نمطًا غير عام، ويضعف أداؤه على البيانات الجديدة. لذلك
يساعد الخلط على إعطاء تنوع أفضل داخل كل دفعة.
الفكرة هنا أن الخلط لا يغيّر القيم نفسها،
لكنه يغيّر ترتيبها بحيث لا يرى النموذج
نفس التتابع كل مرة.
تحويل البيانات إلى Tensors
بعد خلط البيانات، توضح الصفحة أن TensorFlow
لا يعمل مباشرة على المصفوفات العادية،
بل يحتاج إلى Tensor Data.
ولهذا يتم أولًا استخراج قيم الإدخال والإخراج،
ثم تحويلها إلى 2D Tensors.
في هذا الجزء:
- inputs تحتوي على قيم x
- labels تحتوي على قيم y الصحيحة
- tf.tensor2d() يحول هذه القيم إلى Tensor ثنائي الأبعاد
واستخدام الشكل
[inputs.length, 1]
يعني أن لدينا عددًا من الصفوف يساوي عدد العينات،
وكل صف يحتوي على قيمة إدخال واحدة فقط.
تطبيع البيانات Data Normalization
بعد تحويل البيانات إلى Tensors، تنتقل الصفحة إلى خطوة
التطبيع. وتوضح أن البيانات يجب أن تُطبّع
قبل استخدامها داخل شبكة عصبية، وأن المجال من
0 إلى 1 باستخدام
min-max normalization
يكون غالبًا مناسبًا جدًا للبيانات العددية.
في هذا المثال:
- يتم استخراج أقل وأعلى قيمة من بيانات الإدخال
- يتم استخراج أقل وأعلى قيمة من بيانات الإخراج
- ثم تُحوَّل القيم كلها إلى نطاق موحد بين 0 و1
الهدف من ذلك أن تصبح البيانات أسهل على النموذج أثناء التعلم،
خصوصًا عندما تكون القيم الأصلية متباعدة جدًا في الحجم.
ما هو TensorFlow Model؟
بعد تجهيز البيانات، تشرح الصفحة معنى
TensorFlow Model، وتعرّفه باختصار على أنه
خوارزمية تعلم آلة تنتج مخرجات من مدخلات.
أي أن النموذج هو الجزء الذي يتعلم العلاقة بين x وy،
ثم يستخدم هذه العلاقة لاحقًا في التوقع.
إنشاء النموذج
توضح الصفحة أن هذا المثال يستخدم
3 أسطر فقط
لإنشاء نموذج تعلم آلة بسيط.
وهذا النموذج يتكون من:
- نموذج متسلسل Sequential Model
- طبقتين من نوع dense
النموذج المتسلسل Sequential Model
تشرح الصفحة أن:
ينشئ Sequential ML Model.
وفي هذا النوع من النماذج ينتقل الإدخال إلى الإخراج
بشكل مباشر عبر الطبقات. كما توضح الصفحة أن Sequential
هو أسهل نوع من نماذج تعلم الآلة،
لأنه يسمح ببناء النموذج طبقة بعد طبقة،
بحيث ترتبط الأوزان بكل طبقة لاحقة.
طبقات TensorFlow
بعد ذلك توضح الصفحة أن:
تُستخدم لإضافة الطبقات إلى النموذج،
وأن المثال الحالي يضيف طبقتين. كما تشرح أن
طبقة dense هي نوع مناسب في معظم الحالات،
وأنها تعمل بضرب المدخلات في مصفوفة أوزان
ثم إضافة Bias إلى الناتج.
Shapes and Units
توضح الصفحة معنى أهم قيمتين في تعريف الطبقة الأولى:
- inputShape: [1] لأن لدينا مدخلًا واحدًا فقط، والصفحة تذكر صراحة أن x هنا هو rooms
- units: 1 لأنها تحدد حجم مصفوفة الأوزان: وزن واحد لكل قيمة إدخال
وهذا يعني أن المثال الحالي مبني على علاقة بسيطة
بين متغير إدخال واحد ومتغير إخراج واحد.
تجميع النموذج Compiling a Model
بعد إنشاء النموذج وإضافة الطبقات، تأتي خطوة
Compile. وتوضح الصفحة أن هذه الخطوة
تستخدم لتحديد optimizer وloss function.
في هذا السطر:
- sgd هي اختصار Stochastic Gradient Descent
- meanSquaredError هي الدالة المستخدمة لمقارنة توقعات النموذج بالقيم الحقيقية
كما تذكر الصفحة أن sgd
بسيط في الاستخدام وفعّال جدًا في هذا النوع من الأمثلة.
ماذا تفعل هذه الصفحة فعليًا؟
تكمن أهمية هذه الصفحة في أنها تمثل الجسر بين
البيانات والتدريب.
فهي لا تدخل بعد في تفاصيل fit أو predict،
لكنها تجهز كل شيء قبل ذلك:
- خلط البيانات
- تحويلها إلى Tensors
- تطبيعها بين 0 و1
- إنشاء نموذج Sequential
- إضافة طبقات dense
- تجميع النموذج باستخدام loss وoptimizer
وبدون هذه المرحلة، لا يمكن الانتقال بطريقة صحيحة
إلى التدريب الفعلي في الخطوة التالية.
الخلاصة
يوضح هذا الدرس أن مرحلة
Example 2 Model
في TensorFlow.js تبدأ أولًا بخلط البيانات قبل التدريب،
ثم تحويلها إلى 2D Tensors،
ثم تطبيعها إلى المجال 0–1.
بعد ذلك يتم إنشاء نموذج
Sequential بطبقتين من نوع
dense، مع
inputShape: [1]
لأن الإدخال هنا هو rooms.
وأخيرًا يتم تجميع النموذج باستخدام
meanSquaredError وsgd
تمهيدًا لبدء التدريب الفعلي.
