2層フィードフォワードニューラルネット
ニューロンモデルは入力空間を線で分けるという単純な機能しかない。
これを、素子としてたくさん組み合わせることで強力な力を発揮する。
このようにニューロンの集合体のモデルをニューラルネットワークモデルという。
今回は信号が逆戻りする経路がなく、一方にのみ流れるフィードフォワードニューラルネットを考える。
矢印が複雑になっているが、入力層に対してw00, w01, w02を重みとした出力が中間層(1層)になる。
その中間層にv00, v01, v02を重みとした出力が出力層(2層)になる。
入力値x0, x1の2次元に加えてダミーデータのx2から中間層2つのニューロンに情報が伝えられる。
このとき、i番目の入力からj番目のニューロンへの重みをwjiと書くことにするとj番目のニューロンの入力総和をbjとする。
b_{j} = \sum_{i=0}^{2} w_{ji} x_{i}
この入力総和をすぐも井戸関数に通すことで、中間層ニューロンの出力zjを得る。
z_{j} = h(b_{j})
シグモイド関数をδ()ではなく、h()にしたのは今後にシグモイド関数以外の特別な関数を使うことがあるため。
入力総和から出力を決定する何らかの関数という意味で、活性関数と呼ぶ。
この中間層の出力で、出力層のニューロンの活動が決まる。中間層j番目のニューロンから出力層k番目のニューロンへの重みをvkjで表し、出力層k番目のニューロンの入力総和akは
a_{k} = \sum_{j=0}^{2} v_{kj} z_{j}
このz2は、常に1の値を出力するダミーニューロンである。
出力層の出力ykはソフトマックス関数を使って
y_{k} = \frac{e^{a_{k}}}{\sum_{l=0}^{2} e^{(a_{k})}} = \frac{e^{(a_{k})}}{u}
になる。つまり、
u = \sum_{l=0}^{2} e^{(a_{l})}
になる。
出力ykの和y0+y1+y2が1となり、確率的な解釈が可能になる。
より一般的に、入力次元をD、中間層のニューロンの数をM、出力次元をKとする。
中間層の入力総和
b_{j} = \sum_{i=0}^{D} w_{ji} x_{i}
中間層の出力
z_{j} = h(b_{j})
出力層の入力総和
a_{k} = \sum_{j=0}^{M} v_{kj} z_{j}
出力層の出力
y_{k} = \frac{e^{a_{k}}}{\sum_{l=0}^{K-1} e^{(a_{l})}} = \frac{e^{(a_{k})}}{u}
ただし、ダミーニューロンの値を含めるとD+1, M+1になる。