Deep Learning Tutorial

chainer and python

中間層はどのぐらいが良いのか...?

ディープラーニングのモデルを作っている時に、一番気にするパラメータは中間層の数だろう。
残念ながら、それについての一般的な正解は現時点ではない。

中間層の層数と各層のサイズが大きくなればなるほどネットワークの柔軟性が増す。
さらに、訓練集合における誤差を小さくできる可能性もある。しかし同時に学習済みネットワークは訓練データに含まれるノイズも学習してしまう。
ネットワークサイズがある限界に達すると、訓練データに対する誤差も増加し始める。

ここの部分は職人芸と呼ばれるようなところだ。
セオリーとしては、中間層の素子数を入力の数Nよりも大きくとり、1層ずつ増やしていき精度を見ていくのがいいだろう。
一般には、あらゆる連続な非線形関数は3層ニューラルネットワークで近似できるということが証明されている。

以下では、論文に記述されていたもの。

Singular Value Decomposition (SVD)

入力層と中間層を結ぶシナプスの重みを行列化し、行列のrankの値を用いる。
中間層ニューロン数の最大値が、入力層ニューロン数と中間層ニューロン数の小さいほうとなる。
よって中間層で情報圧縮される場合に限定される。