Узнайте, как стохастический градиентный спуск (SGD) оптимизирует модели машинного обучения. Узнайте, как SGD Ultralytics для более быстрого и эффективного обучения искусственного интеллекта.
Стохастический градиентный спуск (SGD) — это мощный алгоритм оптимизации, широко используемый в машинном обучении для эффективного обучения моделей , особенно при работе с большими наборами данных. По сути, SGD разновидностью стандартного метода градиентного спуска, разработанного для ускорения процесса обучения за счет более частого обновления параметров модели. Вместо вычисления ошибки для всего набора данных перед выполнением одного обновления, как это делается в традиционном пакетном градиентном —SGD веса модели, используя только один случайно выбранный учебный пример за раз. Эта «стохастическая» или случайная природа вносит шум в путь оптимизации, что может помочь модели избежать неоптимальных решений и быстрее сходиться на огромных наборах данных, где обработка всех данных за один раз является вычислительно невозможной.
Основная цель любого процесса обучения — минимизировать функцию потери, которая количественно оценивает разницу между прогнозами модели и фактическими целевыми значениями. SGD этого с помощью итеративного цикла. Сначала алгоритм выбирает случайную точку данных из учебных данных. Затем он выполняет прямой проход для генерации прогноза и вычисляет ошибку. Используя обратное распространение, алгоритм вычисляет градиент — по сути, наклон ландшафта ошибок — на основе этого единственного примера. Наконец, он обновляет веса модели в направлении, противоположном градиенту, чтобы уменьшить ошибку.
Этот процесс повторяется многократно, часто группируясь в эпохи, до тех пор, пока производительность модели не стабилизируется. Масштаб этих обновлений контролируется гиперпараметром, известным как скорость обучения. Поскольку каждый шаг основан только на одной выборке, путь к минимуму часто бывает зигзагообразным или шумным по сравнению с плавной траекторией пакетного градиентного спуска. Однако этот шум часто является преимуществом в глубоком обучении, поскольку он может предотвратить застревание модели в локальном минимуме, что потенциально приводит к лучшему глобальному решению.
Понимание различий между SGD связанными алгоритмами оптимизации имеет решающее значение для выбора правильной стратегии обучения.
SGD его варианты являются движущей силой многих трансформационных технологий искусственного интеллекта, используемых сегодня.
В то время как библиотеки высокого уровня, такие как 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 трудностей.