ちびのはてな

「ちび(猫)」と「キノコ」から生まれた「ちびキノコ」。ドラゴンボール最強!純粋なサイヤ人のように生きたいと思っているモノ作りを楽しむ人です。IT技術で少しでも多くの人が笑顔になってくれたらいいなと。

【メモ】重みの初期値を工夫するアプローチ

これは、G検定のための個人的なメモであり、公式テキストから引用しながら自分の言葉でまとめているものである。

重みの初期値を工夫するアプローチ

活性化関数、RMSpropやAdam、ドロップアウトやEarly Stopping、いずれも学習の「途中」で工夫するテクニックである。学習の「始め」に工夫するテクニックとしては「入力データ」を正規化したり標準化したりなどの方法がある。しかし、入力データは活性化関数を通ることで徐々に崩れていってしまう。そして登場するのが「重み」の初期値を工夫するというアプローチ。

勾配降下法 によって、最適な重みを探していくわけですが、この重みの初期値はランダムで決めている。
もともとこの初期値は「一様分布」や「正規分布」に従う乱数が用いられていたが、ディープニューラルネットワークを用いた手法では上手くいかないケースがよくあるらしい。そこで、これらの「乱数」に「ネットワークの大きさに合わせた適当な係数」を掛けることで、データの分布が崩れにくい「初期値」がいくつか考えられた。

活性化関数 最適とされる重みの初期値
シグモイド関数 Xavier の初期値
ReLU He の初期値

バッチ正規化

入力データは活性化関数を通ることで徐々に崩れていってしまう。そして登場するのが「重み」の初期値を工夫するというアプローチ。

と、前述しているが、活性化関数を通るたびに値が変わってしまうならば、 各層において活性化関数を掛ける前に伝播してきたデータを正規化する のはどうだろうか。と、考えられたのが「バッチ正規化」である。