Yolo فيجن شنتشن
شنتشن
انضم الآن
مسرد المصطلحات

نزول التدرج العشوائيSGD

تعرف على كيفية قيام طريقة التدرج العشوائي (SGD) بتحسين نماذج التعلم الآلي. اكتشف كيف SGD Ultralytics من أجل تدريب أسرع وأكثر كفاءة للذكاء الاصطناعي.

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

آلية عمل نزول التدرج الاحتمالي

الهدف الأساسي لأي عملية تدريب هو تقليل وظيفة الخسارة، التي تقيس الفرق بين تنبؤات النموذج والقيم المستهدفة الفعلية. SGD ذلك من خلال دورة تكرارية. أولاً، تختار الخوارزمية نقطة بيانات عشوائية من بيانات التدريب. ثم تقوم بإجراء تمرير أمامي لإنشاء تنبؤ وتحسب الخطأ. باستخدام الانتشار العكسي، تحسب الخوارزمية التدرج — وهو في الأساس منحدر منحنى الخطأ — استنادًا إلى هذا المثال الوحيد. وأخيرًا، تقوم بتحديث أوزان النموذج في الاتجاه المعاكس للتدرج لتقليل الخطأ.

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

خوارزميات التحسين SGD مقابل خوارزميات التحسين الأخرى

فهم الفروق بين SGD وخوارزميات التحسين ذات الصلة أمر بالغ الأهمية لاختيار استراتيجية التدريب المناسبة.

  • الانحدار التدرجي الدفعي: تحسب هذه الطريقة التقليدية التدرج باستخدام مجموعة البيانات الكاملة لكل تحديث فردي. على الرغم من أنها توفر مسارًا مستقرًا ومباشرًا إلى الحد الأدنى، إلا أنها بطيئة للغاية وتستهلك الكثير من الذاكرة في مهام التعلم الآلي (ML) واسعة النطاق .
  • الانحدار التدريجي للمجموعات الصغيرة: في الممارسة العملية، فإن معظم أطر العمل الحديثة للتعلم العميق، بما في ذلك PyTorch، نهجًا هجينًا يُشار إليه غالبًا باسم SGD من الناحية الفنية يُسمى "Mini-Batch SGD". تعمل هذه الطريقة على تحديث المعلمات باستخدام مجموعة صغيرة من العينات (دفعة) بدلاً من عينة واحدة فقط. وهي توازن SGD الكفاءة الحسابية لـ SGD الخالص واستقرار انحدار التدرج الدفعي، مما يجعلها المعيار لتدريب نماذج مثل YOLO26.
  • Adam : Adam خوارزمية تكييفية لتحسين معدل التعلم تعتمد على SGD. وهي تقوم بضبط معدل التعلم لكل معلمة على حدة بناءً على تقديرات اللحظة. على الرغم من أن Adam يتقارب بشكل أسرع، إلا أن SGD الزخم لا يزال يستخدم بشكل متكرر في الرؤية الحاسوبية (CV) لقدرته على إيجاد حلول أكثر قابلية للتعميم في سيناريوهات معينة.

تطبيقات واقعية

SGD هي المحركات وراء العديد من تقنيات الذكاء الاصطناعي التحويلية المستخدمة اليوم.

  1. المركبات ذاتية القيادة: في تطوير المركبات ذاتية القيادة، يجب أن تعالج النماذج تدفقات هائلة من البيانات المرئية لتحديد المشاة وإشارات المرور والعوائق. يتطلب تدريب شبكات الكشف عن الأجسام المتطورة هذه تحسينًا فعالاً لمعالجة ملايين الصور للطرق. SGD للمهندسين تحسين دقة النموذج بشكل متكرر، مما يضمن أن الأنظمة الحيوية للسلامة في الذكاء الاصطناعي في السيارات يمكنها اتخاذ قرارات موثوقة في الوقت الفعلي .
  2. التشخيص الطبي: يعتمد مجال تحليل الصور الطبية بشكل كبير على التعلم العميق detect مثل الأورام في فحوصات التصوير بالرنين المغناطيسي أو الأشعة السينية. ونظرًا لأن مجموعات البيانات الطبية يمكن أن تكون ضخمة و عالية الدقة، SGD تدريب الشبكات العصبية التلافيفيةالمعقدة (CNNs) دون استنزاف موارد الذاكرة. وهذا يسهل إنشاء أدوات تشخيصية عالية الدقة تساعد الأطباء في مجال الذكاء الاصطناعي في الرعاية الصحية.

مثال على كود Python

في حين أن المكتبات عالية المستوى مثل ultralytics تحسين المعالجة داخليًا أثناء train() ، يمكنك أن ترى كيف يتم تهيئة SGD واستخدامه في مستوى أدنى PyTorch سير العمل. يوضح هذا المقتطف تعريف SGD بسيط tensor .

import torch
import torch.nn as nn
import torch.optim as optim

# Define a simple linear model
model = nn.Linear(10, 1)

# Initialize Stochastic Gradient Descent (SGD) optimizer
# 'lr' is the learning rate, and 'momentum' helps accelerate gradients in the right direction
optimizer = optim.SGD(model.parameters(), lr=0.01, momentum=0.9)

# Create a dummy input and target
data = torch.randn(1, 10)
target = torch.randn(1, 1)

# Forward pass
output = model(data)
loss = nn.MSELoss()(output, target)

# Backward pass and optimization step
optimizer.zero_grad()  # Clear previous gradients
loss.backward()  # Calculate gradients
optimizer.step()  # Update model parameters
print("Model parameters updated using SGD.")

التحديات والحلول

على الرغم من شعبيته، SGD مع بعض التحديات. المشكلة الأساسية هي الضوضاء في خطوات التدرج، والتي يمكن أن تؤدي إلى تقلب الخسارة بشكل كبير بدلاً من التقارب السلس. للتخفيف من ذلك، غالبًا ما يستخدم الممارسون الزخم، وهي تقنية تساعد على تسريع SGD الاتجاه ذي الصلة وتخفف من التذبذبات، على غرار كرة ثقيلة تتدحرج أسفل تل. بالإضافة إلى ذلك، من المهم جدًا العثور على معدل التعلم الصحيح؛ فإذا كان مرتفعًا جدًا ، قد يتجاوز النموذج الحد الأدنى (انفجار التدرج)، وإذا كان منخفضًا جدًا، فسيكون التدريب بطيئًا للغاية. تساعد أدوات مثل Ultralytics في أتمتة هذه العملية من خلال إدارة ضبط المعلمات الفائقة وتوفير تصور لمقاييس التدريب. تعمل التطورات مثل Adam بشكل أساسي على أتمتة تعديل معدل التعلم، مما يعالج بعض الصعوبات الكامنة SGD.

انضم إلى مجتمع Ultralytics

انضم إلى مستقبل الذكاء الاصطناعي. تواصل وتعاون وانمو مع المبتكرين العالميين

انضم الآن