web-dev-qa-db-fra.com

Comment comprendre la perte acc val_loss val_acc dans l’ajustement du modèle de Keras

Je suis nouveau sur Keras et ai quelques questions sur la façon de comprendre les résultats de mon modèle. Voici mon résultat: (pour votre commodité, je ne fais que coller la perte acc val_loss val_acc après chaque époque ici)

Former sur 4160 échantillons, valider sur 1040 échantillons comme ci-dessous:

Epoch 1/20
4160/4160 - loss: 3.3455 - acc: 0.1560 - val_loss: 1.6047 - val_acc: 0.4721

Epoch 2/20
4160/4160 - loss: 1.7639 - acc: 0.4274 - val_loss: 0.7060 - val_acc: 0.8019

Epoch 3/20
4160/4160 - loss: 1.0887 - acc: 0.5978 - val_loss: 0.3707 - val_acc: 0.9087

Epoch 4/20
4160/4160 - loss: 0.7736 - acc: 0.7067 - val_loss: 0.2619 - val_acc: 0.9442

Epoch 5/20
4160/4160 - loss: 0.5784 - acc: 0.7690 - val_loss: 0.2058 - val_acc: 0.9433

Epoch 6/20
4160/4160 - loss: 0.5000 - acc: 0.8065 - val_loss: 0.1557 - val_acc: 0.9750

Epoch 7/20
4160/4160 - loss: 0.4179 - acc: 0.8296 - val_loss: 0.1523 - val_acc: 0.9606

Epoch 8/20
4160/4160 - loss: 0.3758 - acc: 0.8495 - val_loss: 0.1063 - val_acc: 0.9712

Epoch 9/20
4160/4160 - loss: 0.3202 - acc: 0.8740 - val_loss: 0.1019 - val_acc: 0.9798

Epoch 10/20
4160/4160 - loss: 0.3028 - acc: 0.8788 - val_loss: 0.1074 - val_acc: 0.9644

Epoch 11/20
4160/4160 - loss: 0.2696 - acc: 0.8923 - val_loss: 0.0581 - val_acc: 0.9856

Epoch 12/20
4160/4160 - loss: 0.2738 - acc: 0.8894 - val_loss: 0.0713 - val_acc: 0.9837

Epoch 13/20
4160/4160 - loss: 0.2609 - acc: 0.8913 - val_loss: 0.0679 - val_acc: 0.9740

Epoch 14/20
4160/4160 - loss: 0.2556 - acc: 0.9022 - val_loss: 0.0599 - val_acc: 0.9769

Epoch 15/20
4160/4160 - loss: 0.2384 - acc: 0.9053 - val_loss: 0.0560 - val_acc: 0.9846

Epoch 16/20
4160/4160 - loss: 0.2305 - acc: 0.9079 - val_loss: 0.0502 - val_acc: 0.9865

Epoch 17/20
4160/4160 - loss: 0.2145 - acc: 0.9185 - val_loss: 0.0461 - val_acc: 0.9913

Epoch 18/20
4160/4160 - loss: 0.2046 - acc: 0.9183 - val_loss: 0.0524 - val_acc: 0.9750

Epoch 19/20
4160/4160 - loss: 0.2055 - acc: 0.9120 - val_loss: 0.0440 - val_acc: 0.9885

Epoch 20/20
4160/4160 - loss: 0.1890 - acc: 0.9236 - val_loss: 0.0501 - val_acc: 0.9827

Voici mes compréhensions:

  1. Les deux pertes (perte et val_loss) sont en diminution et le remorquage acc (acc et val_acc) augmente. Cela indique donc que la modélisation est bien entraînée.

  2. Le val_acc est la mesure de la qualité des prévisions de votre modèle. Donc, pour mon cas, il semble que le modèle ait été assez bien formé après 6 époques, et la formation au repos n’est pas nécessaire.

Mes questions sont:

  1. L'acc (le jeu d'apprentissage) est toujours plus petit, en fait beaucoup plus petit, que val_acc. Est-ce normal? Pourquoi cela se produit? Dans mon esprit, acc devrait normalement ressembler à mieux que val_acc.

  2. Après 20 époques, le nombre de personnes augmente toujours. Donc, devrais-je utiliser plus d'époques et arrêter quand acc cesse d'augmenter? Ou je devrais arrêter là où val_acc cesse d'augmenter, quelles que soient les tendances de l'acc?

  3. Y a-t-il d'autres réflexions sur mes résultats?

Merci!

17
Rocco

Répondre à vos questions:

  1. Comme décrit officiellement keras FAQ

la perte d'apprentissage correspond à la moyenne des pertes sur chaque lot de données d'apprentissage. Étant donné que votre modèle évolue avec le temps, la perte sur les premiers lots d'une époque est généralement plus élevée que sur les derniers. D'autre part, la perte de test pour une époque est calculée à l'aide du modèle tel qu'il se présente à la fin de l'époque, ce qui entraîne une perte plus faible.

  1. La formation doit être interrompue lorsque val_acc cesse d'augmenter, sinon votre modèle sera probablement trop chargé. Vous pouvez utiliser le rappel anticipé pour arrêter l'entraînement.

  2. Votre modèle semble atteindre de très bons résultats. Continuez votre bon travail.

18
Ioannis Nasios