本シリーズでは、以下の本に沿って数学を解説している。
前回は微分編2回目ということで、合成関数の微分と、関数の最小値に関する原理を説明した。
各種公式だったり、記号なんかも出てきたが、理解できただろうか。
特に記号は今回もガンガン使っていくので、早いうちに慣れてしまおう。
以下がその記事だ。
さて、今回は多変数関数の微分を解説していく。
ここからは恐らく大学以降の内容になる。
直感的に分かりづらい部分も出てくると思うので、落ち着いて確実に進めていこう。
多変数関数
さて、微分の話に入る前に、これを少し触れておこう。
関数の復習
本シリーズの初回で解説した関数だが、ちょっと期間が空いてしまったので軽く復習しておく。
ある変数\(x\)の値を決めたときに、それに伴って別の変数\(y\)の値が一意に定まるとき、\(y\)は\(x\)の関数である、という説明をした。
その具体例として、一次関数\(y = ax + b\)や二次関数\(y = ax^2 + bx + c\)などがあった。
また、このときの\(x\)を独立変数、\(y\)を従属変数と呼ぶことも書いたと思う。
さて、ここまでの内容では、独立変数が一つだけだった。
つまり、ある変数1つだけを決めれば、その関数自体の値も一つに定まったのだ。
これから解説する内容は、この独立変数の種類が増える。
多変数関数
多変数関数とは、独立変数が2つ以上の関数のことだ。
例えば、\(x_1\)、\(x_2\)の二つが決まれば\(y\)の値が決まるような、以下の関数が該当する。
$$y = ax_1 + bx_2 + c$$
これは、2つの変数を持つ多変数関数の一番簡単な例だろう。
今は二つで考えているが、もちろん三つ以上でも同じだ。
そして、一つの独立変数の場合は、\(y = f(x)\)という表記をしていた。
これも、多変数関数の場合は、\(y = f(x_1, x_2)\)といった表記になる。
2変数関数の具体例を挙げるとすると、郵便物のサイズ決定だろうか。
荷物の3辺の長さの合計\(x_1\)と、その荷物の重さ\(x_2\)が決定すれば、その荷物のサイズ\(y\)が決まる。
式にしようと思うとちょっと複雑になるので避けるが、2変数関数のイメージはこんな感じだ。
なお、ニューラルネットワークでは、この独立変数の数は1万を超えることが多い。
その場合でも同じ考え方が使えるので、まずは2変数で感覚を掴んでいこう。
多変数関数の微分
では、微分の話に進んでいこう。
独立変数が一つであるような関数の場合、単に微分すると言えば、その独立変数に対する微分だと分かる。
前回まで解説していたものがそうだ。
それに対し、多変数となると、そのどれに対して微分するかを決めなければいけない。
このように、多変数関数\(y = f(x_1, x_2, …, x_n)\)に含まれるある独立変数\(x_i\)について微分することを、\(x_i\)で偏微分すると呼ぶ。
説明を簡単にするために、ここでは2変数関数\(y = f(x_1, x_2)\)で考えてみよう。
これを\(x_1\)で偏微分する、ということを記号で表すと以下の通りだ。
$$\frac{\partial y}{\partial x_1} = \frac{\partial f(x_1, x_2)}{\partial x_1}$$
こうすることで、どの変数で微分したいかが分かるようになる。
また、この導関数は以下の式で定義できる。
$$\frac{\partial f(x_1, x_2)}{\partial x_1} = \lim_{\Delta x_1 \to 0} \frac{f(x_1 + \Delta x_1, x_2) – f(x_1, x_2)}{\Delta x_1}$$
式だけ見ても分かりづらいので、言葉で説明しよう。
多変数関数で、微分したい独立変数\(x_1\)以外を定数と見なして、その\(x_1\)で微分することを偏微分と呼ぶのだ。
そう、結局はこれまでの微分がメインとなる。
ちょっと、具体的な関数で計算をしてみよう。
以下の2変数関数で考えてみる。
$$y = f(x_1, x_2) = 2x_1^2 + 4x_2^2$$
これで、\(x_1\)、\(x_2\)それぞれについて偏微分をしてみよう。
まずは\(x_1\)から。
$$\frac{\partial y}{\partial x_1} = \frac{\partial}{\partial x_1}(2x_1^2 + 4x_2^2)$$
今、注目していない\(x_2\)は定数と見なせるので…
$$\frac{\partial y}{\partial x_1} = 4x_1$$
となる。
同じように、\(x_2\)について偏微分すると…
$$\frac{\partial y}{\partial x_2} = 8x_2$$
となるのだ。
多変数関数の合成関数の微分
1変数関数のときに考えていた合成関数の微分も、多変数関数に拡張してみよう。
ただし、これも2変数関数で見ていく。
ちょっと文字の種類が一気に増えるが、なんとか追い付いてきてもらいたい。
ある変数\(z\)が\(u, v\)の関数で、さらに\(u, v\)がそれぞれ\(x, y\)の関数だったとする。
ちょっと書き換えると、\(f, g, h\)がそれぞれ関数として、以下のように表せる。
$$z = f(u, v)$$
$$u = g(x, y)$$
$$v = h(x, y)$$
このとき、以下のように書き直せるので、結局\(z\)は\(x, y\)の関数ということが分かる。
$$z = f(g(x, y), h(x, y))$$
このとき、合成関数の偏微分は以下のように書き表せる。
$$\frac{\partial z}{\partial x} = \frac{\partial z}{\partial u} \frac{\partial u}{\partial x} + \frac{\partial z}{\partial v} \frac{\partial v}{\partial x}$$
$$\frac{\partial z}{\partial y} = \frac{\partial z}{\partial u} \frac{\partial u}{\partial y} + \frac{\partial z}{\partial v} \frac{\partial v}{\partial y}$$
ちょっと、具体例で計算をしてみよう。
今、以下の関数があったとする。
$$z = (3x + y)^2 + (2x^2 – y)^2$$
このとき、\(u, v\)を以下のように置いてみよう。
$$u = 3x + y$$
$$v = 2x^2 – y$$
すると、\(z\)は以下のように置き直せる。
$$z = u^2 + v^2$$
これで、それぞれ\(x, y\)について偏微分をしてみよう。
先に、両方で使う\(z\)を\(u, v\)それぞれで偏微分したものを求めておく。
$$\frac{\partial z}{\partial u} = 2u$$
$$\frac{\partial z}{\partial v} = 2v$$
では、まず\(x\)による偏微分から求めていく。
公式によると、\(u\)を\(x\)で偏微分したもの、\(v\)を\(x\)で偏微分したものが分かればいいので、これらを求めていく。
$$\frac{\partial u}{\partial x} = 3$$
$$\frac{\partial v}{\partial x} = 4x$$
これで、公式に当てはめてみよう。
$$
\begin{eqnarray}
\frac{\partial z}{\partial x} & = & 2u \times 3 + 2v \times 4x \\
& = & 6(3x + y) + 8x(2x^2 – y) \\
& = & 16x^3 + 18x – 8xy + 6y
\end{eqnarray}
$$
と求めることができた。
同じように、今度は\(y\)で偏微分していく。
$$\frac{\partial u}{\partial y} = 1$$
$$\frac{\partial v}{\partial y} = -1$$
$$
\begin{eqnarray}
\frac{\partial z}{\partial y} & = & 2u – 2v \\
& = & 2(3x + y) – 2(2x^2 – y) \\
& = & 4y – 4x^2 +6x
\end{eqnarray}
$$
こうなる。
…さて、これで本当に合っているのだろうか。
ちょっと、ゴリゴリ展開して、普通に偏微分をしてみよう。
$$
\begin{eqnarray}
z & = & (3x + y)^2 + (2x^2 – y)^2 \\
& = & 9x^2 + 6xy + y^2 + 4x^4 – 4x^2y + y^2 \\
& = & 4x^4 + 9x^2 – 4x^2y + 6xy + 2y^2
\end{eqnarray}
$$
これについて、それぞれで偏微分した結果が以下の通り。
$$\frac{\partial z}{\partial x} = 16x^3 + 18x – 8xy + 6y$$
$$\frac{\partial z}{\partial y} = 4y – 4x^2 + 6x$$
これで、両方とも一致することが分かった。
このように、2変数関数でも合成関数の微分を考えることができる。
これは3変数以上でも同じだ。
最後に、3変数の場合の式だけ紹介して今回は終わりにしよう。
ある変数\(z\)が\(t, u, v\)の関数で、この\(t, u, v\)がそれぞれ\(x, y, w\)の関数だったとしよう。
つまり、以下の関係になっている、ということだ。
$$z = f(t, u, v)$$
$$t = g(x, y, w)$$
$$u = h(x, y, w)$$
$$v = k(x, y, w)$$
このとき、最終的に\(z\)は以下のように書き直せ、\(x, y, w\)の3変数を持つ関数だと分かる。
$$z = f(g(x, y, w), h(x, y, w), k(x, y, w))$$
具体例だと…
$$z = (x + 2y + w)^2 + (3x – y + 2w)^2 + (4x + 5y – w)^2$$
というような感じ。
この、それぞれ\(x, y, w\)による偏微分は以下のようになる。
$$\frac{\partial z}{\partial x} = \frac{\partial z}{\partial t} \frac{\partial t}{\partial x} + \frac{\partial z}{\partial u} \frac{\partial u}{\partial x} + \frac{\partial z}{\partial v} \frac{\partial v}{\partial x}$$
$$\frac{\partial z}{\partial y} = \frac{\partial z}{\partial t} \frac{\partial t}{\partial y} + \frac{\partial z}{\partial u} \frac{\partial u}{\partial y} + \frac{\partial z}{\partial v} \frac{\partial v}{\partial y}$$
$$\frac{\partial z}{\partial w} = \frac{\partial z}{\partial t} \frac{\partial t}{\partial w} + \frac{\partial z}{\partial u} \frac{\partial u}{\partial w} + \frac{\partial z}{\partial v} \frac{\partial v}{\partial w}$$
…紹介はしたものの、かなり複雑なので使用時には補足することとしよう。
おわりに
今回は、多変数関数の微分について解説した。
結局は、注目する変数のみを変数、それ以外を定数と見て微分しよう、というお話だ。
合成関数の偏微分も紹介したが、やはり慣れないとなかなか計算は難しい。
今後使う例が出てくると思うので、その時に再度解説することとしよう。
さて、次回はようやくニューラルネットワークっぽい話題に入る。
これまでにも何度か名前を出していた、勾配降下法というものを解説しよう。
…実は幾つか本の内容を飛ばしてしまったところもある。
それらについては、必要時に随時解説を入れていこう。
2020/11/08追記
勾配降下法の解説を公開した。
一回で理解するのは恐らく難しいので、何度か繰り返し読んでみよう。
コメント