大きな画面での利用をおすすめします — アニメーションと操作がより快適になります。
入力

勾配消失

連鎖律で 1 未満の局所的な増幅率を繰り返し掛けると、前段へ届く学習信号が弱まります。既定の 10 層実験で sigmoid が保つ出力相対勾配は 2.785e-7、重み 1 の活性 ReLU 経路は 1 です。一つずつは普通の係数でも、積は微小になります。

局所的な増幅率の積

各層はスカラー活性値を一つ持ち、同じ正の重み w、バイアス 0 を使います。

z_ℓ = w · a_(ℓ−1)

a_ℓ = φ(z_ℓ)

順伝播は活性値を計算し、逆伝播は最終活性値の前段の活性値に対する感度を求めます。

g_ℓ = |∂a_D / ∂a_ℓ|、g_D = 1

g_(ℓ−1) = g_ℓ · |w · φ′(z_ℓ)|

|w · φ′(z_ℓ)| が局所的な増幅率です。D 層を通ると:

g_0 = Π[ℓ=1…D] |w · φ′(z_ℓ)|

sigmoid の導関数は a(1 − a)、最大 0.25 で、0 や 1 に近づくほど小さくなります。w = 1 なら各層の増幅率は高くても 4 分の 1 なので、深い積は縮みます。

活性 ReLU の導関数は 1、増幅率は |w| です。w = 1 なら保持、0.5 なら 0.5ᴰ に減衰、1.5 なら 1.5ᴰ に増大します。ReLU は活性経路の sigmoid の飽和因子を取り除きますが、連鎖律の掛け算は残ります。

両レーンと全プリセットは 1e-15 から 1e3 の固定対数軸を共有します。同じ縦幅は同じ桁数の変化で、1 から 1e-5 なら 5 桁の減衰です。結果に合わせた自動拡大はしません。

ステップ実行

既定値は a₀ = 1、深さ D = 10、w = 1、全バイアス 0 です。同じ入力と正規化した出力勾配で、活性化関数だけを変えます。

  1. 第 1 層の順伝播:sigmoid は z₁ = 1、a₁ = 0.7311、導関数 0.1966 で、通過する勾配の約 19.7% を保ちます。ReLU は活性値、導関数、増幅率がすべて 1 です。
  2. 第 2 層:sigmoid は a₂ = 0.6750、増幅率 0.2194。ReLU は 1 のままです。第 10 層の sigmoid 活性値は約 0.6590、導関数は約 0.2247 です。順方向の安定は逆方向の信号の強さを保証しません。
  3. 逆伝播の開始:両方を g₁₀ = 1 とし、損失導関数の影響を除きます。実際の損失では各出力導関数がさらに掛かります。ここでは隠れ層の連鎖による相対的な保持率を測ります。
  4. 最初の逆向き更新:sigmoid は g₉ = 0.2247、ReLU は 1 です。
  5. 左へ進む:sigmoid の値は次のとおりです。各係数は非ゼロで、ここではアンダーフローも起きていません。普通の係数の連続した積が原因です。
位置sigmoid の相対勾配
g₈0.05049
g₇0.01135
g₆0.002549
g₅0.0005728
g₄0.0001287
g₃2.888e-5
g₂6.457e-6
g₁1.416e-6
g₀2.785e-7

ReLU は入力でも g₀ = 1 を保ち、この条件では約 359 万倍の相対勾配を届けます。実際のパラメータ更新には各層の入力や他の経路も関わりますが、前段へ修正信号が届きにくくなる機構が分かります。

重みと深さの影響

「Both fade」は w = 0.5 です。ReLU の導関数は 1 でも、重みの積は 0.5¹⁰ = 0.0009766。sigmoid は約 7.261e-10 です。

「ReLU explodes」は w = 1.5 で、ReLU は 1.5¹⁰ = 57.665 になります。前段での増幅が更新を不安定にする場合があります。sigmoid は活性化の導関数による減衰が勝ち、まだ縮みます。

「Sixteen deep」は w = 1 に戻し、深さを 16 にします。ReLU は 1 を保ち、sigmoid は約 3.585e-11。6 層の追加でさらに約 4 桁失います。

学習の症状から原因を調べる

同じ学習ステップで各ブロックの ||∇W_ℓ L|| を記録し、前段と後段を比べます。ベクトルのネットワークでは局所的な増幅率がヤコビ行列になり、特異値と利用可能な経路が各方向の縮小・拡大を決めます。

症状先に調べる点対応の候補
前段の勾配が後段より数桁小さい活性化の飽和、重みの尺度、経路上のヤコビ行列の尺度活性化に合う初期化、正規化、適切な非飽和活性化、積を短くする残差経路
入力側へ勾配が増大し、急増や非有限値が出る局所ヤコビ行列が繰り返し信号を増幅していないか初期化・正規化の修正、不安定なブロックの調査。クリッピングは上限を設けるが原因は直さない
ReLU より前の勾配が厳密にゼロ非正の前活性値の割合、非活性のままのユニット初期化とバイアスの見直し。死んだユニットが原因なら leaky 版も検討

再帰のゲートや注意機構は依存経路を変えますが、連鎖律は変わりません。勾配クリッピングは大きすぎる値を制限するもので、失われた信号を復元できません。

境界ケース

  • 非正の ReLU 入力:選べる設定では正なので「活性経路」と呼びます。z_ℓ < 0 なら導関数は 0、ゼロ点は微分不能ですが実装では通常 0 を選びます。一つのゼロ因子がその経路の前段の勾配を切ります。
  • 1 を超える、または下回る一つの増幅率:一層だけでは全体を判断できません。他の層が打ち消す場合もあります。全積を確認し、繰り返す縮小と深さによる指数減衰を区別します。
  • 負の重み:本課は比較のため正に制限します。負の重みは勾配の符号を反転し、ReLU の活性状態も変ええます。実際の経路の積の大きさが消失・爆発を決めます。
  • ゼロと実用上の微小値:有限入力の sigmoid の数学的導関数は正でも、2.785e-7 は精度、ノイズ、正則化、他の大きな勾配に埋もれえます。浮動小数点の飽和では厳密なゼロも生じます。
  • 損失導関数:g_D = 1 は正規化です。実際の損失は別の因子を加えます。

よくある間違い

  • 順伝播の安定を逆伝播の健全さと同一視する。活性値が 0.659 付近でも入力相対勾配は 2.785e-7 になります。
  • 一つの極小導関数を探す。本例の局所増幅率は約 0.20–0.22 で、その積が問題です。
  • ReLU が勾配消失をすべて解決すると考える。重みは縮小・増幅を続け、非活性ユニットは経路を切ります。
  • 自動で変わる軸の棒を比較する。本課は両レーンの対数範囲を固定します。
  • クリッピングで消失を直そうとする、または全パラメータがこのスカラー積そのものを見ると考える。

モデルの範囲

学習システムではなく機構の説明です。各層はスカラー一つ、重みは同じ、バイアスは 0、出力勾配は正規化します。実際の逆伝播はヤコビ行列を掛け、分岐や例からの寄与を足し、最適化手法でパラメータを更新します。特異値、分岐、残差、バッチ統計量が経路や数値を変えても、局所的な増幅率の長い積が信号の減衰・保持・増大を決める原理は残ります。