Sobes.tech
Senior
38

Pre-layer norm vs post-layer norm: в чём разница, какие где используются и почему?

Ответ от нейросети

sobes.tech AI

Pre-layer norm и post-layer norm — это два варианта расположения слоя нормализации (обычно LayerNorm) в архитектуре трансформеров.

Post-layer norm — классический подход, где нормализация применяется после сложения выходов слоя и входа (residual connection). То есть схема: x + Sublayer(x) -> LayerNorm. Использовался в оригинальной статье Vaswani et al. (2017).

Pre-layer norm — нормализация применяется перед основным слоем, схема: LayerNorm(x) -> Sublayer -> x + output.

Различия и последствия

  • Стабильность обучения: Pre-layer norm обычно обеспечивает более стабильное и быстрое обучение, особенно при больших глубинах трансформера. Это связано с тем, что градиенты лучше распространяются через нормализованный вход.
  • Градиентный поток: В post-layer norm градиенты могут затухать или взрываться, что усложняет обучение глубоких моделей.
  • Использование: Современные большие модели (GPT-3, T5, PaLM) чаще используют pre-layer norm из-за его преимуществ в стабильности и эффективности обучения.

Итог

  • Если строите глубокую трансформерную модель, рекомендуется использовать pre-layer norm.
  • Post-layer norm проще и был первым, но может требовать дополнительных трюков для стабильности.
# Пример pre-layer norm в псевдокоде
def transformer_block(x):
    norm_x = LayerNorm(x)
    out = Sublayer(norm_x)
    return x + out

# Пример post-layer norm
def transformer_block(x):
    out = Sublayer(x)
    return LayerNorm(x + out)