Ultralytics YOLO27: Вступи в список ожидания.
Лицензия YOLO
Назад к глоссарию Ultralytics

Momentum (Optimization)

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

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

Как работает импульс#

При градиентном спуске модель изменяет свои веса в направлении, противоположном градиенту, — направлению наиболее быстрого роста функции потерь. Классический импульс, также называемый импульсом Поляка или методом тяжёлого шарика, добавляет инерцию этому движению. Борис Поляк представил этот метод в своей работе 1964 года об ускорении итерационных методов.

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

Импульс особенно полезен на вытянутых поверхностях функции потерь, где кривизна велика поперёк долины и мала вдоль её дна. Градиенты, которые снова и снова направлены вдоль долины, накапливаются, а чередующиеся компоненты поперёк неё частично взаимно компенсируются. При стохастическом градиентном спуске эта память также сглаживает колебания между мини-батчами. Динамика импульса для квадратичной функции потерь объясняет как ускорение, так и колебания, которые могут возникать рядом с минимумом.

Коэффициент импульса, обычно обозначаемый бета или мю, чаще всего находится между нулём и единицей. При нулевом коэффициенте получается обычный градиентный спуск; чем ближе значение к единице, тем дольше сохраняются предыдущие градиенты. Часто начинают со значения 0.9. При ненормированном буфере скорости и постоянном градиенте накопленная скорость при коэффициенте 0.9 стремится к десятикратному значению градиента, а при 0.99 — к стократному. Поэтому импульс и шаг обучения сильно взаимодействуют при настройке гиперпараметров.

Слишком агрессивное сочетание приводит к перескоку минимума: обновления снова и снова пересекают его, вызывая колебания функции потерь или расходимость. Это происходит даже для гладких квадратичных целевых функций. Расписание шага обучения меняет величину обновлений в ходе обучения, а импульс определяет, насколько долго сохраняется история направления.

Два тесно связанных алгоритма оптимизации по-разному используют эту историю:

  • Импульс Нестерова вычисляет градиент в позиции упреждения, полученной с учётом сохранённой скорости, позволяя градиенту скорректировать предполагаемое движение.
  • Adam сочетает экспоненциально взвешенное среднее градиента со средним квадратом градиента, масштабируя обновления отдельно для каждого параметра. Параметр beta1 управляет памятью градиентов.

Минимальный пример на PyTorch#

В этом примере PyTorch сравниваются одинаковые начальные точки и шаги обучения для вытянутой квадратичной целевой функции. Официальная реализация SGD автоматически управляет буфером импульса.

import torch

# Curvature is 50 times greater along the second coordinate.
scale = torch.tensor([1.0, 50.0])

for momentum in (0.0, 0.9):
    weights = torch.tensor([5.0, 1.0], requires_grad=True)
    optimizer = torch.optim.SGD([weights], lr=0.015, momentum=momentum)

    for step in range(100):
        optimizer.zero_grad()
        loss = (scale * weights.square()).sum()
        loss.backward()
        optimizer.step()

    final_loss = (scale * weights.square()).sum().item()
    print(f"Momentum {momentum}: loss = {final_loss:.6f}")

После 100 обновлений значение функции потерь составляет примерно 0.056531 без импульса и 0.000216 с импульсом. Накопленная история направлений ускоряет движение вдоль координаты с пологим склоном.

Применение при обучении моделей компьютерного зрения#

Импульс помогает обучать свёрточные нейронные сети для классификации изображений и обнаружения объектов. В обучении Ultralytics YOLO импульс Нестерова включается при выборе optimizer="SGD", а параметр momentum управляет историей обновлений, которая сохраняется. Реализация тренера передаёт этот коэффициент оптимизатору с помощью nesterov=True.

Знаковый пример применения — исходная процедура обучения ResNet на ImageNet. В этих моделях использовался SGD с импульсом 0.9, размером пакета 256, затуханием весов 0.0001 и начальным шагом обучения 0.1, который уменьшался в десять раз при выходе ошибки на плато.

Изучи решения

Компьютерное зрение в спорте

Компьютерное зрение в спорте

Узнай, как Ultralytics YOLO обеспечивает компьютерное зрение в спорте: отслеживание игроков и мяча, аналитика результатов, полезные выводы для тренеров и реабилитация спортсменов.
Подробнее
Компьютерное зрение для аэросъёмки

Компьютерное зрение для аэросъёмки

Превращай снимки с дронов и аэрофотоснимки в полезные данные в реальном времени для сельского хозяйства, аквакультуры, охраны природы и геопространственного анализа с Ultralytics YOLO.
Подробнее
Компьютерное зрение в аэрокосмической отрасли

Компьютерное зрение в аэрокосмической отрасли

Применяй компьютерное зрение в аэрокосмической отрасли с Ultralytics YOLO: для осмотра самолётов, обнаружения посторонних предметов на взлётно-посадочных полосах, наземного обслуживания аэропортов и выявления дефектов композитных материалов.
Подробнее
Компьютерное зрение в сфере безопасности

Компьютерное зрение в сфере безопасности

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

Компьютерное зрение в робототехнике

Создавай более интеллектуальные машины с моделями Ultralytics YOLO. ИИ на базе компьютерного зрения в робототехнике обеспечивает автономную навигацию, восприятие, отслеживание объектов и управление в реальном времени.
Подробнее
Компьютерное зрение в логистике

Компьютерное зрение в логистике

Оптимизируй логистику с моделями Ultralytics YOLO. Визуальный AI обеспечивает проверку посылок, сортировку, отслеживание транспорта и мониторинг безопасности на складе в реальном времени.
Подробнее
Компьютерное зрение в розничной торговле

Компьютерное зрение в розничной торговле

Переосмысли розничную торговлю с моделями Ultralytics YOLO. Визуальный AI обеспечивает отслеживание запасов, мониторинг полок, управление очередями и более глубокое понимание поведения покупателей.
Подробнее
Компьютерное зрение в здравоохранении

Компьютерное зрение в здравоохранении

Создавай решения для здравоохранения с моделями Ultralytics YOLO. Визуальный AI в здравоохранении ускоряет медицинскую визуализацию, улучшает диагностику и мониторинг пациентов.
Подробнее
Компьютерное зрение в производстве

Компьютерное зрение в производстве

Оптимизируй производство с моделями Ultralytics YOLO. Компьютерное зрение на базе ИИ обеспечивает контроль качества, обнаружение дефектов, контроль использования СИЗ и автоматизацию сборочных линий.
Подробнее
Компьютерное зрение в автомобильной отрасли

Компьютерное зрение в автомобильной отрасли

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

Компьютерное зрение в сельском хозяйстве

Внедряй ИИ для компьютерного зрения в умное сельское хозяйство с моделями Ultralytics YOLO. Используй их для мониторинга посевов, отслеживания скота и точного земледелия, чтобы повысить урожайность и эффективность.
Подробнее

Давай вместе строить будущее ИИ!

Начни свой путь в будущее машинного обучения