ML Fundamentals

layer normalization

Нормализация активаций внутри слоя трансформера для стабилизации обучения.

Что такое layer normalization

Layer Normalization (LayerNorm) — метод нормализации активаций нейросети, применяемый к скрытым состояниям внутри каждого трансформерного блока. Нормализует каждый вектор активаций по его собственным значениям (среднее → 0, стд → 1), затем применяет обучаемые параметры масштабирования γ и сдвига β.

Pre-LN vs Post-LN

Post-LN (оригинальный трансформер 2017): нормализация после attention/FFN. Нестабильно при обучении глубоких сетей.

Pre-LN (современный стандарт): нормализация до attention/FFN. Более стабильное обучение, лучше работает с большими learning rate.

# Pre-LN (Llama-стиль)
def transformer_block(x):
    x = x + attention(pre_norm(x))      # нормализация ДО attention
    x = x + ffn(pre_norm(x))            # нормализация ДО FFN
    return x

RMSNorm

Современные LLM (Llama, Mistral, Qwen) используют RMSNorm вместо стандартного LayerNorm:

  • Нет вычисления среднего (только RMS)
  • Нет параметра сдвига β
  • ~10% быстрее при аналогичном качестве
class RMSNorm(nn.Module):
    def __init__(self, dim, eps=1e-6):
        super().__init__()
        self.weight = nn.Parameter(torch.ones(dim))
        self.eps = eps
    
    def forward(self, x):
        norm = x * torch.rsqrt(x.pow(2).mean(-1, keepdim=True) + self.eps)
        return self.weight * norm

Связанные термины

Готовы запустить GPU-задачу?

Запустить GPU-сервер