د حسام عودة يكتب / الشبكات العصبية الاصطناعية: تعريف وتطبيقات
تعرف على الشبكات العصبية الاصطناعية وكيفية عملها بالإضافة إلى تطبيقاتها العملية في مجالات متعددة مستوحاة من عمل الدماغ البشري والخلايا العصبية.
الشبكات العصبية الاصطناعية: تكوينها وطريقة عملها وتطبيقاتها العملية
بقلم د حسام عودة
تعريف الشبكات العصبية الاصطناعية
(Artificial Neural Networks)
الشبكات العصبية الاصطناعية هي نماذج حسابية مستوحاة من كيفية عمل الدماغ البشري. تتكون هذه الشبكات من وحدات معالجة صغيرة تسمى الخلايا العصبية (Neurons) التي تعمل معًا لمعالجة البيانات وتعلم الأنماط.
تكوين الشبكات العصبية الاصطناعية
الخلايا العصبية (Neurons)
الخلايا العصبية هي الوحدات الأساسية في الشبكة العصبية. تتلقى مدخلات، تُجري عليها عمليات حسابية، وتُرسل النتائج كإخراجات.
الطبقات (Layers)
طبقة الإدخال (Input Layer): تتلقى البيانات الأولية من الخارج.
الطبقات المخفية (Hidden Layers): توجد بين طبقة الإدخال وطبقة الإخراج وتُجري عمليات حسابية معقدة على البيانات.
طبقة الإخراج (Output Layer): تُعطي النتيجة النهائية لمعالجة البيانات.
الأوزان (Weights)
الأوزان هي معاملات تربط الخلايا العصبية ببعضها البعض. تتحكم في قوة الإشارة المُرسلة بين الخلايا العصبية.
التحيزات (Biases)
التحيزات هي قيم تضاف إلى الإجمال الكلي للمدخلات المضروبة في الأوزان قبل تمريرها إلى الخلايا العصبية التالية.
دوال التفعيل (Activation Functions)
دوال رياضية تحدد ما إذا كان ينبغي للخلايا العصبية أن تُفعّل (تنشط) أم لا، مثل دالة ReLU، دالة sigmoid، ودالة tanh.
طريقة عمل الشبكات العصبية الاصطناعية
التمرير الأمامي (Forward Propagation)
تُرسل المدخلات عبر طبقة الإدخال إلى الطبقات المخفية، حيث تُجرى العمليات الحسابية وتُمرر النتائج إلى الطبقة التالية حتى تصل إلى طبقة الإخراج.
مثال:
z=∑(wi⋅xi)+bz = sum (w_i cdot x_i) + bz=∑(wi⋅xi)+b
a=activation(z)a = text{activation}(z)a=activation(z)
حساب الخسارة (Loss Calculation)
تقارن مخرجات النموذج بالقيم الحقيقية لتحديد مقدار الخطأ أو الخسارة.
دوال الخسارة الشائعة تشمل خطأ المتوسط المربع (MSE) ودالة الانتروبيا التقاطعية (Cross-Entropy).
الانتشار العكسي (Backpropagation)
تُستخدم لتعديل الأوزان والتحيزات لتقليل الخسارة.
تعتمد على مشتقات دالة الخسارة بالنسبة للأوزان (الانتقال العكسي عبر الشبكة).
التحديث (Update)
تُستخدم خوارزميات التحسين مثل التدرج المتناقص (Gradient Descent) لتحديث الأوزان والتحيزات بناءً على المشتقات المحسوبة.
تطبيقات واستخدامات الشبكات العصبية الاصطناعية
التعرف على الصور (Image Recognition)
تُستخدم الشبكات العصبية التلافيفية (Convolutional Neural Networks - CNNs) لتحليل الصور واستخراج الميزات وتصنيف الصور، مثل تحديد الأشخاص أو الأشياء في الصور.
معالجة اللغة الطبيعية (Natural Language Processing - NLP)
تُستخدم الشبكات العصبية المتكررة (Recurrent Neural Networks - RNNs) والنماذج الأكثر تطورًا مثل Transformers لفهم النصوص، الترجمة الآلية، توليد النصوص، وتحليل المشاعر.
التعرف على الصوت (Speech Recognition)
تُستخدم الشبكات العصبية لتحويل الكلام المنطوق إلى نصوص مكتوبة، مثل Google Voice وSiri.
التوصيات (Recommendations)
تُستخدم الشبكات العصبية في أنظمة التوصيات مثل توصيات المنتجات على Amazon أو الأفلام على Netflix، بناءً على تحليل سلوك المستخدمين وتفضيلاتهم.
الألعاب (Games)
تُستخدم الشبكات العصبية لتطوير الذكاء الاصطناعي في الألعاب، مثل تدريب النماذج على لعب ألعاب الفيديو بمستوى عالٍ من الأداء.
السيارات الذاتية القيادة (Autonomous Vehicles)
تُستخدم الشبكات العصبية في تحليل بيانات المستشعرات واتخاذ قرارات القيادة مثل التوجيه والتسارع والكبح.
مثال تطبيقي بسيط باستخدام الشبكات العصبية في مكتبة Keras
يمكننا بناء نموذج بسيط لتصنيف الأرقام المكتوبة بخط اليد باستخدام مكتبة Keras بلغة Python. هذا المثال يستخدم مجموعة بيانات MNIST الشهيرة.
python
Copy code
import tensorflow as tf
from tensorflow.keras import layers, models
from tensorflow.keras.datasets import mnist
# تحميل بيانات MNIST
(train_images, train_labels), (test_images, test_labels) = mnist.load_data()
# تجهيز البيانات
train_images = train_images.reshape((60000, 28, 28, 1)).astype('float32') / 255
test_images = test_images.reshape((10000, 28, 28, 1)).astype('float32') / 255
# بناء النموذج
model = models.Sequential()
model.add(layers.Conv2D(32, (3, 3), activation='relu', input_shape=(28, 28, 1)))
model.add(layers.MaxPooling2D((2, 2)))
model.add(layers.Conv2D(64, (3, 3), activation='relu'))
model.add(layers.MaxPooling2D((2, 2)))
model.add(layers.Conv2D(64, (3, 3), activation='relu'))
model.add(layers.Flatten())
model.add(layers.Dense(64, activation='relu'))
model.add(layers.Dense(10, activation='softmax'))
# تجميع النموذج
model.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['accuracy'])
# تدريب النموذج
model.fit(train_images, train_labels, epochs=5, batch_size=64)
# تقييم النموذج
test_loss, test_acc = model.evaluate(test_images, test_labels)
print(f'Test accuracy: {test_acc}')
في هذا المثال، نقوم بتحميل بيانات MNIST، تجهيزها، بناء نموذج بسيط للشبكة العصبية التلافيفية (CNN)، تدريب النموذج على البيانات، وأخيرًا تقييم دقة النموذج. الشبكة العصبية تتعلم من البيانات وتصبح قادرة على تصنيف الأرقام المكتوبة بخط اليد بدقة عالية.