الدرس 2 من 2 · التحليل العددي

المشتقات العددية والتحقق من التدرج Numerical Differentiation and Gradient Checking

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

رياضيات التعلم العميق الصعوبة: متقدم زمن الدراسة: 40 دقيقة
محتويات الدرس
  1. مقدمة
  2. لماذا ندرس هذا الموضوع؟
  3. الشرح النظري
  4. التعريفات الرياضية
  5. المعادلات
  6. مثال محلول
  7. التطبيق في الذكاء الاصطناعي
  8. المختبر التفاعلي
  9. تمارين تدريبية
  10. الملخص
  11. اختبار قصير
  12. دروس مرتبطة

1 مقدمة

تحسب أطر التعلم العميق التدرجات بالاشتقاق التلقائي (Automatic Differentiation)، لكن حين نكتب طبقة أو دالة خسارة جديدة نحتاج إلى طريقة مستقلة للتأكد من صحة التدرج. الفروق المحدودة (Finite Differences) تعطي هذه الطريقة من قيم الدالة وحدها.

الأهداف التعليمية

  • حساب الفرق الأمامي والمركزي
  • تحليل رتبة الخطأ باستخدام متسلسلة تايلور
  • اختيار خطوة h مناسبة
  • تنفيذ التحقق من التدرج بالخطأ النسبي

2 لماذا ندرس هذا الموضوع؟

التحقق من التدرج (Gradient Checking) خطوة أساسية عند تنفيذ الانتشار العكسي يدوياً أو كتابة عمليات مخصصة. كما أن فهم مقايضة الخطأ في اختيار h يوضح كيف يتفاعل خطأ القطع (Truncation Error) مع خطأ التقريب العددي.

3 الشرح النظري

الفرق الأمامي والمركزي

\[f'(x) \approx \frac{f(x+h) - f(x)}{h}\quad\text{(أمامي)}\qquad f'(x) \approx \frac{f(x+h) - f(x-h)}{2h}\quad\text{(مركزي)}\]

تحليل الخطأ

من متسلسلة تايلور: \(f(x\pm h) = f(x) \pm hf'(x) + \tfrac{h^2}{2}f''(x) \pm \tfrac{h^3}{6}f'''(x) + \dots\). في الفرق الأمامي يبقى حد \(\tfrac{h}{2}f''(x)\) فالخطأ \(O(h)\)، أما في المركزي فتُلغى حدود الرتبة الزوجية ويبقى \(\tfrac{h^2}{6}f'''(x)\) فالخطأ \(O(h^2)\).

لماذا لا نصغّر h بلا حدود؟

كلما صغرت h قل خطأ القطع، لكن البسط يصبح طرحاً لعددين متقاربين جداً فيزداد خطأ التقريب بنحو \(\epsilon_{\text{mach}}/h\). المجموع أصغر ما يكون عند h متوسطة: في float64 تكون قريبة من \(10^{-8}\) للفرق الأمامي ومن \(10^{-5}\) للمركزي تقريباً. الشكل أدناه يوضح هذه المقايضة لـ \(\sin\) عند \(x = 1\).

التحقق من التدرج

  1. احسب التدرج التحليلي \(\mathbf g\) بالانتشار العكسي.
  2. لكل معامل \(\theta_i\) احسب \(\tilde g_i = \frac{J(\theta + h\mathbf e_i) - J(\theta - h\mathbf e_i)}{2h}\).
  3. احسب الخطأ النسبي \(\frac{\|\mathbf g - \tilde{\mathbf g}\|}{\|\mathbf g\| + \|\tilde{\mathbf g}\|}\).
  4. قيمة صغيرة جداً (مثل \(10^{-7}\) في float64) تدل على تدرج صحيح غالباً، وقيمة كبيرة تدل على خطأ.

يُجرى التحقق بدقة float64 وعلى عدد صغير من المعاملات لأن تكلفته تتطلب تقييمين للدالة لكل معامل. ويجب الحذر عند نقاط عدم الاشتقاق مثل صفر ReLU.

لوغاريتم الخطأ مقابل لوغاريتم h لمشتقة sin عند x = 1 بدقة float64 (محسوب فعلياً): الخطأ يقل ثم يعود للارتفاع بسبب التقريب العددي

4 التعريفات الرياضية

الفرق المحدود
تقريب المشتقة بقسمة فرق قيمتين للدالة على المسافة بينهما.
\[\frac{f(x+h)-f(x)}{h}\]
خطأ القطع
الخطأ الناتج عن حذف حدود متسلسلة تايلور عند التقريب، ويقل بتصغير h.
التحقق من التدرج
مقارنة التدرج التحليلي بتقريب الفروق المحدودة للكشف عن أخطاء التنفيذ.
الفرق المحدود (Finite Difference)
تقريب المشتقة من قيم الدالة عند نقاط متقاربة.
\[f'(x)\approx\frac{f(x+h)-f(x-h)}{2h}\]
التحقق من التدرج (Gradient Checking)
مقارنة التدرج المحسوب بالانتشار العكسي بتقريب عددي للكشف عن الأخطاء.
\[\frac{\|g-\tilde g\|}{\|g\|+\|\tilde g\|}\]
الفرق الأمامي (Forward Difference)
تقريب المشتقة بـ (f(x+h)-f(x))/h وخطؤه من رتبة h.
\[f'(x)\approx\frac{f(x+h)-f(x)}{h}\]
الفرق المركزي (Central Difference)
تقريب المشتقة بـ (f(x+h)-f(x-h))/2h وخطؤه من رتبة h².
\[f'(x)\approx\frac{f(x+h)-f(x-h)}{2h}\]

5 المعادلات

\[f'(x) \approx \frac{f(x+h)-f(x-h)}{2h} + O(h^2)\]
الفرق المركزي
\[f'(x) \approx \frac{f(x+h)-f(x)}{h} + O(h)\]
الفرق الأمامي
\[\text{rel} = \frac{\|\mathbf g-\tilde{\mathbf g}\|}{\|\mathbf g\|+\|\tilde{\mathbf g}\|}\]
الخطأ النسبي

6 مثال محلول خطوة بخطوة

مقارنة الطريقتين

المسألة: قرّب مشتقة \(f(x) = x^3\) عند \(x = 2\) باستخدام \(h = 0.1\). القيمة الصحيحة \(f'(2) = 12\).

  1. \(f(2.1) = 9.261\)، \(f(2) = 8\)، \(f(1.9) = 6.859\).
  2. الأمامي: \((9.261 - 8)/0.1 = 12.61\).
  3. المركزي: \((9.261 - 6.859)/0.2 = 12.01\).

النتيجة: خطأ الأمامي 0.61 وخطأ المركزي 0.01 فقط، وهذا يتفق مع \(\tfrac{h}{2}f''(2) = 0.6\) و\(\tfrac{h^2}{6}f'''(2) = 0.01\).

7 تطبيق عملي في الذكاء الاصطناعي

  • اختبار الانتشار العكسي: يُقارن تدرج الطبقة المكتوبة يدوياً بالفرق المركزي على مدخلات عشوائية صغيرة.
  • أدوات الأطر: توفر بعض الأطر دوالاً جاهزة للتحقق من التدرج مثل torch.autograd.gradcheck التي تعمل بدقة float64.
  • التحسين دون تدرج: حين لا تتوفر صيغة للتدرج يمكن تقريبه بالفروق المحدودة، بتكلفة تقييمين للدالة لكل معامل.

8 مختبر تفاعلي مرتبط بالدرس

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

افتح مختبر التفاضل والتكامل

9 تمارين تدريبية

أسئلة مراجعة للتفكير

  • لماذا يُلغى حد الرتبة الأولى في خطأ الفرق المركزي؟
  • لماذا نستخدم الخطأ النسبي لا المطلق في التحقق من التدرج؟

أخطاء شائعة

  • اختيار h صغيرة جداً مثل \(10^{-15}\) فيطغى خطأ التقريب.
  • إجراء التحقق بدقة float32.
  • نسيان إيقاف العشوائية (مثل Dropout) أثناء التحقق.
  • التحقق عند نقطة عدم اشتقاق مثل صفر ReLU.

تدرب على 8 أسئلة من بنك الأسئلة لهذا الدرس

10 ملخص الدرس

  • الفرق المركزي أدق: \(O(h^2)\) مقابل \(O(h)\).
  • تصغير h يقلل خطأ القطع ويزيد خطأ التقريب.
  • التحقق من التدرج يقارن الانتشار العكسي بالفروق المحدودة بالخطأ النسبي.

11 اختبار قصير

5 أسئلة · 10 دقائق · النجاح من 60% — اجتيازه يُكمل الدرس.