誤差逆伝播 — 連鎖律が勾配を運ぶ
第5章で「勾配さえあれば坂を下れる」と学びました。第6章で「予測は合成関数」だと見ました。この2つが合流します。深い合成関数の勾配を、賢く・使い回して計算する方法。それが誤差逆伝播です。正体は、高校第13章・微積第4章で習った合成関数の微分(連鎖律)の集大成にすぎません。
なぜ逆向きに計算するのか
損失 は、パラメータから何段もの関数を経た先にあります。各パラメータについて を素朴に別々に求めると、共通部分を何度も計算して爆発します。そこで、出力側の誤差を入力側へ流し戻し、途中の計算を使い回します。順伝播で値を、逆伝播で勾配を運ぶ。行きと帰りの2パスで、全パラメータの勾配が一度に揃います。
触ってみる — 計算グラフを1ステップずつ
ミニネットの「1ニューロン → 1ニューロン」の1本道を計算グラフにしました。「次へ」で、まず順伝播(緑・左→右)で値を確定させ、続いて逆伝播(橙・右→左)で勾配を流し戻します。
順伝播では から まで値が右へ右へ確定していきます。折り返した逆伝播では、各ノードが「上流から流れてきた勾配 × 自分のローカル微分」を計算して、さらに左へ渡す。この掛け算の連鎖が、連鎖律そのものです。
計算グラフと連鎖律
各ノードは、自分の出力を自分の入力で微分したローカル勾配を持ちます。たとえば のノードのローカル勾配は 。逆伝播が渡す量は、
上流の勾配に、そのノードのローカル勾配を掛けるだけ。これを出力から入力へ順に掛け伝えると、どんなに深くても各パラメータの勾配が求まります。連鎖律 を、グラフに沿って機械的に適用しているだけです。
ここまでは1本道(1つのノードの出力が1か所にしか使われない)の場合です。実際の計算グラフでは、1つのノードの出力が複数の先で使われる分岐が起きます。その場合は、多変数の連鎖律にしたがって、分岐した各経路から流れてくる勾配を足し合わせます。また、ノードの入出力がベクトル値のときはローカル勾配は行列(ヤコビアン)になり、上流の勾配ベクトルにはヤコビアンの転置を掛けます。掛け算・足し算という骨格は変わりませんが、スカラーの1本道はその特殊ケースです。
種明かし — 第5章の勾配は、これが供給していた
第5章の更新則 で使う勾配 。それをどこから得ていたのか、ここで種明かしです。逆伝播が、全パラメータぶんの をまとめて計算していました。順伝播で予測と損失を出し、逆伝播で勾配を出し、勾配降下で更新する。この3つが1回の学習ステップです。
現代のフレームワークは、この逆伝播を自動微分として自動化しています。順伝播の式さえ書けば、ローカル勾配と連鎖律の掛け合わせをライブラリが裏で組み立てる。手で微分を書く必要はありません。仕組みは、いま1ステップずつ見たものと同じです。
試してみよう
- 逆伝播が出す勾配の符号は、何を教えていますか(その重みを増やすと損失が増えるか減るか。降下すべき向き)
- tanh の入力が大きい(飽和した)ノードでは、ローカル勾配はどうなるでしょう(ほぼ 0。掛け算で下流の勾配も消えていきます)
理解チェック
逆伝播の勾配は、本当に正しい微分になっている?
なっています。確かめ方は、パラメータを少しだけ動かして損失の変化を測る数値微分 との照合です。逆伝播が出す解析的な勾配と、この数値微分は一致します(このコースの図の裏でも、両者が小数点以下まで合うことを検証しています)。
操作チャレンジ
小さな計算グラフ の損失を、重み で最小にしてください()。
損失 予測 (目標 、谷底へ)
式で確かめる
動かして掴んだ感覚を、式と言葉で確かめます。間違えても、ヒントと解説で戻れます。
確認 1 / 3
逆伝播で各ノードが下流(入力側)へ渡す勾配は、どう作られますか?
確認 2 / 3
あるノードで、上流から来た勾配 、ローカル勾配 でした。このノードが下流へ渡す勾配 はいくつですか?
確認 3 / 3
tanh の入力が大きく飽和したノードでは、逆伝播はどうなりますか?
この章の定義・定理・公式をまとめて確認する
第7章 誤差逆伝播 — 連鎖律が勾配を運ぶ のまとめページへ
執筆: 中野竜之介 / 監修:
中野竜之介: 北海道大学大学院 数学専攻 博士課程・専門: 特殊関数論と代数幾何の交わり
最終更新: 2026-07-05