どうも、カタミチです。
さて、今日も「最短コースでわかる ディープラーニングの数学」のひとり読書会、やっていきたいと思います。
今日から4章です。「多変数関数の微分」ですね。2章で微分はマスターしたと思っていたんですが、あれはあくまで1変数での微分でした。ここでは2変数以上の微分を扱うようですね。さぁ、行ってみましょう!
4-1. 多変数関数
関数とは何かの「入力」を受け付けて、一定のルールのもと変換した「出力」を返す「箱」って話でしたが、「入力」の数を1つではなく複数に増やしたやつが「多変数関数」ってやつですね。ちなみに「出力」は1つのままですね。
で、ここでまたポイント。「本書で今後扱う多変数関数のほとんどが損失関数である」とのこと。おそらくこの後、ディープラーニングにおける微分の集大成みたいな話になっていくと思うんですが、このポイントはイメージしながらやっていきますかねー。
今後の話の展開としては、ぎりぎりグラフで表現できてイメージしやすい2変数関数を起点に拡張していく流れですね。2変数関数のグラフは、3次元空間内の曲面になる感じですね。
4-2. 偏微分
さて、多変数関数の微分に入っていきます。まずは偏微分という概念。これは、1つの変数だけが変化するものとして、残りの変数を定数とみなすもののようです。
本書内にも例題がありましたが、理解を深めるために、いつものように勝手に例題。
勝手に例題:\( L(u,v) = u^3+4uv-v^2 \)を\(u\)、\(v\)のそれぞれについて偏微分せよ。
「\(L\)を\(u\)で偏微分する」を数式で表現すると\( \frac{\partial L}{\partial u} \)と書くようです。普通の微分の\(d\)を\(\partial\)に変えた感じですね。
何やら怪しげな記号が出てきましたが、この記号「\( \partial \)」は「デル」とか「ラウンド」とか「ラウンドディー」とか「ラウンドデルタ」とか「パーシャル」って読むみたいです。
…読み方の通説多すぎやろ!
いやー、前も何かの記号の読み方の時に思いましたが、数学者って人たちは読み方を揃える気が無いんですかね(涙目)。ものの本には、「数学とは世界で最も普及している世界共通言語である」って書いてあったんですが、だったら読み方も統一してほしいですね…。まぁ、数学者はみんな我が強そうだから、自分の馴染んだ読み方を譲らなかったりするのかなぁ(イメージ)。
とりあえず私はパーシャルって読むことにします。理由は、ブログ記事書く時に「\partial」と書くと「\( \partial \)」と表示されるからです(単純)。
…そういえば、例題の途中でしたね(汗)。
まぁ、解答はカンタンで…
\( \frac{\partial L}{\partial u} = 3u^2+4v\)
\( \frac{\partial L}{\partial v} = -2v+4u\)
ですね。偏微分する変数以外の変数は定数扱いになるので、「偏微分」って名前が難しそうな割には大したことはありませんね。
で、当然、次元拡張可能ってことで、3変数以上にも同じ考え方が適用できるようです。…まぁ、それができなかったらディープラーニングの計算にはそもそも使えないでしょうから、逆説的に必然とも言えますかね(メタ発言)。
4-3. 全微分
さて、偏微分が楽勝だったので、きっとこの全微分とかいうやつも楽勝でしょう(得意顔)。とりあえず結果だけ先に見ると、2変数の全微分の公式は…
$$dL=\frac{\partial L}{\partial u}du+\frac{\partial L}{\partial v}dv$$
こんなやつです。
あー、そーゆーことね、完全に理解した(←わかってない)
…まぁ、見た目にはそんなに難しくないですね。
ということで、この全微分の定義の導出です。ここで再び出てくるのが、グラフに「無限に近づく」という概念。1変数の場合は無限に近づくことで曲線が直線に見えるんでしたね。2変数の場合はというと…曲面が平面に見える!
ということで、この「平面」を使って上の公式を導く過程が、図も交えて丁寧に書かれていたんですが…
…
…
…
だめだ、分からん(挫折)。
スーパーマリオに例えるなら、ステージ4-3が始まった途端いきなりハンマーブロスが出てきて、それをなんとか飛び越えたと思ったら、着地地点にトゲゾーがいてあえなくダウン…みたいな感じでしょうか(分かりにくいたとえ)。
このままではステージ4-3で全機失ってGAMEOVERになってしまう…。ということで、セカンドオピニオンを聞いてみることにしました。
まず聞いてみたのは…
ちょくちょくお世話になっている、ヨビノリ先生の動画。
うん、ちょっとだけ分かりました。ただひとつ大きな「?」が浮かんだのが、直線の傾きに\(x\)軸方向の移動距離をかけると\(f(x)\)軸方向の移動距離になるってところ。しかしこれは、1次関数で具体的な数値を当てはめて考えてみたら「確かにそうやな」と理解できました。
さらに、サードオピニオンも聞いてみました。お初にお目にかかったこちらの方の動画。
はい。別の先生から同じような説明をしてもらった感じでした。とりあえず理解が補強されました。で、これら2つの動画を見た上で本書に戻って読んでみると…
理解できました。(ふぅ)
結局、上の2つの動画とは表現が少し違うものの、同じことを言っていたことが分かりました。
余談ですが、現代って、こうやって「同じテーマの授業を複数の先生から受けることができる」っていうのがありがたいですよね。テーマは同じでも、言い回しや説明方法が微妙に違っていたりしますし、どの先生も繰り返し強調する部分は本当に重要なんだと分かる。
これって、どの先生が分かりやすいとかそういう話ではなく、色んな先生の授業を畳み込むように受けることで理解が深まる…という感覚。その点、今は非常に学習者に優しい時代だと思いますねー。
さて、ひとつ全微分の勝手に例題をやってみたいと思います。
勝手に例題:\(L=u^2v^4\)の全微分を求めよ
解:\( dL=\frac{\partial L}{\partial u}du+\frac{\partial L}{\partial v}dv = 2uv^4du+4u^2v^3dv \)
です!
うーん、\(du\)とか\(dv\)とかが残っているのがなんか気持ち悪いですね…。しかし解答としてはこれで正解のようです。
果たして、全微分をした結果ってのが本質的に何を表現しているのか?というのが、どうもスッキリしなかったので、もう少し動画を漁ってみたところ見つけたのが…
こちら。
ふむふむなるほどね。全微分は、ある1点から2変数を微小量変化させた時の変化量を示すものだけど、その1点から離れていくと曲面だから値はずれていくよー、ということですね。多少はスッキリしましたかねー。まぁ、完全に理解するためには、さらに深い勉強が必要だ…ということも分かりました。
おっと、忘れてました。2変数だけでなく、3変数以上でも同じ理屈が通じるので、全微分の公式を拡張すると…
$$dL=\sum_{i=1}^{N} \frac{\partial L}{\partial w_i}dw_i$$
ってことになりますね!
ということで
なんとか、全微分までクリアしました。正直「式の導出は分からなくても、公式だけ覚えておけば良いかな…という気持ちも一瞬よぎったんですが、それだと何のために数学の勉強を始めたのか?という部分がゆらぎそうだったので、少し時間を掛けて理解をすることにしました。とりあえず何とか乗り越えられたので良かったかなー。次はいよいよ勾配降下法ですね!
ではまた。