TensorFlow実験 その2

  1. はじめに
  2. 活性化関数
  3. 中間層の次数
  4. 最適化関数
  5. 損失関数

はじめに

前回のXORを学習させるコードをもとに色々パラメータを変えて実験してみた。数式レベルで理解しているのは極一部のため、数式は載せていない。また、学習させる内容によって関数を選択する必要があるようなのでXORで良い成績を出せれたからといって他の問題に適用するのは良くない模様。

活性化関数

活性化関数を色々試してみたが、sigmoid関数以外は全く学習しなかった。

中間層の次数

中間層(隠れ層)の次数を変えて学習成功率と成功した場合の学習回数の平均を調べてみた。2次では学習の失敗率が高いが、3・4次で成功率が上がった。3次と4次では成功率は同じ、学習回数は4次が若干少ない。このXORを学習させるためには次数が3~4次、つまり入力層の次数の1.5~2倍にすれば良いというのがわかった。しかし、実際の問題を解くときに入力層の次数の1.5~2倍で良いのかは不明。中間層の次数について、本とWebページをあたったが、実装者の経験則で決められていることが多いよう。

次数学習成功率学習回数
259%9930
387%9574
487%8810

最適化関数

中間層の次数は3次にして、最適化関数を変えて学習成功率と成功した場合の学習回数の平均を調べてみた。学習率はすべて0.2で行っている。RMSpropが学習回数が少ない(収束が早い)が学習の成功率が若干悪い。Adam, Adamax, Nadam等の

最適化関数学習成功率学習回数
SDG87%9574
Adadelta91%4430
Adagrad84%4431
Adam71%709
Adamax77%1560
Nadam89%790
RMSprop79%224

損失関数

中間層の次数は3次、最適化関数はNadamにして、損失関数を変えて学習成功率と成功した場合の学習回数の平均を調べてみた。 損失関数は変えると全然学習しないものがかなりあるので、学習回数があまりに少ないものについては、学習回数を調べなかった。LogCoshと MeanSquaredLogarithmicError が良い成績をだしている。

損失関数成功率学習回数
BinaryCrossentropy89%790
CategoricalHinge32%
Hinge33%
Huber85%308
KLDivergence0%
LogCosh87%243
MeanAbsoluteError24%
MeanAbsolutePercentageError0%
MeanSquaredError89%332
MeanSquaredLogarithmicError91%299
Poisson78%470
SquaredHinge17%

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です