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
Связанные термины
- трансформер — использует LayerNorm/RMSNorm
- normalization — общий класс техник
- hidden state — нормализуемые активации
Готовы запустить GPU-задачу?
Запустить GPU-сервер