ニューラルネットワーク
ディープラーニング?
よく聞く「ディープラーニング(深層学習)」
なにが「ディープ(深い)」?
ニューラルネットワークが「深」く「層」になっているもの
ニューラルネットワーク
Neural(神経)のnetwork=生物の神経回路網
ニューロン(neuron; 神経細胞)が複雑に結合
たとえば人間の脳は140億個といわれる
電気信号による情報処理
これを数学的に模したものがいわゆる「(人工)ニューラルネットワーク(Artificial Neural Network)」
生物の神経回路網と「学習」
ニューロン(神経細胞)による情報伝達
軸索というケーブルでニューロン同士がつながっている
結合するインターフェースをシナプスという
シナプスを介して結合する他のニューロン(人間の脳で8000個程度)から電気信号(電気パルス)を受けると、ニューロン内の膜電位が変化(上下)する
シナプスの種類により、膜電位を上げる方向か下げる方向かが決まっている
どの程度上がるかは、シナプスの状態(シナプス伝達強度)により決まる
膜電位がある一定の値(閾値)を超えると「発火」する(電気信号(パルス)を放出する)
https://gyazo.com/e4cd0c6e7b8d2da4a3a93286dd4f5112
引用:伊庭斉志, 「進化計算と深層学習―創発する知能―」(2015)
要するに、シナプス伝達強度の強さによって、情報の伝わり方が変わる
生物の「学習」は、多くのシナプスのシナプス伝達強度が変化することで起こっている
このニューロンを数理的にモデル化する
しきい値関数
入力がしきい値を超えると不連続に値が変化する関数(ステップ関数)
ニューロンの「発火」を表現
$ g(s) = \begin{cases} {1 \ (s \geq \theta)} \\ {0 \ (s < \theta)} \end{cases}
https://gyazo.com/2221214b08c3613b1111b43c08dfbd9c
McCulloch-Pitsモデル
結合したニューロンからの「入力」を重みをつけて総和をとり(ここから、これを入力総和とよぶ。上の説明でいう膜電位にあたる)、この入力総和をしきい値関数にかける
重みは「シナプス伝達強度」を表現していると考える
$ a = w_1 x_1 + w_2 x_2 + \dots + w_M x_M = \sum_{i=1}^M w_i x_i
この$ a(入力総和)は線形回帰モデルそのもの
このときの $ y = g(a)がMcCulloch-Pitsモデル
多数のニューロンから入力を受け取り、その入力総和が閾値を超えると出力$ yとしてパルスを発火する、ということを模したモデル
ただし、ここでの$ yは、パルスそのものでなく、単位時間あたりのパルスの数(発火頻度)を表わすと考えるとよい(0から1の連続値をとると考える)
https://gyazo.com/326dc6bfed32588fbf101b2202f15f95
シグモイド関数への置き換え
やや天下り式だが、McCulloch-Pitsモデルの$ g(a)をシグモイド関数に置き換えてみる
(しきい値関数(ステップ関数)だと微分できなくて都合が悪い)
https://gyazo.com/ca82267c6249f4980b759367ef44a10f
上の図は2次元入力の場合だが、要するに、入力総和(線形和)をシグモイド関数にかけるというのは、ロジスティック回帰そのもの つまり、このモデルは、入力空間を直線で分割する関数となる
適当な重みを入れたときの例
https://gyazo.com/d530298fff7fb70ddf2344a5590ff246
これはしかし、線形分離可能な問題しか解けない!!