Выпуклая оптимизация

Стохастическая оптимизация

GPT-4 обучался с Adam на 13 триллионах токенов. Без SGD не существовало бы трансформеров, ChatGPT и современного AI. Статья Kingma и Ba об Adam (2014) собрала 130 000+ цитат - это одна из самых влиятельных работ в истории ML.

  • LLM: GPT-4, LLaMA, Mistral - все обучаются AdamW + cosine decay
  • Компьютерное зрение: ResNet, ViT - SGD с momentum для классификации
  • Рекомендации: Pinterest, YouTube - Adam для sparse embedding обновлений
  • Поиск: Google Search ranking - distributed SGD на тысячах TPU
  • Медицина: AlphaFold2 (DeepMind) - Adam для предсказания структур белков
  • Автономное вождение: Tesla autopilot - Adam для real-time нейросетей

SGD: почему случайный шум помогает

GPT-4 обучался с Adam на батчах из 2048 токенов на датасете 13 триллионов токенов. Без SGD - не было бы трансформеров. Полный градиентный спуск на 13 трлн токенов: 1 шаг. SGD на батчах 2048: 6 миллиардов шагов. При той же вычислительной стоимости SGD проходит в миллионы раз больше обновлений.

SGD (Stochastic Gradient Descent): на каждом шаге вычисляется градиент по случайному mini-batch, не по всему датасету. Стохастический градиент - несмещённая оценка полного: E[grad_f_i(x)] = grad_f(x). Шум помогает избегать плохих локальных минимумов и седловых точек.

Почему SGD работает в deep learning? Три причины: (1) шум помогает выходить из плохих локальных минимумов и седловых точек. (2) Для DNN все достаточно хорошие локальные минимумы примерно одинаково хороши (эмпирически). (3) SGD имплицитно регуляризует: стохастический шум предпочитает широкие минимумы, которые лучше обобщаются.

Почему SGD с постоянным шагом eta не сходится к точному минимуму выпуклой функции, а колеблется вокруг него? Каким должен быть шаг для точной сходимости?

Adam: адаптивные моменты

Adam (Kingma & Ba, 2014) - самый используемый оптимизатор в deep learning. Основная идея: адаптировать шаг обучения к каждому параметру отдельно, используя историю первого и второго момента градиентов. beta_1 = 0.9, beta_2 = 0.999, eps = 1e-8 - стандартные гиперпараметры.

Adam (2014) - 130 000+ цитат, одна из самых цитируемых статей в ML. AdamW (2019) исправляет баг с weight decay. Lion (2023, Google) - оптимизатор знакового градиента, в 2-3 раза меньше памяти. Muon (2024) - orthogonalized gradient для трансформеров. Оптимизаторы эволюционируют вместе с архитектурами.

Почему Adam отдельно отслеживает первый и второй момент градиента? Что происходит с шагом для параметра, у которого градиент всегда маленький?

Learning rate schedules: warmup, cosine, decay

Learning rate schedule - один из самых важных гиперпараметров трансформеров. Warmup (постепенное увеличение lr в начале) предотвращает взрыв градиентов когда momentum ещё не накоплен. Cosine annealing плавно уменьшает lr до нуля. Трансформеры используют комбинацию: warmup + cosine decay.

Cosine annealing с restarts (SGDR, Loshchilov 2016): lr периодически сбрасывается до max_lr, затем снова убывает. После каждого restart модель может выйти из локального минимума. В LLM обучении используется без restarts: один длинный cosine от max_lr до 0.1*max_lr за все 1-10 миллионов шагов.

Зачем нужен warmup в Adam? Что произошло бы без него в начале обучения трансформера?

Ключевые идеи

  • SGD: несмещённый стохастический градиент, O(1/sqrt(T)) для выпуклых; постоянный шаг -> колебание в окрестности
  • Шум SGD помогает: выходит из седловых точек, предпочитает широкие минимумы (лучше обобщение)
  • Adam: m_t = EMA градиента (direction), v_t = EMA квадратов (scale); адаптивный шаг per-parameter
  • AdamW: weight decay отдельно от adaptive gradient - правильная L2 регуляризация
  • Warmup + cosine decay: стандарт для GPT/BERT; warmup стабилизирует v, cosine плавно убирает lr

Связанные темы

Стохастическая оптимизация - основа современного ML.

  • Проксимальные методы — Proximal SGD: шаг SGD + prox по регуляризатору
  • Оптимальный транспорт — Mini-batch W-distance в WGAN вычисляется через SGD по параметрам критика

Связанные уроки

  • prob-13-clt
Стохастическая оптимизация

0

1

Войти