LoginSignup
1
2

More than 5 years have passed since last update.

畳み込みニューラルネットワークにおけるデータ拡張の効果を調べてみた

Last updated at Posted at 2019-01-04

背景・目的

機械学習初心者が、畳み込みネットワークを理解するために、手書き数字画像データセット(MNIST)を用いてデータ拡張の効果を調べてみたので、備忘録として結果を保存する。

結果

・学習用データが十分にあるときはデータ拡張を行わなくてもそれなりの精度が出た。
・学習用データが少なすぎるとデータ拡張の効果が見られなかった。
・学習データ数210にてデータ拡張を行うと精度(Accuracy)が改善された。

※精度(Accuracy)はホールドアウトにて検証。
※学習データ数37800の精度はデータ拡張なしで 0.9912。
※赤→緑→青の順に試行錯誤しながらデータを取得したので、データ拡張以外にも学習方法等に若干の違いがある。
※学習epochはバリデーション精度がなんとなく安定するまで実施。感覚的にはデータ拡張やドロップアウトを行わない場合、epoch数を増やしても過学習をするのでバリデーション精度が頭打ちになる。データ拡張やドロップアウトをおこなう場合は過学習が防がれてepoch数をバリデーション精度が頭打ちにならない。

訓練用サンプル数と精度.jpg

データ拡張パラメータ

データ拡張はKeras.keras.preprocessing.image.ImageDataGeneratorで行った。

緑データ時のデータ拡張のパラメータ
ImageDataGenerator(rotation_range=5, width_shift_range=0.05, height_shift_range=0.05, zoom_range=0.05, shear_range=0.1)

青データ時のデータ拡張のパラメータ(緑のときよりもふり幅大)
ImageDataGenerator(rotation_range=30, width_shift_range=0.2, height_shift_range=0.2, zoom_range=0.2, shear_range=0.2)

実験に用いたニューラルネットワークの構造

実験には以下の構造の畳込ニューラルネットワーク ( CNN ) を使用。
ネットワーク構造.jpg

参考情報

機械学習で便利な画像データセット「MNIST」を丁寧に解説!
人工知能に関する断創録 Kerasによるデータ拡張 
Deep Neural Network Keras way

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2