فهم الشبكات العصبية وبناء واحدة بنفسك رحلة عملية في عالم الشبكات العصبية، تبدأ من الصفر وتنتهي ببناء نموذجك الأول الشبكات العصبية ليست معقدة كما تبدو في البداية. تخيلها كعملية اتخاذ قرار في عشاء عائلي: لا يُطلب من شخص واحد تحديد ما إذا كان الطعام لذيذًا أم لا، بل يُطلب من كل فرد في العائلة إبداء رأيه. وكل رأي له وزن مختلف حسب من قاله. هذه هي الطريقة التي تُعالج بها الشبكات العصبية المعلومات — من خلال جمع آراء متعددة، كل منها يُعطى أهمية مختلفة حسب ما تعلّمه النموذج. 1. العصبون: وحدة البنية الأساسية العصبون هو المكون الأساسي في الشبكة. يتلقى مدخلات، يُضاعفها بقيم تُسمى "أوزان"، يضيف قيمة تُعرف بـ"الانحياز"، ثم يمرر الناتج عبر دالة تنشيط لتحديد مخرجاته. صيغة رياضية بسيطة لعصبون واحد: [ z = w_1x_1 + w_2x_2 + \dots + b ] ثم تُطبّق دالة التنشيط: [ a = f(z) ] 2. الطبقات: الترتيب الذكي للمعلومات تُرتّب العصبونات في طبقات. الطبقات الأولى تُعالج المدخلات الخام، والطبقات الوسطى (الخفية) تُكوّن مفاهيم متوسطة، بينما الطبقة النهائية تُعطي التوقع النهائي. إذا كانت طبقة تحتوي على ( m ) عصبونات و( n ) مدخلات، فإن الحساب يصبح: [ \mathbf{z} = \mathbf{W} \cdot \mathbf{x} + \mathbf{b} ] [ \mathbf{a} = f(\mathbf{z}) ] 3. التمرير الأمامي (Forward Pass) هذا هو مسار المعلومات: من المدخلات إلى التوقع النهائي. - تدخل البيانات إلى الطبقة الأولى. - كل عصبون يحسب مخرجاته باستخدام أوزانه وانحيازه ودالة التنشيط. - المخرجات تصبح مدخلات للطبقة التالية. - في النهاية، تُنتج الطبقة النهائية التوقع النهائي. 4. دالة الخسارة (Loss Function) لتمكين التعلّم، يجب على الشبكة معرفة مدى خطأ توقعاتها. دالة الخسارة تقيس الفرق بين التوقع والقيمة الحقيقية. كلما كانت الخسارة أقل، كانت النتيجة أدق. 5. التغذية العكسية (Backpropagation) هي آلية التعلّم. تبدأ من النهاية وتُعيد حساب تأثير كل وزن على الخطأ، ثم تُعدّل الأوزان تدريجيًا لتقليل الخطأ. 6. دوال التنشيط: ما يُقرر قوة الرد تُحدد دالة التنشيط ما إذا كان العصبون "يُفعّل" أم لا. أمثلة شائعة: ReLU، Sigmoid، وSoftmax. مثال عملي: توقع سعر منزل لنفترض أنك تريد توقع سعر منزل. مجرد عدد الغرف لا يكفي. لكن إذا جمعت: - عمر المنزل + عدد التحديثات → فكرة "الحداثة" - الموقع + عدد المدارس القريبة → فكرة "جودة الحي" - المساحة + عدد الغرف + الحمامات → فكرة "الحجم" هذه المفاهيم المتوسطة تُستخدم في النهاية لتحديد السعر. هذا بالضبط ما تفعله الطبقات المخفية في الشبكة العصبية: تُكوّن مفاهيم معقدة من مدخلات بسيطة. لكن الشبكة لا تُخبرها كيف تُكوّن هذه المفاهيم. بل تتعلمها من خلال التدريب، من خلال تعديل الأوزان والانحيازات تلقائيًا. بناء نموذج بسيط لتصنيف الأرقام المكتوبة بيد سنستخدم مجموعة بيانات MNIST، التي تحتوي على صور 28×28 للرقم من 0 إلى 9. الهدف: تدريب شبكة عصبية لتحديد الرقم الصحيح. الخطوة 1: استيراد المكتبات python import tensorflow as tf from tensorflow.keras.datasets import mnist from tensorflow.keras.models import Sequential from tensorflow.keras.layers import Dense, Flatten from tensorflow.keras.utils import to_categorical الخطوة 2: تحميل وتجهيز البيانات ```python (x_train, y_train), (x_test, y_test) = mnist.load_data() تطبيع قيم البكسل (من 0-255 إلى 0-1) x_train = x_train / 255.0 x_test = x_test / 255.0 تحويل التصنيفات إلى أشكال "أحادية" (One-hot encoding) y_train = to_categorical(y_train, 10) y_test = to_categorical(y_test, 10) ``` الشرح: - التطبيع يضمن أن لا يهيمن أي بكسل على الآخرين. - الترميز الأحادي يسمح للنموذج بتمثيل كل رقم كمُمثّل في متجه من 10 أرقام. الخطوة 3: بناء الشبكة python model = Sequential([ Flatten(input_shape=(28, 28)), # تحويل الصورة إلى متجه Dense(128, activation='relu'), # طبقة مخفية بـ128 عصبونًا Dense(10, activation='softmax') # طبقة نهائية: 10 احتمالات للرقم ]) الخطوة 4: تجميع النموذج python model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy']) الخطوة 5: التدريب python model.fit(x_train, y_train, epochs=5, batch_size=32, validation_split=0.1) الخطوة 6: التقييم python model.evaluate(x_test, y_test) الخطوة 7: التوقعات python import numpy as np predictions = model.predict(x_test[:5]) for i, pred in enumerate(predictions): print(f"الصورة {i} تم التنبؤ بأنها: {np.argmax(pred)}") خلاصة الشبكات العصبية هي أنظمة مبنية من عصبونات متصلة، تتعلم من البيانات دون برمجة صريحة. - كل عصبون يُعامل المدخلات بوزن وانحياز ودالة تنشيط. - المعلومات تمر عبر طبقات، حيث تُبنى مفاهيم أكثر تعقيدًا. - تُستخدم دالة الخسارة لتقييم الأداء، والتغذية العكسية لتحسين الأوزان. في مثالنا، بنينا نموذجًا ناجحًا يُصنّف الأرقام المكتوبة بيد بدقة عالية، باستخدام تقنيات بسيطة لكنها قوية. حتى في هذه الصورة البسيطة، تظهر قوة التعلّم الآلي: تحويل مدخلات خام إلى توقعات دقيقة، تمامًا كما يُصوّر العائلة قرارها النهائي من خلال جمع آراء متعددة.
تُعد الشبكات العصبية نظامًا مُحاكًا للدماغ البشري، يتعلم من البيانات عبر اكتشاف الأنماط المعقدة. تُشبه عملية اتخاذ القرار في عائلة كبيرة: كل عضو يُقدّم رأيه بوزن مختلف، ويُنتَج قرار نهائياً بناءً على تجميع هذه الآراء. في الشبكة العصبية، تُسمّى هذه الوحدات "الخلايا العصبية"، وتُعالج المدخلات عبر تطبيق أوزان (Weights) وانحياز (Bias)، ثم تمرر النتيجة عبر دالة نشاط (Activation Function) لتحديد مدى قوة الإخراج. تُرتّب الخلايا العصبية في طبقات: طبقة دخول (Input Layer)، طبقات مخفية (Hidden Layers)، وطبقة خروج (Output Layer). في عملية "التمرير الأمامي" (Forward Pass)، تُرسل المدخلات عبر الطبقات، حيث تُحسب كل خلية ناتجها بناءً على أوزانها، ثم يُستخدم الناتج كمُدخل للطبقة التالية. في مثال توقع سعر منزل، لا يعتمد التقدير على عنصر واحد مثل عدد الغرف، بل على تجميع معلومات متعددة — مثل العمر، عدد الترميمات، الموقع، والكثافة السكانية — لتكوين مفاهيم مركبة مثل "جودة الحي" أو "المساحة"، والتي تُستخدم بعدها في اتخاذ القرار النهائي. لتدريب الشبكة، تُستخدم دالة الخسارة (Loss Function) لقياس مدى خطأ التنبؤات مقارنة بالقيم الحقيقية. ثم تُطبّق خوارزمية "الانتشار العكسي" (Backpropagation)، التي تُعدّل الأوزان والانحيازات تدريجيًا لتقليل الخطأ، عبر حساب التدرجات وتعديل القيم في الاتجاه الصحيح. تُستخدم دوال النشاط مثل ReLU أو Softmax لإدخال غير خطية، مما يسمح للشبكة بتمييز أنماط معقدة. في التطبيق العملي، تم بناء شبكة عصبية بسيطة باستخدام مكتبة TensorFlow لتصنيف الأرقام اليدوية من مجموعة MNIST. تضم هذه المجموعة صورًا بحجم 28×28 بكسلًا، تم تطبيع قيم البكسلات إلى النطاق 0–1 لتسريع التدريب. كما تم تحويل التصنيفات (0 إلى 9) إلى تمثيلات "مُحولة إلى واحد" (One-hot Encoding)، بحيث يصبح كل رقم متجهًا من عشرة عناصر، يُشغّل فيه العنصر المقابل للرقم 1، والباقي 0. تم بناء النموذج باستخدام طبقة تسطيح (Flatten) لتحويل الصورة ثنائية الأبعاد إلى متجه، ثم طبقة مخفية بـ128 خلية باستخدام دالة ReLU، وأخيرًا طبقة خروج بـ10 خلايا باستخدام دالة Softmax لتوليد احتمالات لكل رقم. تم تجميع النموذج باستخدام خوارزمية Adam، ودالة خسارة "الخطيئة التصنيفية المتعددة" (Categorical Crossentropy)، مع قياس الدقة (Accuracy) كمقياس أداء. بعد تدريب النموذج على 5 دورات (Epochs) باستخدام حزم بحجم 32، تم تقييم أداؤه على بيانات الاختبار، وبلغت دقة التنبؤ أكثر من 97%. عند اختباره على أول 5 صور، نجح في التنبؤ بالرقم الصحيح في كل حالة. هذا النموذج البسيط يُظهر القوة الحقيقية للشبكات العصبية: قدرتها على تعلُّم ميزات معقدة من بيانات خام، دون الحاجة إلى تحديد هذه الميزات يدويًا. بدلاً من ذلك، تُحدّد الشبكة تلقائيًا الترابطات المهمة بين المدخلات، عبر تعديل الأوزان أثناء التدريب. هذا المبدأ يُطبّق على مجالات متعددة، من التعرف على الصور والصوت إلى التنبؤات الاقتصادية، مُظهِرًا كيف يمكن للذكاء الاصطناعي أن يُقلّد التفكير البشري بطريقة رياضية منظمة وفعّالة.
