AI & GPU
كيفية فهم الشبكات العصبية المتسلسلة بنظام TensorFlow بسهولة

كيفية فهم الشبكات العصبية المتسلسلة بنظام TensorFlow بسهولة

بناء الشبكات العصبية المتسلسلة باستخدام TensorFlow

الجزء الأول: مقدمة عن الشبكات العصبية المتسلسلة العصبية المتسلسلة (CNNs)

الجزء الأول: تعريف والسمات الرئيسية للشبكات العصبية المتسلسلة

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

تشتمل السمات الرئيسية للشبكات العصبية المتسلسلة على:

  1. الاتصال المحلي: الخلايا العصبية (النيورونات) في الطبقة التحويلية مرتبطة بمنطقة صغيرة فقط من الطبقة السابقة، وتسمى هذه المنطقة بمستقبلها. هذا يتيح للشبكة اكتشاف الميزات والأنماط المحلية في البيانات الإدخالية.
  2. الأوزان المشتركة: يتم تطبيق نفس مجموعة الأوزان (مرشحات) على البيانات الإدخالية بأكملها، مما يقلل من عدد المعلمات ويحسن كفاءة النموذج.
  3. عدم الحساسية للترجمة: تستطيع الشبكات العصبية المتسلسلة اكتشاف نفس الميزات بغض النظر عن موضعها في المدخل، مما يجعلها قوية في حالة التحويلات المكانية.
  4. استخراج الميزات التسلسلية التسلسلية: تتعلم الطبقات التحويلية كيفية استخلاص الميزات بشكل متزايد، من الميزات على مستوى منخفض مثل الحواف والأشكال إلى ميزات على مستوى عالي مثل أجزاء الكائنات والمفاهيم الدلالية.

الجزء الثاني: مقارنة مع الشبكات العصبية التقليدية

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

الجزء الثالث: تطبيقات الشبكات العصبية المتسلسلة في مجالات مختلفة

تم اعتماد الشبكات العصبية المتسلسلة على نطاق واسع في مجموعة متنوعة من المجالات، بما في ذلك:

  1. تصنيف الصور: تصنيف الصور في فئات محددة مسبقًا (على سبيل المثال، التعرف على الكائنات أو المشاهد أو الأنشطة).
  2. كشف الكائنات: تحديد وتحديد مواقع الكائنات المتعددة في صورة.
  3. التشتت الدلالي: تعيين ملصق فئة لكل بكسل في صورة، مما يتيح فهم الصورة بشكل بكسلي.
  4. إنشاء الصور: إنشاء صور جديدة بناءً على البيانات المدخلة أو التمثيلات المستفادة من التعلم.
  5. معالجة اللغة الطبيعية: تطبيق الشبكات العصبية المتسلسلة على بيانات النص لمهام مثل تحليل المشاعر وتصنيف النصوص والترجمة الآلية.
  6. التصوير الطبي: تحليل الصور الطبية، مثل الأشعة السينية والمسح بالتصوير المقطعي والرنين المغناطيسي، لمهام مثل تشخيص الأمراض واكتشاف الأورام.
  7. المركبات المستقلة: استخدام الشبكات العصبية المتسلسلة لمهام الإدراك مثل كشف ممر السيارة والتعرف على إشارة المرور وتفادي العقبات.

الجزء الرابع: TensorFlow: إطار تعليم عميق قوي

الجزء الأول: لمحة عن TensorFlow

تعتبر TensorFlow إطار تعليم عميق مفتوح المصدر تم تطويره من قبل فريق Google Brain. يوفر نظامًا شاملاً لبناء ونشر نماذج التعلم الآلي والتعلم العميق، بما في ذلك دعمًا لمجموعة واسعة من بنى الشبكات العصبية وخوارزميات التحسين ومنصات النشر.

تتضمن الميزات الرئيسية لـ TensorFlow:

  • الحساب المرن والفعال: يستخدم TensorFlow نهج قائم على رسم بياني تدفق البيانات لتمثيل وتنفيذ الحسابات، مما يتيح التوازي والتحسين الفعال.
  • التنفيذ الفوري: قدم TensorFlow 2.x التنفيذ الفوري، مما يتيح تقييم العمليات فورًا، مما يسهل عملية تصحيح الأخطاء والتكرار في الكود الخاص بك.
  • مكتبة واسعة من الطبقات والنماذج المبنية مسبقاً: يوفر TensorFlow مجموعة غنية من الطبقات وهياكل النماذج المبنية مسبقًا، مثل الطبقات الفحصية والعودية والمبنية على الاهتمام، والتي يمكن تخصيصها ودمجها بسهولة.
  • التدريب الموزع والموالفة: يدعم TensorFlow التدريب الموزع عبر أجهزة متعددة، بما في ذلك وحدات المعالجة المركزية ووحدات المعالجة الرسومية ووحدات المعالجة الحسابية، مما يتيح التدريب الفعال لنماذج ذات مقياس كبير.
  • مرونة النشر: يمكن نشر نماذج TensorFlow على مجموعة واسعة من المنصات، بما في ذلك الأجهزة المحمولة ومتصفحات الويب والبيئات السحابية، مما يجعلها مناسبة لمجموعة متنوعة من التطبيقات العملية.

الجزء الثاني: التثبيت والإعداد

للبدء في استخدام TensorFlow، ستحتاج إلى تثبيت المكتبة على نظامك. يتفاوت عملية التثبيت اعتمادًا على نظام التشغيل الخاص بك وإصدار TensorFlow الذي ترغب في استخدامه. يمكنك العثور على تعليمات تثبيت مفصلة على الموقع الرسمي لـ TensorFlow (https://www.tensorflow.org/install (opens in a new tab)).

وفيما يلي مثال لكيفية تثبيت TensorFlow باستخدام أداة pip، أداة تثبيت حزم Python:

# تثبيت إصدار TensorFlow الذي يعمل على وحدة المعالجة المركزية
pip install tensorflow
 
# تثبيت إصدار TensorFlow الذي يعمل على وحدة المعالجة الرسومية NVIDIA المتوافقة
pip install tensorflow-gpu

بعد تثبيت TensorFlow، يمكنك التحقق من التثبيت عن طريق تشغيل الرمز البرمجي لـ Python التالي:

import tensorflow as tf
print(tf.__version__)

يجب أن يتم طباعة إصدار TensorFlow الذي تم تثبيته.

الجزء الثالث: ميزات وقدرات TensorFlow الرئيسية

يوفر TensorFlow مجموعة واسعة من الميزات والقدرات التي تجعله إطار تعلم عميق قوي. وتشمل بعض الميزات الرئيسية:

  1. التنفيذ الفوري: قدم TensorFlow 2.x التنفيذ الفوري، مما يتيح لك كتابة وتصحيح الأخطاء في الكود بأسلوب أكثر توجيهًا، على غرار الكود العادي في لغة Python.
  2. واجهة برمجة التطبيقات Keras: يتضمن TensorFlow واجهة برمجة التطبيقات Keras، وهي واجهة عالية المستوى للشبكات العصبية توفر واجهة سهلة الاستخدام لبناء وتدريب وتقييم النماذج التعلم العميق.
  3. بناء النماذج المرنة: يتيح لك TensorFlow بناء نماذج مخصصة باستخدام واجهة TensorFlow Layers API على المستوى الأدنى أو واجهة Keras API على المستوى العالي، مما يوفر المرونة والتحكم في هندستة النموذج الخاص بك.
  4. الحساب الفعال: يستخدم TensorFlow نهج قائم على رسم بياني تدفق البيانات لتمثيل وتنفيذ الحسابات، مما يتيح التوازي والتحسين الفعال لنماذجك.
  5. التدريب الموزع: يدعم TensorFlow التدريب الموزع عبر أجهزة متعددة، بما في ذلك وحدات المعالجة المركزية ووحدات المعالجة الرسومية ووحدات المعالجة الحسابية، مما يسمح بتدريب فعال لنماذج ذات مقياس كبير.
  6. مرونة النشر: يمكن نشر نماذج TensorFlow على مجموعة واسعة من المنصات، بما في ذلك الأجهزة المحمولة ومتصفحات الويب والبيئات السحابية، مما يجعله مناسبًا لمجموعة متنوعة من التطبيقات في العالم الحقيقي.
  7. مكتبات وأدوات شاملة: يوفر TensorFlow بيئة غنية من المكتبات والأدوات، مثل TensorFlow Lite لنشر على الأجهزة المحمولة، وTensorFlow.js لتطبيقات الويب، وTensorFlow Serving لخدمة النماذج.

الجزء الرابع: بناء شبكة عصبية متسلسلة باستخدام TensorFlow

الجزء الأول: استيراد المكتبات الضرورية

لبناء شبكة عصبية متسلسلة بنظام TensorFlow، ستحتاج إلى استيراد المكتبات التالية:

import tensorflow as tf
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Conv2D, MaxPooling2D, Flatten, Dense
from tensorflow.keras.optimizers import Adam
from tensorflow.keras.preprocessing.image import ImageDataGenerator

توفر هذه المكتبات الوظائف اللازمة لبناء وتدريب وتقييم نموذج CNN الخاص بك.

الجزء الثاني: إعداد مجموعة البيانات

1. تنزيل وتحميل مجموعة البيانات

لهذا المثال، سنستخدم مجموعة بيانات CIFAR-10، وهي مجموعة بيانات معترف بها على نطاق واسع في مهام تصنيف الصور. تتألف مجموعة بيانات CIFAR-10 من 60،000 صورة ملونة بأبعاد 32x32 بكسلًا في 10 فئات، بواقع 6،000 صورة لكل فئة.

يمكنك تنزيل مجموعة بيانات CIFAR-10 باستخدام الكود التالي:

(x_train, y_train), (x_test, y_test) = tf.keras.datasets.cifar10.load_data()

سيتم تنزيل المجموعة وتقسيمها إلى مجموعات تدريب واختبار.

2. تجهيز الصور

قبل تغذية الصور إلى نموذج CNN، نحتاج إلى معالجتها مسبقاً. يشمل ذلك عادة تغيير الحجم وتطبيع قيم البكسل، وتطبيق التحويلات الأخرى.

# قيمة البكسل إلى النطاق [0،1]
x_train = x_train / 255.0
x_test = x_test / 255.0

3. تقسيم مجموعة البيانات إلى مجموعات التدريب والتحقق والاختبار

من المعتاد تقسيم مجموعة البيانات التدريب إلى مجموعات التدريب والتحقق لمراقبة أداء النموذج أثناء التدريب وضبط الأمثلة. فيما يلي مثال لكيفية القيام بذلك:

from sklearn.model_selection import train_test_split
 
# تقسيم مجموعة التدريب إلى مجموعات التدريب والتحقق
x_train،x_val،y_train،y_val = train_test_split(x_train،y_train,test_size=0.2،random_state=42)

الآن، لديك المجموعات التالية:

  • x_train،y_train: مجموعة التدريب
  • x_val،y_val: مجموعة التحقق
  • x_test،y_test: مجموعة الاختبار

الجزء الثالث: تحديد هندسة الشبكة العصبية المتسلسلة

1. الطبقات التحويلية

يعتبر الأساس الأساسي للشبكة العصبية المتسلسلة هو الطبقة التحويلية، التي تطبق مجموعة من المرشحات (أو النواة المستفادة) المتعلمة على صورة الإدخال. تستخرج العملية التحويلية ميزات محلية مثل الحواف والأشكال والأنسجة من الإدخال.

فيما يلي مثال لكيفية تعريف طبقة التحويلية في TensorFlow:

model = Sequential()
model.add(Conv2D(32, (3, 3), activation='relu', padding='same', input_shape=(32, 32, 3)))
model.add(MaxPooling2D((2, 2)))

في هذا المثال، تحتوي الطبقة التحويلية الأولى على 32 مرشحًا، يبلغ حجم كل منها 3X3 بكسل. تُستخدم وظيفة النشاط 'relu'، ويضمن الحشو 'same' أن خريطة الميزات الناتجة لها نفس الأبعاد المكانية كالإدخال. يحدد المعلمة input_shape حجم الصور الإدخال (32x32 بكسل مع 3 قنوات لون).

بعد طبقة التصفية المتقطعة ، يتم إضافة طبقة تجميع الحد الأقصى لتقليل حجم الخرائط المميزة وتقليل الأبعاد المكانية وعدد المعلمات.

2. طبقات التوصيل الكاملة

بعد طبقات التصفية والتجميع ، يتم تحويل الخرائط المميزة إلى متجه 1D وإرسالها إلى طبقة واحدة أو أكثر متصلة تمامًا. تعلم هذه الطبقات تمثيلات عالية المستوى وتقوم بالتصنيف النهائي.

model.add(Flatten())
model.add(Dense(128, activation='relu'))
model.add(Dense(10, activation='softmax'))

في هذا المثال ، يتم تمرير الخرائط المميزة المسطحة من خلال طبقة متصلة بـ 128 وحدة ووظيفة تنشيط ReLU ، تليها طبقة الإخراج بـ 10 وحدات (واحدة لكل صنف) ووظيفة تنشيط softmax.

3. ملخص النموذج وتصور المعالم

يمكنك طبع ملخص لهندسة النموذج وتصور عدد المعلمات في كل طبقة:

model.summary()

سيتم إخراج جدول يظهر تفاصيل كل طبقة ، بما في ذلك عدد المعلمات وشكل الإخراج.

D. تجميع نموذج CNN

قبل تدريب النموذج ، تحتاج إلى تجميعه عن طريق تحديد وظيفة الفقد ، والمحسن ، ومقاييس التقييم.

model.compile(optimizer=Adam(lr=0.001),
              loss='categorical_crossentropy',
              metrics=['accuracy'])

في هذا المثال ، نستخدم محسن Adam بمعدل تعلم 0.001 ، وظيفة فقد الفئات التصنيفية ، ومقياس الدقة لتقييم أداء النموذج.

E. تدريب نموذج CNN

لتدريب نموذج CNN ، يمكنك استخدام الطريقة 'fit ()' المقدمة من واجهة برمجة التطبيقات Keras. تأخذ هذه الطريقة بيانات التدريب والتحقق كإدخال وتدرب النموذج لعدد محدد من الحقب.

history = model.fit(x_train, y_train,
                    epochs=20,
                    batch_size=32,
                    validation_data=(x_val, y_val))

هنا ، نقوم بتدريب النموذج لمدة 20 حقبة بحجم دُفعة يبلغ 32. يتيح المعلمة 'validation_data' للنموذج التقييم على مجموعة التحقق أثناء التدريب.

تعيد الطريقة 'fit ()' كائن 'History' ، والذي يحتوي على معلومات حول عملية التدريب ، مثل فقد التدريب والتحقق ودقة كل حقبة.

يمكنك أيضًا حفظ النموذج المدرب للاستخدام في وقت لاحق:

model.save('cifar10_cnn_model.h5')

سيتم حفظ هندسة النموذج والأوزان في الملف 'cifar10_cnn_model.h5'.

F. تقييم نموذج CNN

بعد تدريب النموذج ، يمكنك تقييم أدائه على مجموعة الاختبار باستخدام الطريقة 'evaluate ()':

test_loss, test_acc = model.evaluate(x_test, y_test)
print('Test accuracy:', test_acc)

سيتم طباعة فقد الاختبار ودقة الاختبار ، مما يمنحك فكرة عن مدى قدرة النموذج على تعميم البيانات التي لم يتم رؤيتها سابقًا.

يمكنك أيضًا تصور منحنيات التدريب والتحقق لفهم أفضل لأداء النموذج أثناء التدريب:

import matplotlib.pyplot as plt
 
plt.figure(figsizeفي هذا المثال، نقوم أولاً بتحميل نموذج VGG16 المدرب مسبقًا ، والذي تم تدريبه على مجموعة بيانات ImageNet. ثم نقوم بتجميد أوزان النموذج المدرب مسبقًا ، مما يعني أن الأوزان لن يتم تحديثها أثناء التدريب.
 
بعد ذلك، نضيف طبقات جديدة في الأعلى من النموذج المدرب مسبقًا ، بما في ذلك طبقة تسطح ، وطبقة كثيفة بـ 256 وحدة ووظيفة تنشيط ReLU ، وأخيرًا طبقة كثيفة نهائية بـ 10 وحدات ووظيفة تنشيط softmax (لمشكلة تصنيف متعدد الفئات تحتوي على 10 فئات).
 
أخيرًا، نقوم بتجميع النموذج مع أداة تحسين آدم (Adam optimizer) ووظيفة خسارة تصنيفية تقاطعية (categorical cross-entropy) ، ونقوم بتدريبه على مجموعة بيانات جديدة من الصور.
 
## الاستنتاج
 
في هذا البرنامج التعليمي، تمت مناقشة عدة مفاهيم وتقنيات رئيسية في التعلم العميق، بما في ذلك الشبكات العصبية التابعة للتركيب (CNNs)، الشبكات العصبية التابعة للترتيب (RNNs)، والذاكرة القصيرة الطويلة (LSTMs). كما تمت مناقشة استخدام التعلم النقلي، والذي يمكن أن يكون أداة قوية للاستفادة من النماذج المدربة مسبقًا لحل المشكلات الجديدة.
 
طوال البرنامج التعليمي، قدمنا أمثلة محددة وقصاصات برمجية لتوضيح المفاهيم التي تمت مناقشتها. من خلال العمل على هذه الأمثلة، يجب أن يكون لديك فهم أفضل لكيفية تطبيق تقنيات التعلم العميق على مشاكلك وبياناتك الخاصة.
 
أثناء استكشافك وتجربتك للتعلم العميق، تذكر أنها مجال نشط ويتطور بسرعة، مع تطوير تقنيات وهندسات جديدة باستمرار. استمر في الفضول، واستمر في التعلم، ولا تخف من تجربة أشياء جديدة - هذا هو أفضل طريقة لدفع حدود ما يمكن تحقيقه باستخدام التعلم العميق.