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
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.
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:
La combinaison de GridSearchCV de sklearn avec Keras peut automatiser ce processus.