まったりAI勉強記

AI(人工知能)について、特にゆかりがあるわけでもない社会人が、まったりとAIについて勉強していく勉強日記です。

【ひとり読書会】ディープラーニングの数学(第4回)

どうも、カタミチです。

さて、今日も「最短コースでわかる ディープラーニングの数学」の世界に飛び込みたいと思います。今日から「理論編」に入りたいと思います!

2-1. 関数

f:id:feh_asama:20220303172813j:image

まずは、すべての基本となる「関数」についてですね。

私も、機械学習の勉強を始めるより以前に「関数ってなーんだ?」と聞かれていたとしたら、ちょっと言葉に詰まったかもしれません。この本を含め、分かりやすく書かれているものを参考にすると…

関数とは「箱」。何かの「入力」を受け付けて、一定のルールのもと変換した「出力」を返す「箱」。

ですね。例えば「冷凍食品」という入力を受け付けて「ほかほかおかず」という出力を返す「電子レンジ」は、関数なのかもしれません(哲学)。

関数は\(f\)で表します。functionの頭文字ですね。変数\(x\)の関数は\(f(x)\)になる…というところは流石に大丈夫です。ただ、関数をグラフを書く場合には単に\(f(x)\)のグラフと言わずに「\(y=f(x)\)のグラフ」って表現されるというのは、ほんのり頭に馴染ませておいたほうが良さそうですかね。

 

2-2. 合成関数・逆関数

f:id:feh_asama:20220303180116j:image

引き続き「関数」に関連した話です。上位概念の「合成関数」と「逆関数」の話ですね。

合成関数については正直、定義忘れていました(汗)が、言われてみれば「ああ、それね」というやつです。「\(x\)の関数\(f(x)\)と\(g(x)\)があって、\(f(x)\)の出力が\(g(x)\)の入力になるようなもの」ですね。これを新たに合成関数\(h(x)\)と定義すると…

\( h(x)=g \circ f(x) \)

と書くらしいです。これ「\( \circ \)」なんて読むねんw

と思って調べたら…特に決まってないっぽいです(汗)。英語でも「サークル」とか「オブ」とか「アフター」とか呼んでるらしい。とりあえず「まる」って読んどくのが無難ですかね。「えいちえっくすいこーるじーまるえふえっくす」みたいな感じ。

\(g(f(x))\)とも表せるらしく、しかもこっちの方が直感的ですが、関数がめっちゃ入れ子になった場合に備えて「まる」を使う感じですかねー。たまに仕事でExcel使ってて、関数を駆使しすぎてカッコが入れ子になりまくって「この閉じカッコは、どこのカッコやねん!」みたいになることありますから、そういったことを避けるため…ですかね。

次に逆関数。「もしかして私たち逆関数の中で…入れ替わってる!?」的なやつです。「入力ちゃん」と「出力くん」が入れ替わった関数のことですね。\(f(x)\)の逆関数\(f^{-1}(x)\)という表し方になるみたいです。ここで、入れ替わり前と入れ替わり後のグラフは\(y=x\)の直線に対して対称な図形になるって性質は重要らしいのでメモっておきますかねー。

 

2-3. 微分と極限

f:id:feh_asama:20220306185237j:image

さて、関数に親しんだあとはいよいよ…微分だ!勾配降下法と言えば微分微分と言えば勾配降下法ですよ(逆は必ずしも真ならず)

本書の微分の説明を見ると…

関数のグラフ上のある点を中心に、グラフを無限に拡大していくとグラフは限りなく直線に近づく。この時の直線の傾きを微分という。

めっちゃ分かりやすい!

思わず、ペンを床に置いて地球を微分したくなりました(謎行動)

ちなみにこのことがイメージで分かるgifアニメが置いてあるURLが本書に記載されていたのでアクセスしてみましたが、さらに理解が進みました。ビジュアルで見るってやっぱり大事ですね。で「この時の直線」が接線とイコールなわけですね。ふむふむ。

で、微分\(f'(x)\)の定義はもちろんコレ!

$$f'(x)=\lim_{h \to 0}\frac{f(x+h)-f(x)}{h}$$

G検定の前にバッチリ覚えましたよー。…試験には一切出ませんでしたが(泣)

で、ここで直線の方程式が出てきます。点\((p,q)\)を通る傾き\(m\)の直線の方程式は…

$$y=m(x-p)+q\tag{1}$$

とあります。直線の方程式と言えば\(y=ax+b\)…(2)を思い浮かべるのですが、(1)の形のほうが汎用的なんでしょうね。ただ、ちょっと気になったのが、(2)だと\(a,b\)の2変数を固定すれば\(x,y\)の方程式が完成するのに対し、(1)だと\(m,p,q\)という3変数を固定する必要があるから大変なんじゃないかな…ということでした(数学シロウト)

しかし、実際に具体例に落として色々やってみた結果、どちらも、直線の傾きと通る点1点が分かれば\(x,y\)の方程式が完成することが分かりました。(2)の式の\(b\)というのは結局のところ、\((0,b)\)を通る…つまり\(x\)座標を0で固定することで変数を一つ潰してた…感じなんですかね。ちなみに、傾きが分からないけど通る点2点が分かっている場合についても、同様に(1)(2)ともに\(x,y\)の方程式は完成しました。

と、ここまで分かったところで、(1)を使って「接線の方程式」が出てきます。ある関数に対して接点\((a,f(a)\)\()\)を通る接線の傾きは、微分の定義から\(f'(a)\)なので、それを(1)に代入すると…

$$y=f'(a)(x-a)+f'(a)$$

これが接線の方程式らしいです。コラムに、ある関数が与えられているとき、関数外の1点を通る接線の方程式を求めるという例題がありました。どうやらこれが、今後勾配降下法を理解するうえで必要な考え方みたいです。例題には丁寧に解法が乗っていたので、理解が深まりました。やっぱり数学は解くことを通じることで理解が深まるもの…ですね。

ただしひとつ、傾きである\(f'(a)\)が、与えられた関数から一発で導出されていたところの理解が追いつきませんでした(汗)。微分の定義(limのやつ)から出した感じですかねー。微分の公式(\((x^n)'=nx^{n-1}\)みたいなやつ)は特に出てきていないので、おそらくそういうことなんだろうと理解しました。

ということで

理論編に入った初っ端で、いきなり引っかかってしまいましたが、適当な理解で先に進むと痛い目に合いそうなので、とりあえずゆっくり理解しながら進めていくことにしました。2章の「微分積分」はまだまだ先が長いので、がんばっていきますかねー。

ではまた。