Как подобрать learning rate
Вопрос
Как вы на практике подбираете learning rate для новой модели?
Попробуйте сами
Ответьте вслух за 2 минуты, как на собесе. Потом сверьтесь с тезисами: что прозвучало, а что нет.
Показать ответ и разбор
Коротко
Что должно прозвучать в ответе
Поиск по логарифмической сетке (1e-5 … 1e-1) на коротких прогонах
LR range test: растить lr и смотреть, где loss начинает расти
Признаки плохого lr по кривым: взрыв и NaN, или слишком медленное падение
Расписание: warmup и затухание (cosine, step)
Связь с размером батча и оптимизатором
Что могут спросить следом
- Зачем нужен warmup?
- Как менять lr при увеличении батча в 4 раза?
Разбор
Начинаю с типичного значения для оптимизатора: для Adam около 1e-3 на маленьких моделях и 1e-4..3e-4 на трансформерах, для SGD с momentum около 0.1 на свёрточных сетях с нормализацией. Затем делаю короткие прогоны по логарифмической сетке, например 1e-5, 3e-5, 1e-4 и так далее, и смотрю на кривые loss. Ещё быстрее LR range test: за одну эпоху экспоненциально увеличиваю lr и выбираю значение немного меньше того, где loss начинает расти. Признаки слишком большого шага: loss скачет, растёт, появляются NaN. Слишком маленького: loss падает почти линейно и медленно. Дальше ставлю расписание: warmup первые сотни или тысячи шагов, потом косинусное или ступенчатое затухание. При увеличении батча lr обычно увеличивают, линейно для SGD и мягче для Adam, но это эвристика, которую проверяют.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.