Xavier初期化(ザビエルショキカ)
2010年にXavier Glorotが提案した重み初期化手法。各層の入出力ノード数に基づいて分散をVar(W) = 2/(n_in + n_out)と設定し、順伝播・逆伝播の両方で信号の分散を保存する。BERT、T5などのTransformerモデルで広く採用されている。
Xavier初期化(Glorot初期化)は、ニューラルネットワークの各層における重みの初期分散を、入力ノード数 n_in と出力ノード数 n_out から算出する手法である。2010年にXavier GlorotとYoshua Bengioの論文「Understanding the difficulty of training deep feedforward neural networks」で提案された。分散を Var(W) = 2/(n_in + n_out) と設定することで、順伝播時の出力分散と逆伝播時の勾配分散の両方を各層で一定に保つ。BERT(110M/340Mパラメータ)、T5(60M〜11Bパラメータ)、GPT-2(124M〜1.5Bパラメータ)など、多くのTransformerベースモデルの基盤となっている。
数学的背景
Xavier初期化の核心は、線形活性化関数(またはシグモイド・tanhの原点付近の線形近似)の仮定のもとで、各層の出力分散を入力分散と等しく保つことにある。
層 l の出力を y = Wx + b とすると、W の各要素が独立同分布で E[W] = 0 のとき:
- Var(y) = n_in × Var(W) × Var(x)
順伝播で Var(y) = Var(x) を満たすには Var(W) = 1/n_in が必要。逆伝播で勾配の分散を保存するには Var(W) = 1/n_out が必要。両方の条件を妥協的に満たす統一式として:
- Xavier正規分布: W ~ N(0, 2/(n_in + n_out))
- Xavier一様分布: W ~ U(-√(6/(n_in + n_out)), √(6/(n_in + n_out)))
実装方法
| フレームワーク | 正規分布版 | 一様分布版 |
|---|---|---|
| PyTorch | nn.init.xavier_normal_(tensor) | nn.init.xavier_uniform_(tensor) |
| TensorFlow | tf.initializers.GlorotNormal() | tf.initializers.GlorotUniform() |
| JAX | jax.nn.initializers.glorot_normal() | jax.nn.initializers.glorot_uniform() |
| Keras | keras.initializers.GlorotNormal() | keras.initializers.GlorotUniform() |
PyTorch のデフォルト初期化(nn.Linear)は Kaiming 一様分布を使用するため、Xavier を使いたい場合は明示的に nn.init.xavier_uniform_() を呼ぶ必要がある。
Transformer での適用
BERT の実装(BertModel)では、全結合層の重みに対して切断正規分布(σ = 0.02)を使用しているが、これは Xavier 正規分布の近似とみなせる。Hidden size = 768 の場合、Xavier 正規分布の σ ≈ √(2/(768+768)) ≈ 0.036 となり、BERT の 0.02 はやや保守的な設定である。
T5 では明示的に Xavier 一様分布を採用し、エンコーダ・デコーダの両方で適用している。GPT-2 は σ = 0.02 の正規分布を基本とし、残差接続の出力射影に対して 1/√N スケーリングを追加している。
Xavier初期化の限界
- ReLU系活性化関数との不整合: ReLU は負の入力をゼロにするため、実効的なノード数が半分になる。Xavier の仮定(線形性)が崩れ、深い層で分散が減衰する → Kaiming 初期化で解決
- 非常に深いネットワーク: 100層以上では分散の微小な偏りが蓄積。残差接続やレイヤー正規化との組み合わせが必須
- Attention 層の特殊性: Q, K, V の射影行列は互いに相関があり、独立性の仮定が厳密には成立しない
- 大規模モデルでのスケーリング: 数千億パラメータ規模では、Xavier 単体ではなく μP などの追加スケーリングが必要
よくある質問(FAQ)
Q1: Xavier初期化の「Xavier」は人名ですか? A: Xavier Glorot(ザビエル・グロロ)というフランス人研究者の名前に由来する。Yoshua Bengioの研究室に所属し、2010年のICML論文で発表した。「Glorot初期化」とも呼ばれる。
Q2: 正規分布版と一様分布版のどちらを使うべきですか? A: 実用上の差は小さい。PyTorchのTransformerライブラリでは一様分布版がやや多く使われるが、Hugging Face Transformersでは正規分布版が多い。モデルの論文に指定がなければどちらでもよい。
Q3: 現代のLLMでもXavier初期化は使われていますか? A: BERT、T5、BART などの Encoder-Decoder モデルでは依然として主流。GPT系の Decoder-only モデルでは σ=0.02 の固定正規分布が多いが、これはXavierの変種といえる。2026年のモデルでは μP ベースの初期化に移行する傾向がある。
Q4: バッチ正規化やレイヤー正規化がある場合、Xavier初期化は不要ですか? A: 正規化層があっても初期化は重要。正規化は順伝播の分散を安定させるが、逆伝播の勾配には直接作用しない。不適切な初期化では学習初期の数ステップで損失が発散するリスクが残る。
まとめ
- Xavier初期化は Var(W) = 2/(n_in + n_out) で層間の分散を保存
- シグモイド・tanh・GELU などの原点付近で線形な活性化関数に適合
- BERT・T5 など多数の Transformer モデルの基盤技術
- ReLU 系には Kaiming 初期化、大規模モデルには μP が推奨される
- PyTorch では
nn.init.xavier_normal_()/nn.init.xavier_uniform_()で利用可能