誤差逆伝播法 — 勾配は後ろから流れてくる
ネットの重みは何千、何万個。その全部について「どちらに回せば損失が減るか」を、たった1回の後ろ向き計算でまとめて求めるのが誤差逆伝播法(バックプロパゲーション)です。計算グラフの上を勾配が流れる様子を、ステップ実行で追いかけましょう。
1. 問題設定 — すべてのダイヤルの「効き方」を知りたい
学習とは、損失 L が小さくなる方向へ各重みを少しずつ回すこと(勾配降下法)。そのためには重み1個1個について∂L/∂w(wを動かすとLがどれだけ動くか)が必要です。
素朴には「wをちょっとずらして L を測り直す」(数値微分)でも求まりますが、それではパラメータの数だけ前向き計算をやり直すことになり、100万パラメータなら100万回。誤差逆伝播法なら、前向き1回+後ろ向き1回で全部の勾配が一度に手に入ります。
2. 計算グラフを前へ、後ろへ
計算を「部品の鎖」として描いたものが計算グラフです。ここではニューロン1個ぶんの最小の鎖、x → [×w] → [+b] → [σ] → [損失L] を使います(正解は y = 1)。
「前へ」を押すと値が左から右へ埋まり、「後ろへ」を押すと勾配(赤い数値)が右から左へ流れます。各エッジに書いてあるのが局所勾配 — その部品だけの「入口と出口の感度」です。
計算グラフのステップ実行 — 前向きに値、後ろ向きに勾配
水色=前向きに計算された値、赤=後ろ向きに流れる勾配。勾配は「下流から届いた勾配 × その場の局所勾配」を繰り返すだけで、左端まで届きます。全ステップを終えたあとにスライダーを動かすと、値と勾配が全部連動して変わるのも見てみてください。
POINT — 各部品は「自分のこと」しか知らなくていい
掛け算ノードは「入力が1増えたら出力がw増える」ことしか知らない。σは自分の傾き σ′ しか知らない。それでも、下流から来た勾配に自分の局所勾配を掛けて上流へ渡すというローカルなルールだけで、ネット全体の正しい勾配が末端まで届く。これが誤差逆伝播法の全てです。
3. 連鎖律は「変化の伝言ゲーム」
なぜ局所勾配の掛け算でいいのか。それは連鎖律(チェーンルール)そのものです。「wを少しつつくと、z₁が動き、z₂が動き、aが動き、Lが動く」— 各段の感度を掛け合わせれば、wからLまでの感度になります。
∂L/∂w = ∂L/∂a · ∂a/∂z · ∂z/∂w
「wをつついた変化」が各段でどれだけ増幅・減衰されて L に届くか、の掛け算
連鎖律 — Δw のさざ波が L まで届く
各ノードの下の棒が「wを Δw だけつついたときの、その場所の変化量Δ」。矢印の下の数字が各段の感度(局所勾配)です。実測の ΔL÷Δw と、連鎖律の掛け算の答えがほぼ一致すること、そして Δw を小さくするほど完全に一致していくことを確かめてください(x = 1.2, b = −0.5, 正解 y = 1 に固定)。
POINT — 逆向きに配ると1回で済む
連鎖律は前からでも後ろからでも計算できるが、知りたいのは「1つの L に対する大量の w の勾配」。だから L 側から後ろ向きにたどれば、途中結果を共有しながら全パラメータぶんを1回の逆向きパスで回収できる。
4. ネット全体で回すと「学習」になる
順伝播で予測 → 損失を測る → 逆伝播で全勾配を配る → 重みを少し更新。この4拍子をひたすら繰り返すのがニューラルネットの学習です。下のデモでは 2-3-1 の小さなネットが、2クラスの点の集まり(三日月形)を分ける境界線を覚えていきます。
学習ライブ — 2-3-1 ネットが境界線を覚える
左=ネット(白い粒が順伝播、赤い粒が逆伝播。線の太さ=重みの大きさで、学習につれて変わる)。中央=決定境界。右=損失カーブ。学習率を 0.2 くらいに下げるとじわじわ、10 を超えると損失が暴れて学習が壊れ始めます。壊れたら「リセット」でやり直し。
注意 — 勾配は「方向」、学習率は「歩幅」
逆伝播が教えてくれるのは各重みを動かすべき方向と比率だけ。実際にどれだけ動かすかは学習率しだいで、小さすぎると遅く、大きすぎると谷を飛び越えて発散する。この調整は次のレッスン「最適化アルゴリズム」の主役になる。
5. まとめ
- 前向きに値を計算し、途中の値を覚えておく。
- 後ろ向きに「下流の勾配 × 局所勾配」を繰り返すと、全パラメータの ∂L/∂w が1パスで揃う。
- 正しさの根拠は連鎖律:各段の感度の掛け算。
- 勾配が揃ったら、学習率ぶんだけ重みを更新。この繰り返しが「学習」。
一歩先へ — 深層学習を可能にした鍵
多層ネットの学習法として誤差逆伝播法を広めたのは Rumelhart・Hinton・Williams の1986年の論文。「隠れ層は学習できない」と言われた時代を終わらせた。ただし層が深いと、勾配は掛け算の連鎖ゆえに消えたり(勾配消失)爆発したりしやすい。ReLU、初期化の工夫、残差接続などでこれを抑え込めるようになったことが、2010年代の深層学習ブームの土台になっている。