合成関数の微分がなぜかけ算になる(連鎖律)のかを理解する


イントロ

機械学習で誤差逆伝播法などをお勉強してると、むかーし高校生の時に習った合成関数の微分:

\begin{align}
\{ f(g(x)) \}' &= f'(g(x))\cdot g'(x)  \\
もしくは \ \ \ \frac{df}{dx} &= \frac{df}{du} \frac{du}{dx} \ \ (ただし u:=g(x))
\end{align}

とかがでてきますね。。なんでこうなるんだっけとかを思い出すついでに、

df = f'(x) dx

などについて整理してみます。ちなみに上記はちゃんと書くと、$x=x_0$ において

df = A dx \ \ \ \ \ (ただし \ A = f'(x_0))

です。

説明

まずは微分係数について

まずは、$x=x_0$ において

df = A dx \ \ \ \ \ (ただし \ A = f'(x_0))

の意味についてです。

これって$x=x_0$でのTaylor展開(一次の項でやめちゃうから一次近似)によって

f(x) - f(x_0) = f'(x_0)(x -x_0) + \frac{f''(x_0)}{2!}(x- x_0)^2 など二次以上の項 \cdots

が導かれることから、$f$や$x$の微小変化を$df,dx$と書くとき、限りなく$x$が$x_0$に近いところでは(二次以上の項はものすごく小さくなるので)

df = f'(x_0) dx

と比例関係として書ける事を意味しています。

$x=x_0$の近くで$x$が微小に動いたとき、そのときの$f$の動き$df$は、$x$の動き($dx$)に比例しますよ、そして比例定数は「$f'(x_0)$」ですよ。

ということです1。。。微小なところの比例関係なんでその傾き$f'(x_0)$は$x=x_0$での接線の傾きとなるワケです。

この $A$ すなわち $f'(x_0)$ のことを関数 $f(x)$の、$x=x_0$ での微分係数といいます。

合成関数の微分

つづいて合成関数の微分ですが、まずは例から。

df = f'(x_0) dx

は納得って事で、例として$f(x)= x^3$ とおいてみます。

d(x^3) = 3 x^2 \ d(x)

さてためしに $x=\sin \theta$ とおくと、

d(\sin^3\theta) = 3 \sin^2\theta \ d(\sin \theta)

とかけます。さらに $\sin \theta$の動き $d(\sin \theta)$ を$\theta$の微小な動き$d\theta$で表してみると

\begin{align}
df &= 3 \sin^2\theta \ d(\sin \theta)\\
&= 3 \sin^2\theta \cdot \cos \theta \ d \theta\\
&= \frac{df}{dx} \frac{dx}{d\theta} d\theta
\end{align}

が得られました。みなれた合成関数の微分がでてきましたね。

さて一般的な $f$について $u=g(x), (u_0=g(x_0))$ としてみると、$u_0$付近で

\begin{align}
df &=  f'(u_0) du\\
 &=  \frac{df(u_0)}{du} du\\
 &=  \frac{df(u_0)}{du} d(g(x))\\
 &=  \frac{df(u_0)}{du}\cdot \frac{dg(x_0)}{dx} dx \\
 &=  \frac{df(g(x_0))}{du}\cdot \frac{dg(x_0)}{dx} dx \\
\end{align}

したがって、はじめの合成関数の微分

\frac{df}{dx} = \frac{df}{du} \frac{du}{dx} \ \ (ただし u:=g(x))

が得られました。

連鎖律っていう

結論だけみると、数式のあそび(通分できるかんじ?)に見えますが、本質的には、このようにある $\theta= \theta_0$ において

\begin{align}
d(\sin^3\theta) &= 3 \sin^2\theta_0 \ d(\sin \theta)\\
&= 3 \sin^2\theta_0 \cdot \cos \theta_0 \ d \theta
\end{align}

つまり$\theta$を「①サイン」して「②三乗する」って操作 $\sin^3\theta$の動き $d(\sin^3\theta)$ は、

  • $\sin \theta$のうごき $d(\sin \theta)$ に比例しますよ、比例定数は ($3 \sin^2\theta_0 $) です
  • さらには $d(\sin \theta)$ は、$\theta$ の動き$d\theta$ に比例しますよ、比例定数は$\cos\theta_0$です
  • つまり全体で見ると $d(\sin^3\theta)$ は$d\theta$ に比例しますよ、比例定数は $3 \sin^2\theta_0 \times \cos \theta_0$ とかけ算になりますよ

となるわけですね。連鎖律ってやつです。

多変数の場合も

下記の多変数関数 $f(x,y)$の、$(x_0,y_0)$の周りでのTaylor展開(というか一次近似式):

f(x,y) = f(x_0,y_0) + \frac{\partial \ f(x_0,y_0)}{\partial x}(x-x_0)+ \frac{\partial \ f(x_0,y_0)}{\partial y}(y-y_0)+ R(x,y) 

($R$ は二次以上の無限小。) 厳密性にこだわらず、雰囲気で。

$x-x_0 =:\Delta x,\ y-y_0 =:\Delta y$ とすると、

\begin{align}
f(x_0+\Delta x,y_0+\Delta y) - f(x_0,y_0) &= \frac{\partial \ f(x_0,y_0)}{\partial x}\Delta x+ \frac{\partial \ f(x_0,y_0)}{\partial y}\Delta y &+ R(x,y) \\
\end{align}

とかけます。。さらに、$x$もある変数$(u,v)$の関数だった場合、$x(u,v),y(u,v)$も$(u_0,v_0)$のまわりで一次近似することで、(ここでは$u$側だけうごかします)

\begin{align}
x(u_0+\Delta u,v_0) - x(u_0,v_0) &= \frac{\partial \ x(u_0,v_0)}{\partial u}\Delta u &+ R(u,v) \\
y(u_0+\Delta u,v_0) - y(u_0,v_0) &= \frac{\partial \ y(u_0,v_0)}{\partial u}\Delta u &+ R(u,v) \\
\end{align}

とかけます。

さて$x(u_0+\Delta u,v_0) - x(u_0,v_0)$ や、 $y(u_0+\Delta u,v_0) - y(u_0,v_0)$ ってようするに$u$方向に動かした$\Delta x,\Delta y$なので、もとの式に入れてみると

\begin{align}
f(x_0+\Delta x,y_0+\Delta y) - f(x_0,y_0) &= \frac{\partial \ f(x_0,y_0)}{\partial x}\Delta x+ \frac{\partial \ f(x_0,y_0)}{\partial y}\Delta y &+ R(x,y) \\
&\approx \frac{\partial \ f(x_0,y_0)}{\partial x}\frac{\partial \ x(u_0,v_0)}{\partial u}\Delta u + \frac{\partial \ f(x_0,y_0)}{\partial y}\frac{\partial \ y(u_0,v_0)}{\partial u}\Delta u 
\end{align}

したがって、$\Delta u$ を限りなく小さくとることで、

\begin{align}
\frac{\partial f(x_0,y_0)}{\partial u}= \frac{\partial \ f(x_0,y_0)}{\partial x}\frac{\partial \ x(u_0,v_0)}{\partial u} + \frac{\partial \ f(x_0,y_0)}{\partial y}\frac{\partial \ y(u_0,v_0)}{\partial u}
\end{align}

となります。同様に$v$についても

\begin{align}
\frac{\partial f(x_0,y_0)}{\partial v}= \frac{\partial \ f(x_0,y_0)}{\partial x}\frac{\partial \ x(u_0,v_0)}{\partial v} + \frac{\partial \ f(x_0,y_0)}{\partial y}\frac{\partial \ y(u_0,v_0)}{\partial v}
\end{align}

となります。見やすさ重視で、カッコをとると、、、

\begin{align}
\frac{\partial f}{\partial u}= \frac{\partial \ f}{\partial x}\frac{\partial \ x}{\partial u} + \frac{\partial \ f}{\partial y}\frac{\partial \ y}{\partial u}\\
\frac{\partial f}{\partial v}= \frac{\partial \ f}{\partial x}\frac{\partial \ x}{\partial v} + \frac{\partial \ f}{\partial y}\frac{\partial \ y}{\partial v}
\end{align}

おつかれさまでしたー。


  1. 「Taylor展開」ってナンだよって話もありそうですが、関数$f$を多項式近似(Taylorの近似式のこと)したあと、そのひき算(誤差)をCauchyの平均値の定理を使って誤差評価して、、ってはなしがあるのですが割愛します。。