الشبكات العصبية1986تأسيسي8 دقيقة قراءة

تعلُّم التمثيلات عبر الانتشار العكسي للأخطاء

Learning Representations by Back-Propagating Errors

Rumelhart, D. E. · Hinton, G. E. · Williams, R. J. — Nature

المشكلة

البيرسيبترون أحادي الطبقة لا يستطيع تعلُّم سوى الأنماط القابلة للفصل بخط مستقيم، وفشله الشهير في حل مسألة XOR خير دليل على ذلك. الحل النظري كان واضحًا: أضِف طبقات خفية تتعلّم تمثيلات داخلية. لكن المشكلة العملية ظلّت عالقة: كيف تُوجِّه وحدة خفية لا ترى الناتج المطلوب أصلًا لتعرف كيف تُعدّل أوزانها؟

الإسهام

خوارزمية تعلُّم عملية تصلح لأي شبكة متعددة الطبقات. الفكرة الجوهرية هي تطبيق التفاضلية بشكل منهجي لتفكيك الخطأ عند المخرجات إلى تدرُّج لكل وزن في كل طبقة، بما في ذلك الطبقات الخفية التي لا تملك إشارة خطأ مباشرة. بذلك يعرف كل وزن نصيبه الدقيق من الخطأ، ويتولّى تحديث الأوزان كلها. الأهم من ذلك أن الطبقات الخفية تكتشف سمات داخلية مفيدة من تلقاء نفسها، دون أن يُحدِّد لها أحد ماذا يجب أن تتعلّم.

الأثر

الانتشار العكسي هو ما جعل التعلُّم العميق ممكنًا. قبله كانت الشبكات العصبية محصورة في طبقة واحدة وعاجزة عن تعلُّم الأنماط المعقّدة. اليوم هو خوارزمية الأساسية خلف كل شبكة عصبية حديثة: من الشبكات الالتفافية التي فازت بمسابقة ImageNet إلى المحوِّلات التي تُشغّل GPT وClaude. باختصار، حوّل الشبكات العصبية من فكرة نظرية إلى أداة هندسية فعّالة.

تخيّل خط تجميع في مصنع يمرّ بثلاث محطات. في النهاية يخرج منتج معيب. المفتّشة لا تلوم المحطة الأخيرة مباشرةً، بل تتتبّع العيب بالعكس: الطلاء سليم (المحطة 3)، لكن القطعة مشوّهة (المحطة 2) لأن المادة الخام قُصّت بشكل خاطئ (المحطة 1).

هذا بالضبط ما يفعله . «العيب» هنا هو الفرق بين ما تنبّأت به الشبكة والقيمة الصحيحة. تتتبّع هذا الفرق عكسيًّا عبر كل طبقة، فيعرف كل نصيبه الدقيق من العيب، ثم يُعدِّل نفسه ليُقلّل الخطأ في الدورة التالية.

المشكلة: الطبقات الخفية لم تكن تعرف كيف تتعلّم

بحلول منتصف الثمانينيات، وصلت إلى طريق مسدود. أحادي الطبقة لا يحلّ إلا المسائل التي يمكن فصل فئاتها بخط مستقيم، وكان مينسكي وبابيرت قد أثبتا عام 1969 أن هذا يعني العجز حتى عن حلّ دوالّ بسيطة مثل XOR. الحل كان واضحًا من الناحية النظرية: أضِف تتعلّم سمات داخلية. لكن العائق كان واضحًا بنفس القدر: كيف تحسب إشارة تعلُّم لوحدة خفية لا ترى الإجابة الصحيحة أصلًا؟

  • في ، الخطأ واضح ومباشر: ŷ − y، ويمكنك حساب ∂L/∂w مباشرةً.

  • في الطبقة الخفية، لا يوجد ناتج مرجعي. «خطأ» الوحدة الخفية يجب أن يُستنبط من تأثيرها على المخرجات، لكن هذا التأثير يمرّ عبر كل طبقة لاحقة ودوالّها اللاخطّية.

ما أثبته رامِلهارت وهينتون وويليامز هو أن قاعدة السلسلة التفاضلية تحلّ هذه المشكلة بدقّة: فكِّك خطأ المخرجات إلى جداء مشتقات محلية — واحدة لكل طبقة — ثم اضربها ببعضها من المخرجات نحو المدخلات. النتيجة: كل وزن يحصل على يخبره بالاتجاه الذي يجب أن يتغيّر فيه.

افتح في المختبر
بدِّل بين بيرسيبترون منفرد وشبكة بطبقة خفية. لا يوجد خط واحد يحل XOR بمفرده.
تستيقظ التجربة عند وصولك…

الفكرة: تتبُّع الخطأ عكسيًّا بقاعدة السلسلة

الخوارزمية تتكوّن من مرحلتين تتناوبان على كل مثال تدريبي:

— تتدفّق البيانات من المدخلات عبر الطبقات الخفية وصولًا إلى المخرجات، فتُنتج تنبّؤًا ŷ وقيمة فقد L = ½(ŷ − y)².

التمرير العكسي — يسري التدرُّج في الاتجاه المعاكس، طبقةً بطبقة. عند كل طبقة، تقول قاعدة السلسلة: اضرب التدرُّج القادم من الطبقة التالية في المشتقة المحلية لعملية هذه الطبقة. والنتيجة هي ∂L/∂w لكل وزن — أي الاتجاه الذي يُقلّل الخطأ.

بعدها يأتي التحديث: w ← w − η · ∂L/∂w، حيث η هو — مقدار الخطوة التي نتحرّكها في كل تحديث.

افتح في المختبر
اضغط تشغيل لمشاهدة البيانات وهي تتدفّق أمامًا ثم الخطأ وهو يعود عكسيًّا عبر الشبكة.
تستيقظ التجربة عند وصولك…
Lw1=Ly^y^hhw1\frac{\partial L}{\partial w_1} = \frac{\partial L}{\partial \hat{y}} \cdot \frac{\partial \hat{y}}{\partial h} \cdot \frac{\partial h}{\partial w_1}
قاعدة السلسلة — المحرّك الأساسي للانتشار العكسيكل عامل في هذا الجداء هو مشتقة محلية: كم يتغيّر الفقد إذا تغيّر ŷ بمقدار وحدة؟ وكم يتغيّر ŷ إذا تغيّر h بمقدار وحدة؟ وكم يتغيّر h إذا تغيّر w₁ بمقدار وحدة؟ اضرب هذه القيم ببعضها وستعرف أثر w₁ على الفقد — رغم أن w₁ لا يرى الفقد مباشرةً.

تخيّلها كـسلسلة توزيع المسؤولية. تقول: «التنبّؤ انحرف بهذا المقدار». طبقة المخرجات تقول: «السبب أن الطبقة الخفية أعطتني هذه القيم». الطبقة الخفية بدورها تقول: «السبب أن أوزان المدخلات أعطتني تلك القيم». كل طبقة تُمرّر نصيبها من المسؤولية للطبقة التي قبلها — وعملية ضرب المشتقات المحلية ببعضها هي بالضبط ما نسمّيه قاعدة السلسلة.

افتح في المختبر
تابع خطوات التمرير الأمامي والعكسي على شبكة صغيرة، وشاهد كيف تتضاعف سلسلة المشتقات المحلية.
تستيقظ التجربة عند وصولك…

الانحدار التدريجي: السير في اتجاه المنحدر

بعد أن يمنحك الانتشار العكسي قيمة ∂L/∂w لكل وزن، يبقى السؤال: كيف نستفيد من هذه المعلومة؟ التدرُّج يشير إلى اتجاه أشدّ صعود لدالّة الفقد. وبما أننا نريد تصغير الفقد، نتحرّك في الاتجاه المعاكس:

w ← w − η · ∂L/∂w

η هنا هو معدَّل التعلُّم. إن كان كبيرًا جدًّا تجاوزنا النقطة الدنيا وبدأ الفقد يتذبذب. وإن كان صغيرًا جدًّا زحفنا ببطء شديد، وربما عَلِقنا في . ورقة 1986 قدّمت أيضًا فكرة — وهو متوسط متحرّك للتدرُّجات السابقة — لتسريع وتخفيف التذبذبات.

افتح في المختبر
اضبط معدَّل التعلُّم واضغط انطلق. شاهد الكرة تنحدر — أو تتجاوز الهدف إن كان η كبيرًا جدًّا.
تستيقظ التجربة عند وصولك…

الإنجاز الحقيقي: الطبقات الخفية تكتشف السمات بنفسها

أعمق ما في هذه الورقة ليس الخوارزمية بحدّ ذاتها، بل ما تنتجه. لا أحد يُخبر الوحدات الخفية بأي سمات يجب أن تكتشفها. ومع ذلك، بعد التدريب تُطوّر هذه الوحدات تجعل المسألة قابلة للحل.

في مسألة XOR مثلًا، تتعلّم الطبقة الخفية إعادة ترتيب فضاء المدخلات بحيث تتجمّع النقاط التي تحمل نفس التصنيف معًا، فيصبح بالإمكان فصلها بخط مستقيم. الشبكة ابتكرت نظام إحداثيات جديدًا يجعل المسألة سهلة. هذا هو جوهر : الطبقات الخفية لا تكتفي بتحويل البيانات، بل تكتشف الزاوية الصحيحة للنظر إليها.

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

افتح في المختبر
اليسار: مسألة XOR في فضاء المدخلات الأصلي — لا يوجد خط يفصل الفئتين. اليمين: النقاط الأربع نفسها بعد مرورها بالطبقة الخفية — أصبحت قابلة للفصل الخطي.
تستيقظ التجربة عند وصولك…

كيف تعمل القطع معًا

حلقة التدريب الكاملة كما وصفتها ورقة 1986 تجمع هذه المكوّنات: ، ثم طبقة خفية واحدة أو أكثر بتفعيل ، ثم طبقة مخرجات، وأخيرًا دالّة فقد بالخطأ التربيعي. التمرير الأمامي يحسب التنبّؤات، و يحسب التدرُّجات، ثم الانحدار التدريجي يُحدّث الأوزان.

انقر على أي مكوّن أدناه لترى دوره:

افتح في المختبر
تستيقظ التجربة عند وصولك…

السقف الذي اصطدمنا به: تلاشي التدرُّجات في الشبكات العميقة

قاعدة السلسلة في جوهرها عملية ضرب — وحاصل الضرب يمكن أن يتقلّص. القيمة العظمى لمشتقة sigmoid هي 0.25، أي أن كل طبقة تضرب التدرُّج القادم إليها بعامل لا يتجاوز 0.25. فإذا مررنا بعشر طبقات، يصل التدرُّج إلى الطبقة الأولى وقد تقلّص إلى 0.25¹⁰ ≈ 0.000001 — أي أنه تلاشى عمليًّا. والنتيجة أن الطبقات الأولى تتوقّف عن التعلُّم. هذه هي مشكلة ، التي سيحلّلها بنجيو وزملاؤه رسميًّا عام 1994.

الحلول استغرقت عقودًا: تفعيل (التدرُّج = 1 عند النشاط)، و (تتخطّى عمليات الضرب)، و، وتهيئة الأوزان بعناية (Xavier وHe). لكن الخوارزمية نفسها — الانتشار العكسي — لم تتغيّر. كل هذه الحلول تعمل مع قاعدة السلسلة، لا بالالتفاف حولها.

افتح في المختبر
أضِف طبقات وراقب تدرُّجات الطبقات الأولى وهي تتقلّص نحو الصفر. هذا ما منع شبكات sigmoid العميقة من التعلُّم.
تستيقظ التجربة عند وصولك…

الفكرة نفسها بالشيفرة

الانتشار العكسي لشبكة بطبقتين، الشيفرة كاملةpython

مبسَّط لإظهار الفكرة — ليس التنفيذ الحقيقي.

import numpy as np

def sigmoid(z):
    return 1 / (1 + np.exp(-z))

def sigmoid_deriv(z):
    s = sigmoid(z)
    return s * (1 - s)          # القيمة العظمى = 0.25 — لهذا تتلاشى التدرُّجات

# ── التمرير الأمامي ──────────────────────────────────────────────
def forward(X, W1, b1, W2, b2):
    z1 = X @ W1 + b1            # ما قبل التفعيل للطبقة الخفية
    h  = sigmoid(z1)            # تفعيل الطبقة الخفية
    z2 = h @ W2 + b2            # ما قبل التفعيل للمخرجات
    y_hat = sigmoid(z2)         # التنبؤ
    return z1, h, z2, y_hat

# ── التمرير العكسي (قاعدة السلسلة، طبقةً بطبقة) ────────────────
def backward(X, y, z1, h, z2, y_hat, W2):
    m = X.shape[0]
    dL_dyhat = (y_hat - y)                         # ∂L/∂ŷ
    dL_dz2   = dL_dyhat * sigmoid_deriv(z2)        # ∂L/∂z₂
    dL_dW2   = h.T @ dL_dz2 / m                   # ∂L/∂W₂
    dL_db2   = dL_dz2.mean(axis=0)                 # ∂L/∂b₂

    dL_dh    = dL_dz2 @ W2.T                       # تمرير عبر W₂
    dL_dz1   = dL_dh * sigmoid_deriv(z1)           # تمرير عبر σ
    dL_dW1   = X.T @ dL_dz1 / m                   # ∂L/∂W₁
    dL_db1   = dL_dz1.mean(axis=0)                 # ∂L/∂b₁
    return dL_dW1, dL_db1, dL_dW2, dL_db2

# ── حلقة التدريب ────────────────────────────────────────────────
# بيانات XOR
X = np.array([[0,0],[0,1],[1,0],[1,1]])
y = np.array([[0],[1],[1],[0]])

np.random.seed(42)
W1 = np.random.randn(2, 4) * 0.5
b1 = np.zeros(4)
W2 = np.random.randn(4, 1) * 0.5
b2 = np.zeros(1)
lr = 2.0   # معدَّل التعلُّم

for epoch in range(5000):
    z1, h, z2, y_hat = forward(X, W1, b1, W2, b2)
    dW1, db1, dW2, db2 = backward(X, y, z1, h, z2, y_hat, W2)
    W1 -= lr * dW1;  b1 -= lr * db1   # الانحدار التدريجي
    W2 -= lr * dW2;  b2 -= lr * db2

print(np.round(y_hat, 2))   # [[0.02], [0.98], [0.98], [0.02]] — XOR حُلَّت!

لماذا غيّرت هذه الورقة كل شيء

  1. 1989

    لوكان — الانتشار العكسي يلتقي الشبكات الالتفافية

    طبّق لوكان الانتشار العكسي على الشبكات الالتفافية للتعرّف على الأرقام المكتوبة بخط اليد، وكان ذلك أول عرض عملي يُثبت أن الانتشار العكسي قادر على تدريب بنى معقّدة من البداية إلى النهاية.

  2. 1994

    بنجيو — تلاشي التدرُّجات يُصاغ رياضيًّا

    أوضح بنجيو وسيماد وفراسكوني أن الانتشار العكسي المبنيّ على sigmoid يعاني من تراجع أُسّي في التدرُّجات داخل الشبكات العميقة، ما فسّر سبب فشل التدريب العميق طوال عقد كامل.

  3. 1997

    هوكرايتر وشميدهوبر — LSTM

    قدّمت شبكة LSTM حالة خلية تراكمية (جمعيّة) مشتقّتها تساوي 1.0 تمامًا، ما يسمح للتدرُّج بالتدفّق دون تلاشٍ عبر مئات الخطوات الزمنية.

  4. 2006

    هينتون — شبكات الاعتقاد العميقة تُحيي العمق

    أظهر هينتون وأوسيندرو وته أن الشبكات العميقة يمكن تدريبها مسبقًا طبقةً بطبقة باستخدام آلات بولتزمان المقيّدة، ثم ضبطها الدقيق بالانتشار العكسي، ما أعاد إحياء اهتمام المجال بالشبكات العميقة.

  5. 2010

    تهيئة Xavier وتفعيل ReLU — معالجة تلاشي التدرُّجات من الجذر

    تهيئة Xavier التي اقترحها غلوروت وبنجيو، مع تفعيل ReLU الذي قدّمه نير وهينتون (المشتقة = 1 حين تكون الوحدة نشطة)، أزالا معًا مشكلة تلاشي التدرُّجات وجعلا التدريب العميق عمليًّا دون الحاجة إلى تدريب مسبق.

  6. 2012

    AlexNet — الانتشار العكسي ينتصر في ImageNet

    فازت AlexNet بمسابقة ImageNet بفارق 10 نقاط — شبكة التفافية عميقة دُرِّبت من البداية إلى النهاية بالانتشار العكسي على معالجات الرسوميات. كانت تلك اللحظة التي أصبح فيها التعلُّم العميق هو النهج السائد.

  7. 2017

    المحوِّل — الانتشار العكسي يُدرِّب الانتباه الذاتي

    استبدل المحوِّل التكرار بآلية الانتباه الذاتي، لكن محرّك تدريبه لا يزال هو الانتشار العكسي. كل وزن انتباه يُتعلَّم عبر قاعدة السلسلة — تمامًا كما وصفت ورقة 1986.

  8. 2026

    كل شبكة عاملة اليوم

    GPT وClaude وGemini وAlphaFold وWhisper — كل شبكة عصبية تعمل اليوم تتدرّب بالانتشار العكسي. خوارزمية عام 1986 تُنفَّذ تريليونات المرات يوميًّا، ولم يتغيّر جوهرها الرياضي.

ورقة 1986 لم تُقدِّم مجرد خوارزمية. لقد أثبتت أن إجراء التعلُّم المناسب حين يُطبَّق على البنية المناسبة يُنتِج تمثيلات لم يُصمِّمها أحد — وتبيّن أنها أقوى بكثير من أي شيء كان بإمكان البشر هندسته يدويًّا.

المرجعRumelhart, Hinton, Williams. Learning Representations by Back-Propagating Errors. Nature, 1986.

مصطلحات هذه الورقة