ما المقصود بالانحدار التدرّجي العشوائي؟

مؤلف

Anna Gutowska

AI Engineer, Developer Advocate

IBM

ما المقصود بالانحدار التدرّجي العشوائي؟

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

الانحدار التدرّجي

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

لكل نموذج دالة خسارة، يُطلق عليها أحيانًا اسم دالة تكلفة. تقيس هذه الوظيفة مدى بُعد تنبؤات النموذج عن نقاط البيانات الحقيقية. فكِّر في هذا كمقياس لمدى "خطأ" تنبؤات النموذج. على سبيل المثال، غالبًا ما يعمل خطأ المتوسط التربيعي كدالة خسارة في مشكلات الانحدار. تم تصميم مرحلة تدريب النموذج للعثور على قيم المَعلمات التي تقلِّل من هذه الخسارة. غالبًا ما يكون الانحدار التدرّجي هو تقنية التحسين المستخدمة في التدريب لهذا السبب. تحسب الخوارزمية التدرّج، أو المنحدر، للخسارة فيما يتعلق بمَعلمات النموذج. اعتمادًا على هذا التدرّج، يتم التحرك في الاتجاه المعاكس بهدف خفض قيمة الخسارة. معدل التعلُّم (المعروف أيضًا بحجم الخطوة أو أو ألفا) هو حجم الخطوات، ويظل ثابتًا لجميع مَعلمات النموذج. تتكرر هذه العملية حتى يصل النموذج إلى التقارب بالقرب من الحد الأدنى.

تمثيل بياني لعملية التقارب تمثيل بياني لعملية التقارب

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

الحد الأدنى المحلي والعالمي في فضاء ثلاثي الأبعاد الحد الأدنى المحلي والعالمي في فضاء ثلاثي الأبعاد

إذا لم يكن معدل التعلم صغيرًا بما يكفي، غالبًا ما تتقارب الخوارزمية عند حد أدنى محلي. يُعَد اختيار معدل تعلُّم مناسب أمرًا ضروريًا لتقليل دالة الخسارة وتحقيق التقارب عند الحد الأدنى العالمي.

تأثير معدل التعلم في التقارب تأثير معدل التعلم في التقارب

يوضِّح هذا التمثيل البياني تأثير معدل التعلم في عملية التقارب. يؤدي معدل التعلم الصغير إلى تقارب بطيء لكنه مستقر (على اليسار)، بينما قد يسبب معدل التعلم الكبير تجاوز الهدف وعدم الاستقرار (على اليمين).

من الانحدار التدرّجي (GD) إلى الانحدار التدرّجي العشوائي (SGD)

الفارق الرئيسي بين الانحدار التدرّجي التقليدي والانحدار التدرّجي العشوائي هو أن الانحدار التدرّجي العشوائي يحدِّث أوزان النموذج باستخدام مثال تدريبي واحد في كل مرة. يتم اختيار المثال بشكل عشوائي في كل تكرار.1 يستخدم الانحدار التدرّجي مجموعة البيانات بأكملها لحساب التدرّج قبل كل تحديث للمَعلمات. وهذا الاختلاف في استخدام البيانات هو ما يجعل SGD أقل تكلفة من الناحية الحسابية وأسهل في توسيع النطاق لمجموعات البيانات الكبيرة. بالمقابل، يكون سلوك التقارب في SGD أكثر ضوضاءً من GD، لأن المثال الواحد قد لا يمثّل مجموعة البيانات تمثيلًا جيدًا. يؤدي هذا التمثيل غير الدقيق إلى تحديث النقاط في اتجاه "خطأ" قليلًا. ومع ذلك، فإن هذه العشوائية هي ما يجعل SGD أسرع وأحيانًا أفضل في مسائل التحسين غير المحدبة، لأنها تمكِّنه من الهروب من الحد الأدنى المحلي الضحل أو نقاط السرج.

من الناحية الدقيقة، تم تعريف SGD في الأصل لتحديث المَعلمات باستخدام عينة تدريب واحدة بالضبط في كل مرة. في الاستخدام الحديث، يُستخدَم مصطلح "SGD" بشكل واسع للدلالة على "الانحدار التدرّجي على دفعات صغيرة"، وهو شكل من أشكال الانحدار التدرّجي يتم فيه استخدام دفعات صغيرة من بيانات التدريب في كل مرة. الميزة الرئيسية لاستخدام مجموعات فرعية من البيانات بدلًا من عينة واحدة هي انخفاض مستوى الضوضاء، لأن التدرّج يساوي متوسط الخسائر في الدفعة الصغيرة. لهذا السبب، يُعَد الانحدار التدرجي على دفعات صغيرة هو الإعداد الافتراضي في التعلم العميق. على العكس من ذلك، نادرًا ما يتم استخدام SGD الصارم في الممارسة العملية. غالبًا ما يتم خلط هذه المصطلحات في معظم مكتبات التعلم الآلي مثل PyTorch وTensorFlow؛ فالمحسِّنات يُطلق عليها غالبًا اسم "SGD"، رغم أنها عادةً تستخدم الدفعات الصغيرة.

يوضِّح الرسم التوضيحي التالي بشكل أكبر كيف تؤدي زيادة حجم عينة بيانات التدريب إلى تقليل التذبذبات و"الضوضاء".

متغيرات الانحدار التدرّجي

هناك العديد من المتغيّرات الأخرى للانحدار التدرّجي، مبنية على الانحدار التدرّجي الأساسي من خلال إضافة آليات لتحسين السرعة والاستقرار والتقارب.

الأساليب القائمة على الزخم:

من خلال تراكم الزخم في الأبعاد التي تتميز بتدرّجات ثابتة وتخفيف التحديثات في الأبعاد التي تتغير فيها التدرّجات، يساعد الزخم SGD على التقارب بشكل أسرع ومع تذبذب أقل.2

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

  • NAG (التدرّج المتسارع Nesterov): طريقة زخم محسَّنة تعمل على تسريع وتسهيل التقارب من خلال "التطلع إلى الأمام" إلى حيث تتجه المَعلمات قبل حساب التدرّج. بمعنى آخر، يتوقع التدرّج المستقبلي ويستخدم هذه المعلومات لتوجيه خطوة التحديث الحالية..3

أساليب التكيف مع معدل التعلم:

تتميز طرق معدل التعلم التكيفي، مثل AdaGrad وRMSProp، بقدرتها على تعديل معدل التعلم لكل مَعلمة بشكل فردي. هذا الأسلوب يختلف عن طرق SGD، التي تستخدم معدل تعلُّم ثابتًا لجميع المَعلمات.

  • AdaGrad (خوارزمية التدرّج التكيفي): تعدِّل معدل التعلم لكل مَعلمة بناءً على التدرّجات السابقة الخاصة به. تتلقى الميزات التي تظهر بشكل أقل في كثير من الأحيان معدلات تعلُّم أعلى، وتتلقى الميزات المتكررة معدلات أقل. هذا النهج يعني أن الميزات النادرة يتم تعلمها بشكل أسرع من SGD. يعني معدل التعلم التكيفي هذا أنه طريقة رائعة لمعالجة اللغة الطبيعية (NLP) وأنظمة التوصية ذات البيانات المتفرقة، والتي يوجد فيها تباين كبير في تواتر الميزات.2

  • RMSProp (انتشار الجذر التربيعي للمتوسط): تقنية تحسين بمعدل تعلُّم متكيف تعمل على تعديل معدل التعلم لكل مَعلمة باستخدام المتوسط المتحرك للتدرّجات المربعة الأخيرة. يتم تجاهل معلومات التدرّجات السابقة ويتم الاحتفاظ فقط بمعلومات التدرّجات الحالية.4يصبح معدل التعلم أكبر للمَعلمات ذات التدرّجات الصغيرة وأصغر للمَعلمات التي لديها تدرّجات كبيرة. تقضي هذه الطريقة على مشكلة تناقص معدل التعلم مع AdaGrad. يساعد RMSProp في الحفاظ على استقرار التدريب في التعلم العميق، وخاصةً بالنسبة إلى النماذج مثل الشبكات العصبية المتكررة (RNNs)، ويعمل بشكل جيد على المشكلات التي يتغير فيها الهدف باستمرار، كما هو الحال في التعلم المعزز.

الأساليب الهجينة:

  • Adam (تقدير اللحظات التكيفي): تجمع بين الانحدار التدرّجي القائم على الزخم وRMSProp من خلال متابعة كلٍّ من التدرّجات السابقة ومتوسط التدرّجات المربعة.4يُتيح هذا المزيج تحقيق معدل تقارب سريع حتى مع البيانات المزعجة والمتفرقة.3 بالإضافة إلى ذلك، تعمل المَعلمات الفائقة الافتراضية مثل معدل تعلُّم 0.001 في العديد من أطر العمل بشكل جيد مباشرة. ومع ذلك، بالنسبة إلى مجموعات البيانات الكبيرة جدًا، يمكن للانحدار التدرّجي العشوائي مع الزخم أن يحقق تعميمًا أفضل. يمكن أن تؤدي التعديلات المكثفة لكل معلمة في Adam إلى فرط التعلم على بيانات التدريب أو الاستقرار في قيم دنيا حادة لا تعمِّم النتائج بشكل جيد.

يكون الانحدار التدرّجي العشوائي وأنواع الانحدار التدرّجي الأخرى مفيدة عندما يكون وقت التدريب هو العائق.5

المتغيّرالبيانات المستخدمة لكل خطوةالميزة الرئيسيةالاستخدام الشائع
الانحدار التدرّجيجميع البياناتمستقر ولكن بطيءمجموعات البيانات الصغيرة
الانحدار التدرّجي العشوائيمثال واحد على الانحدار التدرّجي العشوائي التقليديذو ضوضاء لكنه سريعالتعلم عبر الإنترنت
الانحدار التدرّجي على دفعات صغيرةعينات قليلةمتوازن وقابل للتوسعالتعلم العميق
الزخمدفعة كاملة/دفعات صغيرةيتسارع في الاتجاه الصحيحالشبكات العصبية
NAGدفعة كاملة/دفعات صغيرةالزخم المتقدمتقارب أسرع
AdaGradدفعات صغيرةمعدل التعلم التكيفيبيانات متفرقة
RMSPropدفعات صغيرةيعالج انخفاض معدل التعلم في AdaGradالشبكات العصبية المتكررة (RNNs) والشبكات العميقة
Adamدفعات صغيرةالزخم + RMSPropالخيار الافتراضي حاليًا

فهم الجانب الرياضي

الهدف من SGD هو العثور على المَعلمات θ التي تجعل تنبؤات النموذج قريبة قدر الإمكان من القيم الحقيقية y . بمعنى آخر، نريد تقليل دالة الخسارة، L(θ) .

في حال الانحدار الخطي، تكون هذه المَعلمات w (الوزن) bو(التحيز). لذلك في هذه الحالة، تقليل L(θ) هو نفسه تقليل L(w,b) .

 yi^=w·xi+b

L(w,b)=1ni=1n(yi-yi^)2

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

قاعدة التحديث العامة للمَعلمة θ  هي:

θ:=θ-η·θL(θ)

عندما تكون η هي معدل التعلُّم وθL(θ) هي تدرّج الخسارة بالنسبة إلى θ .

يستخدم الانحدار التدرّجي العشوائي عينة واحدة مختارة عشوائيًا فقط.(xi,yi) لتقريب التدرّج:

θL(θ)θ(xi,yi;θ)

ملاحظة، الأحرف الصغيرة (xi,yi;θ) تمثّل فقدان مثال تدريب واحد. في حين أن الأحرف الكبيرة L(θ) هي دالة الخسارة الإجمالية (متوسط جميع الخسائر الفردية عبر مجموعة البيانات). هذا الخطأ العالمي هو ما نحاول حقًا تقليله في التدريب.

مثال: الانحدار الخطي مع SGD

لنكمل استعراض مثال الانحدار الخطي مع SGD.

لعيّنة واحدة (xi,yi) ، التنبؤ هو:

 yi^=w·xi+b

الخسارة المحلية هي الخطأ التربيعي لعيّنة واحدة:

 (xi,yi;w,b)=(yi-(wxi+b))2

الآن، أثناء الانتشار الخلفي، يتم تحديث مَعلمات النموذج باستخدام قاعدة السلسلة التي تحسب تدرّجات دالة الخسارة بالنسبة لكل مَعلمة.5 التدرّجات (المشتقات) هي:

 w=-2xi(yi-(wxi+b))

 b=-2(yi-(wxi+b))

مع SGD، نحدِّث كلًا من هذه المَعلمات، w و b ، باستخدام القواعد التالية:

 w:=w-η·(-2xi(yi-(wxi+b)))

 b:=b-η·(-2(yi-(wxi+b)))

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

مثال بسيط لتطبيق SGD بلغة Python

عند العمل مع أطر التعلم الآلي، توجد فئات جاهزة لمحسِّن SGD يمكن استخدامها مباشرةً. على سبيل المثال، torch.optim.SGD  في حال استخدام PyTorch، tf.keras.optimizers.SGD  في حال استخدام Keras المدمجة في TensorFlow، و SGDRegressor  في حال استخدام Scikit-learn.

لأغراض التعلم، دعنا نستعرض تطبيقًا بسيطًا لتقنية SGD بلغة Python من الصفر.

للتوضيح مرة أخرى، هدفنا هو إيجاد أفضل المَعلمات (أوزان النموذج) التي تقلل دالة الخسارة (التي تقيس مدى خطأ توقعاتنا). سنحدِّث عيّنة واحدة في كل مرة أو باستخدام حجم دفعة صغير جدًا.

للبدء، يمكننا تهيئة قيم المَعلمات (الأوزان) بشكل عشوائي. بعد ذلك، يمكننا اختيار نقطة بيانات عشوائية (x,y) . من هناك، نحسب التنبؤ والخطأ. في هذا العرض التوضيحي البسيط، نحاول ملاءمة خط بسيط: y=mx+b . الخطوة التالية في هذه العملية هي الانتشار الخلفي، حيث يتم حساب تدرّجات دالة الخسارة بالنسبة للمَعلمات. ثم يتم استخدام هذه التدرّجات (المشتقات) لتحديث المَعلمات أثناء عملية تحسين SGD. نظرًا لأن التدرّج يشير إلى اتجاه زيادة دالة الخسارة، فإن SGD يطرح كل تدرّج من قيمة المَعلمة الحالية الخاصة به. يمكننا اعتبار هذا على أنه التحرك في الاتجاه المعاكس للتدرّج من أجل تقليل دالة الخسارة. ومن هنا جاءت تسمية "الانحدار" في الانحدار التدرّجي العشوائي. نكرر هذه الخطوات حتى الوصول إلى عدد محدَّد من العصور التدريبية أو حتى تصبح قيمة الخسارة أقل من حد التحمُّل. الأخير يعني أن الخسارة بالكاد تتغير ولم تَعُد نحسِّن دالة الهدف. بمعنى آخر، نتوقف بمجرد تقارب الخوارزمية.

import numpy as np 
 
def stochastic_gradient_descent(X, y, lr=0.01, epochs=100, tol=1e-6): 
    “”” 
    Perform Stochastic Gradient Descent (SGD) to fit a line y = w*x + b 
     
    Parameters: 
        X (ndarray): Input features 
        y (ndarray): Target values 
        lr (float): Learning rate (step size for updates) 
        epochs (int): Number of iterations through the dataset 
     
    Returns: 
        w (float): Learned weight 
        b (float): Learned bias 
    “”” 
    # Initialize parameters randomly 
    w = np.random.randn() 
    b = np.random.randn() 
     
    n = len(X) 
 
    prev_loss = float(‘inf’) 
     
    for epoch in range(epochs): 
        # Shuffle the data for each epoch 
        indices = np.arange(n) 
        np.random.shuffle(indices) 
         
        for i in indices: 
            xi = X[i] 
            yi = y[i] 
             
            # Prediction 
            y_pred = w * xi + b 
             
            # Compute gradients (derivatives) 
            dw = -2 * xi * (yi - y_pred)   # derivative wrt w 
            db = -2 * (yi - y_pred)        # derivative wrt b 
             
            # Update parameters 
            w -= lr * dw 
            b -= lr * db 
         
        
        # Compute loss at the end of the epoch 
        loss = np.mean((y - (w*X + b))**2) 
         
        # Check stopping condition 
        if abs(prev_loss - loss) < tol: 
            print(f”Stopped early at epoch {epoch+1}”) 
            break 
                 
        prev_loss = loss 
             
    return w, b

تطبيقات SGD

يُعَد SGD أكثر طرق التحسين شيوعًا لتدريب الشبكات العصبية العميقة. في التعلم العميق، وهو مجموعة فرعية من التعلم الآلي في المجال الأوسع علم البيانات، فإن الهدف هو أن تحاكي أجهزة الكمبيوتر قوة اتخاذ القرار المعقدة للدماغ البشري. تستخدم نماذج التعلم الآلي (ML) التقليدية شبكات عصبية بسيطة تتكون من طبقة واحدة أو طبقتين. في حين أن نماذج التعلم العميق تستخدم ثلاث طبقات أو أكثر. عادةً ما تكون هناك حاجة لمئات أو آلاف الطبقات لتدريب النماذج. نظرًا لسهولة استخدام SGD مع مجموعات التدريب الكبيرة، غالبًا ما يكون الخيار الأول لتدريب الشبكات العصبية العميقة. تتضمن التطبيقات الأخرى لتدريب SGD انحدار ريدج والانحدار اللوجستي المنتظم وتحسين دالة الخسارة المفصلية المستخدمة في آلات المتجهات الداعمة (SVMs) ذات النواة الخطية.

الخاتمة

يُعَد SGD نسخة من الانحدار التدرّجي (GD) تعمل على تقليل دالة الخسارة لنموذج التعلم الآلي باستخدام عيّنة بيانات واحدة في كل مرة. يختلف هذا النهج عن GD، والذي يعتمد على مجموعة البيانات بأكملها في كل خطوة لحساب التدرّج. هناك العديد من متغيّرات GD الأخرى التي يمكن تجميعها كطرق تعلُّم قائمة على الزخم أو تكيفية. يُعَد نزول تدرّج الزخم وتدرّج Nesterov المتسارع أمثلة على الأول. تستفيد هذه الطرق من الزخم المتراكم في الأبعاد مع التدرّجات المتسقة وتخفِّف التحديثات في الأبعاد مع التدرّجات المتغيرة. وبالتالي، تساعد SGD على التقارب بشكل أسرع وبذبذبة أقل. تعمل طرق معدل التعلم التكيفي مثل AdaGrad وRMSProp على تكييف معدل التعلم لكل مَعلمة على حدة، على عكس SGD التقليدي، الذي يستخدم معدل تعلُّم ثابتًا. بالإضافة إلى ذلك، تقدِّم الأساليب الهجينة مثل Adam بديلًا قويًا من خلال الجمع بين نقاط القوة في GD وRMSProp القائمَين على الزخم.

حلول ذات صلة
IBM watsonx.ai

تدريب الذكاء الاصطناعي التوليدي والتحقق من صحته وضبطه ونشره، وكذلك قدرات نماذج الأساس والتعلم الآلي باستخدام IBM watsonx.ai، وهو استوديو الجيل التالي من المؤسسات لمنشئي الذكاء الاصطناعي. أنشئ تطبيقات الذكاء الاصطناعي بسرعة أكبر وببيانات أقل.

اكتشف watsonx.ai
حلول الذكاء الاصطناعي

استفد من الذكاء الاصطناعي في عملك بالاستعانة بخبرة IBM الرائدة في مجال الذكاء الاصطناعي ومحفظة حلولها المتوفرة لك.

استكشف حلول الذكاء الاصطناعي
الاستشارات والخدمات المتعلقة بالذكاء الاصطناعي

أعدّ ابتكار عمليات ومهام سير العمل الحساسة بإضافة الذكاء الاصطناعي لتعزيز التجارب وصنع القرارات في الوقت الفعلي والقيمة التجارية.

استكشف خدمات الذكاء الاصطناعي
اتخِذ الخطوة التالية

احصل على وصول شامل إلى القدرات التي تغطي دورة حياة تطوير الذكاء الاصطناعي. تمكَّن من إنتاج حلول ذكاء اصطناعي قوية بفضل الواجهات سهلة الاستخدام وعمليات سير العمل السلسة وإمكانية الوصول إلى واجهات برمجة التطبيقات ومجموعات تطوير البرامج القياسية في الصناعة.

استكشف watsonx.ai احجز عرضًا توضيحيًا مباشرًا
الحواشي

Bottou, L. (2010). Large-Scale Machine Learning with Stochastic Gradient DescentLechevallier, Y., Saporta, G. (eds) Proceedings of COMPSTAT’2010. Physica-Verlag HD. 

Ruder, S. (2016). An overview of gradient descent optimization algorithms

Tian, Y., Zhang, Y., & Zhang, H. (2023). Recent Advances in Stochastic Gradient Descent in Deep LearningMathematics, 11(3), 682. 

Haji, S. H., & Abdulazeez, A. M. (2021). Comparison of optimization techniques based on gradient descent algorithm: A review. PalArch’s Journal of Archaeology of Egypt/Egyptology, 18(4), 2715-2743.

Bottou, L. (2012). Stochastic Gradient Descent TricksMontavon, G., Orr, G.B., Müller, KR. (eds) Neural Networks: Tricks of the Trade. Lecture Notes in Computer Science, vol 7700. Springer, Berlin, Heidelberg.