Генерация всей последовательности чисел из начальной точки - PullRequest
0 голосов
/ 29 июня 2019

У меня есть вопрос, который мне нужен, чтобы предложить, как к нему подойти. Предположим, у меня есть многомерный временной ряд. например, как показано ниже:

1 2 3 4 5

6 7 8 9 10

11 12 13 14 15

16 17 18 19 20

, где каждый столбец является одной функцией. и каждый ряд отличается наблюдением. например, первая строка соответствует первому разу, вторая строка - второму разу и т. д. Предположим, имеется 500 наблюдений.

Я хотел бы обучить модель, и, когда мне дают начальную точку последовательности, я могу сгенерировать всю последовательность из этого.

Например, для тестирования предположим, что мне дают 1 2 3 4 5. Я должен быть в состоянии генерировать всю последовательность 6 7 8 9 10, 11 12 13 14 15 и 16 17 18 19 20 до конца траектории.

Может кто-нибудь предложить мне методы, чтобы сделать это.

Я сделал прогнозирование временного ряда, как сформулировал задачу следующим образом, где вход для одного наблюдения в момент времени t + 1 является выходом наблюдения в момент времени t. Подобно следующему:

1 2 3 4 5      6 7 8 9 10
6 7 8 9 10     11 12 13 14 15
11 1213 14 15   16 17 18 19 20

И я передаю всю последовательность, подобную этой, RNN для обучения, и тестирование выполняется с использованием первой точки последовательности, например, 1 2 3 4 5

и принимая выходные данные этого и использовать прогнозируемые выходные данные в качестве входных данных для модели RNN в цикле, пока я не сгенерирую всю последовательность.

Я использую LSTM в Keras с такими же командами

model.add(LSTM(64, return_sequences=True input_shape=(None,1,5), stateful= 
True)
model.add(LSTM(32, return_sequences=False, stateful=True)
model.add(Dense(5))
model.compile(loss='mse', optimizer='adam')

, а затем установите модель с размером партии 1. и для тестирования просто введите одно наблюдение за один раз, как описано выше.

Проблема этого метода в том, что я правильно оцениваю первую точку. Это означает, что выходные данные для 1 2 3 4 5 являются приемлемым прогнозом, например, предположим, что результат равен 6,7 7,5 8,9 9,2 10,4, но после того, как я использую это в качестве входных данных для следующей части, я получаю действительно плохую оценку, и в какой-то момент последовательность не меняется, и я возвращаюсь, как 12 13 17 19 20, и это остается для всего наблюдения. Так что это не обучение.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...