Оптимизация

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

GPT-4 не обучался точным градиентным спуском - это было бы в миллион раз дороже. Вся современная deep learning стоит на SGD и его вариантах. Понимание того, почему шум в градиентах помогает, а не мешает - ключ к интуиции за Adam, warmup и gradient accumulation.

  • **GPT/BERT обучение:** AdamW с cosine LR schedule + warmup - стандарт для всех LLM (OpenAI, Google, Meta)
  • **Gradient accumulation:** обучение на GPU с 24 GB памяти при effective batch 4096 через 128 шагов накопления
  • **Learning rate scaling:** при увеличении batch_size в k раз увеличивают lr в k раз (linear scaling rule, Facebook Research)

Предварительные знания

  • Metaheuristics: GA, SA, ACO

SGD: теория и сходимость

**SGD (Stochastic Gradient Descent)** заменяет точный градиент ∇f(x) = (1/n)Σ∇fᵢ(x) несмещённой оценкой по mini-batch: gₖ = (1/|B|)Σᵢ∈B ∇fᵢ(xₖ). Обновление: xₖ₊₁ = xₖ - αₖgₖ. Ключевой результат: при убывающих шагах Σαₖ=∞, Σαₖ²<∞ - SGD сходится к глобальному минимуму для выпуклых функций.

СвойствоGDSGD
Сходимость (выпуклая)O(1/k) для фикс. шагаO(1/√k) с убыв. шагом
Сходимость (невыпуклая)К стационарной точкеК стационарной точке
Стоимость итерацииO(n) - весь датасетO(b) - mini-batch
Обобщение (generalization)Хуже (sharp minima)Лучше (flat minima)

SGD с batch_size=1 сходится медленнее GD по числу эпох, но быстрее на практике. Почему?

Variance Reduction: SVRG и SAGA

SGD платит за скорость шумными градиентами: дисперсия Var[gₖ] не убывает с итерациями - нужен убывающий шаг, что замедляет сходимость. **SVRG и SAGA** устраняют дисперсию, сохраняя скорость SGD. Ключевая идея: вычитаем «корректирующий» член, аннулирующий шум.

**SVRG vs SAGA:** SVRG вычисляет полный градиент каждые m шагов (дополнительный O(n) проход). SAGA хранит все n индивидуальных градиентов - O(n·d) памяти. Для малых d - SAGA удобнее. Для больших d (нейросети) - оба непрактичны, поэтому Adam доминирует в deep learning.

SVRG вычитает корректирующий член grad_i(x_tilde) из стохастического градиента. Как это снижает дисперсию?

Адаптивные методы: Adam, AdaGrad, RMSProp

**Адаптивные методы** масштабируют шаг отдельно для каждого параметра, используя историю градиентов. Это устраняет необходимость тюнить learning rate для каждого параметра.

МетодАдаптация шагаПамятьКогда лучше
SGDНет (фикс. lr)O(n)Простые выпуклые задачи, большие батчи
AdaGradАккумул. G_tO(d)Разреженные градиенты (NLP embedding)
RMSPropEMA v_tO(d)Non-stationary, RNN
AdamEMA m_t + EMA v_tO(2d)Deep learning (стандарт де-факто)
AdamWAdam + weight decay decoupledO(2d)Transformer, LLM fine-tuning

Зачем Adam использует bias correction: m̂ = m/(1-β₁ᵗ)?

Шум как регуляризация

Эмпирически: модели, обученные SGD с малым batch_size, **обобщаются лучше**, чем обученные GD или large batch SGD. Объяснение: стохастический шум предпочитает **flat minima** - широкие плоские минимумы с малой кривизной, которые лучше обобщаются на новых данных.

**SAM (Sharpness-Aware Minimization):** явно оптимизирует flat minima, добавляя inner maximization step. Улучшает generalization на 1-3% без дополнительных данных. Используется в Google для обучения трансформеров.

Adam всегда лучше SGD для нейросетей

Adam сходится быстрее, но SGD с тюнингом often даёт лучшее обобщение. Для трансформеров (BERT, GPT) AdamW - стандарт, но для ResNet/ViT SGD с momentum иногда лучше финально.

Adam адаптирует шаг покоординатно, что ускоряет обучение на разреженных данных и адаптируется к гетерогенным градиентам. Но для dense задач SGD с правильным lr schedule (cosine decay) находит более плоские минимумы благодаря изотропному шуму. Практически: стартуем с Adam, если результат важен - тюним SGD+momentum.

Обучение с batch_size=32 дало лучшую accuracy на тесте, чем batch_size=4096 при том же числе эпох. Почему?

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

  • **SGD** - несмещённая оценка градиента по mini-batch; сходимость O(1/√k) для выпуклых; n/b раз больше обновлений за эпоху чем GD
  • **SVRG/SAGA** - variance reduction через корректирующий член; линейная сходимость как GD, но стоимость O(b) как SGD
  • **Adam** = momentum + adaptive step per coordinate; bias correction; стандарт де-факто для deep learning
  • **Шум как регуляризация:** малые батчи → flat minima → лучшее обобщение; SAM явно оптимизирует шароту

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

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

  • Нелинейная оптимизация — L-BFGS - детерминированный аналог SGD для малых моделей; Adam - first-order SGD вариант
  • Bayesian Optimization — BO для HPO включает lr, batch_size; оптимальные гиперпараметры SGD/Adam найти через BO
  • Optimization в Production — SAM, quantization-aware training, inference optimization - продвинутые методы на базе SGD

Вопросы для размышления

  • SGD с малым batch сходится медленнее (больше шума), но обобщается лучше. Это противоречие или два разных свойства? Как их примирить при выборе batch_size на практике?
  • SVRG и SAGA снижают дисперсию, приближая сходимость к GD. Почему они тогда не вытеснили Adam в deep learning?
  • Что такое gradient accumulation и в каких ситуациях он необходим? Как он влияет на effective noise scale?

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

  • ml-09-gradient-descent
Стохастическая оптимизация

0

1

Войти