質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Keras

Kerasは、TheanoやTensorFlow/CNTK対応のラッパーライブラリです。DeepLearningの数学的部分を短いコードでネットワークとして表現することが可能。DeepLearningの最新手法を迅速に試すことができます。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

344閲覧

MLPでの分類モデルで、検証データに対してのlossは増え、accuracyはほとんど変わらない

onushinosenzo

総合スコア22

Keras

Kerasは、TheanoやTensorFlow/CNTK対応のラッパーライブラリです。DeepLearningの数学的部分を短いコードでネットワークとして表現することが可能。DeepLearningの最新手法を迅速に試すことができます。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2018/12/22 10:29

Python

1model = Sequential() 2model.add(Dense(1280, activation='relu', input_dim=1280)) 3model.add(Dense(128, activation='relu', kernel_regularizer=l2(0.001))) 4model.add(Dense(16, activation='softmax')) 5 6adam = Adam() 7model.compile(loss='categorical_crossentropy', 8 optimizer= adam, 9 metrics=['accuracy']) 10 11history = model.fit(sum_array, win_num, epochs=50, batch_size=50, validation_split=0.1)

上記のようなモデルでクラス分類をしようとしています。ライブラリはkerasです。
また、データのサンプル数は11066です。

学習した結果、教師データに対してのlossは減り、accuracyは上がっていますが、検証データに対してのlossは増え、accuracyはほとんど変わりません。
そこで3つ質問があります。
1.これは、いわゆる過学習なのでしょうか?
2.そもそもインプットとアウトプットに相関が無いのでしょうか?
3.モデルの構築が悪いのでしょうか?

最後に学習結果の詳細を載せておきます。
よろしくお願い致します。

Train on 9959 samples, validate on 1107 samples Epoch 1/50 9959/9959 [==============================] - 4s 383us/step - loss: 2.7796 - acc: 0.0898 - val_loss: 2.6770 - val_acc: 0.0921 Epoch 2/50 9959/9959 [==============================] - 2s 159us/step - loss: 2.6401 - acc: 0.0988 - val_loss: 2.6365 - val_acc: 0.1003 Epoch 3/50 9959/9959 [==============================] - 2s 157us/step - loss: 2.5906 - acc: 0.1169 - val_loss: 2.6315 - val_acc: 0.0822 Epoch 4/50 9959/9959 [==============================] - 2s 157us/step - loss: 2.5503 - acc: 0.1312 - val_loss: 2.6167 - val_acc: 0.0759 Epoch 5/50 9959/9959 [==============================] - 2s 157us/step - loss: 2.5222 - acc: 0.1430 - val_loss: 2.6681 - val_acc: 0.0840 Epoch 6/50 9959/9959 [==============================] - 2s 157us/step - loss: 2.4839 - acc: 0.1618 - val_loss: 2.6682 - val_acc: 0.1084 Epoch 7/50 9959/9959 [==============================] - 2s 156us/step - loss: 2.4393 - acc: 0.1830 - val_loss: 2.6624 - val_acc: 0.0858 Epoch 8/50 9959/9959 [==============================] - 2s 157us/step - loss: 2.3851 - acc: 0.1979 - val_loss: 2.6835 - val_acc: 0.1138 Epoch 9/50 9959/9959 [==============================] - 2s 157us/step - loss: 2.3347 - acc: 0.2206 - val_loss: 2.8269 - val_acc: 0.0831 Epoch 10/50 9959/9959 [==============================] - 2s 157us/step - loss: 2.2674 - acc: 0.2516 - val_loss: 2.8040 - val_acc: 0.0958 Epoch 11/50 9959/9959 [==============================] - 2s 156us/step - loss: 2.2017 - acc: 0.2713 - val_loss: 2.8630 - val_acc: 0.0949 Epoch 12/50 9959/9959 [==============================] - 2s 158us/step - loss: 2.1077 - acc: 0.3068 - val_loss: 2.8750 - val_acc: 0.0958 Epoch 13/50 9959/9959 [==============================] - 2s 160us/step - loss: 2.0331 - acc: 0.3330 - val_loss: 2.9791 - val_acc: 0.1147 Epoch 14/50 9959/9959 [==============================] - 2s 158us/step - loss: 1.9349 - acc: 0.3760 - val_loss: 3.1109 - val_acc: 0.0867 Epoch 15/50 9959/9959 [==============================] - 2s 158us/step - loss: 1.8242 - acc: 0.4162 - val_loss: 3.2083 - val_acc: 0.0894 Epoch 16/50 9959/9959 [==============================] - 2s 159us/step - loss: 1.7017 - acc: 0.4521 - val_loss: 3.3202 - val_acc: 0.0976 Epoch 17/50 9959/9959 [==============================] - 2s 160us/step - loss: 1.5772 - acc: 0.5059 - val_loss: 3.5508 - val_acc: 0.0967 Epoch 18/50 9959/9959 [==============================] - 2s 161us/step - loss: 1.4499 - acc: 0.5512 - val_loss: 3.6154 - val_acc: 0.0795 Epoch 19/50 9959/9959 [==============================] - 2s 160us/step - loss: 1.2994 - acc: 0.5986 - val_loss: 3.9680 - val_acc: 0.0985 Epoch 20/50 9959/9959 [==============================] - 2s 159us/step - loss: 1.1817 - acc: 0.6454 - val_loss: 4.0561 - val_acc: 0.0985 Epoch 21/50 9959/9959 [==============================] - 2s 162us/step - loss: 1.0436 - acc: 0.6904 - val_loss: 4.2487 - val_acc: 0.0903 Epoch 22/50 9959/9959 [==============================] - 2s 159us/step - loss: 0.9050 - acc: 0.7423 - val_loss: 4.6335 - val_acc: 0.0822 Epoch 23/50 9959/9959 [==============================] - 2s 160us/step - loss: 0.7936 - acc: 0.7859 - val_loss: 4.8384 - val_acc: 0.1003 Epoch 24/50 9959/9959 [==============================] - 2s 160us/step - loss: 0.6815 - acc: 0.8206 - val_loss: 5.1253 - val_acc: 0.0912 Epoch 25/50 9959/9959 [==============================] - 2s 159us/step - loss: 0.5615 - acc: 0.8689 - val_loss: 5.1821 - val_acc: 0.1102 Epoch 26/50 9959/9959 [==============================] - 2s 161us/step - loss: 0.4608 - acc: 0.8981 - val_loss: 5.6730 - val_acc: 0.0831 Epoch 27/50 9959/9959 [==============================] - 2s 155us/step - loss: 0.3616 - acc: 0.9363 - val_loss: 5.9853 - val_acc: 0.0939 Epoch 28/50 9959/9959 [==============================] - 2s 158us/step - loss: 0.3134 - acc: 0.9544 - val_loss: 6.4263 - val_acc: 0.0985 Epoch 29/50 9959/9959 [==============================] - 2s 156us/step - loss: 0.2537 - acc: 0.9720 - val_loss: 6.4534 - val_acc: 0.0967 Epoch 30/50 9959/9959 [==============================] - 2s 157us/step - loss: 0.2212 - acc: 0.9822 - val_loss: 6.8610 - val_acc: 0.0867 Epoch 31/50 9959/9959 [==============================] - 2s 155us/step - loss: 0.1816 - acc: 0.9920 - val_loss: 6.8734 - val_acc: 0.0967 Epoch 32/50 9959/9959 [==============================] - 2s 159us/step - loss: 0.1534 - acc: 0.9976 - val_loss: 7.0987 - val_acc: 0.0894 Epoch 33/50 9959/9959 [==============================] - 2s 155us/step - loss: 0.1312 - acc: 0.9995 - val_loss: 7.0684 - val_acc: 0.0939 Epoch 34/50 9959/9959 [==============================] - 2s 157us/step - loss: 0.1159 - acc: 0.9998 - val_loss: 7.1379 - val_acc: 0.0949 Epoch 35/50 9959/9959 [==============================] - 2s 155us/step - loss: 0.1081 - acc: 0.9999 - val_loss: 7.1717 - val_acc: 0.0930 Epoch 36/50 9959/9959 [==============================] - 2s 155us/step - loss: 0.1033 - acc: 0.9998 - val_loss: 7.0745 - val_acc: 0.0930 Epoch 37/50 9959/9959 [==============================] - 2s 156us/step - loss: 0.0973 - acc: 0.9999 - val_loss: 7.1893 - val_acc: 0.0976 Epoch 38/50 9959/9959 [==============================] - 2s 155us/step - loss: 0.0927 - acc: 0.9999 - val_loss: 7.1108 - val_acc: 0.0985 Epoch 39/50 9959/9959 [==============================] - 2s 155us/step - loss: 0.0876 - acc: 0.9999 - val_loss: 7.0680 - val_acc: 0.0967 Epoch 40/50 9959/9959 [==============================] - 2s 156us/step - loss: 0.0861 - acc: 0.9998 - val_loss: 7.1121 - val_acc: 0.0949 Epoch 41/50 9959/9959 [==============================] - 2s 155us/step - loss: 0.0803 - acc: 0.9998 - val_loss: 7.1095 - val_acc: 0.0903 Epoch 42/50 9959/9959 [==============================] - 2s 156us/step - loss: 0.0812 - acc: 0.9996 - val_loss: 7.3875 - val_acc: 0.0967 Epoch 43/50 9959/9959 [==============================] - 2s 156us/step - loss: 0.8673 - acc: 0.7276 - val_loss: 6.2706 - val_acc: 0.0967 Epoch 44/50 9959/9959 [==============================] - 2s 158us/step - loss: 0.3477 - acc: 0.9139 - val_loss: 6.6523 - val_acc: 0.0985 Epoch 45/50 9959/9959 [==============================] - 2s 157us/step - loss: 0.1549 - acc: 0.9849 - val_loss: 7.1594 - val_acc: 0.0930 Epoch 46/50 9959/9959 [==============================] - 2s 159us/step - loss: 0.0976 - acc: 0.9991 - val_loss: 7.2646 - val_acc: 0.0894 Epoch 47/50 9959/9959 [==============================] - 2s 157us/step - loss: 0.0818 - acc: 0.9998 - val_loss: 7.3628 - val_acc: 0.0894 Epoch 48/50 9959/9959 [==============================] - 2s 159us/step - loss: 0.0767 - acc: 0.9998 - val_loss: 7.4293 - val_acc: 0.0921 Epoch 49/50 9959/9959 [==============================] - 2s 158us/step - loss: 0.0719 - acc: 0.9999 - val_loss: 7.3746 - val_acc: 0.0903 Epoch 50/50 9959/9959 [==============================] - 2s 158us/step - loss: 0.0685 - acc: 0.9999 - val_loss: 7.4036 - val_acc: 0.0939

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

1.これは、いわゆる過学習なのでしょうか?

でしょうね。

2.そもそもインプットとアウトプットに相関が無いのでしょうか?

それは検討してみないとなんとも・・・な世界です。そういう可能性もあるし、モデルが駄目すぎる可能性もあります。

3.モデルの構築が悪いのでしょうか?

最初の層のユニット数がデータ次元数と同じというのは確実に過学習しそうなポイントです。少ない方が汎化性能に関しては有利です。また、Batch Normalization入れるとかもう少しやれることはあるでしょう。


私の勝手な意見ですが、通常のベクトルデータに対する分類タスクであればあえてNNを使う必要もないと思います。性能の出しやすい分類器は幾らでもあるので(NNは性能を出すのに苦労する部類)。

ランダムフォレストで木の本数を多め(1000以上)にして学習させると、特別な配慮(パラメタ調整だったりデータの前処理だったり)なしでもデータから引き出せる最高性能の7~9割は出せる感触があるので、まずはそれをやってみて様子を見た方が良いですね。

投稿2018/12/22 10:41

編集2018/12/22 10:41
hayataka2049

総合スコア30933

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

onushinosenzo

2018/12/22 10:55

丁寧なご回答ありがとうございます。 やはり過学習なのですね。Batch NormalizationやDrop outなども試したのですが、結果が同じようなものになりました。 ランダムフォレストも調べて試してみようと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問