三層パーセプトロン
三層パーセプトロン
https://gyazo.com/e748fdfa0379c9e91421821d83c43379
入力層、中間層、出力層の3層からなるモデル
2層パーセプトロンと呼ばれることもある
入力層には、入力次元+1(常に1となるダミーニューロンを含む)のニューロンを置く(ここでは$ D次元として説明)
中間層には、指定した数+1(常に1となるダミーニューロンを含む)のニューロンを置く(ここでは$ M個として説明)
入力層→中間層には、ニューロンの組合せそれぞれに対して重みをもつ
ここでは$ w_{ji}とする($ jは中間層ニューロンのインデックス、$ iは入力層ニューロンのインデックス)
$ j番目の中間層ニューロンへの入力の総和は$ b_j = \sum^D_{i=0} w_{ji} x_i
中間層ニューロンでは、入力総和をシグモイド関数にかけて出力する:$ z_j = h(b_j)
このように変換する関数を活性化関数ともよぶ。シグモイド以外を使うこともある(ReLUなど)
出力層には、クラス数と同数のニューロンを置く(ここでは$ Kクラスあるとして説明)
中間層→出力層にも重みをもつ
ここでは$ v_{kj}とする($ kは出力層ニューロンのインデックス、$ jは中間層ニューロンのインデックス)
$ k番目の出力層ニューロンへの入力の総和は$ a_k = \sum^M_{j=0} v_{kj} z_i
出力層ニューロンでは、ソフトマックス関数にかけて出力する:$ y_k = \frac{\exp(a_k)}{\sum^{K-1}_{l=0}\exp(a_l)}=\frac{\exp(a_k)}{u} ここでちょっと演習用Colabファイルの解説
データの構造はこんな感じ
https://gyazo.com/feb6426512a353e78c501d5424616e72
※演習ファイルでは、T_trainでなくY_trainというように、変数名が若干異なります…
演習用Colabファイルでは、FNN(wv, M, K, x)という関数でこれらのb, z, a, yを計算している
https://gyazo.com/e2dbac213323ba51b2da03eae8eb60e3