جدول المحتويات[يخفي][يعرض]
في السنوات الأخيرة ، نمت شعبية الشبكات العصبية لأنها أثبتت أنها جيدة للغاية في مجموعة واسعة من المهام.
لقد ثبت أنها خيار رائع للتعرف على الصور والصوت ومعالجة اللغة الطبيعية وحتى لعب الألعاب المعقدة مثل Go and chess.
في هذا المنشور ، سوف أطلعك على العملية الكاملة لتدريب الشبكة العصبية. سوف أذكر وأشرح كل الخطوات لتدريب الشبكة العصبية.
بينما سأنتقل إلى الخطوات ، أود إضافة مثال بسيط للتأكد من وجود مثال عملي أيضًا.
لذا ، تعال ودعونا نتعلم كيفية معالجة الشبكات العصبية
لنبدأ ببساطة ونسأل ما هو الشبكات العصبية في المقام الأول.
ما هي بالضبط الشبكات العصبية؟
الشبكات العصبية هي برامج كمبيوتر تحاكي عمل الدماغ البشري. يمكنهم التعلم من كميات هائلة من البيانات والأنماط الموضعية التي قد يجد الناس صعوبة في اكتشافها.
نمت شعبية الشبكات العصبية في السنوات الأخيرة بسبب تعدد استخداماتها في مهام مثل التعرف على الصور والصوت ومعالجة اللغة الطبيعية والنمذجة التنبؤية.
بشكل عام ، تعد الشبكات العصبية أداة قوية لمجموعة واسعة من التطبيقات ولديها فرصة لتغيير الطريقة التي نتعامل بها مع مجموعة واسعة من الوظائف.
لماذا يجب أن نعرف عنهم؟
يعد فهم الشبكات العصبية أمرًا بالغ الأهمية لأنها أدت إلى اكتشافات في مجموعة متنوعة من المجالات ، بما في ذلك رؤية الكمبيوتر والتعرف على الكلام ومعالجة اللغة الطبيعية.
الشبكات العصبية ، على سبيل المثال ، هي في قلب التطورات الأخيرة في السيارات ذاتية القيادة ، وخدمات الترجمة الآلية ، وحتى التشخيصات الطبية.
يساعدنا فهم كيفية عمل الشبكات العصبية وكيفية تصميمها على بناء تطبيقات جديدة ومبتكرة. وربما يؤدي ذلك إلى اكتشافات أكبر في المستقبل.
ملاحظة حول البرنامج التعليمي
كما قلت أعلاه ، أود أن أشرح خطوات تدريب الشبكة العصبية من خلال إعطاء مثال. للقيام بذلك ، يجب أن نتحدث عن مجموعة بيانات MNIST. إنه خيار شائع للمبتدئين الذين يريدون البدء في الشبكات العصبية.
MNIST هو اختصار يشير إلى المعهد الوطني المعدل للمعايير والتكنولوجيا. إنها مجموعة بيانات رقمية مكتوبة بخط اليد تُستخدم بشكل شائع للتدريب واختبار نماذج التعلم الآلي ، لا سيما الشبكات العصبية.
تحتوي المجموعة على 70,000 صورة بتدرج الرمادي لأرقام مكتوبة بخط اليد تتراوح من 0 إلى 9.
تعد مجموعة بيانات MNIST معيارًا شائعًا لـ تصنيف الصورة مهام. يتم استخدامه بشكل متكرر للتدريس والتعلم نظرًا لأنه مضغوط وسهل التعامل معه بينما يمثل تحديًا صعبًا للإجابة على خوارزميات التعلم الآلي.
يتم دعم مجموعة بيانات MNIST من خلال العديد من أطر عمل التعلم الآلي والمكتبات ، بما في ذلك TensorFlow و Keras و PyTorch.
الآن نحن نعرف مجموعة بيانات MNIST ، فلنبدأ بخطواتنا في تدريب الشبكة العصبية.
الخطوات الأساسية لتدريب الشبكة العصبية
استيراد المكتبات الضرورية
عند البدء في تدريب شبكة عصبية لأول مرة ، من الأهمية بمكان امتلاك الأدوات اللازمة لتصميم النموذج وتدريبه. تتمثل الخطوة الأولى في إنشاء شبكة عصبية في استيراد المكتبات المطلوبة مثل TensorFlow و Keras و NumPy.
هذه المكتبات بمثابة لبنات بناء لتطوير الشبكة العصبية وتوفر قدرات حاسمة. يتيح الجمع بين هذه المكتبات إنشاء تصميمات شبكات عصبية متطورة وتدريب سريع.
لنبدأ مثالنا ؛ سنقوم باستيراد المكتبات المطلوبة ، والتي تشمل TensorFlow و Keras و NumPy. TensorFlow هو إطار عمل تعلم آلي مفتوح المصدر ، Keras عبارة عن واجهة برمجة تطبيقات شبكة عصبية عالية المستوى ، و NumPy عبارة عن مكتبة بايثون للحوسبة الرقمية.
import tensorflow as tf
from tensorflow import keras
import numpy as np
قم بتحميل مجموعة البيانات
يجب الآن تحميل مجموعة البيانات. مجموعة البيانات هي مجموعة البيانات التي سيتم تدريب الشبكة العصبية عليها. قد يكون هذا أي نوع من البيانات ، بما في ذلك الصور والصوت والنص.
من الأهمية بمكان تقسيم مجموعة البيانات إلى جزأين: أحدهما لتدريب الشبكة العصبية والآخر لتقييم صحة النموذج المدرب. يمكن استخدام العديد من المكتبات ، بما في ذلك TensorFlow و Keras و PyTorch ، لاستيراد مجموعة البيانات.
على سبيل المثال ، نستخدم أيضًا Keras لتحميل مجموعة بيانات MNIST. هناك 60,000 صورة تدريب و 10,000 صورة اختبار في مجموعة البيانات.
mnist = keras.datasets.mnist
(train_images, train_labels), (test_images, test_labels) = mnist.load_data()
معالجة البيانات
تعتبر المعالجة المسبقة للبيانات مرحلة مهمة في تدريب الشبكة العصبية. يستلزم إعداد وتنظيف البيانات قبل إدخالها في الشبكة العصبية.
يعد قياس قيم البكسل وتطبيع البيانات وتحويل الملصقات إلى ترميز واحد ساخن أمثلة على إجراءات المعالجة المسبقة. تساعد هذه العمليات الشبكة العصبية في التعلم بشكل أكثر فعالية ودقة.
يمكن أن تساعد المعالجة المسبقة للبيانات أيضًا في تقليل التجهيز الزائد وتحسين أداء الشبكة العصبية.
يجب عليك معالجة البيانات مسبقًا قبل تدريب الشبكة العصبية. يتضمن ذلك تغيير الملصقات إلى ترميز واحد ساخن وقياس قيم البكسل لتكون بين 0 و 1.
train_images = train_images / 255.0
test_images = test_images / 255.0
train_labels = keras.utils.to_categorical(train_labels, 10)
test_labels = keras.utils.to_categorical(test_labels, 10)
حدد النموذج
تتضمن عملية تحديد نموذج الشبكة العصبية إنشاء بنيته ، مثل عدد الطبقات وعدد الخلايا العصبية لكل طبقة ووظائف التنشيط ونوع الشبكة (التغذية الأمامية أو المتكررة أو التلافيفية).
يتم تحديد تصميم الشبكة العصبية الذي تستخدمه حسب نوع المشكلة التي تحاول حلها. يمكن أن يساعد تصميم الشبكة العصبية المحدد جيدًا في تعلم الشبكة العصبية من خلال جعلها أكثر كفاءة ودقة.
حان الوقت لوصف نموذج الشبكة العصبية في هذه المرحلة. استخدم نموذجًا بسيطًا مع طبقتين مخفيتين ، كل منهما تحتوي على 128 خلية عصبية ، وطبقة إخراج softmax ، والتي تحتوي على 10 خلايا عصبية ، في هذا المثال.
model = keras.Sequential([
keras.layers.Flatten(input_shape=(28, 28)),
keras.layers.Dense(128, activation='relu'),
keras.layers.Dense(128, activation='relu'),
keras.layers.Dense(10, activation='softmax')
])
تجميع النموذج
يجب تحديد وظيفة الخسارة والمحسن والمقاييس أثناء تجميع نموذج الشبكة العصبية. يتم قياس قدرة الشبكة العصبية على التنبؤ بشكل صحيح بالإخراج من خلال وظيفة الخسارة.
لزيادة دقة الشبكة العصبية أثناء التدريب ، يقوم المُحسِّن بتعديل أوزانها. يتم قياس فعالية الشبكة العصبية أثناء التدريب باستخدام المقاييس. يجب إنشاء النموذج قبل التمكن من تدريب الشبكة العصبية.
في مثالنا ، يجب علينا الآن إنشاء النموذج.
model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])
تدريب النموذج
يُعرف تمرير مجموعة البيانات المعدة عبر الشبكة العصبية أثناء تعديل أوزان الشبكة لتقليل وظيفة الخسارة بتدريب الشبكة العصبية.
تُستخدم مجموعة بيانات التحقق من الصحة لاختبار الشبكة العصبية أثناء التدريب لتتبع فعاليتها ومنع الإفراط في التجهيز. قد تستغرق عملية التدريب بعض الوقت ، لذلك من المهم التأكد من أن الشبكة العصبية مدربة بشكل مناسب لمنع نقص الملاءمة.
باستخدام بيانات التدريب ، يمكننا الآن تدريب النموذج. للقيام بذلك ، يجب علينا تحديد حجم الدُفعة (عدد العينات التي تمت معالجتها قبل تحديث النموذج) وعدد الفترات (عدد التكرارات عبر مجموعة البيانات الكاملة).
model.fit(train_images, train_labels, epochs=10, batch_size=32)
تقييم النموذج
اختبار أداء الشبكة العصبية على مجموعة بيانات الاختبار هو عملية تقييمها. في هذه المرحلة ، تُستخدم الشبكة العصبية المدربة لمعالجة مجموعة بيانات الاختبار ، ويتم تقييم الدقة.
إن مدى فعالية الشبكة العصبية في التنبؤ بالنتيجة الصحيحة من البيانات الجديدة التي لم يتم تجربتها هو مقياس لدقتها. قد يساعد تحليل النموذج في تحديد مدى جودة عمل الشبكة العصبية وأيضًا اقتراح طرق لجعلها أفضل.
يمكننا أخيرًا تقييم أداء النموذج باستخدام بيانات الاختبار بعد التدريب.
test_loss, test_acc = model.evaluate(test_images, test_labels)
print('Test accuracy:', test_acc)
هذا كل شئ! قمنا بتدريب شبكة عصبية لاكتشاف الأرقام في مجموعة بيانات MNIST.
من إعداد البيانات لتقييم فعالية النموذج المدرَّب ، يتضمن تدريب الشبكة العصبية عدة عمليات. تساعد هذه التعليمات المبتدئين في بناء الشبكات العصبية وتدريبها بكفاءة.
يمكن للمبتدئين الذين يرغبون في استخدام الشبكات العصبية لمعالجة العديد من المشكلات القيام بذلك باتباع هذه التعليمات.
تصور المثال
دعنا نحاول تصور ما فعلناه بهذا المثال لفهم أفضل.
تُستخدم حزمة Matplotlib في مقتطف الشفرة هذا لرسم مجموعة عشوائية من الصور من مجموعة بيانات التدريب. أولاً ، نقوم باستيراد وحدة "pyplot" الخاصة بـ Matplotlib واسمها المستعار "plt". بعد ذلك ، بأبعاد إجمالية تبلغ 10 × 10 بوصات ، نصنع شكلًا مكونًا من 5 صفوف و 5 أعمدة من الحبكات الفرعية.
بعد ذلك ، نستخدم حلقة for للتكرار عبر الحبكات الفرعية ، وعرض صورة من مجموعة بيانات التدريب على كل واحدة. لعرض الصورة ، يتم استخدام وظيفة "imshow" ، مع ضبط الخيار "cmap" على "الرمادي" لعرض الصور بتدرج الرمادي. يتم أيضًا تعيين عنوان كل مخطط فرعي على تسمية الصورة المرتبطة في المجموعة.
أخيرًا ، نستخدم وظيفة "show" لعرض الصور المرسومة في الشكل. تتيح لنا هذه الوظيفة إجراء تقييم بصري لعينة من الصور من مجموعة البيانات ، والتي يمكن أن تساعد في فهمنا للبيانات وتحديد أي مخاوف محتملة.
import matplotlib.pyplot as plt
# Plot a random sample of images
fig, axes = plt.subplots(nrows=5, ncols=5, figsize=(10,10))
for i, ax in enumerate(axes.flat):
ax.imshow(train_images[i], cmap='gray')
ax.set_title(f"Label: {train_labels[i].argmax()}")
ax.axis('off')
plt.show()
نماذج الشبكة العصبية الهامة
- الشبكات العصبية المغذية (FFNN): نوع بسيط من الشبكات العصبية تنتقل فيه المعلومات بطريقة واحدة فقط ، من طبقة الإدخال إلى طبقة الإخراج عبر طبقة مخفية واحدة أو أكثر.
- الشبكات العصبية التلافيفية (CNN): شبكة عصبية شائعة الاستخدام في اكتشاف الصور ومعالجتها. تهدف شبكات CNN إلى التعرف على الميزات واستخراجها من الصور تلقائيًا.
- الشبكات العصبية المتكررة (RNN): شبكة عصبية شائعة الاستخدام في اكتشاف الصور ومعالجتها. تهدف شبكات CNN إلى التعرف على الميزات واستخراجها من الصور تلقائيًا.
- شبكات الذاكرة طويلة المدى (LSTM): تم إنشاء شكل من أشكال RNN للتغلب على مشكلة اختفاء التدرجات في RNNs القياسية. يمكن التقاط التبعيات طويلة المدى في البيانات المتسلسلة بشكل أفضل باستخدام LSTMs.
- أجهزة التشفير التلقائي: شبكة التعلم العصبية غير الخاضعة للإشراف والتي يتم فيها تعليم الشبكة إعادة إنتاج بيانات الإدخال الخاصة بها في طبقة الإخراج الخاصة بها. يمكن أن يتم ضغط البيانات واكتشاف الشذوذ وتقليل تشويش الصورة باستخدام أجهزة التشفير التلقائية.
- شبكات الخصومة التوليدية (GAN): الشبكة العصبية التوليدية هي شكل من أشكال الشبكة العصبية التي يتم تدريسها لإنتاج بيانات جديدة يمكن مقارنتها بمجموعة بيانات التدريب. تتكون شبكات GAN من شبكتين: شبكة مولد تنشئ بيانات جديدة وشبكة مميزة تقوم بتقييم جودة البيانات التي تم إنشاؤها.
الخلاصة ، ماذا يجب أن تكون خطواتك التالية؟
استكشف العديد من الموارد والدورات عبر الإنترنت لمعرفة المزيد حول تدريب الشبكة العصبية. يعد العمل في مشاريع أو أمثلة إحدى الطرق لاكتساب فهم أفضل للشبكات العصبية.
ابدأ بأمثلة سهلة مثل مشاكل التصنيف الثنائي أو مهام تصنيف الصور ، ثم انتقل إلى المهام الأكثر صعوبة مثل معالجة اللغة الطبيعية أو تعزيز التعلم.
يساعدك العمل في المشاريع على اكتساب خبرة حقيقية وتحسين مهاراتك في تدريب الشبكة العصبية.
يمكنك أيضًا الانضمام إلى مجموعات ومنتديات التعلم الآلي والشبكات العصبية عبر الإنترنت للتفاعل مع المتعلمين والمحترفين الآخرين ، ومشاركة عملك ، وتلقي التعليقات والمساعدة.
LSRS مونراد كرون
⁶ĵ كنت أرغب في رؤية برنامج python لتقليل الأخطاء. عقد اختيار خاصة لتغييرات الوزن إلى الطبقة التالية