خوارزمية أصل التدرج  أصل التدرج أو النزول الاشتقاقي هو خوارزمية تحسين تكرارية من الدرجة الأولى للعثور على الحد الأدنى المحلي لدالة قابلة للاشتقاق. للعثور على الحد الأدنى المحلي للدالة باستخدام منحدر التدرج، نتخذ خطوات تتناسب مع "سلبية" التدرج (أو التدرج التقريبي) للدالة عند النقطة الحالية. ولكن إذا اتخذنا بدلاً من ذلك خطوات تتناسب مع "إيجابية" التدرج، فإننا نقترب من الحد الأقصى المحلي لهذه الدالة؛ يُعرف الإجراء بعد ذلك بصعود متدرج . تم اقتراح خوارزمية أصل التدرج من قبل العالم الرياضي أوغستين لوي كوشي في عام 1847.  يعتمد أصل التدرج على الملاحظة أنه إذا كانت الدالة متعددة المتغيرات formula_1 معرفة وقابلة للاشتقاق في جوار النقطة formula_2 ، فإنformula_1 ينخفض بسرعة أكبرإذا ذهبنا من formula_2 في اتجاه التدرج السلبي لـ formula_5 في formula_6 .  و يتبع ذلك أنه إذا كان  فإنه لكل formula_8 صغيرة بما يكفي، formula_9 . وبعبارة أخرى، الحدformula_10 يطرح من formula_2 لأننا نريد التحرك ضد التدرج نحو الحد الأدنى المحلي. مع أخذ هذه الملاحظة في الاعتبار، يبدأ المرء باختيار formula_12 كنقطة بداية formula_5 (يمكن اختيارها عشوائيا)، ويعتبر بعد ذلك التسلسل formula_14 , بحيث:  لدينا تسلسل رتيب  لذا نأمل أن يكون التسلسل formula_17 يتقارب نحو الحد الأدنى المحلي المطلوب. لاحظ أن قيمة "حجم الخطوة" formula_18 يسمح بالتغيير في كل تكرار. مع بعض الافتراضات على الدالة formula_5 (فمثلا، formula_5 محدبة و formula_21 ليبشيتزية) وخيارات معينة من formula_18 (على سبيل المثال، يتم اختياره إما عن طريق البحث الخطي الذي يلبي شروط وولفه، أو طريقة بارزيلاي - بوروين الموضحة على النحو التالي):  يمكن ضمان التقارب إلى الحد الأدنى المحلي.  عندما تكون الدالة formula_5 محدبة، كل الحدود الدنيا المحلية هي أيضًا حد أدنى عام، لذلك في هذه الحالة يمكن أن يتقارب أصل التدرج إلى الحل العام.  هذه العملية موضحة في الصورة المجاورة. هنا formula_5 من المفترض أن يتم تعريفها على المستوى، وأن الرسم البياني له شكل وعاء. المنحنيات الزرقاء هي الخطوط المنسوبية، أي المناطق التي تكون فيها قيمة formula_5 ثابتة. يظهر سهم أحمر ينشأ عند نقطة اتجاه التدرج السلبي في تلك النقطة. لاحظ أن التدرج (السلبي) عند نقطة ما هو متعامد مع خط الكفاف الذي يمر عبر تلك النقطة. نرى أن "أصل" التدرج يقودنا إلى قاع الوعاء، أي إلى النقطة التي تكون فيها قيمة الدالة formula_5 هي الحد الأدنى.  يعاني أصل التدرج من مشاكل في الدوال «المرضية» مثل دالة روزين بروك الموضحة هنا.  تحتوي دالة روزين بروك على واد منحني ضيق يحتوي على الحد الأدنى. الجزء السفلي من الوادي مسطح للغاية. بسبب الوادي المسطح المنحني يكون التحسين متعرجًا ببطء مع أحجام خطوات صغيرة نحو الحد الأدنى.  يمكننا رؤية مثال آخر على الطبيعة المتعرجة لهذه الطريقة: فلنطبق خوارزمية أصل التدرج على الدالة التالية:  يعتبر أصل التدرج هو أساس خوارزميات التحسين المستخدمة في ميدان التعلم الآلي حيث تتكون شبكات التعلم الآلي من عدد من العصبونات الاصطناعية، لكل منها وزن وانحياز  فشبكة التعلم الآلي تشكل في الحقيقة دالة متعددة المتغيرات، متغيراتها هي الأوزان والانحيازات التي تخضع للتدريب  يتلخص تدريب الشبكات العصبية في الخطوات التالية:  1) حساب دالة «الخسارة»: وهي الدالة الناتجة عن حساب الفرق بين قيم مخارج الشبكة العصبية عندما تطبق على مجموعة التدريب، والنتائج الحقيقية المنتظرة من مجموعة التدريب  2) حساب المشتقات الجزئية لدالة الخسارة، بالنسبة لمجموعة الأوزان والانحيازات  3) تطبيق الانتشار الخلفي عبر خوارزمية أصل التدرج، وذلك عن طريق طرح المشتقات الجزئية لدالة الخسارة من الأوزان والانحيازات (بعد ضربها بمعامل التعلم)، وإعادة الخطوات 1) و 2) و 3) في طريق التدرج نحو الحد الأدنى لدالة الخسارة يعمل أصل التدرج في فضاءَات متعددة الأبعاد وحتى في الأبعاد اللانهائية. في حالة الأبعاد اللانهائية، تكون مساحة البحث عادةً عبارة عن فضاء دالي، ونحسب مشتقة فريشيه الخاصة بالدالة التي سيتم تصغيرها لتحديد اتجاه الهبوط.  يمكن أن يستغرق أصل التدرج العديد من التكرارات لحساب الحد الأدنى المحلي بالدقة المطلوبة إذا كان انحناء الدالة مختلفا اختلافا كبيرا حسب الاتجاهات. لمثل هذه الدوال، فإن التهيئة المسبقة، التي تغير هندسة المساحة لتشكيل مجموعات مستوى الدالة مثل الدوائر المتحدة المركز، تعالج التقارب البطيء. ومع ذلك، يمكن أن يكون إنشاء وتطبيق الشروط المسبقة مكلفًا من الناحية الحسابية.  يمكن دمج أصل التدرج مع بحث خطي، للعثور على حجم الخطوة الأمثل محليًا formula_18 في كل تكرار. يمكن أن يستغرق إجراء البحث الخطي وقتًا طويلاً.  على العكس من ذلك، باستخدام ثابتة صغيرة formula_18 يمكن أن يسفر عن تقارب ضعيف.  يمكن أن تكون الطرق المستندة إلى طريقة نيوتن وانقلاب الهسيان باستخدام تقنيات التدرج المترافق بدائل أفضل. بشكل عام، تتقارب هذه الأساليب في عدد أقل من التكرارات، ولكن تكلفة كل تكرار أعلى. ومن الأمثلة على ذلك طريقة BFGS التي تتكون من حساب مصفوفة في كل خطوة يتم من خلالها ضرب متجهة التدرج للذهاب إلى اتجاه «أفضل»، مقترنًا بخوارزمية بحث خطي أكثر تعقيدًا، للعثور على القيمة «الأفضل» لـ formula_32  بالنسبة للمسائل الكبيرة للغاية، حيث تهيمن مشاكل ذاكرة الكمبيوتر، يجب استخدام طريقة محدودة الذاكرة مثل L-BFGS بدلاً من BFGS أو أصل التدرج.  يمكن النظر إلى أصل التدرج على أنه تطبيق طريقة أويلر لحل المعادلات التفاضلية العادية formula_33 لتدفق متدرج.  تطبق أمثلة التعليمات البرمجية التالية خوارزمية أصل التدرج للعثور على الحد الأدنى للدالة formula_34 مع مشتقة:formula_35  حل ل formula_36 وتقييم المشتق الثاني عند الحلول يبين أن الدالة لها نقطة هضبة عند 0 والحد الأدنى العام عند formula_37  فيما يلي تطبيق بلغة برمجة Python :  next_x = 6 # We start the search at x=6 gamma = 0.01 # Step size multiplier precision = 0.00001 # Desired precision of result max_iters = 10000 # Maximum number of iterations  def df(x):  for _ in range(max_iters):  print("Minimum at ", next_x)  هنا تنفيذ في لغة برمجة سكالا  import math._ val curX = 6 val gamma = 0.01 val precision = 0.00001 val previousStepSize = 1 / precision  def df(x: Double): Double = 4 * pow(x, 3) - 9 * pow(x, 2)  def gradientDescent(precision: Double, previousStepSize: Double, curX: Double): Double = {  val ans = gradientDescent(precision, previousStepSize, curX) println(s"The local minimum occurs at $ans") import java.util.function.Function; import static java.lang.Math.pow; import static java.lang.Math.abs  double gamma = 0.01; double precision = 0.00001;  Function<Double,Double> df = x -> 4 * pow(x, 3) - 9 * pow(x, 2);  double gradientDescent(Function<Double,Double> f) {  double res = gradientDescent(df); System.out.println(String.format("The local minimum occurs at %f", res));