Adam Optimizer
Изучи оптимизатор Adam для глубокого обучения. Узнай, как он объединяет импульс и RMSProp для более быстрой сходимости моделей, таких как Ultralytics YOLO26.
Оптимизатор Adam, сокращение от «адаптивная оценка моментов», — это продвинутый алгоритм оптимизации, широко используемый для обучения моделей глубокого обучения. Он произвёл революцию в этой области, объединив преимущества двух других популярных расширений стохастического градиентного спуска (SGD): адаптивного алгоритма градиента (AdaGrad) и распространения среднеквадратичного значения (RMSProp). Вычисляя индивидуальные адаптивные скорости обучения для разных параметров на основе оценок первых и вторых моментов градиентов, Adam позволяет нейронным сетям сходиться значительно быстрее традиционных методов. Благодаря устойчивости и минимальным требованиям к настройке он стал стандартным выбором для многих специалистов, начинающих новый проект в области машинного обучения (ML).
Как работает Adam#
В основе обучения модели лежит минимизация функции потерь, которая измеряет разницу между предсказаниями модели и фактическими данными. Стандартные алгоритмы обычно используют постоянный размер шага (скорость обучения), чтобы двигаться по «ландшафту потерь» к минимальной ошибке. Однако этот ландшафт часто бывает сложным: овраги и плато могут приводить к тому, что более простые алгоритмы застревают.
Adam решает эту проблему, поддерживая два исторических буфера для каждого параметра:
-
Импульс (первый момент): Подобно тяжёлому шару, катящемуся с холма, этот показатель отслеживает скользящее среднее прошлых градиентов, чтобы сохранять скорость в нужном направлении.
-
Дисперсия (второй момент): Этот показатель отслеживает скользящее среднее квадратов градиентов, масштабируя скорость обучения.
Эта комбинация позволяет оптимизатору делать более крупные шаги на плоских участках ландшафта и более мелкие, осторожные шаги на крутых или зашумлённых участках. Конкретные механизмы подробно описаны в основополагающей исследовательской статье об Adam Кингмы и Ба, в которой продемонстрировано его эмпирическое превосходство в различных задачах глубокого обучения (DL).
Практические применения#
Универсальность оптимизатора Adam привела к его распространению практически во всех областях искусственного интеллекта (AI).
- Обработка естественного языка (NLP): большие языковые модели, такие как генеративные предварительно обученные трансформеры (GPT), активно используют Adam (или его вариант AdamW) для обучения. Алгоритм эффективно обрабатывает разреженные градиенты, связанные с огромными словарями и массивными наборами данных, что позволяет создавать мощные чат-боты и системы перевода.
- Компьютерное зрение в здравоохранении: при анализе медицинских изображений модели должны обнаруживать малозаметные аномалии, например опухоли на МРТ-снимках. Adam помогает свёрточным нейронным сетям (CNNs) быстро сходиться к решениям с высокой точностью, что критически важно при разработке диагностических инструментов для ИИ в здравоохранении.
Adam и SGD#
Хотя Adam обычно сходится быстрее, важно отличать его от стохастического градиентного спуска (SGD). SGD обновляет веса модели, используя фиксированную скорость обучения, и часто предпочтителен на заключительных этапах обучения современных моделей обнаружения объектов, поскольку иногда позволяет добиться немного лучшей обобщающей способности (итоговой точности) на тестовых данных.
Однако Adam является «адаптивным», то есть автоматически настраивает скорость обучения. Это делает его гораздо удобнее для первых экспериментов и сложных архитектур, в которых настройка SGD была бы затруднительна. Для пользователей, управляющих экспериментами на платформе Ultralytics, переключение между этими оптимизаторами для сравнения производительности часто становится важным этапом настройки гиперпараметров.
Реализация с Ultralytics#
Современные фреймворки, такие как PyTorch, и библиотека Ultralytics упрощают использование Adam. Популярный вариант под названием AdamW (Adam с затуханием весов) часто рекомендуется, поскольку он устраняет проблемы с регуляризацией в исходном алгоритме Adam. Это особенно эффективно для новейших архитектур, таких как YOLO26, которым важна стабильность, обеспечиваемая AdamW.
В следующем примере показано, как обучить модель Ultralytics 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")Разработчикам, интересующимся более глубокими теоретическими основами, такие ресурсы, как конспект по оптимизации Stanford CS231n, предлагают превосходные визуализации, показывающие сравнение Adam с другими алгоритмами, такими как RMSProp и AdaGrad. Кроме того, документация по оптимизатору PyTorch содержит технические сведения об аргументах и деталях реализации, доступных для настройки.









