重み初期化(パラメータ初期化とも呼ばれる)は、ディープラーニングにおける学習前のステップであり、ニューラルネットワークの訓練可能なパラメータ(重みやバイアスなど)に初期値を割り当てる。これらのパラメータは訓練中に変更され、初期化方法の選択は収束速度、活性化のスケール、逆伝播中の勾配信号のスケール、および最終的なモデル品質に影響を与える。適切な初期化は、勾配消失や勾配爆発、活性化関数の飽和といった問題を回避するために必要である。
多層パーセプトロン(MLP)では、各層に重み行列とバイアスベクトルが含まれる。初期化方法はこれらのパラメータの開始値を決定する。この記事では重みに焦点を当てているが、バイアスも訓練可能であり、通常は別途初期化される。畳み込みニューラルネットワーク(CNN)では、同じ原理がカーネルとバイアスに適用される。
定数初期化
最も単純な形式はゼロ初期化であり、すべての重みとバイアスがゼロに設定される。これは重みにはほとんど使用されない。なぜなら、対称性を引き起こすためである。層内のすべてのニューロンが同一の出力と勾配を計算し、同じ特徴を学習するからである。ゼロ初期化はバイアスに一般的に使用されるが、重みには対称性を破るためにランダムな値が必要である。
バイアスは通常ゼロに初期化されるが、例外もある。LSTMの忘却ゲートのような乗算ユニットでは、バイアスを1に設定するとゲートを通る勾配の流れが改善される。ReLUニューロンでは、小さな正のバイアス(例:0.1)が、初期化時に非ゼロの勾配を保証することでdying ReLU問題を防ぐことができる。
リカレントニューラルネットワーク(RNN)は、爆発的な値を避けるためにシグモイドやtanhのような有界な活性化関数を使用することが多い。2015年のLe、Jaitly、Hintonによる研究などでは、リカレント重みを単位行列に、バイアスをゼロに初期化することが提案されており、これは忘却ゲートのないLSTMや残差接続に似ている。
ランダム初期化
ランダム初期化は、重みを正規分布または一様分布から独立にサンプリングする。分布とその分散の選択は、ネットワークを通る信号伝播を維持するために重要である。
LeCun初期化
LeCun初期化は、1998年にYann LeCunらによって広められ、順伝播中の活性化分散を維持することを目的とする。各重みは、平均ゼロ、分散1/n_in(n_inは層への入力数、ファンイン)の分布からサンプリングされる。一様分布の場合、これはU(±√(3/n_in))に対応する。この方法はtanhのような活性化関数でうまく機能するが、ReLUには最適ではない場合がある。
Glorot初期化
Glorot初期化(Xavier初期化とも呼ばれる)は、Xavier GlorotとYoshua Bengioによって提案された。これは、順伝播での活性化分散の維持と逆伝播での勾配分散の維持という2つの目標をバランスさせる。一様初期化では、重みはU(±√(6/(n_in + n_out)))からサンプリングされる。ここでn_outは出力数(ファンアウト)である。この方法はシグモイドやtanh活性化に効果的だが、ReLUではその非対称性のために問題を引き起こす可能性がある。
He初期化
He初期化は、2015年にKaiming Heらによって導入され、ReLU活性化用に設計されている。分散を2/n_inに設定し、ReLUが活性化の半分をゼロにすることを考慮する。一様分布の場合、重みはU(±√(6/n_in))からサンプリングされる。この方法は、ReLUを使用する深いネットワークでの勾配消失を防ぐのに役立つ。
分散の維持と勾配の流れ
初期化の主な目的は、層間で活性化と勾配の分散を安定に保つことである。重みが小さすぎると活性化が縮小し、勾配消失につながる。大きすぎると活性化が増大し、勾配爆発を引き起こす。Glorot初期化とHe初期化は、ファンインとファンアウトに基づいて分散を設定する原理的な方法を提供する。
深いネットワークでは、層間の重み行列の積が指数関数的な増加または減少を引き起こす可能性がある。適切な初期化により、初期信号が極端なスケーリングなしに伝播し、最初から効果的な訓練が可能になる。
訓練ダイナミクスへの影響
初期化は収束速度だけでなく、最終モデルの品質にも影響を与える。不適切な初期化は、訓練の遅延、局所最小値、または収束失敗につながる可能性がある。例えば、ゼロ初期化は対称性を引き起こし、過度に大きな重みは活性化関数を飽和させ、小さな勾配につながる。
実際には、初期化はバッチ正規化などの他の技術と組み合わせられることが多く、これにより初期化への感度が低下する。しかし、特に非常に深いネットワークや正規化が使用されない場合には、適切な初期化は依然として重要である。
特殊なアーキテクチャ
異なるアーキテクチャには、調整された初期化戦略が必要である。CNNでは、カーネルはMLPの重みと同様に初期化されるが、ファンインとファンアウトはカーネルサイズとチャネル数に基づいて計算される。層正規化と残差接続を使用するトランスフォーマーでは、BERTのようなモデルに見られるように、標準偏差0.02のようなより小さな値が使用されることが多い。
Large language modelでは、初期化は訓練安定性の重要な要素である。多くの現代モデルはHe初期化やGlorot初期化の変種を使用し、モデルの深さに基づいて追加のスケーリングを適用することがある。
実用的な考慮事項
ほとんどのディープラーニングフレームワークでは、デフォルトの初期化方法が提供されているが、実践者はカスタマイズできる。例えば、PyTorchやTensorFlowは、一様、正規、直交初期化の関数を提供する。直交初期化は、重み行列を直交に設定し、RNNで勾配ノルムを維持するために使用されることがある。
非常に深いネットワークを訓練する場合、劣化を避けるために残差接続と慎重な初期化を使用することが一般的である。初期化の選択は、活性化関数とネットワークアーキテクチャに合わせるべきである。
歴史的背景
重み初期化の研究は、ニューラルネットワークの初期の研究に遡る。1998年のLeCunによる文書認識への勾配ベース学習の適用に関する論文は、分散維持初期化を導入した。2010年のGlorotとBengioによる論文「Understanding the difficulty of training deep feedforward neural networks」は、深いネットワークにおける初期化の重要性を強調した。2015年のHeらによる深い残差学習に関する論文は、ReLUネットワークの方法をさらに洗練させた。
これらの基礎的な研究は現代の実践を形成し、初期化は、特に極端に深いまたは大規模なモデルにおいて、依然として活発な研究分野である。
結論
重み初期化は、ニューラルネットワークの訓練における基本的なステップである。ゼロ、ランダム、LeCun、Glorot、He初期化などの方法には、それぞれ特定の使用例とトレードオフがある。初期化の選択は、訓練ダイナミクス、収束、および最終的なパフォーマンスに大きく影響を与える可能性がある。これらの方法を理解することは、単純なMLPから複雑なTransformer (architecture)アーキテクチャまで、Deep learningモデルを扱う実践者にとって不可欠である。