Adam Optimizer
Исследуй оптимизатор Adam для глубокого обучения. Узнай, как он сочетает импульс (momentum) и RMSProp для более быстрой сходимости в таких моделях, как Ultralytics YOLO26.
Оптимизатор Adam (сокращение от Adaptive Moment Estimation — адаптивная оценка моментов) — это сложный алгоритм оптимизации, широко используемый для обучения моделей глубокого обучения. Он произвел революцию в этой области, объединив преимущества двух других популярных расширений стохастического градиентного спуска (SGD): адаптивного алгоритма градиента (AdaGrad) и распространения среднеквадратичного значения (RMSProp). Вычисляя индивидуальные адаптивные скорости обучения для различных параметров на основе оценок первого и второго моментов градиентов, Adam позволяет нейронным сетям сходиться значительно быстрее, чем традиционные методы. Его надежность и минимальные требования к настройке делают его выбором по умолчанию для многих специалистов, приступающих к новому проекту по машинному обучению (ML).
Link to this sectionКак работает Adam#
По своей сути обучение модели включает минимизацию функции потерь, которая измеряет разницу между предсказаниями модели и фактическими данными. Стандартные алгоритмы обычно используют постоянный размер шага (скорость обучения) для спуска по «ландшафту потерь» к минимальной ошибке. Однако этот ландшафт часто бывает сложным, с оврагами и плато, которые могут сбить с толку более простые алгоритмы.
Adam решает эту проблему, поддерживая два исторических буфера для каждого параметра:
-
Импульс (первый момент): Подобно тяжелому шару, катящемуся с холма, он отслеживает скользящее среднее прошлых градиентов, чтобы поддерживать скорость в нужном направлении.
-
Дисперсия (второй момент): Он отслеживает скользящее среднее квадратов градиентов, что масштабирует скорость обучения.
Эта комбинация позволяет оптимизатору делать более широкие шаги на плоских участках ландшафта и более мелкие, осторожные шаги на крутых или зашумленных участках. Конкретные механизмы подробно описаны в фундаментальной научной статье об Adam авторов Kingma и Ba, которая продемонстрировала его эмпирическое превосходство в различных задачах глубокого обучения (DL).
Link to this sectionРеальные приложения#
Универсальность оптимизатора Adam привела к его внедрению практически во всех секторах искусственного интеллекта (AI).
- Обработка естественного языка (NLP): Большие языковые модели, такие как Generative Pre-trained Transformers (GPT), при обучении сильно полагаются на Adam (или его вариант AdamW). Алгоритм эффективно обрабатывает разреженные градиенты, связанные с обширными словарями и колоссальными наборами данных, что позволяет создавать мощные чат-боты и системы перевода.
- Компьютерное зрение в здравоохранении: При анализе медицинских изображений модели должны обнаруживать тонкие аномалии, такие как опухоли на МРТ-сканах. Adam помогает сверточным нейронным сетям (CNN) быстро сходиться к высокоточным решениям, что критически важно при разработке диагностических инструментов для AI в здравоохранении.
Link to this sectionAdam против SGD#
Хотя Adam обычно быстрее сходится, важно отличать его от стохастического градиентного спуска (SGD). SGD обновляет веса модели, используя фиксированную скорость обучения, и часто предпочтительнее для финальных этапов обучения современных моделей обнаружения объектов, поскольку иногда позволяет достичь немного лучшей обобщающей способности (финальной точности) на тестовых данных.
Однако Adam является «адаптивным», что означает, что он автоматически настраивает скорость обучения. Это делает его гораздо более удобным для начальных экспериментов и сложных архитектур, где настройка SGD была бы затруднительна. Для пользователей, управляющих экспериментами на платформе Ultralytics, переключение между этими оптимизаторами для сравнения производительности часто является ключевым шагом в настройке гиперпараметров.
Link to this sectionРеализация с помощью Ultralytics#
Современные фреймворки, такие как PyTorch, и библиотека Ultralytics делают использование Adam простым. Популярный вариант под названием AdamW (Adam с затуханием весов) часто рекомендуется, поскольку он исправляет проблемы с регуляризацией в оригинальном алгоритме Adam. Это особенно эффективно для новейших архитектур, таких как YOLO26, которые выигрывают от стабильности, обеспечиваемой AdamW.
В следующем примере показано, как обучить модель YOLO26 с помощью оптимизатора AdamW:
from ultralytics import YOLO
# Load the cutting-edge YOLO26n model
model = YOLO("yolo26n.pt")
# Train the model using the 'AdamW' optimizer
# The 'optimizer' argument allows easy switching between SGD, Adam, AdamW, etc.
results = model.train(data="coco8.yaml", epochs=5, optimizer="AdamW")Разработчикам, интересующимся более глубокими теоретическими основами, ресурсы вроде заметок по оптимизации Стэнфордского курса CS231n предоставляют отличную визуализацию того, как Adam соотносится с другими алгоритмами, такими как RMSProp и AdaGrad. Кроме того, документация по оптимизаторам PyTorch содержит технические подробности об аргументах и особенностях реализации, доступных для настройки.






