Урок по треку Глубокое обучение 7 мин

Инициализация, нормализация и residual за 7 минут

Xavier и He, затухание и взрыв градиентов, BatchNorm, LayerNorm, RMSNorm, residual-связи.

Глубокие сети стали обучаемыми благодаря трём вещам: правильной инициализации, нормализации и residual-связям. На собесе спрашивают, зачем они нужны, чем BatchNorm отличается от LayerNorm и где ломается BatchNorm.

Затухание и взрыв

Градиент ранних слоёв это произведение множителей по всем слоям выше. Если типичный множитель меньше 1, градиент экспоненциально затухает, если больше 1, взрывается до NaN.

Инициализация

Цель: сохранить дисперсию активаций и градиентов от слоя к слою.

  • Xavier (Glorot): Var(w) = 2 / (fan_in + fan_out), для tanh и сигмоиды.
  • He (Kaiming): Var(w) = 2 / fan_in, для ReLU: она обнуляет половину сигнала, поэтому дисперсию удваивают.

Одинаковые веса (в том числе нули) не разрушают симметрию нейронов. Смещения обычно инициализируют нулями.

BatchNorm

На обучении для каждого канала:

x̂ = (x - μ_батча) / √(σ²_батча + ε)
y = γ·x̂ + β

Параллельно копятся скользящие μ и σ². На инференсе (model.eval()) используются они.

Плюсы: быстрее и стабильнее обучение, можно брать больший learning rate. Ловушки:

  • забыли model.eval(): предсказание объекта зависит от соседей по батчу;
  • батч из 2-4 объектов: шумные статистики, лучше GroupNorm или SyncBatchNorm;
  • последовательности разной длины и генерация по одному токену: неудобно.

LayerNorm и RMSNorm

LayerNorm нормирует признаки каждого объекта отдельно, не завися от батча, и одинаково ведёт себя на обучении и инференсе. Поэтому это стандарт трансформеров и RNN.

RMSNorm делит на корень из среднего квадрата без вычитания среднего и без β. Дешевле и не хуже, используется во многих LLM.

Residual-связи

y = x + F(x)

Градиент проходит по тождественной ветке без затухания (dy/dx = I + dF/dx), а блоку достаточно выучить поправку. До ResNet более глубокие простые сети учились хуже даже на трейне.

Pre-LN и Post-LN

В исходном трансформере нормализация после residual-суммы (Post-LN): глубокие модели капризны и требуют аккуратного warmup. В Pre-LN нормализация стоит внутри ветки, x + F(LN(x)), residual-поток чистый, обучение стабильнее. Большинство современных LLM используют pre-norm.

Gradient clipping

Если общая норма градиентов больше порога, все градиенты масштабируются вниз. Защищает от взрыва, особенно в RNN и трансформерах. Вызывается после backward и до step.

Частые ошибки

  • Валидация без model.eval() у модели с BatchNorm.
  • BatchNorm при крошечном батче.
  • Инициализация Xavier для глубокой сети на ReLU без нормализации.
  • Клиппинг до backward или после step.

Что спросят на собесе

  • Почему градиенты затухают и взрываются, как с этим борются.
  • Xavier против He.
  • Как работает BatchNorm на обучении и инференсе, чем LayerNorm лучше для трансформеров.
  • Зачем residual-связи, что такое Pre-LN.

Закрепите за 5 минут

После урока в тренажёре 3-5 проверочных вопросов, дальше модуль уходит в повторения.