web-dev-qa-db-fra.com

Que signifie la sortie standard du modèle Keras? Qu'est-ce que l'époque et la perte au Keras?

Je viens de construire mon premier modèle en utilisant Keras et voici la sortie. Cela ressemble à la sortie standard que vous obtenez après la construction d'un réseau de neurones artificiels Keras. Même après avoir regardé dans la documentation, je ne comprends pas complètement ce qu'est l'Epoch et quelle est la perte qui est imprimée dans la sortie.

Qu'est-ce que l'époque et la perte dans Keras?

(Je sais que c'est probablement une question extrêmement basique, mais je n'arrivais pas à trouver la réponse en ligne, et si la réponse est vraiment difficile à glaner dans la documentation, je pensais que d'autres poseraient la même question et j'ai donc décidé de la poster ici .)

Epoch 1/20
1213/1213 [==============================] - 0s - loss: 0.1760     
Epoch 2/20
1213/1213 [==============================] - 0s - loss: 0.1840     
Epoch 3/20
1213/1213 [==============================] - 0s - loss: 0.1816     
Epoch 4/20
1213/1213 [==============================] - 0s - loss: 0.1915     
Epoch 5/20
1213/1213 [==============================] - 0s - loss: 0.1928     
Epoch 6/20
1213/1213 [==============================] - 0s - loss: 0.1964     
Epoch 7/20
1213/1213 [==============================] - 0s - loss: 0.1948     
Epoch 8/20
1213/1213 [==============================] - 0s - loss: 0.1971     
Epoch 9/20
1213/1213 [==============================] - 0s - loss: 0.1899     
Epoch 10/20
1213/1213 [==============================] - 0s - loss: 0.1957     
Epoch 11/20
1213/1213 [==============================] - 0s - loss: 0.1923     
Epoch 12/20
1213/1213 [==============================] - 0s - loss: 0.1910     
Epoch 13/20
1213/1213 [==============================] - 0s - loss: 0.2104     
Epoch 14/20
1213/1213 [==============================] - 0s - loss: 0.1976     
Epoch 15/20
1213/1213 [==============================] - 0s - loss: 0.1979     
Epoch 16/20
1213/1213 [==============================] - 0s - loss: 0.2036     
Epoch 17/20
1213/1213 [==============================] - 0s - loss: 0.2019     
Epoch 18/20
1213/1213 [==============================] - 0s - loss: 0.1978     
Epoch 19/20
1213/1213 [==============================] - 0s - loss: 0.1954     
Epoch 20/20
1213/1213 [==============================] - 0s - loss: 0.1949
39
pr338

Pour répondre plus précisément aux questions, voici une définition de l'époque et de la perte:

Epoch : Un passage complet sur toutes vos données training.

Par exemple, dans votre vue ci-dessus, vous avez 1213 observations. Ainsi, une époque se termine lorsqu'elle a terminé une passe de formation sur l'ensemble des 1213 de vos observations.

Perte : Valeur scalaire que nous essayons de minimiser lors de notre apprentissage du modèle. Plus la perte est faible, plus nos prévisions sont proches des vraies étiquettes.

Il s'agit généralement d'une erreur quadratique moyenne (MSE), comme l'a dit David Maust ci-dessus, ou souvent en Keras, Entropie croisée catégorique


Ce que vous attendez de voir fonctionner sur votre modèle Keras, c'est une diminution de la perte sur n nombre d'époques. Votre entraînement est plutôt anormal, car votre perte augmente en fait. Cela pourrait être dû à un taux d'apprentissage trop important, ce qui vous fait dépasser les optima.

Comme jaycode l'a mentionné, vous souhaiterez examiner les performances de votre modèle sur des données invisibles, car il s'agit du cas d'utilisation général du Machine Learning.

En tant que tel, vous devez inclure une liste de métriques dans votre méthode de compilation, qui pourrait ressembler à:

model.compile(optimizer='rmsprop', loss='categorical_crossentropy', metrics=['accuracy'])

En plus d'exécuter votre modèle lors de la validation pendant la méthode d'ajustement, par exemple:

model.fit(data, labels, validation_split=0.2)

Il y a beaucoup plus à expliquer, mais j'espère que cela vous aidera à démarrer.

36
Lucas Ramadan

Une époque se termine lorsque votre modèle a exécuté les données sur tous les nœuds de votre réseau et est prêt à mettre à jour les pondérations pour atteindre la valeur de perte optimale. Autrement dit, plus c'est petit, mieux c'est. Dans votre cas, comme il y a des scores de perte plus élevés à une époque plus élevée, il semble que le modèle soit meilleur à la première époque.

J'ai dit "semble", car nous ne pouvons pas encore le dire avec certitude, car le modèle n'a pas été testé à l'aide d'une méthode de validation croisée appropriée, c'est-à-dire qu'il n'est évalué que par rapport à ses données de formation.

Comment améliorer votre modèle:

  • Utilisez la validation croisée dans votre modèle Keras afin de découvrir comment le modèle fonctionne réellement, est-ce qu'il se généralise bien lors de la prédiction de nouvelles données qu'il n'a jamais vues auparavant?
  • Ajustez votre taux d'apprentissage, la structure du modèle de réseau de neurones, le nombre d'unités/couches cachées, les paramètres init, optimiseur et activateur utilisés dans votre modèle parmi une myriade d'autres choses.

La combinaison de GridSearchCV de sklearn avec Keras peut automatiser ce processus.

10
jaycode