Adam Optimizer
Исследуй оптимизатор Adam для глубокого обучения. Узнай, как он сочетает импульс (momentum) и RMSProp для более быстрой сходимости в таких моделях, как Ultralytics YOLO26.
Оптимизатор Adam, что расшифровывается как Adaptive Moment Estimation (адаптивная оценка моментов), — это сложный optimization algorithm, широко используемый для обучения моделей глубокого обучения. Он совершил революцию в этой области, объединив преимущества двух других популярных расширений stochastic gradient descent (SGD): Adaptive Gradient Algorithm (AdaGrad) и Root Mean Square Propagation (RMSProp). Вычисляя индивидуальные адаптивные learning rates для различных параметров на основе оценок первого и второго моментов градиентов, Adam позволяет neural networks сходиться значительно быстрее традиционных методов. Его надежность и минимальные требования к настройке делают его выбором по умолчанию для многих специалистов, начинающих новый проект по machine learning (ML).
Как работает Adam#
По своей сути обучение модели заключается в минимизации loss function, которая измеряет разницу между предсказаниями модели и реальными данными. Стандартные алгоритмы обычно используют постоянный размер шага (скорость обучения) для спуска по «ландшафту потерь» в сторону минимальной ошибки. Однако этот ландшафт часто бывает сложным, с овзрагами и плато, которые могут завести более простые алгоритмы в тупик.
Adam решает эту проблему, поддерживая два исторических буфера для каждого параметра:
-
Импульс (первый момент): Подобно тяжелому шару, катящемуся с холма, он отслеживает скользящее среднее прошлых градиентов, чтобы поддерживать скорость в нужном направлении.
-
Дисперсия (второй момент): Он отслеживает скользящее среднее квадратов градиентов, что масштабирует скорость обучения.
Эта комбинация позволяет оптимизатору делать более крупные шаги на плоских участках ландшафта и более мелкие, осторожные шаги на крутых или зашумленных участках. Конкретная механика подробно описана в основополагающей Adam research paper by Kingma and Ba, которая продемонстрировала его эмпирическое превосходство в различных задачах deep learning (DL).
Реальные приложения#
Универсальность оптимизатора Adam привела к его внедрению практически во всех сектором artificial intelligence (AI).
- Natural Language Processing (NLP): Большие языковые модели, такие как Generative Pre-trained Transformers (GPT), активно используют Adam (или его вариант AdamW) для обучения. Алгоритм эффективно обрабатывает разреженные градиенты, связанные с огромными словарями и массивными наборами данных, что позволяет создавать мощные chatbots и системы перевода.
- Computer Vision в здравоохранении: В medical image analysis модели должны обнаруживать едва заметные аномалии, такие как опухоли на МРТ-снимках. Adam помогает convolutional neural networks (CNNs) быстро сходиться к решениям с высокой точностью, что критически важно при разработке диагностических инструментов для AI in Healthcare.
Adam против SGD#
Хотя Adam обычно сходится быстрее, важно отличать его от Stochastic Gradient Descent (SGD). SGD обновляет model weights, используя фиксированную скорость обучения, и часто предпочтителен для финальных этапов обучения современных моделей object detection, так как он иногда позволяет достичь немного лучшей генерализации (финальной точности) на тестовых данных.
Тем не менее, Adam является «адаптивным», то есть он автоматически справляется с настройкой скорости обучения. Это делает его гораздо более удобным для пользователя при проведении начальных экспериментов и для сложных архитектур, где настройка SGD была бы сложной задачей. Для пользователей, управляющих экспериментами на платформе Ultralytics Platform, переключение между этими оптимизаторами для сравнения производительности часто является ключевым шагом в hyperparameter tuning.
Реализация с помощью 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 Optimization Notes предоставляют отличные визуализации того, как Adam соотносится с другими алгоритмами, такими как RMSProp и AdaGrad. Кроме того, PyTorch Optimizer Documentation предлагает технические подробности об аргументах и особенностях реализации, доступных для настройки.






