【ごさぎゃくでんぱほう】

誤差逆伝播法 とは?

💡 出力側の失敗を原因探しで逆向きに追いかける「責任の連鎖」
📌 このページのポイント
→ 順伝播 (Forward Pass) 入力層 x1 x2 x3 隠れ層1 隠れ層2 出力層 y w w w 誤差計算 Loss = (y - t)^2 <- 逆伝播 (Backward Pass): 誤差を元に重みを更新 重み更新 w = w - lr * dL/dw 重み更新 w = w - lr * dL/dw
誤差逆伝播法の仕組み
ひよこ ひよこ

誤差逆伝播法って難しそうだけど、一言でいうと何をするの?

ペンギン先生 ペンギン先生

「この予測のミスは誰のせい?」を出力から入力に向かって追いかける仕組みだよ。ニューラルネットワークはたくさんの重みがあるから、どの重みがどれだけ間違いに貢献したかを計算して、それぞれをちょっとずつ修正するんだ。

ひよこ ひよこ

なんで「逆」向きなの?普通に前向きに計算できないの?

ペンギン先生 ペンギン先生

計算効率の問題なんだ。前向きに計算すると、一つの重みの影響を調べるだけで全体の計算をやり直す必要がある。逆向きに伝えると連鎖律(チェーンルール)を使って全部の重みの勾配を一気に効率よく計算できるんだよ。

ひよこ ひよこ

「連鎖律」って何?

ペンギン先生 ペンギン先生

数学の微分のルールで「合成関数の微分」のことだよ。f(g(x))の微分はf'(g(x))×g'(x)っていうやつ。ニューラルネットワークは関数が何層も重なった合成関数なので、チェーンルールを使って出力から入力へと誤差を次々に掛け算しながら伝えていけるんだ。

ひよこ ひよこ

層が深くなると誤差が薄まって前の方まで届かなくなるって本当?

ペンギン先生 ペンギン先生

それが「勾配消失問題」で、ディープラーニング初期の最大の難関だったんだ。誤差を逆伝播するとき、活性化関数の微分(0〜1の値)を何十回も掛け算するから、層を通るごとに指数関数的に小さくなっていく。10層なら0.5の10乗で約0.001になってしまう。これを解決したのがReLUという活性化関数で、微分値が0か1になるから掛け算しても消えない。バッチ正規化という手法との組み合わせで初めて非常に深いネットワークの学習が実用的になったんだよ。

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「誤差逆伝播法」って出てきたら「ニューラルネットワークの誤差を逆向きに伝えて重みを調整する学習アルゴリズムだな」と思えればだいたいOK!
📖 おまけ:英語の意味
「Backpropagation」 = 後ろへの伝播
💬 Back(後ろ・逆方向)+ Propagation(伝播)。誤差を逆向きに伝える仕組みがそのまま名前になっているよ
← 用語集にもどる