何十層も重なったニューラルネットワークの膨大な重みを、なぜ効率よく調整できるのか。その数学的な土台が、高校数学にも登場する合成関数の微分ルール「連鎖律(チェーンルール)」です。誤差逆伝播法は、この連鎖律をネットワーク全体に系統的に適用したものにほかなりません。

📖 ひと言でいうと

連鎖律とは、複数の関数が重なってできた合成関数を微分するとき、それぞれの関数の微分を順に掛け合わせて全体の微分を求められる、という微分の法則です。

身近な例えでは「影響の掛け算」と考えられます。小麦価格が1割上がるとパンの原価が6%上がり、原価が6%上がると店頭価格が3%上がる——なら、小麦からみた店頭価格への影響は2つの影響率の積で見積もれます。厳密には微分は「ごく小さな変化」についての話ですが、変化の伝わり方を段階ごとの積で追える、という直感はそのまま連鎖律に対応します。

🖼 1枚でわかる連鎖律

連鎖律(チェーンルール)
  • 定義 — 合成関数の微分は、各関数の微分の積で計算できるという法則
  • 役割 — 誤差逆伝播法で勾配を計算する手法の根幹
  • 使い方 — 出力層から入力層へ、各層の微分を次々と掛け合わせる
  • 成果 — 全重み・バイアスの勾配が効率的に求まり、勾配降下法で学習できる
  • 副作用 — 積の繰り返しが勾配消失・勾配爆発の温床にもなる
つくもち屋「G検定対策」SUMMARY

📘 公式テキストの説明

ニューラルネットワークにおける「連鎖律(チェーンルール)」は、主に誤差逆伝播法(バックプロパゲーション)で使われ、重みの更新に必要な勾配を計算する手法の根幹にある。連鎖律は、複数の関数が重なって構成された複雑な合成関数を微分する際に、各関数の微分を順に積み上げて計算する手法だ。例えば、出力層から入力層に向かって誤差を伝達するプロセスで、この連鎖律により各層での微分を次々と掛け合わせていくことで、全体の勾配を効率的に求められるようになっている。具体的には、出力層からの誤差を連鎖律によって各層に逆向きに伝搬し、それぞれの重みやバイアスに対する勾配を算出する。この計算が可能になることで、ニューラルネットワークは勾配降下法などを用いて適切な重み調整ができ、学習が進む。

この説明の核心は「連鎖律=数学の法則」「誤差逆伝播法=それを使った計算手順」という役割分担です。連鎖律そのものはニューラルネットワーク以前からある微分の基本法則で、それを「出力層から入力層へ逆向きに」適用する工夫が誤差逆伝播法です。

もう1つのキーワードは「効率的に」です。連鎖律を逆向きに使うと、途中の計算結果を再利用しながら、すべての重みの勾配を一度の逆伝播でまとめて求められます。この効率性こそが深いネットワークの学習を現実的にしました。

🔍 しっかり理解する

まずは数式で最小限だけ確認する

関数が2段重ねになった y = f(g(x)) を考えます。u = g(x) と置くと、連鎖律は次のように書けます。

dy/dx = (dy/du) × (du/dx)

つまり「外側の関数の微分」と「内側の関数の微分」の積です。3段、4段と重なっても同じで、間に挟まる各段の微分をすべて掛け合わせれば全体の微分になります。ニューラルネットワークは「線形変換(重みとの積和)→活性化関数」という関数を何層も合成した巨大な合成関数なので、損失関数を任意の重みで微分する計算は、この掛け算の連鎖として機械的に実行できます。

誤差逆伝播法での使われ方

損失(誤差)は出力層で計算されます。そこから連鎖律を使って、「損失は出力にどれだけ敏感か」→「出力はその前の層にどれだけ敏感か」→……と、微分を1段ずつ入力側へ掛け戻していきます。

損失を計算
出力層で正解とのずれを測る
微分を掛け戻す
連鎖律で各層の微分を順に積み上げ
勾配を算出
各重み・バイアスの勾配が求まる
重みを更新
勾配降下法で誤差が減る方向へ調整

重要なのは、途中経過が再利用できることです。第10層までの微分の積は、第9層・第8層の勾配計算でもそのまま使い回せます。層ごとに一から掛け算をやり直す必要がないため、逆伝播1回で全パラメータの勾配が出そろいます。

連鎖律の「影の側面」——勾配消失・勾配爆発

連鎖律は深層学習の恩人であると同時に、弱点の源でもあります。全体の勾配が「各層の微分の積」で決まるため、掛け合わされる値が1より小さいものばかりだと勾配は層をさかのぼるほど指数的に小さくなり(勾配消失問題)、1より大きいものばかりだと逆に膨れ上がります(勾配爆発問題)。シグモイド関数の微分が最大でも0.25にしかならないことが古典的な勾配消失の原因とされ、ReLUの採用などの対策につながりました。「積で伝える」という連鎖律の性質を押さえておくと、この2つの問題がなぜ起きるのかが一本の線でつながります。

💡 具体例で考える

3層の小さなネットワークで、入力x → 隠れ層u = g(x) → 出力y = f(u) → 損失L = h(y) という流れを考えます。入力に近い側の量xの変化が損失に与える影響を知りたければ、連鎖律により

dL/dx = (dL/dy) × (dy/du) × (du/dx)

と3つの微分の積に分解できます。もし連鎖律を使わずに「重みを少しだけ動かして損失の変化を測る」方法(数値微分)で同じことをすると、パラメータ1個につきネットワーク全体の計算(順伝播)がもう1回必要です。パラメータが100万個あれば100万回の順伝播が要る計算になり、現実的ではありません。連鎖律にもとづく逆伝播なら、順伝播1回+逆伝播1回で100万個分の勾配がすべて求まります。この差が「深層学習が実際に学習できる」ことの数学的な理由です。

⚠️ よくある誤解・紛らわしい用語

💡 ポイント
  • 連鎖律=誤差逆伝播法ではない — 連鎖律は微分の一般法則、誤差逆伝播法はそれをニューラルネットワークの勾配計算に適用したアルゴリズムです。「根幹にある」という関係を正しく覚えましょう。
  • 「誤差を足し合わせて伝える」のではない — 連鎖律の本質は微分の「積」です。層をまたぐ伝搬が掛け算であることが、勾配消失・爆発の理解にも直結します。
  • 勾配降下法との役割分担 — 連鎖律(を使う逆伝播)は勾配を「計算する」係、勾配降下法はその勾配で重みを「更新する」係です。計算と更新の2段構えで学習が成立します。
  • 微分できない関数への適用 — 連鎖律は各関数が微分可能であることが前提です。ニューラルネットワークの活性化関数が(ほぼ全域で)微分可能な関数から選ばれるのは、この前提を満たすためです。

📝 試験でのポイント

💡 ポイント
  • 定義問題では「合成関数の微分」「各関数の微分を順に積み上げる(掛け合わせる)」が正解選択肢の目印です。
  • 「誤差逆伝播法の根幹にある数学的原理はどれか」→ 連鎖律、という対応関係が最頻出の問われ方です。
  • 「出力層から入力層に向かって」という伝搬の向きを、順伝播と入れ替えた誤答選択肢に注意しましょう。
  • 勾配消失問題との組み合わせで「微分の積が繰り返されるために起きる」という因果関係を問う問題も想定されます。

📚 まとめ

💡 ポイント
  • 連鎖律は、合成関数の微分を「各段の微分の積」として計算できる微分の基本法則です。
  • 誤差逆伝播法はこの連鎖律を出力層から入力層へ逆向きに適用し、全重み・バイアスの勾配を効率的に求めます。
  • 求めた勾配を勾配降下法に渡すことで重み調整が可能になり、ニューラルネットワークの学習が進みます。
  • 「積で伝える」性質は勾配消失・勾配爆発問題の原因でもあり、4.5節の他キーワードと一続きの物語として理解するのが効果的です。