まったりAI勉強記

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

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

どうも、カタミチです。

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

ついに…最終回です!

いやー、とうとうここまできました。とりあえず感想はあとに回すとして、やっていきたいと思います。今日は「発展編」の8節からですね。いってみよー!

 

11-8. 重み行列の初期化

f:id:feh_asama:20220412153609j:image

この節で紹介されているのは、勾配降下法の重み行列の初期値についての工夫ですね。

10章のディープラーニングモデルの実装のところで「He normal」ってやつがでてきました。これは、活性化関数にReLU関数を使っている場合に適した方式と言われているようです。

本節にも説明がありますが、前の節で書いてあった説明のほうが分かりやすかったので再掲。

平均0、分散1の正規分布乱数(値の発生確率が正規分布に従うような乱数)を一定値(\( \sqrt{\frac{N}{2}} \):Nは入力データの次元数)で割った値を重み行列の初期値とする。

なぜこれが初期値に最適なのか?については多くの研究の成果だという説明にとどまっていたので、やっぱりちょっと難しい理論が裏にあるんでしょうねー。

ちなみに「He normal」の『normal』は『正規分布』みたいな意味のようなんですが、『He』ってのはなんだろう?何かの略?彼?ヘリウム?

…どうやら『人の名前』らしいです。Heさん。先入観から男性っぽい…と思ってしまいましたが、もしかしたら女性だったりするんですかねー。…とりあえず、私の検索力ではそれ以上のことは分かりませんでした。いずれにせよ、重みの初期値について情熱を傾けた人だというのは確かでしょうね。

 

他にも、「Glorot Uniform」っていう初期化方法もあるようです。

重み行列から見た入力層ノードの次元数を\(N_1\)、出力層ノードの次元数を\(N_2\)とする場合、

\( limit= \sqrt{\frac{6}{N_1+N_2}} \)

で計算した値を基に区間\([-limit,limit]\)の一様乱数により初期化するようです!

…一様乱数ってなんだろ?と思って調べてみたら、「数値が同じ確率で出現する確率分布に従う乱数」らしいです。サイコロの目みたいなやつですね。

なんで分子が\(6\)なのか、とか疑問はありますが、次元数をもとに乱数を生成してそれを初期値としてるって言う点は「He normal」と同じですね。どうやらそのあたりが初期値を決める上でのポイントになっているんでしょうねー。

 

11-9. 次の頂上に向けて

f:id:feh_asama:20220412153618j:image

さて、最後の節ですね。

ここは、まだまだ先があるぞ!というお話ですね。転移学習、Teacher-Studentモデル、GAN、DQNといったキーワードが紹介されていました。

しかし、ディープラーニングでは基本的に、本書に書かれていた勾配降下法による方式が利用されているようです。これからの勉強の素地となる知恵は手に入れた…ということになりますかね!

 

ということで

いやー、ついに読了です!(感無量)。

3月11日に読み始めたので、1ヶ月強かけて読んだことになります。2週間くらいで読みきれるかなぁ、と思っていたんですが、ぜんぜん見込みが甘かったですね(汗)。ことによると、著者の方と編集の方の次くらいには本書に向かい合う時間が長かったんじゃないか、と思うほどです(言い過ぎ)

しかし、ちょうど今の私のレベルにフィットしていて、本当に勉強になりました。

前半は「無理なく数学の知識が入ってくる」という感じで地ならしができ、後半は「漫然と読んでいたら置いていかれるけど、しっかり対話的に読めば理解できる」という感じだったので、挫折することなく、かつ手応えを感じられるところまで到達できたと思っています。

次回、本書についての感想と、どんな人におすすめか、というのを書いて、本書についての記事を閉じたいと思います!

ではまた。