LLM重み初期化(エルエルエムオモミショキカ)
LLM(大規模言語モデル)の学習開始時にニューラルネットワークの各パラメータ(重み)に与える初期値の設定方法。適切な初期化により勾配消失・爆発を防ぎ、学習の収束速度と最終精度に大きく影響する。
LLM重み初期化とは、大規模言語モデルの訓練を開始する前に、数十億〜数千億個のパラメータに対して適切な初期値を設定する技術である。初期化が不適切だと勾配消失(Vanishing Gradient)や勾配爆発(Exploding Gradient)が発生し、学習が進まない・発散するといった致命的な問題を引き起こす。GPT-4、Llama 3、Gemini 1.5 Pro などの最新モデルでは、数千億パラメータの初期化戦略が学習コストに直結するため、極めて重要な設計要素となっている。
概要
ニューラルネットワークの重み初期化は、1990年代から研究されてきた古典的なテーマだが、2017年のTransformer登場以降、LLM特有の課題が浮上した。Transformerは Self-Attention 層と FFN(Feed-Forward Network)層を数十〜数百層積み重ねるため、各層の出力分散が層を経るごとに変動すると学習が不安定になる。2026年現在、GPT-4(推定1.8兆パラメータ)、Llama 3 405B、Mixtral 8x22B などの大規模モデルでは、初期化方法の選択が学習コスト(数百万ドル規模のGPU時間)に直接影響する。主要な手法として Xavier 初期化、Kaiming 初期化、μP(Maximal Update Parameterization)などが実用されている。
主な初期化手法
- ゼロ初期化: 全パラメータを0に設定。対称性が崩れず学習が進まないため、バイアス項以外では使用禁止
- ランダム初期化: 正規分布 N(0, σ²) や一様分布 U(-a, a) からサンプリング。σの設定が鍵
- Xavier初期化(Glorot初期化): Var(W) = 2/(n_in + n_out)。シグモイド・tanh向け
- Kaiming初期化(He初期化): Var(W) = 2/n_in。ReLU系活性化関数向け
- 直交初期化(Orthogonal): 重み行列を直交行列で初期化。RNNで勾配保存に有効
- 切断正規分布: 標準偏差の2倍を超える値を切断。極端な初期値を防止
- μP(Maximal Update Parameterization): 小規模モデルから大規模モデルへハイパーパラメータを転移可能にする初期化・学習率スケーリング手法。Microsoft Research が提案
初期化手法の比較
| 手法 | 分散の計算式 | 推奨活性化関数 | 採用モデル例 |
|---|---|---|---|
| Xavier (Glorot) | Var = 2/(n_in + n_out) | Sigmoid, Tanh, GELU | BERT, T5 |
| Kaiming (He) | Var = 2/n_in | ReLU, Leaky ReLU | ResNet, 一部CNN |
| μP | 層幅に依存するスケーリング | 任意 | Cerebras-GPT |
| 正規分布 N(0, 0.02) | 固定 σ=0.02 | GELU | GPT-2, GPT-3 |
| 切断正規分布 | σ=1/√n, 2σで切断 | 任意 | PaLM, Gemini |
フレームワーク別実装
PyTorch では torch.nn.init モジュールで主要な初期化手法を提供している:
nn.init.xavier_uniform_(tensor): Xavier一様分布nn.init.xavier_normal_(tensor): Xavier正規分布nn.init.kaiming_uniform_(tensor, nonlinearity='relu'): Kaiming一様分布nn.init.kaiming_normal_(tensor, nonlinearity='relu'): Kaiming正規分布nn.init.orthogonal_(tensor): 直交初期化
TensorFlow では tf.initializers で同等の機能を提供し、JAX では jax.nn.initializers が利用可能。2025年以降は Hugging Face Transformers ライブラリ内部で各モデルアーキテクチャに最適化された初期化が自動適用される設計が主流となっている。
LLM固有の初期化戦略
GPT系モデルでは、残差接続(Residual Connection)の出力層に対して 1/√(2N) でスケーリングする手法が採用されている(Nは層数)。これにより深いネットワークでも出力分散が安定する。Llama 2/3 では RMSNorm との組み合わせで初期化分散を調整し、PaLM では切断正規分布と出力層のゼロ初期化を組み合わせている。2026年の Llama 3 405B や Mistral Large 2 では、μP に基づくスケーリングで小規模実験(数億パラメータ)から本番規模(数千億パラメータ)へのハイパーパラメータ転移を実現している。
よくある質問(FAQ)
Q1: なぜ全パラメータをゼロで初期化してはいけないのですか? A: ゼロ初期化では全ニューロンが同一の出力を生成し、逆伝播時も同一の勾配を受け取るため対称性が崩れない。結果として全ニューロンが同じ関数を学習してしまい、多層の意味がなくなる。
Q2: Xavier初期化とKaiming初期化はどう使い分けますか? A: 活性化関数がシグモイドやtanhなど原点付近で線形に近い場合はXavier、ReLUのように負の領域を切り捨てる場合はKaimingを使う。現代のLLMではGELU使用時にXavier系がよく採用される。
Q3: 初期化の選択はどの程度学習結果に影響しますか? A: 小規模モデルでは数%の精度差に留まることが多いが、数百億パラメータ規模では不適切な初期化で学習が発散し、数百万ドルのGPU計算コストが無駄になるリスクがある。μPの登場で小規模での探索結果を大規模に転移できるようになった。
Q4: 事前学習済みモデルのファインチューニング時にも初期化は重要ですか? A: ファインチューニングでは事前学習済みの重みを初期値として使うため、ランダム初期化の問題は発生しない。ただしLoRAなどのアダプタ追加時には、追加パラメータの初期化(通常ゼロまたは小さいランダム値)が収束速度に影響する。
まとめ
- 重み初期化はLLM学習の成否を左右する基盤技術
- Xavier/Kaiming が基本、大規模モデルではμPや残差スケーリングが必須
- PyTorch
nn.init、TensorFlowtf.initializersで実装可能 - 不適切な初期化は勾配消失・爆発を引き起こし、数百万ドル規模の損失に直結
- 2026年現在、小規模→大規模への転移学習(μP)が主流化しつつある