21- كورس تعلم الذكاء الاصطناعي Machine Learning – نماذج TensorFlow

نماذج TensorFlow.js

 

تُعد النماذج Models والطبقات Layers
من أهم وحدات البناء في تعلم الآلة. وتوضح الصفحة الأصلية أن
كل مهمة من مهام تعلم الآلة تحتاج إلى دمج أنواع مختلفة من الطبقات
داخل نموذج يمكن تدريبه على البيانات ثم استخدامه لاحقًا
للتنبؤ بالقيم المستقبلية.

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

شعار TensorFlow
شعار TensorFlow كما يظهر في المقال الأصلي.

مراحل مشروع TensorFlow.js

تعرض الصفحة سير العمل المعتاد في مشروع TensorFlow.js،
وتوضح أن المشروع يمر عادة بهذه الخطوات:

  • جمع البيانات
  • إنشاء النموذج
  • إضافة الطبقات إلى النموذج
  • تجميع النموذج Compile
  • تدريب النموذج
  • استخدام النموذج

هذا التسلسل مهم لأنه يوضح أن بناء النموذج لا يبدأ مباشرة بالتنبؤ،
بل يمر بعدة مراحل متتابعة، كل مرحلة تؤثر في جودة النتيجة النهائية.

مثال الفكرة العامة

تستخدم الصفحة مثالًا بسيطًا لشرح الفكرة:
إذا كنا نعرف أصلًا أن هناك علاقة خطية مستقيمة بالشكل التالي:

فإنه يمكننا حساب أي قيمة y من خلال JavaScript بهذه الصيغة:

لكن الصفحة توضح أن نموذج TensorFlow.js
لا يعرف هذه الدالة مسبقًا.
بدلًا من ذلك، سنقوم بإعطائه بيانات تدريبية،
ثم نتركه يتعلم العلاقة بنفسه.

جمع بيانات التدريب

الخطوة الأولى في المثال هي إنشاء بيانات التدريب.
تبدأ الصفحة بإنشاء Tensor يحتوي على قيم x:

ثم يتم إنشاء Tensor آخر للقيم الصحيحة المقابلة لها،
بحيث يتم حسابها بالعلاقة:

وهذا يعني أن بيانات التدريب نفسها تمثل أمثلة صحيحة
على العلاقة المطلوبة. فالنموذج لا يعرف المعادلة،
لكنه سيرى هذه الأمثلة ويحاول التعلّم منها.

إنشاء نموذج Sequential

بعد تجهيز البيانات، تنتقل الصفحة إلى إنشاء النموذج نفسه:

وتوضح الصفحة أن Sequential Model
هو نموذج تكون فيه مخرجات كل طبقة
هي مدخلات الطبقة التالية.

وهذا يجعله من أبسط أنواع النماذج وأكثرها وضوحًا،
خصوصًا في الأمثلة التعليمية الأولى.

إضافة طبقة إلى النموذج

بعد إنشاء النموذج، يتم إضافة طبقة واحدة من نوع
dense:

وتشرح الصفحة هذا السطر على النحو التالي:

  • units: 1 تعني أن الطبقة تحتوي على وحدة واحدة فقط
  • inputShape: [1] تعني أن الإدخال ذو بعد واحد

كما تضيف الصفحة ملاحظة مهمة:
في الطبقة dense يكون
كل node متصلًا بكل node في الطبقة السابقة.

تجميع النموذج Compile

بعد بناء النموذج وإضافة الطبقة،
تأتي خطوة Compile.
وفي هذه المرحلة يتم تحديد:

  • دالة الخطأ أو الخسارة loss
  • خوارزمية التحسين optimizer

وتستخدم الصفحة هذا السطر:

وهنا:

  • meanSquaredError هي دالة خسارة لقياس الفرق بين التوقعات والقيم الصحيحة
  • sgd تعني Stochastic Gradient Descent

كما تعرض الصفحة قائمة بعدة Optimizers يدعمها TensorFlow.js،
ومنها:

  • Adadelta
  • Adagrad
  • Adam
  • Adamax
  • Ftrl
  • Nadam
  • RMSprop
  • SGD

تدريب النموذج

بعد التجميع، يتم تدريب النموذج باستخدام بيانات
xs وys.
وتوضح الصفحة أن التدريب يتم هنا عبر
500 epoch:

والمقصود بـ epochs هو عدد مرات مرور النموذج
على بيانات التدريب أثناء التعلم.

كلما تكرر التدريب أكثر، زادت فرصة النموذج في تحسين
الأوزان الداخلية والاقتراب من العلاقة الصحيحة.

استخدام النموذج بعد التدريب

بعد انتهاء التدريب، توضح الصفحة أنه يمكن استخدام النموذج
في أغراض متعددة. ويعرض المقال مثالًا يقوم فيه النموذج
بالتنبؤ بـ 10 قيم y جديدة
اعتمادًا على 10 قيم x.

الفكرة هنا أن النموذج بعد أن تعلم العلاقة من القيم الأولى،
أصبح قادرًا على استقبال قيمة جديدة لـ x
وإخراج قيمة متوقعة لـ y.

وتعرض الصفحة أيضًا مثالًا قريبًا منه،
لكن بدلًا من رسم النتائج على شكل مخطط،
يتم عرضها كنص أو قيم مباشرة:

ما الذي يحدث فعليًا في هذا المثال؟

هذا المثال مهم لأنه يوضح دورة العمل الكاملة في TensorFlow.js:

  • إنشاء بيانات صحيحة للتدريب
  • إنشاء نموذج Sequential
  • إضافة طبقة Dense
  • تحديد دالة الخسارة وخوارزمية التحسين
  • تدريب النموذج على البيانات
  • استخدامه لاحقًا في التنبؤ

كما أنه يوضح فكرة مهمة جدًا:
النموذج لا يُعطى المعادلة النهائية مباشرة،
بل يتعلمها من الأمثلة.

الخلاصة

يوضح هذا الدرس أن نماذج TensorFlow.js
هي البنية التي تجمع الطبقات معًا داخل شبكة عصبية قابلة للتدريب.
ويشرح سير العمل المعتاد في أي مشروع TensorFlow.js:
جمع البيانات، إنشاء النموذج، إضافة الطبقات، تجميع النموذج،
تدريبه، ثم استخدامه. كما يعرض مثالًا عمليًا كاملًا
لتدريب نموذج بسيط على العلاقة الخطية
Y = 1.2X + 5 باستخدام
tf.sequential() وطبقة
dense وعمليات
compile وfit وpredict.