Warmup
Зачем это важно? В начале обучения веса модели случайны, а данные подаются мини-батчами. Если сразу установить большую скорость, первые градиенты будут огромными и разнонаправленными, из-за чего параметры «разлетятся» в хаотичном направлении. В результате модель может выйти на плохой локальный минимум или вообще перестать обучаться. Прогрев сглаживает этот старт, позволяя весам постепенно приспособиться к статистике данных. Это критично для глубоких сетей и особенно для трансформеров.
Интуитивно warmup напоминает разминку перед забегом. Представьте, что спортсмен без подготовки сразу мчится на максимальной скорости — высока вероятность травмы и провала. Вместо этого он сначала идёт быстрым шагом, потом переходит на лёгкий бег и только затем набирает полную скорость. Нейросеть действует аналогично: на первых итерациях она делает маленькие шаги, знакомится с данными, а когда картина становится яснее, увеличивает темп обучения до рабочего.
Прикладной пример: при обучении языковой модели GPT-подобного типа используют линейный warmup на первых нескольких тысячах шагов. Например, скорость обучения растёт от нуля до 0,001 за 2000 итераций, затем плавно затухает. Это помогает избежать «взрыва» потерь и позволяет модели стабильно находить хорошие представления слов и текста. Без прогрева такие модели часто показывают более низкое качество или требуют много дополнительных попыток.
Вывод: warmup — маленький, но важный гиперпараметр. Он экономит время и улучшает качество без изменения архитектуры.
Поделиться