Ma perte d'entraînement diminue puis augmente à nouveau. C'est très bizarre. La perte de validation croisée suit la perte d'entraînement. Que se passe-t-il?
J'ai deux LSTMS empilés comme suit (sur Keras):
model = Sequential()
model.add(LSTM(512, return_sequences=True, input_shape=(len(X[0]), len(nd.char_indices))))
model.add(Dropout(0.2))
model.add(LSTM(512, return_sequences=False))
model.add(Dropout(0.2))
model.add(Dense(len(nd.categories)))
model.add(Activation('sigmoid'))
model.compile(loss='binary_crossentropy', optimizer='adadelta')
Je l'entraîne pour 100 époques:
model.fit(X_train, np.array(y_train), batch_size=1024, nb_epoch=100, validation_split=0.2)
Former sur 127803 échantillons, valider sur 31951 échantillons
machine-learning
neural-networks
loss-functions
lstm
patapouf_ai
la source
la source
Réponses:
Votre taux d'apprentissage pourrait être trop élevé après la 25e époque. Ce problème est facile à identifier. Il vous suffit de définir une valeur plus petite pour votre taux d'apprentissage. Si le problème lié à votre taux d'apprentissage que NN devrait atteindre une erreur plus faible, il remontera après un certain temps. Le point principal est que le taux d'erreur sera plus bas à un moment donné.
Si vous avez observé ce comportement, vous pouvez utiliser deux solutions simples. Le premier est le plus simple. Montez une toute petite marche et entraînez-la. La seconde consiste à diminuer mon taux d'apprentissage de façon monotone. Voici une formule simple:
la source