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

Learning Rate

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

Скорость обучения — это гиперпараметр, который определяет, насколько далеко перемещаются веса модели на каждом шаге обучения. Градиентный спуск вычисляет градиент функции потерь, указывающий направление её наиболее быстрого роста, и обновляет каждый вес по формуле w ← w − η × градиент, где η (эта) — скорость обучения. Её также называют размером шага, а в коде обычно используют имя lr. Правильно выбранная скорость позволяет нейронной сети быстро сходиться к хорошему решению, а неудачно выбранная заставляет обучение расходиться или идти медленно. Поэтому в статье Лесли Смита о циклических скоростях обучения она названа важнейшим гиперпараметром для настройки глубоких сетей.

Слишком высокая, слишком низкая и оптимальная скорость#

Скорость обучения — это компромисс между быстродействием и стабильностью:

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

Приведённый ниже скрипт на PyTorch минимизирует функцию потерь w², начиная с одной и той же точки, при четырёх скоростях обучения:

import torch

# Minimize loss = w**2 (lowest at w = 0) from the same start with four learning rates
for lr in (0.01, 0.1, 0.9, 1.1):
    w = torch.tensor(5.0, requires_grad=True)
    optimizer = torch.optim.SGD([w], lr=lr)
    path = []
    for step in range(20):
        optimizer.zero_grad()
        loss = w**2
        loss.backward()
        optimizer.step()  # w = w - lr * gradient
        path.append(w.item())
    print(f"lr={lr}: first steps {[round(v, 2) for v in path[:3]]}, after 20 steps w={path[-1]:.3f}")

При скорости 0.01 вес за 20 шагов лишь медленно уменьшается с 5 до 3.338, а при 0.1 достигает 0.058. При 0.9 знак веса меняется на каждом шаге (−4.0, 3.2, −2.56), но он всё же сходится к 0.058. При 1.1 каждый шаг всё дальше перескакивает через минимум, и вес увеличивается до 191.688. Градиентный спуск для квадратичной функции остаётся устойчивым, только если скорость обучения меньше 2, делённых на кривизну функции потерь, то есть на её вторую производную. Кривизна w² равна 2, поэтому здесь предел составляет ровно 1.0, а скорость 0.5 позволяет за один шаг достичь минимума. В реальной сети предел того же типа задаётся наиболее крутым направлением функции потерь, поэтому скорость, подходящая одной модели или размеру пакета, может привести к расходимости при других условиях.

Расписания скорости обучения#

При обучении скорость редко остаётся неизменной от начала до конца. Расписание меняет её со временем:

  • Разогрев: скорость начинается с малого значения и постепенно увеличивается в течение первых эпох или итераций, что не даёт большим и нестабильным градиентам в начале обучения нарушить его устойчивость.
  • Пошаговое уменьшение: скорость делится на фиксированный коэффициент, часто на 10, в заданные эпохи или когда функция потерь на валидационной выборке перестаёт снижаться.
  • Линейное и косинусное уменьшение: скорость плавно снижается до небольшого конечного значения. Косинусное затухание следует половине косинусоиды, а его вариант с тёплыми перезапусками возвращает скорость к высокому значению в начале каждого нового цикла.
  • Циклические политики и политика одного цикла: во время обучения изменяй скорость обучения в диапазоне от нижней до верхней границы.

Большие шаги в начале быстро перемещают веса в подходящую область, а маленькие шаги в конце позволяют им сойтись к минимуму, а не колебаться вокруг него. Обучение YOLO26 в Ultralytics начинается с lr0, проходит разогрев за warmup_epochs (по умолчанию 3) и линейно снижается до lr0 * lrf либо следует косинусному графику с cos_lr=True. При значении optimizer="auto" по умолчанию тренер сам выбирает и оптимизатор, и начальную скорость обучения: MuSGD со скоростью 0.01 для запусков дольше 10 000 итераций, а в остальных случаях AdamW со скоростью, подобранной с учётом числа классов, поэтому lr0 применяется только при явном указании оптимизатора:

from ultralytics import YOLO

# Загрузи предварительно обученную nano-модель YOLO26
model = YOLO("yolo26n.pt")

# При явном указании оптимизатора применяется lr0; скорость снижается до lr0 * lrf по косинусному графику
results = model.train(data="coco8.yaml", epochs=10, optimizer="SGD", lr0=0.01, lrf=0.01, cos_lr=True)

Выбор начального значения#

Типичные начальные значения — от 0.01 до 0.1 для стохастического градиентного спуска (SGD) с моментумом и 0.001 для оптимизатора Adam — значение по умолчанию, предложенное в статье об Adam. При дообучении предобученной модели используют меньшую скорость обучения, чем при обучении с нуля: большие шаги могут перезаписать признаки, благодаря которым работает перенос обучения.

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

  • Алгоритм оптимизации: правило обновления, использующее скорость обучения. Адаптивные оптимизаторы, например Adam, масштабируют шаг для каждого веса на основе истории его градиентов, но всё равно умножают каждый шаг на одну глобальную скорость обучения.
  • Моментум: отдельный гиперпараметр, который добавляет к текущему обновлению долю предыдущего, сглаживая траекторию и увеличивая эффективный размер шага в устойчивых направлениях.
  • Затухание весов: член регуляризации, который на каждом шаге сдвигает сами веса к нулю; затухание скорости обучения со временем уменьшает размер шага.
  • Размер пакета: число примеров, по которым усредняется каждый градиент. Большие пакеты дают менее зашумлённые градиенты и позволяют использовать более высокую скорость обучения, а правило линейного масштабирования увеличивает скорость обучения в k раз, если размер пакета вырос в k раз.

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

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

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

Узнай, как 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. Используй их для мониторинга посевов, отслеживания скота и точного земледелия, чтобы повысить урожайность и эффективность.
Подробнее

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

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