Глоссарий

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

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

Обучай модели YOLO просто
с помощью Ultralytics HUB.

Узнай больше

Стохастический градиентный спуск, широко известный как SGD, - это популярный и эффективный алгоритм оптимизации, широко используемый в машинном обучении (ML) и особенно в глубоком обучении (DL). Он является разновидностью стандартного алгоритма градиентного спуска, но специально разработан для повышения скорости и эффективности при работе с очень большими наборами данных. Вместо того чтобы вычислять градиент (направление крутого спуска для функции потерь), используя весь набор данных на каждом шаге, SGD аппроксимирует градиент на основе одной, случайно выбранной выборки данных или небольшого подмножества, называемого мини-пакетом. Такой подход значительно снижает вычислительные затраты и требования к памяти, делая возможным обучение сложных моделей на огромных объемах данных.

Актуальность в машинном обучении

SGD - это краеугольный камень для обучения крупномасштабных моделей машинного обучения, особенно сложных нейронных сетей (NN), которыми оснащены многие современные приложения ИИ. Его эффективность делает его незаменимым при работе с наборами данных, которые слишком велики, чтобы поместиться в память, или требуют слишком много времени для обработки с помощью традиционного пакетного градиентного спуска. Такие модели, как Ultralytics YOLO часто используют SGD или его разновидности в процессе обучения для изучения паттернов в таких задачах, как обнаружение объектов, классификация изображений и их сегментация. Основные фреймворки глубокого обучения, такие как PyTorch и TensorFlow обеспечивают надежную реализацию SGD, что подчеркивает его фундаментальную роль в экосистеме ИИ.

Ключевые понятия

Понимание SGD включает в себя несколько основных идей:

  • Стохастическая природа: Термин "стохастический" относится к случайности, которую вносит использование только одной или нескольких выборок для оценки градиента на каждом шаге. Эта случайность добавляет шум в процесс оптимизации, что иногда может помочь модели избежать плохих локальных минимумов и найти лучшие общие решения.
  • Мини-партии: Хотя в чистом SGD используется один образец для обновления, на практике чаще всего используется небольшая "мини-партия" образцов (например, 32, 64, 128). Такой подход, который часто еще называют SGD, позволяет сбалансировать эффективность обновлений по одной выборке и стабильность, достигаемую за счет усреднения градиентов по небольшой партии. Размер этой партии регулируется гиперпараметром Batch Size.
  • Скорость обучения: Этот важнейший гиперпараметр определяет размер шагов, которые делаются в процессе оптимизации. Хорошо подобранная скорость обучения жизненно важна для сходимости; слишком высокая - и процесс может проскочить минимум, слишком низкая - и обучение станет чрезмерно медленным. Такие техники, как планирование скорости обучения, часто используются вместе с SGD.
  • Функция потерь: Цель SGD - минимизировать функцию потерь, которая измеряет разницу между предсказаниями модели и реальными целевыми значениями в обучающих данных.

Отличия от родственных концепций

SGD - это один из нескольких алгоритмов оптимизации, и важно отличать его от других:

  • Градиентный спуск (Batch GD): Основное различие заключается в том, как вычисляется градиент. Пакетный GD использует весь набор данных для каждого обновления параметров, обеспечивая точный градиент, но становясь вычислительно дорогим и медленным для больших наборов данных. SGD использует один образец (или мини-пакет), делая каждое обновление намного быстрее, но более шумным. Подробнее о стандартном методе ты можешь узнать на странице глоссария Gradient Descent.
  • Мини-пакетный градиентный спуск: Это наиболее распространенная практическая реализация, которую часто называют просто SGD. Она вычисляет градиент на небольших случайных подмножествах (мини-партиях) данных. В ней соблюдается баланс между точностью Batch GD и эффективностью чистого SGD.
  • Оптимизатор Адам: Adam - это адаптивный алгоритм оптимизации скорости обучения, то есть он настраивает скорость обучения для каждого параметра индивидуально, основываясь на прошлых градиентах. Хотя Адам часто сходится быстрее, чем базовый SGD, SGD (особенно с импульсом) иногда может лучше обобщать данные, которые еще не изучены, что обсуждается в исследованиях вроде "The Marginal Value of Adaptive Gradient Methods in Machine Learning".

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

Эффективность SGD позволяет использовать его в многочисленных крупномасштабных приложениях искусственного интеллекта:

Пример 1: Обучение больших языковых моделей (LLM)

Для обучения моделей, подобных тем, что используются в обработке естественного языка (NLP), часто используются огромные наборы текстовых данных (миллиарды слов). SGD и его разновидности необходимы для эффективной итерации этих данных, позволяя моделям изучать грамматику, контекст и семантику. Такие платформы, как Hugging Face в значительной степени полагаются на эти оптимизаторы для обучения моделей-трансформеров.

Пример 2: Обучение обнаружению объектов в реальном времени

Для таких моделей, как Ultralytics YOLO , предназначенных для выводов в реальном времени, обучение должно быть эффективным. SGD позволяет разработчикам обучать эти модели на больших наборах данных изображений, таких как COCO, или на пользовательских наборах данных, управляемых с помощью таких платформ, как Ultralytics HUB. Быстрые обновления обеспечивают более быструю сходимость по сравнению с Batch GD, что очень важно для быстрой итерации при разработке модели и настройке гиперпараметров.

Читать полностью