Узнайте, как градиентный спуск оптимизирует модели ИИ, такие как Ultralytics YOLO, обеспечивая точные прогнозы в задачах от здравоохранения до самодвижущихся автомобилей.
Градиентный спуск - это фундаментальный итерационный алгоритм, используемый для минимизации функции путем движения в направлении крутого спуска. В контексте машинного обучения (ML) и глубокого обучения (ГОО), он выступает в качестве направляющего механизм, который обучает модели делать точные прогнозы. Основная задача - найти оптимальный набор весов модели, который минимизирует функцию потерь, которая представляет собой разницу между прогнозами модели и реальными целевыми значениями. Этот процесс можно представить как попытку пешего туриста найти дно долины в густом тумане; неоднократно делая шаги в направлении самого крутого склона, в конечном итоге он достигает самой низкой точки. Эта основная концепция более подробно рассматривается в Google Machine Learning Crash Course.
Основная механика градиентного спуска заключается в вычислении градиента - вектора частных производных функции потерь функции потерь по каждому параметру. Эти вычисления эффективно выполняются алгоритм обратного распространения. Как только градиент модель обновляет свои параметры, делая шаг в направлении, противоположном градиенту. Размер этого шага контролируется важным параметром, известным как скорость обучения. Если скорость обучения слишком высока, то алгоритм может проскочить минимум, а если слишком низкая, обучение может занять слишком много времени. Этот цикл повторяется в течение многих проходов по набору данных, называемых эпохами, пока потери не стабилизируются. Для математической перспективы, Академия Khan предлагает урок по градиентному спуску в котором подробно рассматривается процесс вычисления.
Существуют различные вариации алгоритма, позволяющие сбалансировать вычислительную эффективность и скорость сходимости:
Вот краткий пример того, как настроить оптимизатор для обучения 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)
Градиентный спуск является движущей силой многих преобразующих ИИ в здравоохранении и промышленных приложениях.
Для полного понимания градиентного спуска необходимо отличать его от смежных терминов. В то время как Backpropagation вычисляет градиенты (определяет "направление"), Gradient Descent - это это алгоритм оптимизации который обновляет параметры (делает "шаг"). Кроме того, если стандартный градиентный спуск обычно использует фиксированную скорость обучения, адаптивные алгоритмы, такие как оптимизаторAdam регулируют скорость обучения динамически регулируют скорость обучения для каждого параметра, что часто приводит к ускорению сходимости, как описано в оригинальной научной статье Adam . Такие проблемы, как проблема исчезающего градиента может препятствовать стандартному градиентного спуска в очень глубоких сетях, что требует таких архитектурных решений, как Пакетная нормализация или остаточные связи. Исчерпывающие обзоры этих проблем оптимизации можно найти на сайте блоге Себастьяна Рудера.