LSTM / GRU и использование перекрывающихся раздвижных окон - PullRequest
1 голос
/ 29 мая 2019

Контекст

В настоящее время я провожу некоторые эксперименты с LSTMs / GRUs в Керасе.Во всяком случае, следующие вопросы также относятся к общей функциональности этих сетей, что означает , ответ не должен быть специфичным для Keras .

Для моих экспериментов явыбрал для прогнозирования линейный растущий временной ряд в форме range(10,105,5), чтобы я, очевидно, получил хорошие результаты.Мой генератор этих данных следует этому учебнику (просто реализация TimeSeriesGenerator) Keras.

[[[10. 15.]
  [20. 25.]]] => [[30. 35.]]
...
[[[80. 85.]
  [90. 95.]]] => [[100. 105.]]

В результате получается 8 steps_per_epoch и образец shape (8, 1, 2, 2).Затем я настроил простую сеть в Керасе, которую я обучил в течение 500 epochs:

model = Sequential() 
model.add(GRU(100, activation='relu', input_shape=(n_input, n_features), batch_size=1)) #Could also be a LSTM-layer
model.add(Dense(2)) #Following the target-shape
model.compile(optimizer='adam', loss='mse')

Если я потом предсказываю некоторые данные, как это ...

x_input = np.array([[90, 95], [100, 105]]).reshape((1, n_input, n_features))
yhat    = model.predict(x_input, verbose=0)

...результат / прогноз [[111.1233 116.97075]] (достаточно для эксперимента -> правильный [[110.0 115.0]]).



Мои вопросы

Очевидно,500 эпох - это намного больше, чем нужно для этого количества данных.

Чтобы получить больше данных обучения без увеличения фактических данных (в реальном сценарии это также было бы невозможно), я пришел к мыслииспользования перекрывающихся скользящих окон (показанные выше партии не перекрываются).

Затем партии выглядят так:

[[[10. 15.]
  [20. 25.]]] => [[30. 35.]]
[[[15. 20.]
  [25. 30.]]] => [[35. 40.]]
[[[20. 25.]
  [30. 35.]]] => [[40. 45.]]
...

Теоретически для меня это означало больше партий, и я подумалчто качество обучения соответственно увеличится.

В любом случае, подача этих данных в одну и ту же сеть приводит к следующему прогнозу: [[121.1334 134.70979]].Ну ... это гораздо худшие результаты прогноза.

Мои вопросы сейчас:

  1. Это ожидаемое поведение от LSTM / GRU?Почему перекрывающиеся окна являются проблемой для них?
  2. Есть ли способ увеличить мои данные таким образом, не нарушая качество прогноза?
...