まったりAI勉強記

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

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

どうも、カタミチです。

さて、今日も「最短コースでわかる ディープラーニングの数学」のひとり読書会、やっていきたいと思います。

今日から6章「確率・統計」ですね。ついに「理論編」の最後のステージに突入です。今回は前半戦。さぁ…行ってみましょう!

 

6-1. 確率変数と確率分布

f:id:feh_asama:20220322072141j:image

さてこの節は「確率の分野は用語や表記が独特だからちゃんと押さえておいてね!」という感じの、読みもの的な節ですね。

まず、通常の関数では変数と呼ばれる入力の値は、確率では確率変数と呼ばれること。その確率変数を例えば\(X\)とした場合、確率は\(P(X)\)と表すことが書かれていました。確率を表すこの\(P\)って文字は固定で、後ろの\(X\)を変えて違いを表すよ!とありました。

そう言えばそうだなー、と思いました。確率については統計検定2級の勉強をしていた頃にひととおり勉強した(はず)のですが、通常の関数との表記の違いって視点で意識したことがぜんぜん無かったので、ひとつ、新たな視座が得られました(ふむふむ)

ちなみになんで\(P\)なのか?ってのを改めて調べてみたところ、Probabilityの頭文字を取ったようです。意味はそのまんま「確率」って意味ですが、他にも「ありそうなこと」「公算」みたいな意味もあります。

また、例えば確率変数\(X=2\)のときの確率が\(\frac{1}{6}\)である場合、こんな感じで表記できます。

\(P(X=2)=\frac{1}{6}\)

通常の関数だと\(f(2)\)みたいな感じでかけるところ、変数名の\(X\)も残す必要がある…ってところが少しまどろっこしいですね。この普通の関数との表記の違いは、やっぱり「確率」という分野の起源的な話が関係しているんですかねー。余裕のある時に調べてみたいところではありますね。

あと、確率変数のとりうるそれぞれの値について、確率の値を表形式にまとめたものを確率分布といいます。この確率分布をグラフに表そうとすると、離散値なので通常の関数みたいな感じでは書けません。そこで、確率変数ごとの確率の値をそれぞれ棒グラフで表す、ヒストグラムってやつで表現することになります。まぁ「サイコロの目(確率変数)と、その目が出る確率の確率分布」みたいなものをヒストグラムで表してみても、同じ高さの棒グラフが並ぶだけですが…。

で、この節の最後に出てきたのが…二項分布ですね。統計の勉強をしていると、しばしば重要人物として登場してきますが、やはり機械学習の世界でも重要なんですね。

「1か0かの結果となる独立した試行をn回行ったときに、1の結果が出た回数を確率変数とした場合の確率分布」のことですね。この時の確率変数には、添字を付けて「\(X_n\)」って書く感じですね。

 

6-2. 確率密度関数と確率分布関数

f:id:feh_asama:20220322072149j:image

さて、前節の二項分布についてさらに深堀りしていくのが本節です。二項分布のヒストグラムは、\(n\)をどんどん大きくしていくと、横軸を\(X_n\)縦軸を\(P(X_n)\)とした関数のグラフっぽいものに見えてきます。そいつを正規分布関数と呼んで、こんな式で表されます。

$$ f(x,\mu,\sigma)=\frac{1}{\sqrt{2 \pi} \sigma}exp(-\frac{(x- \mu)^2}{2\sigma^2}) \tag{1}$$

 

って、いきなり超複雑な式キター!(絶句)

 

…まぁ、今回本書では、式の導出については触れられていなかったので、私もスルーしますかねー。上の式内で出てきた変数ですが、\(x\)はそのまま確率変数\(X_n\)を\(x\)軸とした場合の値ですね。で、\(\mu\)と\(\sigma\)が何なのかというと、どちらも試行回数\(n\)と、試行回数が1回の時に1が出る確率\(p\)が分かっていれば具体的な数値として決まるものです。基本的には\(p\)と\(n\)を固定化した状態で\(x\)を変数として動かすと捉えると分かりやすそうですね。

ちなみに、\(\mu\)は「期待値」と呼ばれるやつで\(\mu=np\)で表され、\(\sigma^2\)は「分散」と呼ばれるやつで\( \sigma^2=np(1-p) \)で表されます。なんで\(\sigma\)は2乗しとんねん、というツッコミは、本質からズレそうなのでここではやめておきましょうかね。説明が必要だったらきっと、後の節や章で出てくるはずなので…。

ちなみにこの「\(n\)をどんどんデカくしていくと正規分布関数に近づいていく」性質のことは中心極限定理と呼ばれています。

さてここで、二項分布のヒストグラムと正規分布関数が本当に近い風味になるのか?を\(p=\frac{1}{2}\)、\(n=1000\)とした場合の例で、Pythonで確認してみよう!ということで、コードが書いてありました。

折角なので私も、Colaboratoryで書いてみることにしました。本書に書いてあるとおりにコードを書くぞー

はい、書き終わりました。

まず、二項分布のヒストグラムはこんな感じです。ちゃんとエラー無く表示されるかな…

どん!

 

f:id:feh_asama:20220322161824p:plain

良かった。表示された。棒グラフがひしめき合ってますね。

 

でもって、\(p=\frac{1}{2}\)、\(n=1000\)の正規分布関数はこちら…

どん!

 

f:id:feh_asama:20220322161752p:plain

さて、これらの2つのグラフを重ねて書いてみましょう…

どどん!

 

 

f:id:feh_asama:20220322120827p:plain

おー、バッチリ重なってる!

 

どうやら、かなり正確に表してるみたいですね。ちなみに、このヒストグラムの青い部分を全部足した面積は、1になります。確率変数をすべてのパターン網羅した場合、合計すると1になるというのは、確率というものの性質から当然のことではありますね。

今回は正規分布関数という特別な関数になりましたが、「確率変数が連続するっぽい値をとる」場合であれば同じように連続関数で表すことができる…ってことになり、これを確率密度関数と呼びます。正規分布関数は、確率密度関数の一種ってことになりますね。

特定の試行回数の範囲をとる確率を導きたければ、確率密度関数の積分を取ればよく、このときにとった積分の原始関数のことを確率分布関数と呼びます。なるほど、ここで積分が出てくるから積分の節があった…ってことなんですね(納得)

ちょっとこのあたりは、用語がたくさん出てきて、かつ似通っているので、混乱しないように正確に用語を押さえておく必要がありますかねー。

 

さて、ここでちょっと機械学習の話が入ります。

実数値から確率値を出したいような機械学習モデルの場合、本来であれば正規分布関数を使うのが良さそうです。しかしどうやらこの正規分布関数ってやつは、積分結果が解析的に解けないらしいです。…うー、「解析的に解けない」という話に理解は追いつきませんが、とりあえず「正規分布関数は式が複雑だから積分するのがめっちゃ大変そう」くらいは分かるので、うっすら理解しておきます…。

で、代わりに使われるのが前に出てきた「シグモイド関数」です。どうやら、シグモイド関数を微分したものが、正規分布関数とグラフの形が結構似てるらしいんです。つまり、シグモイド関数を微分したものを確率密度関数としてみなし、それを積分したもの…つまりシグモイド関数を確率分布関数とみなすことで、計算がしやすくなる…ってわけですね!

 

ということで

確率の分野については、二項分布、正規分布関数ってところをピンポイントで攻めてきた感じがありますね。しかし、最終的に「シグモイド関数で近似する」ってことなので、正規分布関数自体は今後あんまり出てこないんですかねー。

いずれにせよ、そこに至るプロセスは非常に大切だと感じたので、しっかりと理解しておきたいと思いました。

次は、確率・統計の章の後半戦。「尤度関数と最尤推定」についてです!

ではまた。