ゼロDeep をすこしづつ読んで、過去読んだ機械学習本の記憶と絡めて、改めてニューラルネットワークを再理解したというはなし。
自分用メモなので、これを読んで理解できるかは別問題。
ニューラルネットワークは、よくイメージされる相互に接続されるニューロンとシナプスを模倣した図を連想しがちだけど、現実的には結構違う。
- ニューロンは活性関数と呼ばれる所定の計算式(活性関数と言う)で表される。
ただし、活性関数は認識したい対象としての引数の他に、パラメータ(これも引数じゃねーのかというツッコミはなしで)を受け取って計算する。
パラメータは、計算式の中に埋め込む「係数」の値で、これが変われば同じソースを与えても出力結果が異なってくる。
ニューラルネットワークの学習は、このパラメータ(係数)の値を最適なように変化させていく。 - ニューラルネットワークは、ニューロンの階層構造だ。
「複数個のニューロン(個別に影響なし)を配置したものを第一層」「その結果を行列とかで引数として受け取って処理する、これまた相互に影響しない複数子のニューロンを第二階層」…という形で、複数階層を織りなすニューロンの重なりを、ニューラルネットというっぽい。
脳みそと違って、相互の連携ではなく、認識の方向性が一方向だという点(これはフォワード型というのが直線的でわかりやすい。ぐぐれ。最終計算結果をもう一度NNにかける方式もあるが、処理の方向は一定)。 - 最終階層で結果判定用ニューロン階層が、「俺、XXニューロンだけど、XXの可能性 YY% だわー」って反応を返す。
こんなつくりがニューラルネットワークということらしい。
DeepLerning の定義まで進んでないので、読み進めないとなぁ…