هذه الصفحة تبني الحدس الرياضي وراء الشبكة العصبية قبل أي إطار عمل (PyTorch / TensorFlow). إذا قرأت ما هو التعلّم العميق وفهمت المفهوم العام، فهذه الصفحة تشرح كيف يعمل الحساب فعليًا.
ما هي الشبكة العصبية؟
شبكة عصبية اصطناعية = سلسلة من العمليات الرياضية البسيطة المتتابعة، تُجمَّع في طبقات، تُحوّل مدخلًا إلى مخرَج.
ملاحظة مهمّة: رغم الاسم "عصبية"، الشبكات الاصطناعية لا تحاكي الدماغ البشري تشبيهًا حقيقيًا. الاسم مصدره استلهام تاريخي من الخلايا العصبية البيولوجية، لكن الشبكات العصبية الحديثة هي حسابات رياضية بحتة. لا تخلط بين التشبيه والواقع.
العصبون الاصطناعي (Neuron) — الوحدة الأساسية
عصبون اصطناعي واحد يقوم بثلاث خطوات:
المدخلات (x₁, x₂, ..., xₙ)
↓
المجموع المرجّح (z)
↓
دالة التنشيط (a)
↓
المخرَج (output)
الخطوة 1: المجموع المرجّح
z = (x₁ · w₁) + (x₂ · w₂) + ... + (xₙ · wₙ) + b
xᵢ= قيمة المدخل iwᵢ= الوزن (weight) للمدخل i — أهم ما يتعلّمه النموذجb= الانحياز (bias) — قيمة افتراضية تُضاف للمجموع
الخطوة 2: دالة التنشيط
a = activation(z)
دالة رياضية غير خطّية تحوّل z إلى مخرَج. مثل ReLU أو Sigmoid. تفصيل في دوال التنشيط.
مثال عددي بسيط
افترض عصبونًا بمُدخلين:
x₁ = 2.0, w₁ = 0.5
x₂ = 1.0, w₂ = -1.0
b = 0.1
z = (2.0 × 0.5) + (1.0 × -1.0) + 0.1
= 1.0 + (-1.0) + 0.1
= 0.1
a = ReLU(0.1) = 0.1 # لأن 0.1 > 0
النتيجة 0.1 هي مخرَج العصبون.
الشبكة — مجموعة من العصبونات
شبكة بسيطة بطبقة مخفية واحدة:
المدخلات الطبقة المخفية المخرَج
(x₁, x₂, x₃) → (h₁, h₂, h₃) → (y)
↑ كل hᵢ هو عصبون
كل عصبون في الطبقة المخفية يأخذ كل المدخلات، يطبّق المجموع المرجّح + التنشيط، ويُمرّر ناتجه إلى الطبقة التالية.
شكل آخر:
Input layer → Hidden layer → Output layer
x₁ ──────╮ │ │
x₂ ──────┼─────→ [neuron h₁] ───╮ │
x₃ ──────╯ │ │ ↓
╭─────→ [neuron h₂] ────┼───→ [y]
x₁ ──────╯ │ │
x₂ ──────╮ ╭─→[neuron h₃] ───╯
x₃ ──────┴───┴───┘
كل خط = وزن. الشبكة العصبية النموذجية تحتوي ملايين من الأوزان.
الأوزان (Weights) — ما يتعلّمه النموذج
الأوزان هي كل ما "يتعلّمه" الشبكة العصبية:
- أوزان صغيرة → الميزة لا تؤثّر كثيرًا.
- أوزان كبيرة موجبة → الميزة تزيد المخرَج.
- أوزان كبيرة سالبة → الميزة تقلّل المخرَج.
عند التدريب، تجد الخوارزمية (gradient descent) قيم الأوزان التي تُقلّل دالة الخسارة (loss). تفصيل في الانتشار العكسي.
الانحياز (Bias) — نقطة البداية
z = w·x + b
↑ ↑
input shift
b يسمح للشبكة بإخراج قيم غير صفرية حتى حين كان المدخل صفرًا. بدون b، الشبكة ستمرّ دائمًا عبر نقطة الأصل.
الطبقات (Layers)
طبقة المدخل (Input Layer)
لا "تفعل" شيئًا — فقط تمرّر المدخلات. عدد الخلايا = عدد الميزات.
الطبقة المخفية (Hidden Layer)
هنا يحدث التعلّم. كل خلية فيها أوزان وانحياز ودالة تنشيط. شبكة عميقة = طبقات مخفية كثيرة.
طبقة المخرَج (Output Layer)
تُنتج التنبّؤ النهائي. عدد الخلايا = نوع المشكلة:
- انحدار: خلية واحدة (رقم).
- تصنيف ثنائي: خلية واحدة مع sigmoid (احتمال).
- تصنيف متعدد: N خلايا مع softmax (توزيع احتمالات).
تنبّؤ الشبكة (Inference)
المدخلات x
↓
[Layer 1] → [Layer 2] → ... → [Output]
↓ ↓ ↓
z₁ z₂ z_out
↓ ↓ ↓
a₁ a₂ prediction
كل طبقة تطبّق:
z = W @ x + b
a = activation(z)
تفصيل الحساب في الانتشار الأمامي.
مثال: شبكة بمدخلين ومخرَج واحد
Input: [x₁, x₂] (2 ميزات)
Hidden: 3 عصبونات (3 خلايا مخفية)
Output: 1 عصبون (تنبّؤ واحد)
حساب يدوي (بافتراض أوزان معطاة):
import numpy as np
# المدخل
x = np.array([2.0, 1.0])
# أوزان الطبقة المخفية (3 عصبونات × 2 مدخلات)
W_hidden = np.array([
[0.5, -0.3], # أوزان العصبون h₁
[0.1, 0.8], # أوزان العصبون h₂
[-0.4, 0.2], # أوزان العصبون h₃
])
b_hidden = np.array([0.1, -0.2, 0.0])
# حساب مخرج الطبقة المخفية
z_hidden = W_hidden @ x + b_hidden
# z_hidden = [2.0×0.5 + 1.0×(-0.3) + 0.1, 2.0×0.1 + 1.0×0.8 - 0.2, 2.0×(-0.4) + 1.0×0.2 + 0.0]
# z_hidden = [1.0 - 0.3 + 0.1, 0.2 + 0.8 - 0.2, -0.8 + 0.2 + 0.0]
# z_hidden = [0.8, 0.8, -0.6]
# تطبيق ReLU
a_hidden = np.maximum(0, z_hidden)
# a_hidden = [0.8, 0.8, 0.0]
ما الذي يجعل الشبكات "تتعلّم"؟
ثلاثة عناصر أساسية:
- البيانات: أمثلة كافية لتغطية الأنماط.
- دالة الخسارة: مقياس كم يخطئ النموذج.
- خوارزمية التحسين (Gradient Descent): تجد الأوزان التي تقلّل الخسارة.
تفصيل في دوال الخسارة وOptimizers و Regularization.
أخطاء شائعة
- "الشبكات العصبية تفكّر مثل الدماغ": لا. هي حسابات رياضية. الدماغ أعقد بكثير.
- "المزيد من العصبونات دائمًا أفضل": ليس بالضرورة. يمكن أن يسبب overfitting.
- "الانحياز سيء": لا — الانحياز ضروري لتعلّم أنماط لا تمرّ بنقطة الأصل.
- "الطبقة المخفية طبقة سحرية": لا — هي مجرد ضرب مصفوفات + دالة تنشيط، مثل أي طبقة أخرى.
الخطوات التالية
- دوال التنشيط — لماذا نحتاج non-linearity.
- الانتشار الأمامي — الحساب خطوة بخطوة.
- دوال الخسارة — كيف نقيس خطأ النموذج.
- الانتشار العكسي — كيف تتعلّم الشبكة.
- Optimizers و Regularization — كيف تُحدَّث الأوزان.
🔍 إذا كنت تبحث عن إطار عمل لتطبيق هذه المفاهيم عمليًا، راجع PyTorch: Tensors و Dataset.