AI・機械学習
中級

Layer Normalization(レイヤー正規化)(レイヤーセイキカ)

ニューラルネットワークの各層において、単一サンプル内の全ニューロンの活性化値を正規化する手法。Ba et al.(2016)が提案し、Transformerアーキテクチャの標準的な正規化手法として広く採用されている。バッチサイズに依存しない点がBatch Normalizationとの最大の違い。

0 回閲覧
0 いいね

Layer Normalization(レイヤー正規化)とは

Layer Normalization(LayerNorm)は、ニューラルネットワークの学習を安定化させるための正規化手法である。各層の出力に対して、単一サンプル内の全特徴量(ニューロン)にわたって平均と分散を計算し、正規化を行う。Transformerの登場以降、自然言語処理の事実上の標準正規化手法となっている。

LayerNormの計算式

入力ベクトル x = (x_1, x_2, ..., x_H) に対して:

ステップ計算説明
平均μ = (1/H) Σ x_iH個の特徴量の平均
分散σ² = (1/H) Σ (x_i - μ)²H個の特徴量の分散
正規化x̂_i = (x_i - μ) / √(σ² + ε)平均0・分散1に正規化
アフィン変換y_i = γ × x̂_i + β学習可能パラメータで再スケール

ここで γ(ゲイン)と β(バイアス)は学習可能なパラメータ、ε は数値安定性のための微小定数(通常 1e-5 または 1e-6)である。

Batch Normalizationとの根本的な違い

LayerNormとBatch Normalization(BatchNorm)は正規化の軸が異なる。

正規化の方向

手法正規化の軸統計量の計算範囲
BatchNormバッチ方向同一特徴量の全サンプル
LayerNorm特徴量方向同一サンプルの全特徴量

具体例として、バッチサイズB=32、隠れ層サイズH=768の場合:

  • BatchNorm: 32サンプルの同一ニューロンで統計量を計算(32個の値から平均・分散)
  • LayerNorm: 1サンプルの768ニューロンで統計量を計算(768個の値から平均・分散)

なぜTransformerはLayerNormを選んだのか

観点BatchNormLayerNorm
バッチサイズ依存あり(小バッチで不安定)なし
系列長依存問題あり(可変長入力)なし
推論時の扱い移動平均が必要そのまま適用可能
自己回帰生成困難(バッチ=1)問題なし

Transformerの推論(テキスト生成)はバッチサイズ1で1トークンずつ生成するため、BatchNormの「バッチ方向の統計量」が計算できない。LayerNormはサンプル内で完結するため、この問題が発生しない。

TransformerにおけるLayerNormの配置

元祖Transformer(Vaswani et al., 2017)ではPost-Norm配置が採用されたが、現在の大規模LLMではPre-Normが標準である。

配置構造特徴
Post-Normx + SubLayer(LayerNorm(x)) → LayerNorm元祖Transformer
Pre-Normx + 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

FAQ

Q1: LayerNormのγとβは何のために必要?

正規化だけでは表現力が失われる可能性がある。γ(スケール)とβ(シフト)により、正規化後の分布をタスクに最適な形に調整できる。ネットワークが「正規化を元に戻す」ことも学習可能。

Q2: LayerNormとRMSNormの違いは?

RMSNormは平均の引き算を省略し、二乗平均平方根(RMS)のみで正規化する簡略版。計算コストが約10-15%削減され、性能はほぼ同等であるため、LLaMAやQwenなど最新モデルではRMSNormが主流。

Q3: εの値は性能に影響する?

通常は1e-5〜1e-6で十分だが、FP16/BF16の混合精度学習では1e-5以上に設定しないと数値的に不安定になることがある。εが大きすぎると正規化の効果が弱まるため、精度と安定性のバランスで決定する。