التحسين1847تأسيسي10 دقيقة قراءة

الطريقة العامة لحل جُمَل المعادلات المتزامنة

Méthode Générale pour la Résolution des Systèmes d'Équations Simultanées

Cauchy, A.-L. — Comptes Rendus de l'Académie des Sciences

المشكلة

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

الإسهام

فكرة كوشي بسيطة وعبقرية: لحلّ f(x₁,…,xₙ) = 0 حيث f ≥ 0، احسب التدرُّج ∇f — متّجه المشتقات الجزئية الذي يشير نحو الصعود — ثم تحرّك خطوة صغيرة في الاتجاه المعاكس. ما دامت الخطوة صغيرة بما يكفي، فإنّ كل تكرار يُنقِص قيمة f حتماً، وبذلك تتقدّم نحو الحل بشكل مطّرد. هذه هي طريقة الانحدار الأشدّ، الجدّ الأول لكل خوارزمية أمثَلة تعتمد على التدرُّج في تعلم الآلة الحديث.

الأثر

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

تخيّل أنك مُتسلِّق معصوب العينَين فوق جبل، وهدفك الوصول إلى قاع الوادي. لا ترى شيئاً من التضاريس حولك، لكنك تحسّ بميل الأرض تحت قدمَيك.

الخطّة بسيطة: في كل مرة، تحسَّس أيّ اتجاه ينحدر أكثر، ثم اخطُ خطوة صغيرة نحوه. لا تحتاج خريطة — يكفيك الإحساس بالميل المحلي والالتزام بالهبوط المستمر.

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

المشكلة: متغيرات كثيرة وحسابات ضخمة

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

  • الطرق المباشرة تحتاج نحو n³ عملية حسابية، حيث n هو عدد المتغيرات. حين يكون n = 6 تحصل على 216 عملية على الأقل — وكلها تُنجَز يدوياً.

  • لم تكن هناك حواسيب. كل عملية ضرب كانت بالقلم والورق، فالحاجة كانت ماسّة لطريقة أقل كلفةً حتى لو أعطت حلاً تقريبياً.

  • الجُمَل غير الخطية — التي تتضاعف فيها المتغيرات مع بعضها أو تدخل في دوال مثلثية — لم يكن لها أي طريقة حلّ عامة.

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

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

الفكرة: اخطُ دائماً في اتجاه الانحدار

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

والإجراء كالتالي:

  1. ابدأ من تخمين أوّلي x0x_0.
  2. احسب التدرُّج f(x)\nabla f(x) — أي متّجه جميع .
  3. تحرّك في الاتجاه المعاكس: xt+1=xtγf(xt)x_{t+1} = x_t - \gamma \nabla f(x_t).
  4. كرِّر حتى تستقرّ قيمة الدالة ولا تتغيّر بشكل ملموس.

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

قاعدة التحديث

قبل أن نكتب الصيغة، لنفهم ماذا نريد: الهدف في كل تكرار هو الانتقال إلى نقطة xt+1x_{t+1} تكون فيها قيمة الدالة أقل من xtx_t. الاستراتيجية هي التحرّك في الاتجاه الذي يُنقِص f بأسرع معدّل — أي سالب التدرُّج. يبقى سؤال واحد: كم نتحرّك؟

xt+1=xtγf(xt)x_{t+1} = x_t - \gamma \, \nabla f(x_t)
قاعدة تحديث الانحدار التدريجييحسّن الانحدار التدريجي الحل عبر سلسلة من التصحيحات الصغيرة المتتابعة. ففي كل خطوة يحدد الاتجاه الذي يؤدي إلى أكبر زيادة في قيمة الهدف، ثم يتحرك في الاتجاه المعاكس لتقليلها بدلاً من ذلك. ويتحكم معدل التعلّم في حجم هذه الحركة: فالخطوات الصغيرة جداً تؤدي إلى تقدم بطيء، بينما قد تتجاوز الخطوات الكبيرة الحلول الجيدة. ومع تكرار هذه العملية تدريجياً، تتحرك المعلمات نحو قيمة صغرى لدالة الهدف.

تصوّرها كبوصلة: التدرُّج يقول لك «الصعود في ذاك الاتجاه»، فتستدير 180° وتمشي. أما معدَّل التعلُّم γ\gamma فيحدّد إن كنت ستأخذ خطوة حذرة أم جريئة. اقترح كوشي اختيار γ\gamma المثلى عند كل تكرار بتصغير f(xtγf(xt))f(x_t - \gamma \nabla f(x_t)) كدالة في γ\gamma — وهو ما يُعرَف بـالبحث الخطي الدقيق. في التعلم العميق الحديث نستخدم عادةً γ\gamma ثابتة أو مُجدوَلة، لأنّ البحث الخطي الدقيق مكلِّف جداً حين تبلغ الملايين.

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

لماذا تنجح الطريقة: ضمان الهبوط المتواصل

الضمان الرياضي لـ مصدره تقريب تايلور مباشرةً. حين يكون حجم الخطوة γ>0\gamma > 0 صغيراً بما يكفي:

f(xγf)f(x)γf2f(x - \gamma \nabla f) \approx f(x) - \gamma \|\nabla f\|^2

بما أنّ f20\|\nabla f\|^2 \geq 0، فكل خطوة تُنقِص قيمة الدالة حتماً (أو تُبقيها كما هي في أسوأ الأحوال). الدالة تهبط خطوة بعد خطوة إلى أن يصبح التدرُّج صفراً — أي تصل إلى نقطة لا يوجد فيها اتجاه هبوط. تلك هي : قد تكون أو ، أو — إن حالفك الحظ — .

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

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

نقطة الضعف: التعرُّج في الأودية الضيقة

لـالانحدار التدريجي نقطة ضعف معروفة: حين تكون الدالة على شكل وادٍ ضيّق — أي حين تختلف لـ اختلافاً كبيراً — تتعرّج الطريقة ذهاباً وإياباً عبر الوادي بدلاً من الانزلاق على طوله.

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

هذا التعرُّج حفّز 170 عاماً من التطوير: التدرُّجات المترافقة (1952)، وطريقة نيوتن مع الهِسيان، و (1964)، ثم التكيُّفية الحديثة مثل (2014). كلها تُحسِّن وصفة كوشي الأصلية للتعامل مع التضاريس سيئة الاشتراط، لكن الفكرة الجوهرية واحدة: استخدم التدرُّج لتقرّر أين تخطو.

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

الفكرة نفسها في الكود

الانحدار التدريجي، كاملاًpython

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

import numpy as np

def gradient_descent(f, grad_f, x0, lr=0.01, tol=1e-6, max_iter=1000):
    """خوارزمية كوشي 1847 في 10 أسطر.
    f       : الدالة الهدف المراد تصغيرها
    grad_f  : دالة تعيد التدرج التفاضلي ∇f(x)
    x0      : نقطة البداية (مصفوفة numpy)
    lr      : حجم الخطوة γ (معدل التعلم)
    """
    x = x0.copy()
    for i in range(max_iter):
        g = grad_f(x)                      # احسب التدرج التفاضلي
        if np.linalg.norm(g) < tol:        # التدرج ≈ 0 → توقف
            break
        x = x - lr * g                     # التحديث: اخطُ عكس التدرج
    return x

# مثال: صغّر f(x,y) = x² + 10y² (وادٍ ضيق)
f      = lambda x: x[0]**2 + 10*x[1]**2
grad_f = lambda x: np.array([2*x[0], 20*x[1]])

result = gradient_descent(f, grad_f, x0=np.array([5.0, 3.0]), lr=0.05)
print(f"النقطة الدنيا عند: {result}")   # → قريبة من [0, 0]

# كل مُحسِّن في الشبكات العصبية هو حفيد هذه الحلقة.
# الانحدار التدريجي العشوائي يضيف ضجيجاً (دفعات مصغرة عشوائية).
# آدام يضيف زخماً ومعدلات تكيُّفية لكل معلمة.
# لكن الجوهر دائماً: x ← x − γ · ∇f(x).

من 1847 إلى اليوم: شجرة عائلة الانحدار التدريجي

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

  1. 1847

    كوشي: الانحدار التدريجي

    الطريقة الأصلية — تحرَّك عكس التدرج بحجم خطوة يُختار بالبحث الخطي الدقيق. بسيطة وعامة، لكنها بطيئة على المسائل سيئة الاشتراط.

  2. 1951

    روبينز ومُونرو: التقريب العشوائي

    أثبتا أن الانحدار التدريجي لا يزال يعمل حتى حين تكون التدرجات مُشوَّشة — الأساس النظري للانحدار التدريجي العشوائي. حجم الخُطوة يجب أن يتقلص مع الوقت.

  3. 1952

    هِستينز وشتيفل: التدرجات المترافقة

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

  4. 1964

    بولياك: الزخم

    أضاف حَدَّ «سرعة» يُراكم التدرجات السابقة، مما يساعد المُحسِّن على التدحرج عبر الأودية الضيقة بدلاً من التعرُّج.

  5. 1986

    رامِلهارت وهينتون وويليامز: التحديث التراجعي

    جعل الانحدار التدريجي عملياً للشبكات العميقة بحساب ∇f بكفاءة عبر قاعدة السلسلة — عكسياً عبر كل طبقة.

  6. 2011

    دوتشي وآخرون: أداغراد

    أعطت كل معلمة معدل تعلم تكيُّفي خاص بها بناءً على مجموع تربيعات التدرجات المتراكمة. حلّت مشكلة السمات النادرة في معالجة اللغات الطبيعية.

  7. 2014

    كينغما وبا: آدام

    جمعت بين الزخم ومعدلات التعلم التكيُّفية وتصحيح الانحياز. أصبحت المُحسِّن الافتراضي للتعلم العميق.

التقارب الحسابي: متى يجد الانحدار التدريجي الإجابة؟

سرعة تتوقّف على شكل الدالة. لنأخذ دالة تربيعية محدَّبة f(x)=12xTAxf(x) = \frac{1}{2} x^T A x؛ الخطأ عند الخطوة tt يخضع للحدّ التالي:

f(xt)f(x)(κ1κ+1)2t(f(x0)f(x))f(x_t) - f(x^*) \leq \left(\frac{\kappa - 1}{\kappa + 1}\right)^{2t} (f(x_0) - f(x^*))

هنا κ=λmax/λmin\kappa = \lambda_{\max} / \lambda_{\min} هو للمصفوفة AA، أي نسبة أكبر قيمة ذاتية إلى أصغرها. كلّما كبر κ\kappa استطالت خطوط التسوية وازداد التعرُّج. حين يكون κ1\kappa \approx 1 يتقارب الحلّ بسرعة، لكن حين يكون κ1\kappa \gg 1 يصبح التقارب بطيئاً بشكل مؤلم.

وهنا المفاضلة الجوهرية: الانحدار التدريجي عام — يعمل على أي دالة ملساء — لكنه من الرتبة الأولى، أي يستخدم التدرُّج فقط دون معلومات الانحناء. الطرق التي تستثمر معلومات الرتبة الثانية (مصفوفة هيسي) تتقارب أسرع، لكنها أغلى بكثير في كل خطوة.

κ(A)=λmax(A)λmin(A)\kappa(A) = \frac{\lambda_{\max}(A)}{\lambda_{\min}(A)}
رقم الاشتراط — معيار الشكل الذي يتحكم بسرعة التقاربيقيس رقم الاشتراط مدى صعوبة مسألة التحسين بالنسبة إلى الخوارزميات المعتمدة على التدرج. فعندما يكون شكل دالة الهدف متوازناً، يتجه التقدم نحو الحل الأمثل بصورة مباشرة ويكون التقارب سريعاً. أما عندما تكون الدالة متمددة بشدة في بعض الاتجاهات ومضغوطة في اتجاهات أخرى، فإن الانحدار التدريجي يميل إلى التعرج ذهاباً وإياباً، مما يبطئ الوصول إلى الحل. لذلك ترتبط القيم الصغيرة لرقم الاشتراط بمسائل أسهل وأسرع تقارباً، بينما تشير القيم الكبيرة إلى تحديات أكبر في عملية التحسين.
افتح في المختبر
اضبط رقم الاشتراط κ وشاهد خطوط التسوية البيضاوية تتمدد. الانحدار التدريجي يحتاج إلى خطوات أكثر كلما كبر κ.
تستيقظ التجربة عند وصولك…

لماذا يهم هذا في التعلم العميق

كل حلقة في أي شبكة عصبية هي تطبيق مباشر لخوارزمية كوشي:

  1. — احسب L(θ)L(\theta) (كم أخطأت التنبؤات).
  2. — احسب θL\nabla_\theta L عبر الانتشار العكسي (قاعدة السلسلة).
  3. التحديثθθγθL\theta \leftarrow \theta - \gamma \nabla_\theta L (خطوة كوشي).

هنا LL تلعب دور ff عند كوشي، ومعاملات النموذج θ\theta تحلّ محلّ متغيراته (x1,,xn)(x_1, \ldots, x_n)، ومعدَّل التعلُّم γ\gamma هو حجم الخطوة — الفرق الوحيد أنّ الشبكات الحديثة تحتوي مليارات المعاملات بدلاً من ستة، والتدرُّجات تُحسَب من دفعات مصغّرة عشوائية (الانحدار التدريجي العشوائي) لا من مجموعة البيانات كاملةً.

ثورة التعلم العميق ترتكز على ثلاث دعائم: الانحدار التدريجي لكوشي (1847)، و لرامِلهارت وهينتون وويليامز (1986) لحساب التدرُّج بكفاءة، ثم عتاد لتنفيذ الحلقة بسرعة كافية. أزِل أيّاً منها ولن يوجد الذكاء الاصطناعي الحديث.

المرجعCauchy, A.-L.. Méthode générale pour la résolution des systèmes d'équations simultanées. Comptes Rendus de l'Académie des Sciences, Paris, 1847.

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