みんなのAI
機械学習AI論文
Loading...

学ぶ

🏅マイ実績

Chapter 07

連鎖律:重ねた関数を解く、逆伝播の核心

関数を重ねて書いたものを微分するときは外の微分 × 内の微分をかければよいです。逆伝播の核心です。

チャプター別 数学図

チャプターを選ぶと、下の図がそのチャプターの内容に切り替わります。基礎数学の流れを一覧で確認できます。

重なった関数は xxx → 内側 → 外側 → yyy と連鎖しています。外の微分 × 内の微分をかけると全体の微分になります。

012036xu(1, 3)u = g(x) = 2x+1g'(x)=2u0350925uy(3, 9)y = f(u) = u²f'(u)=2u内の微分外の微分

例で見る計算の順番(一度に一つずつ強調)

1.例:上のグラフのように u=g(x)=2x+1u = g(x) = 2x+1u=g(x)=2x+1、y=f(u)=u2y = f(u) = u^2y=f(u)=u2 のとき y=(2x+1)2y = (2x+1)^2y=(2x+1)2 を xxx で微分する。
2.① 内の微分(左グラフ):u=g(x)=2x+1u = g(x) = 2x+1u=g(x)=2x+1 を xxx で微分 → 222
3.② 外の微分(右グラフ):y=f(u)=u2y = f(u) = u^2y=f(u)=u2 を uuu で微分 → 2u=2(2x+1)2u = 2(2x+1)2u=2(2x+1)
4.③ かける:2×2(2x+1)=4(2x+1)2 \times 2(2x+1) = 4(2x+1)2×2(2x+1)=4(2x+1) → 答え

点が連鎖に沿って動くように、変化率がかけ算されて伝わります。逆伝播もこのかけ算の繰り返しです。

連鎖律とは

連鎖律(Chain Rule)は、関数の中に別の関数が入った合成関数を微分する規則です。玉ねぎの皮をむくように、「外側の関数を微分(f′f^{\prime}f′)× 内側の関数を微分(g′g'g′)してかける」という原理です。式では dydx=dydu⋅dudx\frac{dy}{dx} = \frac{dy}{du} \cdot \frac{du}{dx}dxdy​=dudy​⋅dxdu​ と表し、噛み合った歯車の回転比を求めるのと同じです。
直感的な例:「自分」(xxx) が「友達」(uuu) を押し、友達が「台車」(yyy) を押すとします。自分が友達を2倍の力で押し、友達が台車を3倍の力で押すなら、台車は自分の力の 2×3=62 \times 3 = 62×3=6 倍で動きます。このように段階ごとの変化率(傾き)をかけ算でつなぐのが連鎖律です。
核心公式:{f(g(x))}′=f′(g(x))×g′(x)\{f(g(x))\}' = f^{\prime}(g(x)) \times g'(x){f(g(x))}′=f′(g(x))×g′(x)。覚え方は「外の微分 × 内の微分」です。
  • 段階1
  • やること内側・外側を区別
  • 例:y=(2x+1)2y=(2x+1)^2y=(2x+1)2内側 u=2x+1u=2x+1u=2x+1、外側 y=u2y=u^2y=u2
  • 段階2
  • やること外の微分
  • 例:y=(2x+1)2y=(2x+1)^2y=(2x+1)2u2u^2u2 を微分すると 2u2u2u(このとき uuu はそのまま)
  • 段階3
  • やること内の微分
  • 例:y=(2x+1)2y=(2x+1)^2y=(2x+1)2内側 2x+12x+12x+1 を微分すると 222
  • 段階4
  • やることかける
  • 例:y=(2x+1)2y=(2x+1)^2y=(2x+1)22u×2=2(2x+1)×2=4(2x+1)2u \times 2 = 2(2x+1) \times 2 = 4(2x+1)2u×2=2(2x+1)×2=4(2x+1)
段階やること例:y=(2x+1)2y=(2x+1)^2y=(2x+1)2
1内側・外側を区別内側 u=2x+1u=2x+1u=2x+1、外側 y=u2y=u^2y=u2
2外の微分u2u^2u2 を微分すると 2u2u2u(このとき uuu はそのまま)
3内の微分内側 2x+12x+12x+1 を微分すると 222
4かける2u×2=2(2x+1)×2=4(2x+1)2u \times 2 = 2(2x+1) \times 2 = 4(2x+1)2u×2=2(2x+1)×2=4(2x+1)
代表式:dydx=dydu⋅dudx\frac{dy}{dx} = \frac{dy}{du} \cdot \frac{du}{dx}dxdy​=dudy​⋅dxdu​ または (f∘g)′(x)=f′(g(x))⋅g′(x)(f \circ g)'(x) = f^{\prime}(g(x)) \cdot g'(x)(f∘g)′(x)=f′(g(x))⋅g′(x)。上のビジュアルのように xxx → 内側 → 外側 → yyy の順でつながるので、各区間の微分をかけます。内側がまた重なっているときは、その部分でも同じように外の微分×内の微分を繰り返してかけます。
なぜ足し算ではなくかけ算か?比率(Rate)だからです。時速100kmで走る車(vvv)と、1ドル1300円の為替(rrr)を足しても意味がありません。変化の増幅や減衰を求めるにはかけ算が必要です。
数で確認:y=(2x+1)2y=(2x+1)^2y=(2x+1)2 で x=1x=1x=1 のときの変化率は、公式どおり 4(2(1)+1)=124(2 (1) +1)=124(2(1)+1)=12。実際 xxx が 1 から 1.01 に 0.01 だけ変わると、yyy は 9 から約 9.1204 に約 0.12 変わります。0.01 の 12 倍が 0.12 なので、変化率 12 で正しいです。
ディープラーニングモデルは、数十・数百の関数が重なった巨大な合成関数(y=fn(...f2(f1(x))...)y = f_n(...f_2(f_1(x))...)y=fn​(...f2​(f1​(x))...))です。知りたいのは「最初の入力や中間の重み(www)を変えたとき、最終的な誤差(LLL)がどう変わるか」です。これを求めるには連鎖律が不可欠です。
誤差逆伝播(Backpropagation)の正体がまさに連鎖律です。出力層で生じた誤差を入力層方向へ逆に伝えるとき、各層の微分値(傾き)をかけ算で伝えていきます。この過程がなければ深いニューラルネットの学習は不可能です。
つまりAIが学習するとは「微分値を連鎖律でかけ算して伝える過程」です。層が深いほどこのかけ算が繰り返されますが、1より小さい数(例:0.5)を何度もかけると0に近づきます。こうして勾配が消える現象を勾配消失(Vanishing Gradient)といい、深いネットワークの学習が難しかった理由の一つでした。ReLUやスキップ接続などの技術がこの問題を緩和します。
複雑な因果関係を分析するときに使います。AがBに影響し、BがCに影響するとき、AがCに及ぼす影響は各段階の影響力をかけ算して求めます。
  • 状況コスト → 生産量 → 時間
  • 求めるもの時間がコストに及ぼす影響
  • 連鎖律(全体の変化率)(コスト/生産量) ×\times× (生産量/時間)
  • 状況体積 → 半径 → 時間
  • 求めるもの風船に空気を入れるときの体積の変化率
  • 連鎖律(全体の変化率)(体積/半径) ×\times× (半径/時間)
  • 状況誤差 → 出力 → 重み
  • 求めるものAI学習:重みの更新量
  • 連鎖律(全体の変化率)(誤差/出力) ×\times× (出力/重み)
状況求めるもの連鎖律(全体の変化率)
コスト → 生産量 → 時間時間がコストに及ぼす影響(コスト/生産量) ×\times× (生産量/時間)
体積 → 半径 → 時間風船に空気を入れるときの体積の変化率(体積/半径) ×\times× (半径/時間)
誤差 → 出力 → 重みAI学習:重みの更新量(誤差/出力) ×\times× (出力/重み)
自動微分(Automatic Differentiation):PyTorchやTensorFlowなどのAIフレームワークでは、`loss.backward()`と一行書くだけで微分してくれます。内部では計算グラフを構築し、各ノードで連鎖律を適用して勾配を計算・乗算する処理が一瞬で行われます。
重なった関数を微分するときは内側を一つの塊と見て、外を微分したものと内を微分したものをかけるだけ。内側がまた重なっていればそこでも同じように繰り返します。コツ:まず「内側=何」とおき、外の関数だけ微分してから、内側を xxx で微分したものをかければよいです。
いちばん簡単な例:y=(3x)2y=(3x)^2y=(3x)2。内側 u=3xu=3xu=3x → 微分して 333。外側 u2u^2u2 → 微分して 2u=2⋅3x2u=2\cdot 3x2u=2⋅3x。かけると 3×2⋅3x=18x3 \times 2\cdot 3x = 18x3×2⋅3x=18x。x=2x=2x=2 のときの傾きは 363636 です。
やさしいものからいろいろな例を表にまとめました。各行で「内の微分」と「外の微分」をかけると答えになります。
  • 問題やさしい例 y=(3x)2y=(3x)^2y=(3x)2
  • 解法内 u=3xu=3xu=3x → 内の微分 333、外 u2u^2u2 → 外の微分 2u2u2u;積 2⋅3x⋅3=18x2\cdot 3x\cdot 3=18x2⋅3x⋅3=18x
  • 問題やさしい例 y=x+1y=\sqrt{x+1}y=x+1​
  • 解法内 u=x+1u=x+1u=x+1 → 内の微分 111、外 u\sqrt{u}u​ → 外の微分 1/(2u)1/(2\sqrt{u})1/(2u​);積 1/(2x+1)1/(2\sqrt{x+1})1/(2x+1​)
  • 問題例 y=(2x+1)5y=(2x+1)^5y=(2x+1)5
  • 解法内の微分 222、外の微分 5(2x+1)45(2x+1)^45(2x+1)4 → 積 10(2x+1)410(2x+1)^410(2x+1)4
  • 問題例 y=ex2y=e^{x^2}y=ex2
  • 解法内の微分 2x2x2x、外の微分 ex2e^{x^2}ex2 → 積 2x ex22x\,e^{x^2}2xex2
  • 問題例 y=sin⁡(2x)y=\sin(2x)y=sin(2x)
  • 解法内 u=2xu=2xu=2x → 内の微分 222、外 sin⁡u\sin usinu → 外の微分 cos⁡u\cos ucosu;積 2cos⁡(2x)2\cos(2x)2cos(2x)
  • 問題例 y=e3xy=e^{3x}y=e3x
  • 解法内の微分 333、外の微分 e3xe^{3x}e3x → 積 3e3x3e^{3x}3e3x
  • 問題例 y=ln⁡(sin⁡x)y=\ln(\sin x)y=ln(sinx)
  • 解法内の微分 cos⁡x\cos xcosx、外の微分 1/sin⁡x1/\sin x1/sinx → 積 cos⁡x/sin⁡x=cot⁡x\cos x/\sin x=\cot xcosx/sinx=cotx
問題解法
やさしい例 y=(3x)2y=(3x)^2y=(3x)2内 u=3xu=3xu=3x → 内の微分 333、外 u2u^2u2 → 外の微分 2u2u2u;積 2⋅3x⋅3=18x2\cdot 3x\cdot 3=18x2⋅3x⋅3=18x
やさしい例 y=x+1y=\sqrt{x+1}y=x+1​内 u=x+1u=x+1u=x+1 → 内の微分 111、外 u\sqrt{u}u​ → 外の微分 1/(2u)1/(2\sqrt{u})1/(2u​);積 1/(2x+1)1/(2\sqrt{x+1})1/(2x+1​)
例 y=(2x+1)5y=(2x+1)^5y=(2x+1)5内の微分 222、外の微分 5(2x+1)45(2x+1)^45(2x+1)4 → 積 10(2x+1)410(2x+1)^410(2x+1)4
例 y=ex2y=e^{x^2}y=ex2内の微分 2x2x2x、外の微分 ex2e^{x^2}ex2 → 積 2x ex22x\,e^{x^2}2xex2
例 y=sin⁡(2x)y=\sin(2x)y=sin(2x)内 u=2xu=2xu=2x → 内の微分 222、外 sin⁡u\sin usinu → 外の微分 cos⁡u\cos ucosu;積 2cos⁡(2x)2\cos(2x)2cos(2x)
例 y=e3xy=e^{3x}y=e3x内の微分 333、外の微分 e3xe^{3x}e3x → 積 3e3x3e^{3x}3e3x
例 y=ln⁡(sin⁡x)y=\ln(\sin x)y=ln(sinx)内の微分 cos⁡x\cos xcosx、外の微分 1/sin⁡x1/\sin x1/sinx → 積 cos⁡x/sin⁡x=cot⁡x\cos x/\sin x=\cot xcosx/sinx=cotx
問題タイプ別の解法
  • タイプべき乗
  • 式の形(g(x))n(g(x))^n(g(x))n
  • f′(x)f^{\prime}(x)f′(x) の求め方外の微分 nun−1n u^{n-1}nun−1 × 内の微分 g′(x)g'(x)g′(x)。
  • タイプ指数
  • 式の形eg(x)e^{g(x)}eg(x)
  • f′(x)f^{\prime}(x)f′(x) の求め方外の微分 eue^ueu × 内の微分 → eg(x)⋅g′(x)e^{g(x)} \cdot g'(x)eg(x)⋅g′(x)。
  • タイプ三角
  • 式の形sin⁡(g(x))\sin(g(x))sin(g(x))、cos⁡(g(x))\cos(g(x))cos(g(x))
  • f′(x)f^{\prime}(x)f′(x) の求め方外の微分(cos または −sin) × 内の微分。
  • タイプルート
  • 式の形g(x)\sqrt{g(x)}g(x)​
  • f′(x)f^{\prime}(x)f′(x) の求め方外の微分 1/(2u)1/(2\sqrt{u})1/(2u​) × 内の微分。
  • タイプ対数
  • 式の形ln⁡(g(x))\ln(g(x))ln(g(x))
  • f′(x)f^{\prime}(x)f′(x) の求め方外の微分 1/u1/u1/u × 内の微分 → g′(x)/g(x)g'(x)/g(x)g′(x)/g(x)。
  • タイプ二次式の中
  • 式の形(ax2+bx+c)n(ax^2+bx+c)^n(ax2+bx+c)n など
  • f′(x)f^{\prime}(x)f′(x) の求め方内の微分は 2ax+b2ax+b2ax+b。外の微分と掛ける。
タイプ式の形f′(x)f^{\prime}(x)f′(x) の求め方
べき乗(g(x))n(g(x))^n(g(x))n外の微分 nun−1n u^{n-1}nun−1 × 内の微分 g′(x)g'(x)g′(x)。
指数eg(x)e^{g(x)}eg(x)外の微分 eue^ueu × 内の微分 → eg(x)⋅g′(x)e^{g(x)} \cdot g'(x)eg(x)⋅g′(x)。
三角sin⁡(g(x))\sin(g(x))sin(g(x))、cos⁡(g(x))\cos(g(x))cos(g(x))外の微分(cos または −sin) × 内の微分。
ルートg(x)\sqrt{g(x)}g(x)​外の微分 1/(2u)1/(2\sqrt{u})1/(2u​) × 内の微分。
対数ln⁡(g(x))\ln(g(x))ln(g(x))外の微分 1/u1/u1/u × 内の微分 → g′(x)/g(x)g'(x)/g(x)g′(x)/g(x)。
二次式の中(ax2+bx+c)n(ax^2+bx+c)^n(ax2+bx+c)n など内の微分は 2ax+b2ax+b2ax+b。外の微分と掛ける。

例(べき乗)
y=(3x)2y=(3x)^2y=(3x)2 のとき x=2x=2x=2 での導関数の値を求めなさい。
解答
y′=2⋅3x⋅3=18xy'=2\cdot 3x \cdot 3=18xy′=2⋅3x⋅3=18x。x=2x=2x=2 を代入 → 363636。→ 答 36

例(指数)
y=e3xy=e^{3x}y=e3x のとき x=0x=0x=0 での導関数の値を求めなさい。
解答
y′=3e3xy'=3e^{3x}y′=3e3x。x=0x=0x=0 を代入 → 3e0=33e^0=33e0=3。→ 答 3

例(三角)
y=sin⁡(2x)y=\sin(2x)y=sin(2x) のとき x=0x=0x=0 での導関数の値を求めなさい。
解答
y′=2cos⁡(2x)y'=2\cos(2x)y′=2cos(2x)。x=0x=0x=0 を代入 → 2cos⁡0=22\cos 0=22cos0=2。→ 答 2

例(対数)
y=ln⁡(sin⁡x)y=\ln(\sin x)y=ln(sinx) のとき x=π/2x=\pi/2x=π/2 での導関数の値を求めなさい。
解答
y′=cos⁡xsin⁡x=cot⁡xy'=\frac{\cos x}{\sin x}=\cot xy′=sinxcosx​=cotx。x=π/2x=\pi/2x=π/2 で cos⁡(π/2)=0\cos(\pi/2)=0cos(π/2)=0 なので y′=0y'=0y′=0。→ 答 0