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

Градиентный спуск

Узнайте, как градиентный спуск оптимизирует модели ИИ, такие как Ultralytics YOLO, обеспечивая точные прогнозы в задачах от здравоохранения до самодвижущихся автомобилей.

Градиентный спуск - это фундаментальный итерационный алгоритм, используемый для минимизации функции путем движения в направлении крутого спуска. В контексте машинного обучения (ML) и глубокого обучения (ГОО), он выступает в качестве направляющего механизм, который обучает модели делать точные прогнозы. Основная задача - найти оптимальный набор весов модели, который минимизирует функцию потерь, которая представляет собой разницу между прогнозами модели и реальными целевыми значениями. Этот процесс можно представить как попытку пешего туриста найти дно долины в густом тумане; неоднократно делая шаги в направлении самого крутого склона, в конечном итоге он достигает самой низкой точки. Эта основная концепция более подробно рассматривается в Google Machine Learning Crash Course.

Как работает градиентный спуск (Gradient Descent)?

Основная механика градиентного спуска заключается в вычислении градиента - вектора частных производных функции потерь функции потерь по каждому параметру. Эти вычисления эффективно выполняются алгоритм обратного распространения. Как только градиент модель обновляет свои параметры, делая шаг в направлении, противоположном градиенту. Размер этого шага контролируется важным параметром, известным как скорость обучения. Если скорость обучения слишком высока, то алгоритм может проскочить минимум, а если слишком низкая, обучение может занять слишком много времени. Этот цикл повторяется в течение многих проходов по набору данных, называемых эпохами, пока потери не стабилизируются. Для математической перспективы, Академия Khan предлагает урок по градиентному спуску в котором подробно рассматривается процесс вычисления.

Разновидности градиентного спуска

Существуют различные вариации алгоритма, позволяющие сбалансировать вычислительную эффективность и скорость сходимости:

  • Пакетный спуск градиента: Вычисляет градиент, используя все обучающих данных для каждого обновления. Он обеспечивает стабильное но может быть очень медленным и требовать много памяти для больших наборов данных.
  • Стохастический градиентный спускSGD): Обновление весов с помощью одной случайной выборки за раз. Это вносит шум, который может помочь избежать локальных минимумов но приводит к колебаниям кривой потерь. На сайте Документация Scikit-Learn по SGD содержит технические подробности об этом подходе.
  • Мини-пакетный градиентный спуск: Обрабатывает небольшие подмножества данных, или партии, обеспечивая баланс между стабильностью пакетного градиентного спуска и скоростью SGD. Это стандартный подход в таких современных фреймворках, как PyTorch и TensorFlow.

Вот краткий пример того, как настроить оптимизатор для обучения Ultralytics YOLO11 модели:

from ultralytics import YOLO

# Load the YOLO11 model
model = YOLO("yolo11n.pt")

# Train the model using the SGD optimizer with a specific learning rate
# The 'optimizer' argument allows you to select the gradient descent variant
results = model.train(data="coco8.yaml", epochs=50, optimizer="SGD", lr0=0.01)

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

Градиентный спуск является движущей силой многих преобразующих ИИ в здравоохранении и промышленных приложениях.

  • Анализ медицинских изображений: В таких задачах, как обнаружение опухолей, Градиентный спуск итеративно регулирует веса конволюционной нейронной сети (CNN), чтобы минимизировать ошибку между предсказанными масками сегментации и "истиной" рентгенолога. Это обеспечивает высокую точность анализе медицинских изображений.
  • Автономное вождение: Самостоятельно управляемые автомобили полагаются на модели обнаружения объектов для идентификации пешеходов, транспортных средств и дорожных сигналов. В процессе обучения оптимизатор минимизирует потери регрессии для координат ограничительного поля, что позволяет автомобилю локализовать объекты с точностью до сантиметра. Лидеры отрасли, такие как Waymo, полагаются на эти передовые методы оптимизации для обеспечения безопасности пассажиров.

Градиентный спуск в сравнении со смежными понятиями

Для полного понимания градиентного спуска необходимо отличать его от смежных терминов. В то время как Backpropagation вычисляет градиенты (определяет "направление"), Gradient Descent - это это алгоритм оптимизации который обновляет параметры (делает "шаг"). Кроме того, если стандартный градиентный спуск обычно использует фиксированную скорость обучения, адаптивные алгоритмы, такие как оптимизаторAdam регулируют скорость обучения динамически регулируют скорость обучения для каждого параметра, что часто приводит к ускорению сходимости, как описано в оригинальной научной статье Adam . Такие проблемы, как проблема исчезающего градиента может препятствовать стандартному градиентного спуска в очень глубоких сетях, что требует таких архитектурных решений, как Пакетная нормализация или остаточные связи. Исчерпывающие обзоры этих проблем оптимизации можно найти на сайте блоге Себастьяна Рудера.

Присоединяйтесь к сообществу Ultralytics

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

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