في عصرٍ يزداد أهمية التكنولوجيا والذكاء الاصطناعي (AI)، أصبح إندماج الذكاء الاصطناعي في عملية تطوير البرمجيات أمرًا لا مفر منه. كمهندس برمجيات أولي تعشق الذكاء الاصطناعي، شهدت بالفعل التأثير التحويلي لأدوات وإطارات الذكاء الاصطناعي في تحسين وتعزيز عملية تطوير البرمجيات. تهدف هذه المدونة للتعمق في أدوات وإطارات الذكاء الاصطناعي الرئيسية التي ليست مفيدة فحسب بل أساسية لمهندسي البرمجيات اليوم.
إطارات الذكاء الاصطناعي الشهيرة في تطوير البرمجيات
تشكل إطارات الذكاء الاصطناعي أساس تطبيقات الذكاء الاصطناعي وتعلم الآلة (ML) الحديثة. توفر هذه الإطارات الأدوات والمكتبات اللازمة لتصميم وتدريب ونشر نماذج الذكاء الاصطناعي. فيما يلي تعمق في بعض الإطارات الأكثر شهرة وتوضيح ميزاتها الرئيسية واستخداماتها النموذجية وكيف يمكن تحقيق المنفعة منها في تطوير البرمجيات.
TensorFlow: العمل المتعدد الأغراض
ما هو TensorFlow؟
تخيل أنك طباخٌ يحاول إختراع وصفة جديدة لذيذة (في حالتنا، نموذج ذكاء اصطناعي). الآن، TensorFlow هو مثل مطبخ عالي التكنولوجيا بأدوات ومعدات متقدمة خصيصًا للتجربة وتصنيع الأطباق المعقدة (خوارزميات الذكاء الاصطناعي).
ماذا يفعل TensorFlow؟
توفر TensorFlow الأدوات والبيئة التي تحتاجها لتجهيز المكونات (البيانات) وخلطها بطرق مختلفة (تصميم الشبكات العصبية) وطهيها (تدريب النموذج) لخلق شيء لذيذ (تطبيق ذكاء اصطناعي عامل). إنها متعددة الاستخدامات بما يكفي للسماح بإنشاء وجبات بسيطة (نماذج أساسية) أو وجبات فخمة (أنظمة ذكاء اصطناعي معقدة).
A Simple Real-World Example: Lemonade Stand Forecast
تخيل أنك تدير محل بيع عصير الليمون وتريد التنبؤ بكمية الليمون التي يجب أن تستعد بناءً على توقعات الطقس. تقرر استخدام TensorFlow لبناء نموذج صغير يمكنه إجراء هذه التوقعات.
- جمع المكونات (جمع البيانات): تجمع بيانات من المبيعات السابقة، ملاحظًا كمية الليمون التي بيعت وما كان عليه الطقس (مشمس، ممطر، إلخ).
- تحضير الوصفة (تصميم النموذج): باستخدام TensorFlow، تصمم شبكة عصبية بسيطة. ستتعلم هذه الشبكة العصبية التوافقات مثل “مبيعات أكثر في الأيام المشمسة” أو “مبيعات أقل عندما يمطر”.
- الطهي (تدريب النموذج): تغذي بياناتك في نموذج TensorFlow، وهو مثل السماح له بالطهي أو التعلم من البيانات. مع مرور الوقت، يبدأ النموذج في فهم الأنماط.
- الاختبار الذوقي (تقييم النموذج): لاختبار مدى تعلم نموذجك جيدًا، تتحقق من مدى توقعاته لمبيعات عصير الليمون لبضعة أيام بناءً على الطقس.
- تقديم الطبق (باستخدام النموذج): الآن بعد أن تم تدريب واختبار نموذجك، تستخدمه في الحياة الواقعية. كل صباح، تتحقق من توقعات الطقس، وتدخل هذه المعلومات في نموذجك، ويتنبأ بكمية الليمونات التي قد تبيع في ذلك اليوم.
نظرة عامة
- تطوير من: فريق Google Brain
- اللغة الأساسية: بايثون (مع واجهات برمجة تطبيقات في جافا، C++، وغيرها)
- ميزات رئيسية:
- بيئة موجزة ومرنة من الأدوات والمكتبات وموارد المجتمع
- دعم قوي للتعلم العميق وخلق شبكات عصبية
- قابل للتوسع من النمذجة البحثية للنشر الإنتاجي
استخدامات
- التعرف على الصور والأصوات
- التطبيقات القائمة على النص مثل تحليل المشاعر
- تحليل السلاسل الزمنية، وهو أمر حاسم في توقعات المالية
الفوائد لمهندسي البرمجيات
- مرنة: مناسب لمجموعة واسعة من التطبيقات، من الشركات الناشئة إلى المؤسسات الكبيرة.
- وثائق ومجتمع واسع: يوفر دعم قوي للمبتدئين والمطورين ذوي الخبرة.
- التكامل مع منصات السحابة: تكامل سلس مع Google Cloud، مما يسهم في الحوسبة والتخزين على نطاق واسع.
تمرين TensorFlow: بناء شبكة نيورال لتصنيف الأرقام اليدوية
بيان المشكلة
لماذا يهم: تعتبر التعرف على الأرقام اليدوية مشكلة أساسية في مجال التعلم الآلي والرؤية الحاسوبية. إنها تعتبر معيارًا لتقييم فعالية نماذج التعلم الآلي، وخاصة في مهام تصنيف الصور.
التحديات
- تفسير أساليب الكتابة اليدوية المتنوعة.
- معالجة البيانات الصورية بطريقة تمكن النموذج الآلي من الفهم والتعلم منها.
- ضمان دقة وكفاءة النموذج في التعرف على الأرقام من 0 إلى 9.
حلنا باستخدام TensorFlow
إعداد البيانات (مجموعة بيانات MNIST)
- استخدمنا مجموعة بيانات MNIST، وهي مجموعة بيانات قياسية في التعلم الآلي تحتوي على 70,000 صورة أبيض وأسود لأرقام يدوية (من 0 إلى 9).
- تم توحيد البيانات (توضيحها لمدى من 0 إلى 1) لجعل تدريب النموذج أكثر كفاءة وفعالية.
بناء النموذج
بنينا شبكة نيورال باستخدام TensorFlow وKeras. لعمليات التوحيد والتصنيف في صنف واحد من فئات الأرقام من 0 إلى 9.
تدريب النموذج
تم تدريب النموذج على عدة مراحل (الدورات) على مجموعة التدريب الجزئية من مجموعة بيانات MNIST. خلال التدريب، تعلم النموذج تمييز الأنماط والميزات في الصور التي تتوافق مع كل رقم.
تقييم النموذج
قمنا بتقييم أداء النموذج على مجموعة تجريبية منفصلة. تحديداً هذه الخطوة اختبارت قدرة النموذج على تصنيف الصور اليدوية العددية الجديدة والغير مرئية من قبل النموذج.
النتيجة
كانت دقة النموذج على مجموعة الاختبار مؤشراً على فعاليته في حل مشكلة تعرف الأرقام اليدوية. دلالة على التحسن في الأداء في تمييز وتصنيف الأرقام بشكل صحيح.
أهمية التمرين
- القيمة التعليمية: هذا التمرين هو مشروع مقدمة تقليدي في التعلم الآلي وذكاء الآلة. يساعد المبتدئين على فهم المفاهيم الرئيسية في الشبكات العصبية، ومعالجة الصور، ومهام التصنيف.
- الأساس لمهام أكثر تعقيدًا: إتقان تعرف الأرقام يعد الأساس لمعالجة مشاكل أكثر تعقيدًا في حواس الكمبيوتر وذكاء الآلة.
- عرض قدرات TensorFlow: أظهر التمرين كيف يمكن استخدام TensorFlow لبناء، وتدريب، وتقييم شبكة عصبية، مما يسلط الضوء على طبيعتها العملية والقوية.
لماذا هذا المثال؟
- العملية: مجموعة بيانات MNIST تعتبر عالمية المرحلة الأولى في التعلم الآلي لتصنيف الصور.
- قابلية التطبيق: فهم كيفية العمل مع بيانات الصورة والشبكات العصبية تشكل الأساس للعديد من التطبيقات العالمية الحقيقية، من التعرف على الوجوه إلى تحليل الصور الطبية.
- القيمة التعليمية: يوفر هذا المثال فهمًا أساسيًا لمفاهيم TensorFlow الرئيسية، التي يمكن تطبيقها على مهام تعلم الآلة الأكثر تعقيدًا وتعقيدًا.
الهدف النهائي
بنهاية هذه التمرين، سنحصل على نموذج يمكنه التعرف بدقة على وتصنيف الأرقام المكتوبة بخط اليد. يعد هذا خطوة أساسية تجاه مهام التعرف على الصور الأكثر تقدمًا باستخدام التعلم العميق.
نظرة عامة على التنفيذ
- إعداد البيئة: تثبيت واستيراد TensorFlow والمكتبات الأخرى الضرورية.
- تحميل البيانات: تحميل ومعالجة مجموعة بيانات MNIST للتدريب والاختبار.
- بناء الشبكة العصبية:
- بناء نموذج تسلسلي بطبقات ورودية وخفية وإخراجية.
- استخدام
Flatten
لتحويل بيانات الصورة 2D إلى 1D. - تطبيق طبقات
Dense
للتصنيف.
- تجميع النموذج: تحديد وظيفة الخسارة، المحسن، والمقاييس للنموذج.
- تدريب النموذج: جعل النموذج يتناسب مع بيانات التدريب.
- تقييم النموذج: اختبر أداء النموذج باستخدام بيانات الاختبار التي لم ترها من قبل لتقييم دقته.
تثبيت TensorFlow
قبل أن نبدأ، يجب تثبيت TensorFlow في بيئتك. TensorFlow هي مكتبة متكاملة تُستخدم لإنشاء نماذج تعلُم الآلة. يمكنك تثبيته باستخدام مدير الحزم لـ Python، pip:
pip install tensorflow
استيراد TensorFlow و Keras
أولاً، نستورد TensorFlow. TensorFlow هي مكتبة تسمح للمطورين بإنشاء نماذج تعلُم الآلة المعقدة. نستورد أيضًا Keras، وهو جزء من TensorFlow ويوفر أدوات لبناء شبكات عصبية بسهولة.
import tensorflow as tf
from tensorflow.keras import layers, models
سياق تقني: TensorFlow هو مجموعة من الأدوات لتعلُم الآلة. Keras، وهو جزء من TensorFlow، يجعل الأمر أسهل في بناء وتدريب الشبكات العصبية.
تحميل وتحضير مجموعة بيانات MNIST
مجموعة بيانات MNIST هي مجموعة من 70,000 صورة بالأبيض والأسود لأرقام يدوية مكتوبة. نستخدم هذا لتدريب واختبار شبكتنا العصبية. يُستخدم هذا المجموعة عادة لتعلم أساسيات تعلُم الآلة.
mnist = tf.keras.datasets.mnist
(train_images, train_labels), (test_images, test_labels) = mnist.load_data()
train_images, test_images = train_images / 255.0, test_images / 255.0
سياق تقني: تحويل بيانات الصورة إلى قيمة نرمزية (بقسمتها على 255) أمر حاسم لأنه يحول قيم البكسل إلى نطاق أسهل للنموذج.
بناء نموذج الشبكة العصبية
هنا نبني نموذج شبكة عصبية أساسي. يتضمن ذلك إعداد الطبقات في تسلسل معين لمعالجة البيانات المدخلة وإنتاج النتيجة المرغوبة.
model = models.Sequential([
layers.Flatten(input_shape=(28, 28)),
layers.Dense(128, activation='relu'),
layers.Dropout(0.2),
layers.Dense(10, activation='softmax')
])
سياق تقني
تسطيح
: يحول بيانات الصورة الثنائية الأبعاد إلى مجموعة أحادية البعد.كثيف
: طبقة عصبية متصلة بالكامل.128
هو عدد الخلايا العصبية، وrelu
هو نوع من الدوال التي تساعد النموذج على تعلم العلاقات غير الخطية.تراجع
: يقلل من التحيز الزائد عن طريق تعيين الوحدات الوراثية إلى 0 بشكل عشوائي بتردد 20٪ في كل خطوة خلال التدريب.- آخر
كثيف
طبقة: إخراج نتيجة احتمالية لكل من فئات الأرقام 10 باستخدام دالةsoftmax
.
تجميع نموذج
يتضمن تجميع النموذج تحديد محسّن ودالة خسارة. تحدد هذه الإعدادات كيفية تحديث النموذج خلال التدريب وكيفية قياس دقته.
model.compile(optimizer='adam',
loss='sparse_categorical_crossentropy',
metrics=['accuracy'])
سياق تقني
محسّن
: محسّن آدام هو خوارزمية فعالة للنزول الانحداري، التي تساعد في تعديل وزن النموذج.دالة الخسارة
: ‘sparse_categorical_crossentropy’ مناسبة لمشكلات التصنيف بعدد متعدد من الفئات.
تدريب النموذج
الآن، يتم تدريب النموذج باستخدام بيانات التدريب. هذا هو المكان الذي يتعلم فيه النموذج تصنيف الصور من مجموعة البيانات.
model.fit(train_images, train_labels, epochs=5)
سياق تقني: يتضمن التدريب عرض النموذج للبيانات والسماح له بتعديل الأوزان لتقليل دالة الخسارة. ‘الأعوام’ هي عدد المرات التي يمر فيها المجموعة بأكملها عبر النموذج.
تقييم النموذج
أخيرًا، يتم اختبار النموذج باستخدام بيانات لم يرها من قبل (مجموعة الاختبار) لتقييم أدائه.
test_loss, test_acc = model.evaluate(test_images, test_labels, verbose=2)
print('\nTest accuracy:', test_acc)
سياق تقني: التقييم أمر حاسم لمعرفة مدى أداء النموذج على بيانات غير معتادة، مما يشير إلى كيفية أدائه في السيناريوهات الحقيقية.
الخاتمة
هذا الدليل يعرض TensorFlow، أداة قوية لتعلم الآلة، ويوضح بناء شبكة عصبية أساسية. تم تصميم كل خطوة لإعطاء المهندسين الجدد نظرة داخلية على عملية إنشاء النموذج والتدريب والتقييم، مما يسلط الضوء على الجوانب التقنية الرئيسية المتضمنة في تطوير الذكاء الاصطناعي.
Source:
https://dzone.com/articles/ai-frameworks-for-software-engineers-part-1