Minha perda de treinamento diminui e depois sobe novamente. Isso é muito estranho. A perda de validação cruzada rastreia a perda de treinamento. O que está acontecendo?
Eu tenho dois LSTMS empilhados da seguinte maneira (no 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')
Treino para 100 épocas:
model.fit(X_train, np.array(y_train), batch_size=1024, nb_epoch=100, validation_split=0.2)
Treine em 127803 amostras, valide em 31951 amostras
machine-learning
neural-networks
loss-functions
lstm
patapouf_ai
fonte
fonte
Respostas:
Sua taxa de aprendizado pode ser muito grande após a 25ª época. Esse problema é fácil de identificar. Você só precisa configurar um valor menor para sua taxa de aprendizado. Se o problema relacionado à sua taxa de aprendizado for NN, deverá ocorrer um erro menor, apesar de aumentar novamente após um tempo. O ponto principal é que a taxa de erro será menor em algum momento.
Se você observar esse comportamento, poderá usar duas soluções simples. O primeiro é o mais simples. Configure um passo muito pequeno e treine-o. O segundo é diminuir monotonicamente sua taxa de aprendizado. Aqui está uma fórmula simples:
fonte