tldr
ニューラルネットについて学習しました。
ニューラルネットとは
テーブルデータに対しては、中間層が2から4層程度の全結合層からなる多層パーセプトロン(Multi Layer Perceptron)という構造がよく使用される。
ある層のユニット i
の出力値 z_i
については、以下のように計算される
u_i = \sum_j z \prime_i w_i, j
シグモイド関数
出力値は[0,1]になる。
f(x) = \frac{1}{1+exp(-x)}
ソフトマックス関数
出力値を(0,1)に制限し、またそれぞれの出力の和は1となる
f_i (x_1, x_2, \dots , x_k) = \frac{exp(x_i)}{\sum_{k=1}^{K} exp(x_k)}
特徴
- 特徴量は数値
- 欠損値を扱うことができない
- 非線形や変数間の相互作用が反映される
- スケーリングの必要がある
- ハイパーパラメータ次第で精度がでないことがある
- 他クラス分類に比較的強い
- GPUでの高速化
- GBDTに比べるとモデリングやチューニングに手間がかかる
主なライブラリ
- keras
- pytorch
- chainer
- tensorflow