Yolo Vision Shenzhen
Шэньчжэнь
Присоединиться сейчас
Глоссарий

Стохастический градиентный спускSGD)

Узнайте, как стохастический градиентный спуск (SGD) оптимизирует модели машинного обучения. Узнайте, как SGD Ultralytics для более быстрого и эффективного обучения искусственного интеллекта.

Стохастический градиентный спуск (SGD) — это мощный алгоритм оптимизации, широко используемый в машинном обучении для эффективного обучения моделей , особенно при работе с большими наборами данных. По сути, SGD разновидностью стандартного метода градиентного спуска, разработанного для ускорения процесса обучения за счет более частого обновления параметров модели. Вместо вычисления ошибки для всего набора данных перед выполнением одного обновления, как это делается в традиционном пакетном градиентном —SGD веса модели, используя только один случайно выбранный учебный пример за раз. Эта «стохастическая» или случайная природа вносит шум в путь оптимизации, что может помочь модели избежать неоптимальных решений и быстрее сходиться на огромных наборах данных, где обработка всех данных за один раз является вычислительно невозможной.

Как работает стохастический градиентный спуск

Основная цель любого процесса обучения — минимизировать функцию потери, которая количественно оценивает разницу между прогнозами модели и фактическими целевыми значениями. SGD этого с помощью итеративного цикла. Сначала алгоритм выбирает случайную точку данных из учебных данных. Затем он выполняет прямой проход для генерации прогноза и вычисляет ошибку. Используя обратное распространение, алгоритм вычисляет градиент — по сути, наклон ландшафта ошибок — на основе этого единственного примера. Наконец, он обновляет веса модели в направлении, противоположном градиенту, чтобы уменьшить ошибку.

Этот процесс повторяется многократно, часто группируясь в эпохи, до тех пор, пока производительность модели не стабилизируется. Масштаб этих обновлений контролируется гиперпараметром, известным как скорость обучения. Поскольку каждый шаг основан только на одной выборке, путь к минимуму часто бывает зигзагообразным или шумным по сравнению с плавной траекторией пакетного градиентного спуска. Однако этот шум часто является преимуществом в глубоком обучении, поскольку он может предотвратить застревание модели в локальном минимуме, что потенциально приводит к лучшему глобальному решению.

SGD в сравнении с другими алгоритмами оптимизации

Понимание различий между SGD связанными алгоритмами оптимизации имеет решающее значение для выбора правильной стратегии обучения.

  • Пакетный градиентный спуск: Этот традиционный метод вычисляет градиент, используя весь набор данных для каждого отдельного обновления. Хотя он обеспечивает стабильный и прямой путь к минимуму, он чрезвычайно медленный и требует большого объема памяти для крупномасштабных задач машинного обучения (ML).
  • Мини-пакетный градиентный спуск: на практике большинство современных фреймворков глубокого обучения, включая PyTorch, реализуют гибридный подход, часто называемый SGD технически строго «мини-пакетный SGD». Этот метод обновляет параметры, используя небольшую группу выборок (пакет), а не только одну. Он уравновешивает вычислительную эффективность чистого SGD стабильностью пакетного градиентного спуска, что делает его стандартом для обучения моделей, таких как YOLO26.
  • Adam : Adam алгоритм адаптивной оптимизации скорости обучения, основанный на SGD. Он корректирует скорость обучения для каждого параметра индивидуально на основе оценок момента. Хотя Adam сходится быстрее, SGD импульсом по-прежнему часто используется в компьютерном зрении (CV) благодаря своей способности находить более обобщаемые решения в определенных сценариях.

Применение в реальном мире

SGD его варианты являются движущей силой многих трансформационных технологий искусственного интеллекта, используемых сегодня.

  1. Автономные транспортные средства: при разработке автономных транспортных средств модели должны обрабатывать огромные потоки визуальных данных для идентификации пешеходов, дорожных знаков и препятствий. Обучение этих сложных сетей обнаружения объектов требует эффективной оптимизации для обработки миллионов изображений дорог. SGD инженерам итеративно уточнять точность модели, обеспечивая, чтобы критически важные для безопасности системы ИИ в автомобильной промышленности могли принимать надежные решения в режиме реального времени .
  2. Медицинская диагностика: Область анализа медицинских изображений в значительной степени опирается на глубокое обучение для detect , таких как опухоли, на МРТ-сканах или рентгеновских снимках. Поскольку медицинские наборы данных могут быть огромными и иметь высокое разрешение, SGD обучать сложные сверточные нейронные сети (CNN) без перегрузки ресурсов памяти. Это способствует созданию высокоточных диагностических инструментов, которые помогают врачам в области искусственного интеллекта в здравоохранении.

Пример кода на языке 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

Присоединяйтесь к будущему ИИ. Общайтесь, сотрудничайте и развивайтесь вместе с мировыми новаторами

Присоединиться сейчас