Mi pérdida de entrenamiento baja y luego vuelve a subir. Es muy raro La pérdida de validación cruzada rastrea la pérdida de entrenamiento. Que esta pasando?
Tengo dos LSTMS apilados de la siguiente manera (en 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')
Lo entreno por 100 Epochs:
model.fit(X_train, np.array(y_train), batch_size=1024, nb_epoch=100, validation_split=0.2)
Entrene en 127803 muestras, valide en 31951 muestras
machine-learning
neural-networks
loss-functions
lstm
patapouf_ai
fuente
fuente
Respuestas:
Su tasa de aprendizaje podría ser demasiado grande después de la 25ª época. Este problema es fácil de identificar. Solo necesita configurar un valor menor para su tasa de aprendizaje. Si el problema relacionado con su tasa de aprendizaje que NN debería alcanzar un error menor a pesar de eso, volverá a subir después de un tiempo. El punto principal es que la tasa de error será menor en algún momento.
Si observaste este comportamiento, podrías usar dos soluciones simples. El primero es el más simple. Establecer un paso muy pequeño y entrenarlo. El segundo es disminuir su tasa de aprendizaje de forma monotónica. Aquí hay una fórmula simple:
Donde es su tasa de aprendizaje, es su número de iteración es un coeficiente que identifica la velocidad decreciente de la tasa de aprendizaje. Significa que su paso se minimizará en un factor de dos cuando es igual a .t m t muna t metro t metro
fuente