重みの初期化とは、ニューラルネットワークの学習を開始する前に、モデル内のパラメータ(重み)に適切な初期値を割り当てる処理です。学習の収束速度や精度に大きく影響します。
重みの初期化とは
重みの初期化とは、ニューラルネットワークが効率的かつ安定して学習を進められるように、パラメータである重みのスタート地点となる数値を設定する手法です。
詳しく解説
ディープラーニングのモデルは、入力データに対して重みとバイアスを用いた計算を行い、損失を最小化するように重みを更新していきます。このとき、すべての重みを0や同一の値で初期化すると、各ニューロンが同じ計算結果と勾配を持ってしまい、学習が正常に進まなくなります。また、初期値が大きすぎると勾配爆発を引き起こし、小さすぎると勾配消失が発生して学習が停滞します。そのため、層の入力数や出力数、利用する活性化関数の種類に応じて適切な分散を持つ正規分布や一様分布を用いる手法(Xavierの初期化やHeの初期化など)が考案され、広く使われています。
具体例・使われ方
例えば、活性化関数としてReLU関数を用いるディープラーニングモデルでは、層が深くなっても信号の強さが保たれるように設計されたHeの初期化を適用します。また、シグモイド関数やtanh関数を用いるネットワークでは、Xavierの初期化(Glorot初期化)を選択することで出力のばらつきを安定させ、効率的なパラメータ更新を実現します。
似た用語との違い
重みの初期化は学習開始時の「パラメータの初期値」を決める作業です。これに対し、学習率は勾配降下法などで「1ステップごとに重みを更新する幅(歩幅)」を制御するハイパーパラメータであり、役割と設定タイミングが異なります。また、バイアスの初期化は一般に0などの定数で行われることが多く、重みのように対称性を崩すための複雑な分布設計を必要としない点が異なります。
注意点
適切な重みの初期化を行っても、学習率の設定が不適切であったりモデル構造が極端に深かったりする場合は、依然として学習が破綻することがあります。また、事前学習済みモデルを利用する転移学習やファインチューニングでは、ゼロからの初期化ではなく学習済みの重みを引き継ぐため、適用する場面の切り分けが必要です。