الشبكات العصبية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 مباشرةً.
-
في الطبقة الخفية، لا يوجد ناتج مرجعي. «خطأ» الوحدة الخفية يجب أن يُستنبط من تأثيرها على المخرجات، لكن هذا التأثير يمرّ عبر كل طبقة لاحقة ودوالّها اللاخطّية.
ما أثبته رامِلهارت وهينتون وويليامز هو أن قاعدة السلسلة التفاضلية تحلّ هذه المشكلة بدقّة: فكِّك خطأ المخرجات إلى جداء مشتقات محلية — واحدة لكل طبقة — ثم اضربها ببعضها من المخرجات نحو المدخلات. النتيجة: كل وزن يحصل على يخبره بالاتجاه الذي يجب أن يتغيّر فيه.
الفكرة: تتبُّع الخطأ عكسيًّا بقاعدة السلسلة
الخوارزمية تتكوّن من مرحلتين تتناوبان على كل مثال تدريبي:
— تتدفّق البيانات من المدخلات عبر الطبقات الخفية وصولًا إلى المخرجات، فتُنتج تنبّؤًا ŷ وقيمة فقد L = ½(ŷ − y)².
التمرير العكسي — يسري التدرُّج في الاتجاه المعاكس، طبقةً بطبقة. عند كل طبقة، تقول قاعدة السلسلة: اضرب التدرُّج القادم من الطبقة التالية في المشتقة المحلية لعملية هذه الطبقة. والنتيجة هي ∂L/∂w لكل وزن — أي الاتجاه الذي يُقلّل الخطأ.
بعدها يأتي التحديث: w ← w − η · ∂L/∂w، حيث η هو — مقدار الخطوة التي نتحرّكها في كل تحديث.
تخيّلها كـسلسلة توزيع المسؤولية. تقول: «التنبّؤ انحرف بهذا المقدار». طبقة المخرجات تقول: «السبب أن الطبقة الخفية أعطتني هذه القيم». الطبقة الخفية بدورها تقول: «السبب أن أوزان المدخلات أعطتني تلك القيم». كل طبقة تُمرّر نصيبها من المسؤولية للطبقة التي قبلها — وعملية ضرب المشتقات المحلية ببعضها هي بالضبط ما نسمّيه قاعدة السلسلة.
الانحدار التدريجي: السير في اتجاه المنحدر
بعد أن يمنحك الانتشار العكسي قيمة ∂L/∂w لكل وزن، يبقى السؤال: كيف نستفيد من هذه المعلومة؟ التدرُّج يشير إلى اتجاه أشدّ صعود لدالّة الفقد. وبما أننا نريد تصغير الفقد، نتحرّك في الاتجاه المعاكس:
w ← w − η · ∂L/∂w
η هنا هو معدَّل التعلُّم. إن كان كبيرًا جدًّا تجاوزنا النقطة الدنيا وبدأ الفقد يتذبذب. وإن كان صغيرًا جدًّا زحفنا ببطء شديد، وربما عَلِقنا في . ورقة 1986 قدّمت أيضًا فكرة — وهو متوسط متحرّك للتدرُّجات السابقة — لتسريع وتخفيف التذبذبات.
الإنجاز الحقيقي: الطبقات الخفية تكتشف السمات بنفسها
أعمق ما في هذه الورقة ليس الخوارزمية بحدّ ذاتها، بل ما تنتجه. لا أحد يُخبر الوحدات الخفية بأي سمات يجب أن تكتشفها. ومع ذلك، بعد التدريب تُطوّر هذه الوحدات تجعل المسألة قابلة للحل.
في مسألة XOR مثلًا، تتعلّم الطبقة الخفية إعادة ترتيب فضاء المدخلات بحيث تتجمّع النقاط التي تحمل نفس التصنيف معًا، فيصبح بالإمكان فصلها بخط مستقيم. الشبكة ابتكرت نظام إحداثيات جديدًا يجعل المسألة سهلة. هذا هو جوهر : الطبقات الخفية لا تكتفي بتحويل البيانات، بل تكتشف الزاوية الصحيحة للنظر إليها.
وهذا تحديدًا هو الأساس الذي يقوم عليه كل . كل مرشّح في ، وكل رأس انتباه في ، وكل للكلمات — كلها موجودة لأن الانتشار العكسي أتاح للطبقات الخفية أن تكتشف سمات مفيدة دون أن يرسم لها أحد خارطة الطريق.
كيف تعمل القطع معًا
حلقة التدريب الكاملة كما وصفتها ورقة 1986 تجمع هذه المكوّنات: ، ثم طبقة خفية واحدة أو أكثر بتفعيل ، ثم طبقة مخرجات، وأخيرًا دالّة فقد بالخطأ التربيعي. التمرير الأمامي يحسب التنبّؤات، و يحسب التدرُّجات، ثم الانحدار التدريجي يُحدّث الأوزان.
انقر على أي مكوّن أدناه لترى دوره:
السقف الذي اصطدمنا به: تلاشي التدرُّجات في الشبكات العميقة
قاعدة السلسلة في جوهرها عملية ضرب — وحاصل الضرب يمكن أن يتقلّص. القيمة العظمى لمشتقة sigmoid هي 0.25، أي أن كل طبقة تضرب التدرُّج القادم إليها بعامل لا يتجاوز 0.25. فإذا مررنا بعشر طبقات، يصل التدرُّج إلى الطبقة الأولى وقد تقلّص إلى 0.25¹⁰ ≈ 0.000001 — أي أنه تلاشى عمليًّا. والنتيجة أن الطبقات الأولى تتوقّف عن التعلُّم. هذه هي مشكلة ، التي سيحلّلها بنجيو وزملاؤه رسميًّا عام 1994.
الحلول استغرقت عقودًا: تفعيل (التدرُّج = 1 عند النشاط)، و (تتخطّى عمليات الضرب)، و، وتهيئة الأوزان بعناية (Xavier وHe). لكن الخوارزمية نفسها — الانتشار العكسي — لم تتغيّر. كل هذه الحلول تعمل مع قاعدة السلسلة، لا بالالتفاف حولها.
الفكرة نفسها بالشيفرة
مبسَّط لإظهار الفكرة — ليس التنفيذ الحقيقي.
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 حُلَّت!لماذا غيّرت هذه الورقة كل شيء
1989
لوكان — الانتشار العكسي يلتقي الشبكات الالتفافية
طبّق لوكان الانتشار العكسي على الشبكات الالتفافية للتعرّف على الأرقام المكتوبة بخط اليد، وكان ذلك أول عرض عملي يُثبت أن الانتشار العكسي قادر على تدريب بنى معقّدة من البداية إلى النهاية.
1994
بنجيو — تلاشي التدرُّجات يُصاغ رياضيًّا
أوضح بنجيو وسيماد وفراسكوني أن الانتشار العكسي المبنيّ على sigmoid يعاني من تراجع أُسّي في التدرُّجات داخل الشبكات العميقة، ما فسّر سبب فشل التدريب العميق طوال عقد كامل.
1997
هوكرايتر وشميدهوبر — LSTM
قدّمت شبكة LSTM حالة خلية تراكمية (جمعيّة) مشتقّتها تساوي 1.0 تمامًا، ما يسمح للتدرُّج بالتدفّق دون تلاشٍ عبر مئات الخطوات الزمنية.
2006
هينتون — شبكات الاعتقاد العميقة تُحيي العمق
أظهر هينتون وأوسيندرو وته أن الشبكات العميقة يمكن تدريبها مسبقًا طبقةً بطبقة باستخدام آلات بولتزمان المقيّدة، ثم ضبطها الدقيق بالانتشار العكسي، ما أعاد إحياء اهتمام المجال بالشبكات العميقة.
2010
تهيئة Xavier وتفعيل ReLU — معالجة تلاشي التدرُّجات من الجذر
تهيئة Xavier التي اقترحها غلوروت وبنجيو، مع تفعيل ReLU الذي قدّمه نير وهينتون (المشتقة = 1 حين تكون الوحدة نشطة)، أزالا معًا مشكلة تلاشي التدرُّجات وجعلا التدريب العميق عمليًّا دون الحاجة إلى تدريب مسبق.
2012
AlexNet — الانتشار العكسي ينتصر في ImageNet
فازت AlexNet بمسابقة ImageNet بفارق 10 نقاط — شبكة التفافية عميقة دُرِّبت من البداية إلى النهاية بالانتشار العكسي على معالجات الرسوميات. كانت تلك اللحظة التي أصبح فيها التعلُّم العميق هو النهج السائد.
2017
المحوِّل — الانتشار العكسي يُدرِّب الانتباه الذاتي
استبدل المحوِّل التكرار بآلية الانتباه الذاتي، لكن محرّك تدريبه لا يزال هو الانتشار العكسي. كل وزن انتباه يُتعلَّم عبر قاعدة السلسلة — تمامًا كما وصفت ورقة 1986.
2026
كل شبكة عاملة اليوم
GPT وClaude وGemini وAlphaFold وWhisper — كل شبكة عصبية تعمل اليوم تتدرّب بالانتشار العكسي. خوارزمية عام 1986 تُنفَّذ تريليونات المرات يوميًّا، ولم يتغيّر جوهرها الرياضي.
ورقة 1986 لم تُقدِّم مجرد خوارزمية. لقد أثبتت أن إجراء التعلُّم المناسب حين يُطبَّق على البنية المناسبة يُنتِج تمثيلات لم يُصمِّمها أحد — وتبيّن أنها أقوى بكثير من أي شيء كان بإمكان البشر هندسته يدويًّا.
المرجعRumelhart, Hinton, Williams. Learning Representations by Back-Propagating Errors. Nature, 1986.
مصطلحات هذه الورقة
- التحديث التراجعيBackpropagation
- قاعدة السلسلةChain rule
- التمرير الأماميForward Pass
- التمرير الخلفيBackward Pass
- إشارة الخطأ الرياضيةError signal
- اضمحلال متجهات الميلVanishing Gradient
- التمثيلات الداخليةInternal representations
- الانحدار التدريجيGradient Descent