SGD, momentum и Adam
Вопрос
Сравните SGD, SGD с momentum и Adam: как работают, плюсы и минусы, что выберете по умолчанию.
Попробуйте сами
Ответьте вслух за 2 минуты, как на собесе. Потом сверьтесь с тезисами: что прозвучало, а что нет.
Показать ответ и разбор
Коротко
Что должно прозвучать в ответе
SGD: шаг против градиента батча, один lr на всё
Momentum: экспоненциальное среднее градиентов, гасит зигзаги
Adam: momentum плюс нормировка по √v для каждого параметра
Память: Adam хранит два доп. тензора на параметр
По умолчанию AdamW для трансформеров, SGD+momentum бывает лучше в CV
Что могут спросить следом
- Почему AdamW, а не Adam с L2?
- Что такое Lion или другие современные оптимизаторы, слышали?
Разбор
Обычный SGD делает шаг против градиента мини-батча с одним learning rate для всех параметров. Он прост, экономен по памяти, но медленно идёт по плохо обусловленным «оврагам» и чувствителен к lr. Momentum накапливает экспоненциальное среднее градиентов: вдоль стабильного направления разгоняется, поперёк колебания гасятся. Adam добавляет к этому адаптивную нормировку: делит шаг каждого параметра на корень из скользящего среднего его квадратов градиента, плюс поправку смещения в начале. Он быстро сходится без тонкой настройки и хорошо работает с разреженными градиентами, но хранит два дополнительных тензора на параметр, то есть оптимизатор весит вдвое больше модели. По умолчанию беру AdamW с warmup и косинусным затуханием, особенно для трансформеров. Для свёрточных сетей в CV с BatchNorm SGD с momentum и хорошим расписанием часто даёт такое же или лучшее качество на тесте.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.