みんなのAI
機械学習AI論文
読み込み中…

学ぶ

🏅マイ実績

Ch.01

重み初期化(Weight Initialization):学習の正しい出発点

学習開始前に各層の重みとバイアスをどの値に置くかを決めるのが重み初期化です。悪い出発は勾配消失・爆発を招き学習がほぼ不可能になり、良い出発は速い収束と安定した学習につながります。この章では初期化の概念、Xavier・He初期化の直感と式、実務での使い方を学びます。

重み初期化:良い出発が半分

重み初期化とは? — 各層には重み WWWとバイアス bbbがあります。学習前は値が未定なので、最初にどの数で埋めるかを決めます。この過程を重み初期化といいます。直感的にはマラソンのスタート位置をどこに置くかと同じです。スタートが後ろすぎると(重みが小さすぎると)歩幅が減って学習が遅く、前すぎると(重みが大きすぎると)暴走して発散します。数学的には — 一層の線形和は z=Wx+bz = W \mathbf{x} + bz=Wx+b と書きます。x\mathbf{x}x は入力ベクトル、WWW は重み行列、bbb はバイアスです。WWW をすべて0にすると同層の全ニューロンが同じ出力を出し対称性が保たれ、逆伝播で勾配が均等に分かれません。なので通常小さな乱数で初期化し、その分布(スケール)を層の入力次元 ninn_{in}nin​ と出力次元 noutn_{out}nout​ に合わせて調整し、層を通過するとき活性の大きさが極端に変わらないようにします。実務での適用 — スパム分類モデルで初期化が悪いと損失がほとんど減らない・NaN が出ることがあります。医療用CNNや不正検知のように層が深い場合、Xavier/He を使わないと手前の層の勾配が0に近づき(勾配消失)学習が止まったように見えます。逆にスケールが大きすぎると勾配爆発で数値が不安定になります。実務ではXavier(tanh・シグモイド系)またはHe(ReLU系)を標準で使います。
重み初期化は学習の第一歩。各層の WWW と bbb を適切なスケールに置き、順伝播・逆伝播で分散が維持されるようにします。

初期化スケールの影響

↓●↑入力層1層2層3出力消失維持爆発
層を通過しても分散が維持されるよう W, b のスケールを決めるのが良い初期化です。
良い出発が半分適切な初期化 → 速い収束・安定した学習
  • ①初期化:各層の WWW,bbb を(Xavier/Heなど)規則に従って設定
  • ②順伝播:入力→線形和 zzz→活性化 aaa→次層
  • ③損失計算ののち逆伝播:勾配が層を伝わる
  • ④更新:勾配に従い WWW,bbb を更新。良い初期化なら勾配の大きさが適度に保たれる

なぜ重要か

勾配消失と勾配爆発 — 層が深いほど逆伝播する勾配は連鎖律で多くの数の積になります。重みが小さすぎると積が0に近づき(勾配消失)手前の層がほとんど更新されず、大きすぎると積が爆発し(勾配爆発)NaN・Inf が出ます。良い初期化は層を通過しても分散が維持されるようにし、深いネットワークでも勾配が適度な大きさで伝わるようにします。収束速度と最適点 — 適切な初期化だと損失曲面で良い出発点に立てます。悪い出発点だと局所最小に陥るか収束が非常に遅くなります。実務では学習率と初期化を変えながら検証損失を見てチューニングします。

どのように使うか

Xavier(Glorot)初期化 — 線形和 zzz の分散が入出力サイズに依存しないよう、WWW を一様分布 U(−6/(nin+nout), 6/(nin+nout))U(-\sqrt{6/(n_{in}+n_{out})},\ \sqrt{6/(n_{in}+n_{out})})U(−6/(nin​+nout​)​, 6/(nin​+nout​)​) または正規分布 N(0, σ2)\mathcal{N}(0,\ \sigma^2)N(0, σ2)(σ2=2/(nin+nout)\sigma^2 = 2/(n_{in}+n_{out})σ2=2/(nin​+nout​))からサンプリングします。tanh・シグモイドなどの対称活性化に適しています。He初期化 — ReLUは0以下を0にするため出力の分散は入力の約半分になります。Heでは σ2=2/nin\sigma^2 = 2/n_{in}σ2=2/nin​ で補正します。ReLU・Leaky ReLU を使う現代のCNN・MLPではHeを標準でよく使います。実務での選択 — 活性化がReLU系ならHe、tanh・シグモイドならXavierをまず試します。PyTorch・TensorFlowのデフォルト初期化も層の種類に応じてこのどちらかを適用していることが多いです。

まとめ

重み初期化は、学習開始前に各層の重みとバイアスをどの値に置くか決める過程です。すべて0にするとニューロンが同じ出力を出して対称性が保たれ学習が進まず、乱数で大きすぎ・小さすぎにすると層を通過するとき活性や勾配が爆発または消失します。そこで層の入出力サイズに合わせて分散を調整したXavier初期化とHe初期化が広く使われます。Xavierはtanh・シグモイドなどの対称活性化に、HeはReLU系に適し、良い出発で勾配消失・爆発を減らし収束を安定させます。

問題を解くための説明

まとめ — 重み初期化は学習前に各層の WWW,bbb をどの値に置くか決める段階です。0にすると対称性のため学習が進まないので、通常は小さな乱数で分散(スケール)を調整します。Xavierは σ2=2/(nin+nout)\sigma^2 = 2/(n_{in}+n_{out})σ2=2/(nin​+nout​) でtanh・シグモイドに、Heは σ2=2/nin\sigma^2 = 2/n_{in}σ2=2/nin​ でReLU系に合わせます。良い初期化は勾配消失・爆発を減らし収束を速くします。
  • タイプ重み初期化の定義
  • 解法・例(キーワード→答)学習前に WWW,bbb を決めること。0初期化は非推奨。→概念選択時1
  • タイプXavier
  • 解法・例(キーワード→答)σ2=2/(nin+nout)\sigma^2 = 2/(n_{in}+n_{out})σ2=2/(nin​+nout​)、tanh・シグモイド。→1
  • タイプHe
  • 解法・例(キーワード→答)σ2=2/nin\sigma^2 = 2/n_{in}σ2=2/nin​、ReLU系。→2
  • タイプ勾配消失
  • 解法・例(キーワード→答)重みが小さすぎると勾配が0に近づく。→1
  • タイプ勾配爆発
  • 解法・例(キーワード→答)重みが大きすぎると勾配が爆発。→2
  • タイプXavier一様
  • 解法・例(キーワード→答)範囲 [−6/(nin+nout), 6/(nin+nout)][-\sqrt{6/(n_{in}+n_{out})},\ \sqrt{6/(n_{in}+n_{out})}][−6/(nin​+nout​)​, 6/(nin​+nout​)​]。計算時は整数で。
  • タイプ層サイズ
  • 解法・例(キーワード→答)nin=4n_{in}=4nin​=4,nout=6n_{out}=6nout​=6 → nin+nout=10n_{in}+n_{out}=10nin​+nout​=10。
タイプ解法・例(キーワード→答)
重み初期化の定義学習前に WWW,bbb を決めること。0初期化は非推奨。→概念選択時1
Xavierσ2=2/(nin+nout)\sigma^2 = 2/(n_{in}+n_{out})σ2=2/(nin​+nout​)、tanh・シグモイド。→1
Heσ2=2/nin\sigma^2 = 2/n_{in}σ2=2/nin​、ReLU系。→2
勾配消失重みが小さすぎると勾配が0に近づく。→1
勾配爆発重みが大きすぎると勾配が爆発。→2
Xavier一様範囲 [−6/(nin+nout), 6/(nin+nout)][-\sqrt{6/(n_{in}+n_{out})},\ \sqrt{6/(n_{in}+n_{out})}][−6/(nin​+nout​)​, 6/(nin​+nout​)​]。計算時は整数で。
層サイズnin=4n_{in}=4nin​=4,nout=6n_{out}=6nout​=6 → nin+nout=10n_{in}+n_{out}=10nin​+nout​=10。
例(定義)
「重み初期化の主な目的は?
①学習前の層のスケールを合わせる
②学習率を上げる
③データ拡張」
目的は層を通過しても活性・勾配のスケールが維持されるようにすること。→答 1

例(Xavier vs He)
「ReLUを使う層でよく使う初期化は?
①Xavier
②He
③0」
ReLU系ではHe初期化を使う。→答 2

例(計算)
nin=4n_{in}=4nin​=4,nout=6n_{out}=6nout​=6 のときXavierでの nin+noutn_{in}+n_{out}nin​+nout​ の値(整数)は?
4+6=104+6=104+6=10。→答 10
定義の例 — 「重み初期化の主な目的は?
①学習前の層のスケールを合わせる
②学習率を上げる
③データ拡張」→目的は層を通過してもスケールが維持されるようにすること。答 1
正誤の例 — 「重み初期化は学習前にWWW,bbbを決める過程である。」→正しい。答 1
シナリオの例 — 「スパム分類モデルで損失がほとんど減らないとき、まず疑うのは?
①初期化・学習率
②データ数だけ
③バッチサイズだけ」→初期化・学習率の確認が先。答 1
選択の例 — 「He初期化でσ2\sigma^2σ2は?
①2/nin2/n_{in}2/nin​
②2/(nin+nout)2/(n_{in}+n_{out})2/(nin​+nout​)
③1/nin1/n_{in}1/nin​」→Heはσ2=2/nin\sigma^2=2/n_{in}σ2=2/nin​。答 1
概念の例 — 「Xavierでnin+nout=6n_{in}+n_{out}=6nin​+nout​=6のとき6/(nin+nout)6/(n_{in}+n_{out})6/(nin​+nout​)の値(整数)は?
①1
②2
③3」→6/6=16/6=16/6=1。答 1
計算の例 — 「nin=4n_{in}=4nin​=4,nout=6n_{out}=6nout​=6のときXavierでのnin+noutn_{in}+n_{out}nin​+nout​の値(整数)は?」→4+6=104+6=104+6=10。答 10