重み初期化の理論:Xavier と He 初期化
初期値の散らばり方ひとつで学習は止まる。信号の分散保存という一本の原理から Xavier と He のスケールを自分で導出でき、活性化に応じた使い分けと勾配崩壊の回避までつながります。
- 1.初期化の目的は順伝播・逆伝播で各層の信号の分散を一定に保つこと。前層の分散が層を進むほど縮めば活性が0へ潰れ、増えれば飽和し、どちらも学習が止まる。
- 2.線形和の分散は重み分散×入力次元(ファンイン)で増える。これを1に戻すため重み分散を 1/ファンイン 程度に設定するのが基本。順伝播と逆伝播の両立から Xavier は 2/(fan_in+fan_out) を採る。
- 3.ReLU は入力の約半分を0にし分散を半減させるため、その損失を補う 2/fan_in が He 初期化。tanh/Sigmoid 系には Xavier、ReLU 系には He、と活性化関数で選ぶのが原則。
なぜ初期値の「スケール」が学習を左右するのか
学習を始める前の重みは乱数で埋めます。このとき問われるのは「どんな乱数か」ではなく「どれくらいの大きさの乱数か」、つまり分散のスケールです。理由は信号の伝播にあります。順伝播では各層が線形和 z = W·x + b を計算し、活性化を通して次層へ渡します。この z の分散が層を進むごとに少しでも縮めば、活性は指数的に0へ潰れて全ニューロンが同じ値を返し、逆に膨らめば飽和域へ押し込まれます。どちらも入力側の層へ意味ある勾配が届かず、学習が始まる前から詰みます。これは 勾配消失・勾配爆発と残差接続 で見た「層ごとに倍率を掛け続ける」構造が、初期時点ですでに発動している姿です。
初期化設計は「各層で信号の分散を保存する」という一つの要請に集約されます。順伝播の分散保存から Xavier(別名 Glorot)が、ReLU による分散の半減を補正して He が導けます。導出の土台は1行の分散公式だけです。
出発点:線形和の分散はファンインで膨らむ
1ニューロンの線形和 z = Σ_i w_i · x_i を考えます。重み w_i と入力 x_i がそれぞれ独立・平均0で、層内で同分布だと仮定します。互いに独立な平均0の積の分散は各分散の積になり、独立な項の和の分散は和になるため、次が成り立ちます。
Var(z) = Σ_i Var(w_i · x_i)
= n_in · Var(w) · Var(x) # n_in = ファンイン(入力結合数)
要点は 入力数 n_in(ファンイン)が掛かる ことです。重みの分散 Var(w) をそのままにすると、出力分散は入力次元の数だけ増幅されます。512入力なら出力分散は512倍。これを多層で繰り返せば分散は爆発します。逆に Var(w) を小さく取りすぎれば層ごとに縮み、消失します。層を貫いて Var(z) ≈ Var(x) を保つ には、増幅率 n_in · Var(w) を1にすればよい。ここから初期化スケールの第一近似が出ます。
n_in · Var(w) = 1 ⇒ Var(w) = 1 / n_in
分散公式が単純な積と和に分解できるのは、Var(w·x)=E[w²x²]−E[wx]² で平均0なら第2項が消え、独立なら E[w²x²]=E[w²]E[x²] と分けられるからです。だから初期化は必ず平均0で行い、全結合を同じ値にしない(対称性を破る)。全重みが同一だと各ニューロンが同じ勾配を受け永久に区別されません。乱数である必要は、この対称性の破壊にあります。
Xavier(Glorot)初期化:順伝播と逆伝播を両立させる
順伝播だけなら Var(w) = 1/n_in で足ります。しかし逆伝播では誤差信号が逆向きに流れ、勾配の分散はファンアウト n_out(出力結合数) で増幅されます(誤差逆伝播法の数理 のヤコビアンの転置を掛ける構造に対応)。順伝播の信号分散保存は Var(w)=1/n_in、逆伝播の勾配分散保存は Var(w)=1/n_out を要求し、層が正方でない限り両者は両立しません。Glorot らは妥協として両者の調和を取り、次を採用しました。
Var(w) = 2 / (n_in + n_out) # Xavier / Glorot 初期化
実装では一様分布または正規分布でこの分散を実現します。一様分布 U(-a, a) の分散は a²/3 なので、a は次のように決まります。
正規分布: w ~ N(0, 2/(n_in + n_out))
一様分布: w ~ U(-a, a), a = √(6 / (n_in + n_out))
この設計は活性化が原点付近で恒等に近い(傾きおよそ1で、出力が入力の分散を保つ)ことを暗黙の前提にします。tanh は原点で傾き1かつゼロ中心なのでこの仮定が良く成り立ち、Xavier と相性が良い。活性化関数の傾きの違いは 活性化関数の系譜と設計 を参照すると、なぜ前提が効くかが明確になります。
He 初期化:ReLU が分散を半分に削る
Xavier の前提は ReLU で崩れます。ReLU(z)=max(0,z) は入力の負側をすべて0にするため、平均0で対称な z を通すと約半数の成分が0になり、出力の分散はおよそ半分に落ちます。式で見ると、z が平均0対称のとき E[ReLU(z)²] = (1/2)·E[z²] が成り立ち、層を通るたび分散が 1/2 倍されます。これを多層で繰り返せば分散は (1/2)^層数 で消失します。He らはこの半減を打ち消すため、増幅率の目標を1ではなく2に取り直しました。
(1/2) · n_in · Var(w) = 1 ⇒ Var(w) = 2 / n_in # He 初期化
正規分布: w ~ N(0, 2/n_in)
一様分布: w ~ U(-a, a), a = √(6 / n_in)
係数が Xavier の実質1に対し He は2、つまり ReLU で失う分の係数2を初期分散に前払い する、というのが He の本質です。Leaky ReLU など負側に傾き α を残す系では、より正確には Var(w) = 2 / ((1 + α²)·n_in) を使い、α=0 で標準の He に一致します。ReLU 系で Xavier を使うと初期分散が半分不足し、深いほど活性が0へ潰れて学習が遅延します。
He 初期化は分母に n_in(順伝播の信号保存)を採るのが標準です。フレームワークによっては逆伝播優先で n_out(fan_out モード)を選べます。畳み込み層では n_in = 入力チャネル数 × カーネル高 × カーネル幅 であり、単なるチャネル数ではない点に注意してください。ここを取り違えると、意図したスケールから定数倍ずれ、深層で再現性が崩れます。
使い分けの原則:活性化関数で決まる
選択基準は単純で、活性化関数が原点付近で信号分散をどう変えるか で決まります。tanh/Sigmoid のように恒等に近い(または線形近似で傾き1)なら Xavier、ReLU のように半分を削る系なら He です。
| 初期化 | 重み分散 Var(w) | 前提する活性化 | 想定する分散変化 |
|---|---|---|---|
| 素朴 (1/n_in) | 1 / n_in | 線形・恒等 | 順伝播のみ保存 |
| Xavier / Glorot | 2 / (n_in + n_out) | tanh, Sigmoid(原点で傾き1) | 順・逆伝播を調和 |
| He / Kaiming | 2 / n_in | ReLU, Leaky ReLU, GELU 系 | ReLU の半減を補正 |
| LeCun | 1 / n_in | SELU など自己正規化系 | 順伝播の分散を1に固定 |
- 分散の基本式:
Var(z) = n_in · Var(w) · Var(x)。保存条件n_in·Var(w)=1からVar(w)=1/n_in。 - Xavier:
Var(w)=2/(n_in+n_out)。順伝播1/n_inと逆伝播1/n_outの調和平均的折衷。tanh 向き。 - He:
Var(w)=2/n_in。ReLU が分散を半減(係数 1/2)するのを係数2で相殺。ReLU 向き。 - 取り違え:ReLU に Xavier は分散不足で消失寄り、tanh に He は過大で飽和・爆発寄り。
初期化だけでは足りない:正規化との関係
良い初期化は学習開始の1点だけ で分散を整えます。学習が進み重みが動けば各層の分散は再びずれ、深いネットワークでは数十ステップで偏りが蓄積します。これを学習の全区間で抑えるのが 正規化層 です。バッチ正規化や層正規化は各層の出力を平均0・分散1へ明示的に再スケールするため、初期化のスケール感度を大きく下げます。実際、正規化を併用すると初期化の良し悪しの影響は薄まりますが、ゼロにはなりません。正規化前の最初の数ステップや、正規化を持たない経路(残差ブロックの加算側など)では依然として初期スケールが効くため、He/Xavier は今も既定の出発点です。
バイアス b は通常0で初期化します(対称性は重みの乱数が既に破っており、バイアスに乱数は不要)。ただしバッチ正規化直前の層ではバイアスは正規化に吸収され無意味になります。また活性化の傾きが1でない場合、フレームワークの gain 係数(tanh なら 5/3 など)で分散を微調整します。これを無視すると、理論上正しいはずの初期化でも実効スケールが定数倍ずれます。
まとめ:分散保存という一本の原理
重み初期化の理論は「各層で信号の分散を保存する」という単一の要請から、ほぼ機械的に導けます。線形和の分散は n_in · Var(w) · Var(x) でファンインの分だけ膨らむ。これを1に戻す Var(w)=1/n_in が出発点で、順伝播と逆伝播の両立を図ると Xavier の 2/(n_in+n_out)、ReLU が分散を半減させる損失を係数2で補うと He の 2/n_in が出る。だから選択は流派の好みではなく、活性化関数が分散をどう変えるか で一意に決まります。tanh/Sigmoid 系には Xavier、ReLU 系には He。新しい活性化に出会ったら「平均0対称の入力を通すと分散が何倍になるか」を1つ計算すれば、補正係数を自分で導いて適切なスケールを設計できます。初期化が崩れたときの症状(活性の0潰れ・飽和、初期損失の発散)は 勾配消失・勾配爆発 と地続きなので、両者を合わせて押さえると深層学習の安定化の全体像が定まります。
AI/機械学習 Article
重み初期化の理論:Xavier と He 初期化を実務で読む
TL;DRは入口です。実際に選ぶ・使う段階では、何を解決するか、何と比較するか、導入後にどこで詰まるかまで見る必要があります。
解決すること
重み初期化
比較で見る軸
難易度: advanced / カテゴリ: AI/機械学習 / タグ数: 6
導入後に効く点
線形和の分散は重み分散×入力次元(ファンイン)で増える。これを1に戻すため重み分散を 1/ファンイン 程度に設定するのが基本。順伝播と逆伝播の両立から Xavier は 2/(fan_in+fan_out) を採る。
先に潰すリスク
用語だけ覚えても、設計・実装・運用でどこに効くかを確認しないと判断を誤る。
- 難易度
- advanced
- カテゴリ
- AI/機械学習
- タグ数
- 6
判断チェックリスト
- 自社の用途が「重み初期化 / Xavier初期化」に近いか確認する。
- 強みである「初期化の目的は順伝播・逆伝播で各層の信号の分散を一定に保つこと。前層の分散が層を進むほど縮めば活性が0へ潰れ、増えれば飽和し、どちらも学習が止まる。」が本当に評価軸になるか確認する。
- 注意点の「用語だけ覚えても、設計・実装・運用でどこに効くかを確認しないと判断を誤る。」を運用で吸収できるか確認する。
- 公開値や仕様値は、対象プラン・対象機種・対象リージョンまで確認する。
- 既存システム、ID、ネットワーク、監視、バックアップとの接続方法を先に洗い出す。
- 小さく試してから、本番移行、権限設計、障害時手順、コスト監視を決める。