技術をかじる猫

適当に気になった技術や言語、思ったこと考えた事など。

ニューラルネットワークの自分メモ

ゼロDeep をすこしづつ読んで、過去読んだ機械学習本の記憶と絡めて、改めてニューラルネットワークを再理解したというはなし。
自分用メモなので、これを読んで理解できるかは別問題。

ニューラルネットワークは、よくイメージされる相互に接続されるニューロンシナプスを模倣した図を連想しがちだけど、現実的には結構違う。

  • ニューロンは活性関数と呼ばれる所定の計算式(活性関数と言う)で表される。
    ただし、活性関数は認識したい対象としての引数の他に、パラメータ(これも引数じゃねーのかというツッコミはなしで)を受け取って計算する。
    パラメータは、計算式の中に埋め込む「係数」の値で、これが変われば同じソースを与えても出力結果が異なってくる。
    ニューラルネットワークの学習は、このパラメータ(係数)の値を最適なように変化させていく。
  • ニューラルネットワークは、ニューロンの階層構造だ。
    「複数個のニューロン(個別に影響なし)を配置したものを第一層」「その結果を行列とかで引数として受け取って処理する、これまた相互に影響しない複数子のニューロンを第二階層」…という形で、複数階層を織りなすニューロンの重なりを、ニューラルネットというっぽい。
    脳みそと違って、相互の連携ではなく、認識の方向性が一方向だという点(これはフォワード型というのが直線的でわかりやすい。ぐぐれ。最終計算結果をもう一度NNにかける方式もあるが、処理の方向は一定)。
  • 最終階層で結果判定用ニューロン階層が、「俺、XXニューロンだけど、XXの可能性 YY% だわー」って反応を返す。

こんなつくりがニューラルネットワークということらしい。
DeepLerning の定義まで進んでないので、読み進めないとなぁ…