勾配消失・勾配爆発と残差接続(ResNet)の原理
層を深くすると学習が止まる理由を、勾配の連鎖積という一点から理解できる。なぜ恒等写像を一本足すだけで超深層が学習可能になるのか、その仕組みを式で掴めます。
- 1.勾配消失・爆発は逆伝播が層ごとにヤコビアンを掛け続ける構造の必然。固有値が1未満なら指数的に0へ、1超なら指数的に発散し、深いほど入力側の層が学習されない。
- 2.残差接続は出力を `y = x + F(x)` とし、逆伝播のヤコビアンに恒等行列 I を足す。勾配は `I + ∂F/∂x` を経由するため、F の勾配が小さくても1の経路が誤差を素通しさせる。
- 3.効果は加算(積でなく和)にある。多数の残差ブロックを貫くショートカットの和として勾配が分解され、最短経路は単なる恒等写像なので勾配が消えにくい。100層超でも学習が成立する。
なぜ「深くすると学習できなくなる」のか
表現力の観点では、層を増やすほどネットワークが表せる関数のクラスは広がります。にもかかわらず、素朴に層を積み上げた深いネットワークは、浅いネットワークより訓練誤差すら下がらないことが知られていました。過学習ではありません——テストではなく訓練の最適化そのものが失敗するのです。この劣化(degradation)の正体が、逆伝播における勾配の振る舞いにあります。
学習の更新を担う勾配がどう計算されるかは 誤差逆伝播法の数理 に譲りますが、要点だけ再掲します。層 l の誤差信号 δ_l は、下流の δ_{l+1} にその層のヤコビアン(局所的な偏微分行列)を掛けて後退します。つまり入力側の層の勾配は、そこから出力までの全ての層のヤコビアンの積になります。
扱うのは「深さに起因する勾配の崩壊」と「残差接続がそれをどう数理的に回避するか」の2点です。勾配を使った更新(最適化器)や活性化関数の設計は隣接トピックなので、深さそのものが生む不安定性に焦点を絞ります。前提となる多層構造は ニューラルネットワーク を参照。
数理的な核心:ヤコビアンの連鎖積
L 層のネットワークを、各層の変換 f_l の合成と見ます。入力に近い層 l の重み勾配は、連鎖律により次の積を含みます。
∂L/∂(層 l の入力) = δ_L · J_L · J_{L-1} · … · J_{l+1}
ただし J_k = ∂(層 k の出力) / ∂(層 k の入力) (ヤコビアン)
ここで決定的なのは、L - l 個の行列が掛け合わされる点です。各 J_k を線形変換 W_k と活性化の傾き σ' の積とみなすと、勾配の大きさは概ね各層のスペクトルノルム(最大特異値)の積でスケールします。スカラーで直観を掴むなら、各層の実効的な倍率を r として、L 層を遡る勾配は r の (L−l) 乗に比例します。
r < 1 のとき: r^(L-l) → 0 # 勾配消失(vanishing)
r > 1 のとき: r^(L-l) → ∞ # 勾配爆発(exploding)
r = 1 ちょうど: 安定(しかし維持は困難)
r が 1 から少しでもずれれば、層数 L−l が大きいほど指数的に 0 か無限へ向かいます。これは活性化関数や初期化の不運ではなく、「行列を何十回も掛ける」という逆伝播の構造そのものから生じる必然です。
古典的なシグモイドの微分は最大でも 0.25 です。各層で σ' ≤ 0.25 を掛けるため、r は構造的に 1 を大きく下回り、勾配は層を遡るたび 4 分の 1 以下に縮みます。10 層も遡れば 0.25^10 ≈ 10^-6 倍。これが入力側の層がほぼ更新されなくなる勾配消失の典型機構です。ReLU 系(正領域で σ'=1)はこの一因を取り除きますが、W の積による発散・縮小は残ります。
残差接続:出力に「入力そのもの」を足す
ResNet(残差ネットワーク)の発想は驚くほど単純です。層が目標の写像 H(x) を直接学ぶ代わりに、入力からの差分(残差)F(x) = H(x) − x を学ばせ、最後に入力を足し戻す。
通常層: y = H(x)
残差ブロック: y = x + F(x) # F は重み層+活性化のまとまり、x は恒等のショートカット
x をそのまま出力に運ぶ経路を**スキップ接続(ショートカット)**と呼びます。もしその層で恒等写像が最適なら、ネットワークは F(x) ≈ 0(重みをほぼ0)にすればよく、これは複雑な H(x) = x を学ぶより遥かに易しい。深くしても性能が劣化しにくいのは、まずこの「最悪でも恒等を保てる」という構造的保証によります。
なぜ勾配が保たれるのか——和に分解されるヤコビアン
本質は順伝播より逆伝播にあります。残差ブロック y = x + F(x) を入力 x で微分すると、ヤコビアンに恒等行列 I が現れます。
∂y/∂x = I + ∂F/∂x
この I が効きます。下流から届いた勾配 δ_y を上流へ渡すと、
δ_x = (I + ∂F/∂x)ᵀ · δ_y = δ_y + (∂F/∂x)ᵀ · δ_y
右辺の第1項 δ_y は、F の勾配を一切経由せずそのまま素通しした成分です。仮に ∂F/∂x が小さく潰れていても、δ_y の項が独立に生き残るため、勾配が丸ごと 0 になることがありません。通常層では J_k の積だったものが、残差では (I + 各層の ∂F/∂x) の積になる——掛け算の中に必ず 1 の経路が混じる、というのが核心です。
複数の残差ブロックを貫く勾配を展開すると、(I + A_n)(I + A_{n-1})…(I + A_1) を展開した形になります。これは「どのブロックで F を通り、どのブロックで素通りするか」の全組み合わせの和です。中に必ず I·I·…·I = I(全ブロックを素通りする恒等経路)が含まれ、この最短経路の勾配は減衰しません。深いネットワークが、実効的には浅い経路のアンサンブルのように振る舞うと解釈できます。
通常層と残差ブロックの比較
勾配伝播の観点で両者を並べると、違いが一点に集約されます。
| 観点 | 通常の深層スタック | 残差ブロック(ResNet) |
|---|---|---|
| 順伝播 | y = H(x)(目標写像を直接学習) | y = x + F(x)(差分のみ学習) |
| 逆伝播のヤコビアン | J_k(活性化・重みの積) | I + ∂F/∂x(恒等を含む) |
| 層を貫く勾配 | ヤコビアンの積 → 指数的に消失/爆発 | (I + A) の積 → 素通し経路で減衰しにくい |
| 恒等写像の学習 | H(x)=x を明示的に学ぶ必要があり困難 | F(x)≈0 にするだけ(自明) |
| 実用上の深さ | 数十層で劣化が顕在化 | 100層超でも訓練誤差が下がる |
残差だけでは足りない——正規化と初期化の併用
残差接続は勾配消失を大きく緩和しますが、(I + ∂F/∂x) の積でも ∂F/∂x の累積で勾配が膨らむ余地は残るため、単独では不十分です。実用では次が併用されます。
- 正規化層:バッチ正規化や層正規化で各層の
zの分布(平均・分散)を整え、F側のヤコビアンのスケールを 1 付近に保ちます。これによりrが極端な値に張り付くのを防ぎます。 - 適切な初期化:He 初期化などで各層の分散が前後で保たれるよう重みを設定し、初期時点での
r ≈ 1を狙います。 - 残差スケーリング:
y = x + α·F(x)のようにFを小さな係数で抑え、学習初期は恒等経路を支配的にして安定させる手法(深い Transformer 等で有効)。
議論は消失に偏りがちですが、r > 1 側の勾配爆発も同じ構造から生じ、損失が NaN に発散する形で顕在化します。残差接続も ∂F/∂x の累積では爆発を完全には抑えません。対策は値域に直接介入する勾配クリッピング(ノルムが閾値を超えたら縮小)で、特に系列方向に同じ積が伸びる RNN で重要です。系列での勾配問題は CNN と RNN も参照。
- 消失/爆発の数理:入力側の勾配はヤコビアンの積。実効倍率
rが 1 未満でr^(L-l) → 0(消失)、1 超で発散(爆発)。深さに対し指数的、が核心。 - 残差の式:
y = x + F(x)。逆伝播ヤコビアンがI + ∂F/∂xになり、δ_x = δ_y + (∂F/∂x)ᵀ δ_yの第1項が勾配を素通しさせる。 - 積から和へ:複数ブロックを貫く勾配は
(I + A)の積の展開=経路の和。全素通りの恒等経路が減衰しない。 - degradation の意味:過学習ではなく訓練誤差の劣化。残差は「最悪でも恒等」を保証して最適化を容易にする。
まとめ:1本のショートカットが超深層を解放した
深いネットワークが学習できなかったのは、逆伝播が層ごとにヤコビアンを掛け続け、その積が深さに対し指数的に 0(消失)か無限(爆発)へ向かうためでした。これは活性化や初期化の選択ミスではなく、行列を何十回も掛けるという連鎖律の構造そのものの帰結です。
残差接続はこの構造に恒等行列 I を一本差し込みます。順伝播では y = x + F(x) として「差分だけ学べばよい」最適化の易しさを与え、逆伝播では ∂y/∂x = I + ∂F/∂x として勾配に素通しの経路を保証する。掛け算の連鎖だった勾配が、(I + A) の積=経路の和へと分解され、最短の恒等経路が決して減衰しない——この一点が、100 層を超えるネットワークを現実に学習可能にしました。正規化・初期化・クリッピングはこの土台を補強する処方箋であり、深層化の意義と難しさの全体像は ディープラーニング で合わせて確認すると、設計判断の軸が定まります。
AI/機械学習 Article
勾配消失・勾配爆発と残差接続(ResNet)の原理を実務で読む
TL;DRは入口です。実際に選ぶ・使う段階では、何を解決するか、何と比較するか、導入後にどこで詰まるかまで見る必要があります。
解決すること
勾配消失
比較で見る軸
難易度: advanced / カテゴリ: AI/機械学習 / タグ数: 6
導入後に効く点
残差接続は出力を `y = x + F(x)` とし、逆伝播のヤコビアンに恒等行列 I を足す。勾配は `I + ∂F/∂x` を経由するため、F の勾配が小さくても1の経路が誤差を素通しさせる。
先に潰すリスク
用語だけ覚えても、設計・実装・運用でどこに効くかを確認しないと判断を誤る。
- 難易度
- advanced
- カテゴリ
- AI/機械学習
- タグ数
- 6
判断チェックリスト
- 自社の用途が「勾配消失 / 残差接続」に近いか確認する。
- 強みである「勾配消失・爆発は逆伝播が層ごとにヤコビアンを掛け続ける構造の必然。固有値が1未満なら指数的に0へ、1超なら指数的に発散し、深いほど入力側の層が学習されない。」が本当に評価軸になるか確認する。
- 注意点の「用語だけ覚えても、設計・実装・運用でどこに効くかを確認しないと判断を誤る。」を運用で吸収できるか確認する。
- 公開値や仕様値は、対象プラン・対象機種・対象リージョンまで確認する。
- 既存システム、ID、ネットワーク、監視、バックアップとの接続方法を先に洗い出す。
- 小さく試してから、本番移行、権限設計、障害時手順、コスト監視を決める。