誤差逆伝播
計算グラフを勾配が逆流する様子を見ます。L = (y − t)²、y = σ(w·x + b) の各ノードに連鎖律で勾配が伝わります。
1.5
0.8
-0.5
1.00
順伝播(値が前進)
逆伝播(勾配が逆流)
いま点灯中のノード
出力 y = σ(z)
—
損失 L = (y−t)²
—
∂L/∂w
—
∂L/∂b
—
∂L/∂x
—
計算グラフ(左→右が順伝播、右→左が逆伝播)
ニューラルネットの学習では、まず入力から出力へ計算が流れ(順伝播)、損失 L を求めます。
そのあと、各パラメータが損失をどれだけ動かすか(勾配
各エッジには局所勾配(そのノードが1つ前のノードをどう変えるか)が貼られていて、 勾配は「上流から来た勾配 × 局所勾配」として掛け算で逆流します。これが連鎖律です。
スライダーで x・w・b・t を変えて順伝播の値を更新し、「逆伝播スタート」で勾配が右から左へ流れる様子を見ましょう。
∂L/∂w など)を、
出力側から入力側へ向かって計算します。これが誤差逆伝播(バックプロパゲーション)です。各エッジには局所勾配(そのノードが1つ前のノードをどう変えるか)が貼られていて、 勾配は「上流から来た勾配 × 局所勾配」として掛け算で逆流します。これが連鎖律です。
スライダーで x・w・b・t を変えて順伝播の値を更新し、「逆伝播スタート」で勾配が右から左へ流れる様子を見ましょう。
いま何が起きている?
ここがポイント
- 連鎖律で掛け算 ── あるノードの勾配は「上流の勾配 × 局所勾配」。これを出力側から順に掛けていく。
- 逆向きに1回流すだけ ── 順伝播で値を覚えておけば、逆伝播1パスで全パラメータの勾配が同時に求まる。
- 局所勾配はノードの種類で決まる ── 掛け算なら相手の値、σ なら σ(1−σ)、二乗なら 2×差、という具合に。
- 勾配 = 損失への効き目 ── ∂L/∂w が大きいほど、その w を少し動かすだけで損失が大きく動く。学習はこの逆方向に進む。