FFNN
入出力
- FFNN (Feedforward Neural Network ;順伝播型ニューラルネットワーク)
- ネットワークにループする結合を持たず,入力ノード→中間ノード→出力ノードというように単一方向へのみ信号が伝播するもの
- MLP (Multilayer perceptron)とも呼ばれるが,FFNNではオリジナルのパーセプトロンとは異なり,ユニットの入出力関数はステップ関数に限定されない
- ユニットの入出力
- $ u = b + \sum_i w_i x_i $
- $x_i$: ユニットの入力
- $w_i$: 入力に対する重み
- $u$: ユニットの総入力
- $b$: バイアス
- $ z = f(u)$
- $z$: 出力
- $f$: 活性化関数 (activation function)
- $ u = b + \sum_i w_i x_i $
- 例
- 左の層に4つユニットがある
- 右の層に3つユニットがあり,左の層の出力を入力$x_i (i=1\ldots 4)$として受け取る
- ユニット間の結合は$3 \times 4 = 12$あるが,それぞれ異なる重み$w_{ji}$がある
- $\bold{u} = \bold{W} \bold{x} + \bold{b}$
- $\bold{z} = \bold{f} (\bold{u} )$
活性化関数
- ロジスティク(シグモイド)関数
- $ f(u) = \frac{1}{1+\exp(-u)}$
- 値域は$(0,1)$
- 双曲線関数
- $ f(u) = \tanh{u} = \frac{\exp(u) - \exp(-u)}{\exp(u) + \exp(-u)}$
- ロジスティクス関数と似た性質
- 値域は$(-1,1)$
- 正規化線形関数 (Rectified linear function)
- $ f(u) = \max(u,0) $
- シンプルで計算が早く,しかも精度が良いことが多いので,最近よく使われている
- この関数を持つユニットをReLU (Rectified linear unit)とよぶ
-
maxout
- 学習すべきパラメータのある活性化関数
- 区分線形関数
- 学習することで,ReLUや二次関数など,様々な関数に近似できる
- 隠れノードが十分にあれば任意の凸関数を近似可能
- 凸関数$f(x)$と$g(x)$からなる関数$f(x)-g(x)$は任意の関数を近似可能なことから,maxout$h_1(x)$と$h_2(x)$からなる関数$h_1(x) - h_2(x)$は任意の関数を近似可能
- そのため,「2層以上のmaxout」や,「1層以上のmaxout+1層以上のsoftmax」は任意の関数を近似可能
-
「各ユニットの活性化関数が非線形性を持つことが本質的に重要」
- 部分的に線形写像を使う場合がある
- 回帰問題では出力層の活性化関数に恒等写像関数
- クラス分類では出力層の活性化関数にsoftmax関数
- 「深いネットワーク構造を有効活用するには線形変換の後に非線形な活性化関数を適用する必要がある」(坪井らp16)
多層ネットワーク
- 入力層
- 中間層・隠れ層
- 出力層
- 問題に応じて中間層と異なる活性化関数を使うことが多い
誤差関数
- 誤差関数
- 訓練データとネットワークが表す関数の近さの尺度
- 損失関数とも
問題種別 | 出力層の活性化関数 | 誤差関数 |
---|---|---|
回帰 | 恒等写像 | 二乗誤差 |
二値分類 | ロジスティック関数 | |
多クラス分類 | softmax関数 | 交差エントロピー |