重み初期化(Weight Initialization)とは、ニューラルネットワークの学習開始前にパラメータ(重み)の初期値を設定する手法です。適切な初期化は学習の収束速度と最終性能に大きく影響します。
なぜ初期化が重要か
すべての重みを0に初期化すると、すべてのニューロンが同じ出力と勾配を持ち、学習が進みません(対称性の破れが起きない)。大きすぎる値では勾配爆発、小さすぎる値では勾配消失が発生します。
| ひとことで言うと | 学習を始める前に、ネットワークの重みにどんな初期値を入れるかの設定。 |
|---|---|
| なぜ重要か | 初期値が悪いと勾配が消えたり爆発したりして、学習がまったく進まない。 |
| 代表的な方法 | Xavier(シグモイド系向け)、He(ReLU系向け)。全部0にしてはいけない。 |
代表的な初期化手法
Xavier(Glorot)初期化はシグモイド/tanh用で入出力ユニット数に基づいて分散を設定します。He初期化はReLU用で、ReLUの特性(負の値がゼロになる)を考慮した分散設定を行います。
1全部0にする全ニューロンが同じ動き
▶
2大きすぎる値出力が発散する
▶
3小さすぎる値信号が消えてしまう
▶
4適切な分布層の幅に応じた範囲に
▶
5学習が進む勾配がきちんと流れる
事前学習モデルの初期化
転移学習では事前学習済みの重みを初期値として使用し、追加層のみをXavier/He初期化で初期化するのが一般的です。