Solved – Recurrent Neural Network Training Loss does not decrease past a certain value

machine learningneural networkstime series

I'm using Keras with Theano backend (for results reproducibility) which aims to give a one step ahead of a time series. It takes lagged sequences from 16 different time series (one of which is the target time series) and fits a network with an initial Dense Layer, then a GRU layer and finally a Dense Layer too receive one output. I have approximately 650 data values for each time series training set. I've normalised each of the time series to the range $(0,1)$, just using my training data to fit the MinMaxScaler from sckitlearn. My issue is that my training loss drops dramatically within the first few epochs and then plateaus, irrespective of the number of epochs I use to train. The value that the loss plateaus at is fairly high, a MSE of around 2 for 400 epochs, for target values of around 10. It's my belief that the training set should reduce on average every epoch. In the graph below, I train for 400 epochs and I use a simple hold out validation set representing the last 10% of the training set, rather than a full cross validation at the moment, so it is not alarming that the validation loss is less than the training. The test legend refers to the validation set. Does anyone have some inclination of why model cannot learn the training data very well? enter image description here

Also on an (potentially) unrelated note, my model consistently seems to over and underestimate the true values but learns the overall pattern of the data, see below.enter image description here

If anyone has any suggestions on why my model doesn't seem to perform/learn well, or suggestions to improve it I'd be very grateful. Thanks

Best Answer

You arent running into any glaring issues, and at a certain point it might be wise to accept the business value of your model and not waste 30% of your time on 5% of your error.

If you are really worried about the performance, you can always run you model through an AutoML framework like TPOT and see if their Bayesian Optimization finds something that you weren't able to manually.