2017-07-19 13 views
3

私の論文では、シーケンスからシーケンスへの変換ユースケースのために4層のディープネットワークを実行しています150 x Conv(64,5)x GRU(100)x softmax損失= 'categorical_crossentropy'の最終段階での活性化。ディープラーニング:ケラを伴う小さなデータセット:ローカルミニマム

トレーニングの損失と正確さが最適に収束する 検証の損失と精度がval_acc 97〜98.2の範囲に止まっているように見えて、それを超えて進まないようです。

私のモデルはオーバーフィットですか?

層間に0.2のドロップアウトが試行されました。

Output after drop-out 
    Epoch 85/250 
    [==============================] - 3s - loss: 0.0057 - acc: 0.9996 - val_loss: 0.2249 - val_acc: 0.9774 
    Epoch 86/250 
    [==============================] - 3s - loss: 0.0043 - acc: 0.9987 - val_loss: 0.2063 - val_acc: 0.9774 
    Epoch 87/250 
    [==============================] - 3s - loss: 0.0039 - acc: 0.9987 - val_loss: 0.2180 - val_acc: 0.9809 
    Epoch 88/250 
    [==============================] - 3s - loss: 0.0075 - acc: 0.9978 - val_loss: 0.2272 - val_acc: 0.9774 
    Epoch 89/250 
    [==============================] - 3s - loss: 0.0078 - acc: 0.9974 - val_loss: 0.2265 - val_acc: 0.9774 
    Epoch 90/250 
    [==============================] - 3s - loss: 0.0027 - acc: 0.9996 - val_loss: 0.2212 - val_acc: 0.9809 
    Epoch 91/250 
    [==============================] - 3s - loss: 3.2185e-04 - acc: 1.0000 - val_loss: 0.2190 - val_acc: 0.9809 
    Epoch 92/250 
    [==============================] - 3s - loss: 0.0020 - acc: 0.9991 - val_loss: 0.2239 - val_acc: 0.9792 
    Epoch 93/250 
    [==============================] - 3s - loss: 0.0047 - acc: 0.9987 - val_loss: 0.2163 - val_acc: 0.9809 
    Epoch 94/250 
    [==============================] - 3s - loss: 2.1863e-04 - acc: 1.0000 - val_loss: 0.2190 - val_acc: 0.9809 
    Epoch 95/250 
    [==============================] - 3s - loss: 0.0011 - acc: 0.9996 - val_loss: 0.2190 - val_acc: 0.9809 
    Epoch 96/250 
    [==============================] - 3s - loss: 0.0040 - acc: 0.9987 - val_loss: 0.2289 - val_acc: 0.9792 
    Epoch 97/250 
    [==============================] - 3s - loss: 2.9621e-04 - acc: 1.0000 - val_loss: 0.2360 - val_acc: 0.9792 
    Epoch 98/250 
    [==============================] - 3s - loss: 4.3776e-04 - acc: 1.0000 - val_loss: 0.2437 - val_acc: 0.9774 

答えて

2

あなたが提示したケースは本当に複雑なものです。あなたの質問に答えるためには、過学習が実際にあなたのケースで起こっている場合には、二つの質問に答える必要があります。

  1. を検証の上に得られた結果は満足のいく設定されていますか? - 検証セットの主な目的は、新しいデータが到着したときに何が起きるかについての洞察を提供することです。検証セットの精度に満足すれば、あまりにも過大すぎないとモデルを考えるべきです。
  2. トレーニングセットでモデルの極めて高い精度を心配する必要がありますか? - あなたのモデルはトレーニングセットでほぼ完璧であることに気付くかもしれません。これは、心にいくつかのパターンを学んだことを意味する可能性があります。通常、データには何らかのノイズがあり、モデルのプロパティがデータに完全であるということは、バイアスを学習するために容量の一部を使用している可能性があることを意味します。外れ値は通常これらの2つのグループにあります(モデルは、それをしきい値の上または下にプッシュしようとしています)ので、私は通常、スコアが最も低い正のサンプルまたは最高のスコアを持つ負のサンプルをテストすることをテストします。

したがって、これらの2つの懸念事項を確認した後、モデルがオーバーフィットしている場合、回答が得られることがあります。あなたが提示した振る舞いは本当に素晴らしいです。実際の理由は何でしょうか?訓練セットでは適切にカバーされていないバリデーションセットにはパターンがほとんどありません。しかし、これは機械学習ソリューションを設計する際に常に考慮する必要があります。

+0

は、モデル上の異なる順列をチェックするのに時間がかかりました。ネットワークがバイアを学習するために容量の一部を使用しているというあなたの見解は正しいです。検証するためにさまざまなモデル容量削減率を試しました。より低い容量では、トレーニングaccと検証精度の両方が並行して動く。一意のパターンを持つ検証セットの2回目の観察も当てはまります。両方のデータセットを手動で検証する時間がかかりました – Ajay

1

いいえ、これは過小ではありません。オーバーフィットは、トレーニングの損失が少なく、検証の損失が高い場合にのみ発生します。これは、訓練と検証の精度(分類の場合)との間で高い差として見ることもできます。

+0

sequence-to-sequenceユースケースでオーバーフィットをチェックするためにどのようなパラメータを使用できますか? – Ajay

関連する問題