- 前回の「Part2]」では、すこし難しい画像を1000枚ほど追加することで、正解率が91%程度の難易度に問題を調整した。
- 今回は、ネットワークに隠れ層を追加し、正解率がどう変化するか実験する。
#実験1: 隠れ層を1層追加
- 隠れ層を1層追加することの効果を測る
- またそのニューロン数の違いが結果にどう影響するかを測る
- 追加する隠れ層のニューロン数は32, 128, 512の3種類
結果
- 横軸をエポック数、縦軸を正解率(1=100%)として、正解率の推移を比較
- 隠れ層0のグラフは前回の隠れ層無しの実験データ
考察
- 隠れ層を追加したネットワークはいずれも正解率が向上し、また収束に必要なエポック数は低下しており、隠れ層の効果が見て取れる。
- 但し、計測はしなかったが隠れ層のニューロン数を増やすほど計算時間は増加する傾向。ニューロン数512では隠れ層無しと比べて体感で数倍遅い。
- 正解率の観点でみると
- ニューロン数128および512が高く、512では最大99%、128では100%に到達した。
- 128のほうが結果がよいため、やみくもにニューロン数を増やせばよい、ということではないようだ。
- エポック数の観点でみると
- 128と512が優秀。すばやく収束している。
- 但し、実行速度を考慮すると128の方がすばやく収束したと思う。
- 以上、まとめると
- 隠れ層を1つ追加するだけで正解率は向上する
- 但し、そのニューロン数は多すぎても少なすぎてもよい結果が得られない。適した数を実験から見極める必要がありそう。
- ニューロン数を増やすほど実行速度が遅くなるため、なるべくニューロン数はふやしたくない。
実験2:隠れ層を2層追加
- 実験1で最も結果の良かった128ニューロンの隠れ層をもつネットワークに対して、さらに1層追加しそのニューロン数を変えながら認識率の推移を比較してみる。
結果
- 横軸をエポック数、縦軸を正解率(1=100%)として、正解率の推移を比較
- 128-0のグラフは実験1の128ニューロンのもの
##考察
- 正解率でみると
- 最終的にもっともよかったものは128-0。
- 層を追加したものはすべて正解率がさがっている。
- 第2層のニューロン数の差は結果にあまり影響はなさそう。
- エポック数でみると
- 隠れ層を2層にしたもののほうが速いが、劇的によくなったというわけではなさそう。
- 第2層のニューロン数の違いはあまり結果に影響していない模様。
- 以上、まとめると
- 単純に層を増やせば結果がよくなるということではない。反対に結果がわるくなることがある。
隠れ層1、ニューロン数128が今回の問題ではベスト。またしても正解率100%に到達!
- やっぱり隠れ層は効果がある。使い方は要注意だけれども。
- CNNなどのディープラーニング手法が多くの隠れ層をもってないことと今回の実験結果は合致する。