LoginSignup
1
0

More than 3 years have passed since last update.

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

Last updated at Posted at 2019-05-19

イントロ

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

\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の平均値の定理を使って誤差評価して、、ってはなしがあるのですが割愛します。。 

1
0
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0