Как пользоваться
- Выберите расписание.
- Введите начальный learning rate, шаг t, который нужно проверить, и общее число T.
- При необходимости задайте разогрев и параметры расписания: интервал и γ, конечную скорость или степень.
- Смотрите learning rate на шаге t, его долю от начального и идёт ли ещё разогрев.
Формулы
При разогреве W шаги после разогрева считаются как τ = t − W, длина спада L = T − W.
- Разогрев (t < W): lr = lr₀ × t ÷ W
- Ступенчатое: lr = lr₀ × γ^⌊τ ÷ s⌋
- Экспоненциальное: lr = lr₀ × γ^τ
- Косинусное: lr = min + (lr₀ − min) × (1 + cos(π τ ÷ L)) ÷ 2
- Линейное: lr = lr₀ + (min − lr₀) × τ ÷ L
- Полиномиальное: lr = (lr₀ − min) × (1 − τ ÷ L)^p + min
Для косинусного, линейного и полиномиального τ останавливается на L: после T шагов скорость остаётся конечной.
Пример
Косинусный спад с 0,001 до 0 за 100 эпох без разогрева, эпоха 25:
- τ ÷ L = 25 ÷ 100 = 0,25, cos(π × 0,25) = 0,70711;
- (1 + 0,70711) ÷ 2 = 0,853553;
- lr = 0,001 × 0,853553 = 0,0008535534, то есть 0,853553 от начального.
С разогревом в 10 эпох эпоха 5 даёт 0,001 × 5 ÷ 10 = 0,0005; эпоха 55 — это 45-я из 90 эпох спада, ровно середина, и тоже 0,0005.
Ступенчатый спад с 0,1 и ×0,1 каждые 30 эпох: на эпохе 65 прошло ⌊65 ÷ 30⌋ = 2 снижения, lr = 0,1 × 0,1² = 0,001.
Советы
- Разогревайте большие модели. Несколько сотен или тысяч шагов разогрева не дают Adam делать огромные первые шаги, пока его статистики ещё шумные.
- Оставляйте нижнюю границу. Небольшая конечная скорость (например, 10 % от начальной) часто работает лучше, чем спад до нуля.
- Считайте общее число шагов точно: эпохи × батчи за эпоху. Число батчей за эпоху даёт калькулятор разбиения train/test.