تخطَّ إلى المحتوى

🤖 شرح الذكاء الاصطناعي وتعلّم الآلة

المتجهات والمصفوفات للذكاء الاصطناعي

الدرس 11 من 50· ⏱ 5 دقائق قراءة· 🗓 آخر تحديث: ١٨ سبتمبر ٢٠٢٦

كل ما ستتعامل معه في تعلّم الآلة والتعلّم العميق — صورة، جدول ميزات، تنبؤ نموذج — هو في جوهره مصفوفة أو متجه. هذه الصفحة تشرح الحد الأدنى الذي تحتاجه فعليًا، بدون الدخول في تعريفات رياضية أكاديمية.

ما هو المتجه (Vector)؟

متجّه = قائمة مرتّبة من الأرقام. كل رقم له موقع في القائمة (مَوْضع أول، ثان، ثالث...).

أمثلة عملية من مشاريع AI:

سعر منزل واحد = [120000]                    # متجه بُعد واحد (رقم واحد)
بيانات منزل: مساحة، غرف، عمر  = [85, 3, 20]  # متجه بثلاثة أبعاد
ميزات صورة 28×28 بالأسود والأبيض = 784 رقمًا (متجه بُعد 784)

لاحظ أن المتجه ليس "كمية لها اتجاه" بالضرورة (المعنى الفيزيائي) — في تعلّم الآلة، المتجه مجرد صف من الأرقام.

في بايثون بـ NumPy (الذي تعلّمته في NumPy للذكاء الاصطناعي):

import numpy as np

# متجه صف
v = np.array([1, 2, 3, 4])
print(v.shape)   # (4,) — أربع قيم
print(v[0])      # 1.0 — العنصر الأول

ما هي المصفوفة (Matrix)؟

مصفوفة = جدول من الأرقام مرتّب في صفوف وأعمدة. كل صف متجه، وكل عمود متجه.

مصفوفة ميزات 5 منازل × 3 أعمدة (مساحة، غرف، عمر):

       عمود 1   عمود 2   عمود 3
صف 1:   120       3       10
صف 2:   200       4        5
صف 3:    85       2       20
صف 4:   300       5        2
صف 5:   150       3       15

في NumPy:

houses = np.array([
    [120, 3, 10],
    [200, 4,  5],
    [ 85, 2, 20],
    [300, 5,  2],
    [150, 3, 15],
])

print(houses.shape)  # (5, 3) — 5 صفوف × 3 أعمدة
print(houses[0])     # الصف الأول = [120, 3, 10]
print(houses[:, 0])  # العمود الأول = [120, 200, 85, 300, 150]

الشكل (Shape) — أهم مفهوم

كل ndarray له shape يخبرك بأبعاده. تذكّر:

  • شكل (n,) = متجه (بعد واحد)، فيه n قيمة.
  • شكل (m, n) = مصفوفة، فيها m صف و n عمود.
  • شكل (m, n, k) = مصفوفة ثلاثية الأبعاد (مثل صورة RGB: m صف × n عمود × 3 قنوات لون).
# مثال على شكل ثلاثي الأبعاد: صورة RGB صغيرة
image = np.random.random((64, 64, 3))
print(image.shape)   # (64, 64, 3)
#   64         → ارتفاع (صفوف)
#   64         → عرض (أعمدة)
#   3          → قنوات لون (أحمر، أخضر، أزرق)

عمليات أساسية على المتجهات والمصفوفات

جمع وطرح عنصر بعنصر

a = np.array([1, 2, 3])
b = np.array([10, 20, 30])

print(a + b)   # [11 22 33]
print(b - a)   # [9 18 27]

ضرب بعدد (Scaling)

a = np.array([1, 2, 3])
print(a * 5)   # [5 10 15]

ضرب عنصر بعنصر (ضرب Hadamard)

a = np.array([1, 2, 3])
b = np.array([10, 20, 30])
print(a * b)   # [10 40 90] — ضرب كل عنصر بما يقابله

هذا ليس ضرب المصفوفات الذي درسته في الجبر الخطي — بل ضرب عنصر بعنصر.

ضرب المصفوفات الحقيقي (Matrix Multiplication)

هذا هو الضرب الذي يحوّل البيانات إلى تنبؤات في الشبكات العصبية:

# ضرب مصفوفة بمتجه
X = np.array([[1, 2],
              [3, 4],
              [5, 6]])          # شكل (3, 2)
w = np.array([0.5, 0.25])       # شكل (2,)
y = X @ w                       # شكل (3,)
print(y)   # [1.0, 2.5, 4.0]

@ في NumPy = ضرب مصفوفات حقيقي (متوافق مع الأشكال).

التبديل (Transpose)

تبديل صفوف المصفوفة بأعمدتها:

A = np.array([[1, 2, 3],
              [4, 5, 6]])     # شكل (2, 3)
print(A.T.shape)               # (3, 2)

كيف تظهر في مشاريع الذكاء الاصطناعي؟

  • الجداول (DataFrames) هي في الحقيقة مصفوفات تحت الغطاء. Pandas يحول الجدول إلى NumPy عند تدريب النماذج.
  • الصور هي مصفوفات ثلاثية الأبعاد: (ارتفاع, عرض, قنوات_لون).
  • النصوص بعد تحويلها إلى embeddings هي مصفوفات: (عدد_الجمل, بُعد_التمثيل).
  • أوزان الشبكة العصبية هي مصفوفات بين كل طبقة والتي بعدها.
  • التنبؤ = مصفوفة المدخلات @ مصفوفة الأوزان + متجه الانحياز (bias).
# مثال مبسط: تنبؤ خطي بسيط (Linear Regression)
# المعادلة: y = X @ w + b
X = np.array([[1], [2], [3], [4]])    # 4 أمثلة، كل واحد بميزة واحدة
w = np.array([2.5])                   # الوزن
b = np.array([1.0])                   # الانحياز
y = X @ w + b
print(y)   # [3.5, 6.0, 8.5, 11.0]

مصطلحات ستحتاجها كثيرًا

المصطلحالمعنى
Vectorمصفوفة ذات بُعد واحد (صف أو عمود).
Matrixمصفوفة ذات بُعدين (صفوف وأعمدة).
Tensorتعميم لأكثر من بُعدين.
Shapetuple يصف عدد القيم في كل بُعد.
Dot productضرب متجهين يعطي عددًا واحدًا.
Element-wiseعملية عنصر بعنصر.
Transposeتبديل الصفوف بالأعمدة.

أخطاء شائعة

  • خلط الضرب العنصري مع ضرب المصفوفات: a * b ليس a @ b. النتائج مختلفة تمامًا.
  • أشكال غير متوافقة: ضرب المصفوفات يحتاج (m, k) @ (k, n) = (m, n). NumPy يعطيك خطأ واضح إذا كانت الأشكال غير متوافقة.
  • التفكير بأن "المتجه = سهم في الفراغ": في الرياضيات العامة نعم، في تعلّم الآلة المتجه مجرد قائمة أرقام مرتّبة.
  • عدم التفكير في الشكل: قبل أي عملية، اطبع .shape للمصفوفات. هذا يوفّر ساعات من الأخطاء.

الخطوات التالية

شرح المتجهات والمصفوفات للذكاء الاصطناعي — الذكاء الاصطناعي وتعلّم الآلة بالعربي
المتجهات والمصفوفات للذكاء الاصطناعيالذكاء الاصطناعي وتعلّم الآلة بالعربي · The Code Fix

📚 لمزيد من التعمّق في الذكاء الاصطناعي وتعلّم الآلة، راجِع توثيق scikit-learn الرسمي.

هل كان هذا الدرس مفيدًا؟