الذكاء الاصطناعي 101
ما هو انحدار التدرج؟

ما هو انحدار التدرج؟
إذا كنت قد قرأت عن كيفية تدريب الشبكات العصبية، فمن المحتمل أنك قد واجهت مصطلح “انحدار التدرج” من قبل. انحدار التدرج هو الطريقة الرئيسية لتحسين أداء الشبكة العصبية، وتقليل معدل الخطأ/الخسارة في الشبكة. ومع ذلك، يمكن أن يكون انحدار التدرج صعبًا بعض الشيء للفهم بالنسبة للمبتدئين في التعلم الآلي، وسيتعهد هذا المقال بتقديم فكرة جيدة عن كيفية عمل انحدار التدرج.
انحدار التدرج هو خوارزمية تحسين. يتم استخدامه لتحسين أداء الشبكة العصبية من خلال تعديل معاملات الشبكة بحيث تكون الفرق بين تنبؤات الشبكة والقيم الفعلية/المتوقعة للشبكة (المعروفة باسم الخسارة) هي الأصغر الممكن. يأخذ انحدار التدرج القيم الأولية للمعاملات ويتعامل بناءً على العمليات في التفاضل والتكامل لتعديل قيمها نحو القيم التي ستجعل الشبكة أكثر دقة. لا تحتاج إلى معرفة الكثير من التفاضل والتكامل لفهم كيفية عمل انحدار التدرج، ولكنك تحتاج إلى فهم التدرجات.
ما هي التدرجات؟
افترض أن هناك مخططًا ي представляет مقدار الخطأ الذي تقوم به الشبكة العصبية. ي представляет الجزء السفلي من المخطط النقاط التي تتمتع بأقل خطأ، بينما ي представляет الجزء العلوي من المخطط حيث يكون الخطأ أعلى. نريد الانتقال من الجزء العلوي من المخطط إلى الأسفل. التدرج هو مجرد طريقة لتحديد العلاقة بين الخطأ ومعاملات الشبكة العصبية. يمكن تمثيل العلاقة بين هذين الشيئين كمنحني، مع إنتاج معاملات غير صحيحة أكثر خطأ. تمثل حدة المنحني/التدرج مدى سرعة تعلم النموذج.
منحني أكثر حدة يعني انخفاضًا كبيرًا في الخطأ يتم إجراؤه والنموذج يتعلم بسرعة، بينما إذا كان المنحني مسطحًا، فإن النموذج يكون على سطح مستوي وليس يتعلم. يمكننا الانتقال вниз المنحني نحو خطأ أقل عن طريق حساب تدرج، اتجاه الحركة (تغيير في معاملات الشبكة) لنموذجنا.
دعونا نغير المجاز قليلا ونخيل أنفسنا سلسلة من التلال والوادي. نريد الوصول إلى أسفل التل وfinding الجزء من الوادي الذي يمثل أقل خسارة. عندما نبدأ في الجزء العلوي من التل، يمكننا اتخاذ خطوات كبيرة xuống التل ونتأكد من أننا نتحرك نحو النقطة الأدنى في الوادي.
ومع ذلك، عندما نصل إلى النقطة الأدنى في الوادي، يجب أن تصبح خطواتنا أصغر، أو قد نخطئ النقطة الحقيقية الأدنى في الوادي وننتهي على الجانب الآخر. وبالمثل، من الممكن أن تكون التعديلات على معاملات الشبكة في الواقع تأخذها بعيدًا عن نقطة أقل خسارة، وبالتالي يجب أن تصبح التعديلات أصغر مع مرور الوقت. في سياق النزول xuống التل نحو نقطة أقل خسارة، التدرج هو متجه/تعليمات تفاصيل المسار الذي يجب أن نتبعه وأي حجم خطوات يجب أن نتخذها.
الآن بعد أن نعرف أن التدرجات هي تعليمات تخبرنا بأي اتجاه يجب أن نتحرك فيه (أي معاملات يجب تحديثها) وأي حجم الخطوات يجب أن نتخذها (كم يجب تحديث المعاملات)، يمكننا استكشاف كيفية حساب التدرجات.
حساب التدرجات و انحدار التدرج

يبدأ انحدار التدرج من مكان خسارة عالية ومن خلال عدة تكرارات، يأخذ خطوات في اتجاه أقل خسارة، يهدف إلى العثور على تكوين الوزن الأمثل. الصورة: Роман Сузи via Wikimedia Commons, CCY BY SA 3.0 (https://commons.wikimedia.org/wiki/File:Gradient_descent_method.png)
为了 thực hiện انحدار التدرج، يجب حساب التدرجات أولاً. من أجل حساب التدرج، نحتاج إلى معرفة دالة الخسارة/التكلفة. سنستخدم دالة التكلفة لتحديد المشتق. في التفاضل والتكامل، المشتق يعتبر مجرد منحني للدالة في نقطة معينة، لذلك نحن ببساطة نحسب منحني التل بناءً على دالة الخسارة. نحسب الخسارة عن طريق تشغيل المعاملات من خلال دالة الخسارة. إذا كنا نrepresent دالة الخسارة باسم “f”، يمكننا أن نقول إن معادلة حساب الخسارة هي كما يلي (نحن ببساطة تشغيل المعاملات من خلال دالة التكلفة المختارة):
الخسارة = f(معامل)
ثم نحسب المشتق، أو نحسب المنحني. الحصول على مشتق الخسارة سيخبرنا بأي اتجاه هو لأعلى أو لأسفل المنحني، من خلال إعطائنا الإشارة المناسبة لتعديل معاملاتنا. سنrepresent الاتجاه المناسب باسم “دلتا”.
دلتا = دالة_مشتق(خسارة)
لقد حددنا الآن الاتجاه الذي هو لأسفل نحو نقطة أقل خسارة. هذا يعني أننا يمكننا تحديث المعاملات في معاملات الشبكة العصبية وربما تقليل الخسارة. سنحديث المعاملات بناءً على المعاملات السابقة ناقص التغيير المناسب في القيمة كما حددته الاتجاه (دلتا) وحجة تتحكم في حجم التغيير (حجم خطوتنا). الحجة التي تتحكم في حجم التحديث تسمى “معدل التعلم” وسنrepresentها باسم “ألفا”.
معامل = معامل – (ألفا * دلتا)
ثم نكرر هذه العملية حتى تتقارب الشبكة حول نقطة أقل خسارة، والتي يجب أن تكون قريبة من الصفر.
من المهم جدًا اختيار القيمة الصحيحة لمعدل التعلم (ألفا). يجب أن يكون معدل التعلم المختار لا يكون صغيرًا جدًا أو كبيرًا جدًا. تذكر أننا närما إلى نقطة أقل خسارة، يجب أن تصبح خطواتنا أصغر، أو قد نخطئ النقطة الحقيقية الأدنى في الوادي وننتهي على الجانب الآخر. إذا كان معدل التغيير كبيرًا جدًا، يمكن أن يزيد الخطأ مرة أخرى. إذا كانت خطوات التغيير كبيرة جدًا، فإن أداء الشبكة سيستمر في القفز حول نقطة أقل خسارة، ويتجاوزها من جهة ثم الأخرى. إذا حدث ذلك، فإن الشبكة لن تتقارب أبدًا على تكوين الوزن الأمثل.
في المقابل، إذا كان معدل التعلم صغيرًا جدًا، يمكن أن تأخذ الشبكة وقتًا طويلاً للغاية لتتقارب على الأوزان المثالية.
أنواع انحدار التدرج
الآن بعد أن نفهم كيف يعمل انحدار التدرج بشكل عام، دعونا نلقي نظرة على بعض أنواع انحدار التدرج المختلفة.
انحدار التدرج الكتلي: هذا الشكل من انحدار التدرج يمر عبر جميع عينات التدريب قبل تحديث المعاملات. هذا النوع من انحدار التدرج هو الأعلى احتمالاً أن يكون الأكثر كفاءة من حيث الحوسبة، لأن الأوزان يتم تحديثها فقط مرة واحدة بعد معالجة الكتلة بأكملها، مما يعني أن هناك تحديثات أقل إجمالاً. ومع ذلك، إذا كان هناك عدد كبير من عينات التدريب، يمكن لانحدار التدرج الكتلي أن يجعل التدريب يستغرق وقتًا طويلاً.
انحدار التدرج العشوائي: في انحدار التدرج العشوائي، يتم معالجة مثال تدريبي واحد فقط في كل تكرار من تكرارات انحدار التدرج وتحديث المعاملات. هذا يحدث لكل مثال تدريبي. بسبب معالجة مثال تدريبي واحد فقط قبل تحديث المعاملات، يميل إلى التقارب أسرع من انحدار التدرج الكتلي، لأن التحديثات يتم إجراؤها في وقت أقرب. ومع ذلك، بسبب أن العملية يجب أن تتم على كل عنصر في مجموعة التدريب، يمكن أن يستغرق وقتًا طويلاً لإكمالها إذا كانت مجموعة البيانات كبيرة، لذلك يستخدم أحد أنواع انحدار التدرج الأخرى إذا كان مفضلاً.
انحدار التدرج المصغر: يعمل انحدار التدرج المصغر عن طريق تقسيم مجموعة التدريب بأكملها إلى أقسام فرعية. يخلق مجموعات مصغرة صغيرة يتم تشغيلها من خلال الشبكة، وعندما يتم استخدام المجموعة المصغرة لحساب الخطأ، يتم تحديث المعاملات. انحدار التدرج المصغر يجد وسطًا بين انحدار التدرج العشوائي و انحدار التدرج الكتلي. يتم تحديث النموذج أكثر تكرارًا من حالة انحدار التدرج الكتلي، مما يعني تقاربًا أسرع قليلاً وأكثر متانة على معاملات النموذج المثالية. كما أنه أكثر كفاءة من حيث الحوسبة من انحدار التدرج العشوائي












