Автокодер LSTM / GRU конвергентный - PullRequest
0 голосов
/ 28 февраля 2019

Цель

У меня странная ситуация, когда я пытаюсь создать эффективный автокодер для моего набора данных временных рядов:
X_train (200, 23, 178) X_val (100, 23, 178) X_test (100, 23, 178)

Текущая ситуация

Благодаря простому автоэнкодеру у меня лучше результаты, чем у моего простого LSTM AE, по сравнению с набором данных временных рядов.
У меня есть некоторые опасения по поводу использования слоя-оболочки Repeat Vector ,который, насколько я понял, должен повторять количество раз, как длина последовательности, последнее состояние ячейки LSTM / GRU, чтобы соответствовать входной форме слоя декодера.

Модель делаетНе возникает никаких ошибок, но все же результаты на порядок хуже, чем у простой АЕ, хотя я ожидаю, что она будет, по крайней мере, такой же, как я использую архитектуру, которая должна надлежащим образом соответствовать задаче домена.Тем не менее, реконструкция выглядит не совсем хорошо, только шум. enter image description here

Моя модель AE:

Layer (type)                 Output Shape              Param #   
=================================================================
dense (Dense)                (None, 178)               31862     
_________________________________________________________________
batch_normalization (BatchNo (None, 178)               712       
_________________________________________________________________
dense_1 (Dense)              (None, 59)                10561     
_________________________________________________________________
dense_2 (Dense)              (None, 178)               10680     
=================================================================
  • оптимизатор: sgd
  • потеря: mse
  • функция активации плотных слоев: relu

My LSTM / GRU AE:

_________________________________________________________________
Layer (type)                 Output Shape              Param #   
=================================================================
input_1 (InputLayer)         (None, 23, 178)           0         
_________________________________________________________________
gru (GRU)                    (None, 59)                42126     
_________________________________________________________________
repeat_vector (RepeatVector) (None, 23, 59)            0         
_________________________________________________________________
gru_1 (GRU)                  (None, 23, 178)           127092    
_________________________________________________________________
time_distributed (TimeDistri (None, 23, 178)           31862     
=================================================================
  • оптимизатор:sgd
  • loss: mse
  • функция активации слоев gru: relu

Я делаю какую-то огромную ошибку в отношении некоторых допущений при использовании этих повторяющихся слоев?Или у вас есть предложения о том, как это отладить?

1 Ответ

0 голосов
/ 04 марта 2019

2 модели, которые у вас есть, не кажутся сопоставимыми в значительном смысле.Первая модель пытается сжать ваш вектор из 178 значений.Вполне возможно, что эти векторы содержат некоторую избыточную информацию, поэтому разумно предположить, что вы сможете их сжать.

Вторая модель пытается сжать последовательность из 23 x 178 векторов через один слой GRU,Это задача со значительно большим количеством параметров.Вектор повтора просто принимает выходные данные 1-го уровня GRU (кодер) и делает их входными данными для 2-го уровня GRU (декодер).Но тогда вы берете единственное значение декодера.Вместо слоя TimeDistributed я бы рекомендовал использовать return_sequences=True во втором GRU (декодере).В противном случае вы говорите, что ожидаете, что последовательность 23x178 состоит из элементов с одинаковым значением;это должно привести к очень высокой ошибке / нет решения.

Я бы порекомендовал вам сделать шаг назад.Ваша цель - найти сходство между последовательностями?Или уметь делать прогнозы?Подход с автоматическим кодированием предпочтителен для задачи подобия.Чтобы делать прогнозы, я бы рекомендовал вам больше подходить к подходу, в котором вы применяете слой Dense (1) к выводу шага последовательностей.

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

...