ニューラルネットワークの各層において、単一サンプル内の全ニューロンの活性化値を正規化する手法。Ba et al.(2016)が提案し、Transformerアーキテクチャの標準的な正規化手法として広く採用されている。バッチサイズに依存しない点がBatch Normalizationとの最大の違い。
Layer Normalization(LayerNorm)は、ニューラルネットワークの学習を安定化させるための正規化手法である。各層の出力に対して、単一サンプル内の全特徴量(ニューロン)にわたって平均と分散を計算し、正規化を行う。Transformerの登場以降、自然言語処理の事実上の標準正規化手法となっている。
入力ベクトル x = (x_1, x_2, ..., x_H) に対して:
| ステップ | 計算 | 説明 |
|---|---|---|
| 平均 | μ = (1/H) Σ x_i | H個の特徴量の平均 |
| 分散 | σ² = (1/H) Σ (x_i - μ)² | H個の特徴量の分散 |
| 正規化 | x̂_i = (x_i - μ) / √(σ² + ε) | 平均0・分散1に正規化 |
| アフィン変換 | y_i = γ × x̂_i + β | 学習可能パラメータで再スケール |
ここで γ(ゲイン)と β(バイアス)は学習可能なパラメータ、ε は数値安定性のための微小定数(通常 1e-5 または 1e-6)である。
LayerNormとBatch Normalization(BatchNorm)は正規化の軸が異なる。
| 手法 | 正規化の軸 | 統計量の計算範囲 |
|---|---|---|
| BatchNorm | バッチ方向 | 同一特徴量の全サンプル |
| LayerNorm | 特徴量方向 | 同一サンプルの全特徴量 |
具体例として、バッチサイズB=32、隠れ層サイズH=768の場合:
| 観点 | BatchNorm | LayerNorm |
|---|---|---|
| バッチサイズ依存 | あり(小バッチで不安定) | なし |
| 系列長依存 | 問題あり(可変長入力) | なし |
| 推論時の扱い | 移動平均が必要 | そのまま適用可能 |
| 自己回帰生成 | 困難(バッチ=1) | 問題なし |
Transformerの推論(テキスト生成)はバッチサイズ1で1トークンずつ生成するため、BatchNormの「バッチ方向の統計量」が計算できない。LayerNormはサンプル内で完結するため、この問題が発生しない。
元祖Transformer(Vaswani et al., 2017)ではPost-Norm配置が採用されたが、現在の大規模LLMではPre-Normが標準である。
| 配置 | 構造 | 特徴 |
|---|---|---|
| Post-Norm | x + SubLayer(LayerNorm(x)) → LayerNorm | 元祖Transformer |
| Pre-Norm | x + SubLayer(LayerNorm(x)) | GPT-2以降の標準 |
Pre-Normでは残差接続(Residual Connection)がLayerNormを迂回するため、勾配の流れが改善され、深いネットワークでも学習が安定する。
LayerNormの計算は比較的軽量だが、Transformerの全層で繰り返し適用されるため、最適化が重要である。
| 最適化手法 | 効果 | 採用例 |
|---|---|---|
| Fused LayerNorm | 平均・分散・正規化を1カーネルに統合 | NVIDIA Apex / Triton |
| FP16/BF16混合精度 | メモリ削減・演算高速化 | PyTorch AMP |
| RMSNorm置換 | 平均計算を省略して高速化 | LLaMA / Qwen |
正規化だけでは表現力が失われる可能性がある。γ(スケール)とβ(シフト)により、正規化後の分布をタスクに最適な形に調整できる。ネットワークが「正規化を元に戻す」ことも学習可能。
RMSNormは平均の引き算を省略し、二乗平均平方根(RMS)のみで正規化する簡略版。計算コストが約10-15%削減され、性能はほぼ同等であるため、LLaMAやQwenなど最新モデルではRMSNormが主流。
通常は1e-5〜1e-6で十分だが、FP16/BF16の混合精度学習では1e-5以上に設定しないと数値的に不安定になることがある。εが大きすぎると正規化の効果が弱まるため、精度と安定性のバランスで決定する。