Ответ вслух Middle Градиентный спуск и выпуклость обновлено

Как подобрать learning rate

Вопрос

Как вы на практике подбираете learning rate для новой модели?

Попробуйте сами

Ответьте вслух за 2 минуты, как на собесе. Потом сверьтесь с тезисами: что прозвучало, а что нет.

Показать ответ и разбор

Коротко

Начинаю с типичного значения для оптимизатора: для Adam около 1e-3 на маленьких моделях и 1e-4..3e-4 на трансформерах, для SGD с momentum около 0.1 на свёрточных сетях с нормализацией. Затем делаю короткие прогоны по логарифмической сетке, например 1e-5, 3e-5, 1e-4 и так далее, и смотрю на кривые loss.

Что должно прозвучать в ответе

  • Поиск по логарифмической сетке (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 ошибок.