まったりAI勉強記

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

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

どうも、カタミチです。

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

「ディープラーニングの数学」。ついにそのタイトルを回収する時がやってきました。いよいよ10章…「ディープラーニングモデル」だ!

さぁ…いってみよ〜

 

10-1. 例題の問題設定

f:id:feh_asama:20220409091945j:image

さて、今回の例題ですが、これまでと一味違います。今回使うデータセットは「mnist手書き数字」というやつです。解像度28×28の手書き数字のイメージデータが7万枚!含まれているようです。ついに画像認識がきましたねー。

これまでとデータ量のケタが違いますね。ディープラーニングには大量データが必要…というのも体感できそうですね。

f:id:feh_asama:20220406220804p:plain



10-2. モデルの構成と予測関数

f:id:feh_asama:20220409091953j:image

さて、今回のモデルですが、入力層と出力層の間に隠れ層が1層入った、3層ニューラルネットワークになります。

図を眺めてみると、出力層の活性化関数にはsoftmax関数を、隠れ層の活性化関数にはシグモイド関数を使うようです。

…ん?隠れ層の活性化関数にシグモイド関数を使うと、微分でどんどん小さくなるからいい手だと言えないと聞いてたんですが、3層くらいならむしろいい感じなんですかねー(ふむ)

入力データの解像度が28×28=784ってことで、784個のそれぞれのマスに対して、グレースケールで0(白)〜255(黒)取る…という考え方です。入力層のデータ数は784個ってことになりますね。これまで、バイアスも含めて入力データの要素は3個が最大だったところ、一気に爆増しましたね。

ここで用語の話ですが、入力データに重みを掛けた状態の、活性化関数を噛ませる前のベクトルのことを、中間値ベクトルと言うようです。覚えておきますかねー。ちなみに、隠れ層から出力層に向かうものも、活性化関数を噛ませる前のものは同じく中間値ベクトルと呼ぶようですね。

入力層から出力層に到達するまでのデータの流れは…

入力データ\(\boldsymbol{x}\)→重みベクトル\(\boldsymbol{V}\)を掛ける(\(\boldsymbol{a}=\boldsymbol{Vx}\))→中間値ベクトル\(\boldsymbol{a}\)→シグモイド関数\(f\)で活性化(\(b_i=f(a_i)\))→結果ノード\(\boldsymbol{b}\)→重みベクトル\(\boldsymbol{W}\)を掛ける(\(\boldsymbol{u}=\boldsymbol{Wb}\))→中間値ベクトル\(\boldsymbol{u}\)→softmax関数\(\boldsymbol{g}\)で活性化(\(\boldsymbol{yp}=\boldsymbol{g}(\boldsymbol{u})\))→結果ノード\(\boldsymbol{yp}\)

という感じのようですね。

ちなみに今回、隠れ層のノード数を128個にしているようです。ここも調整の余地があるパラメータという認識ですが、重みの初期値みたいな鉄板設定があるんですかねー(ふむ)

 

ということで

層の数とノードの数、それから新たな用語などは増えましたが、新たなワザは出てきませんでしたね。果たして、このまますんなり行くのか…?

ではまた。