2017-12-01 1 views
2

나는 30 개의 시간 간격으로 정의 된 3 개의 시계열 A, B 및 C를 가지고 있습니다. 나는 입력으로 시간 단계 1에서 30까지의 A, B의 값과 시간 단계 1에서 시간 단계 10까지의 C의 값을 입력으로 받아 나머지 20 개의 시간 간격에 대해 C의 값을 예측하는 LSTM을 작성하려고합니다. 즉, 다른 크기 (30 및 10)의 시퀀스 입력을 처리하는 LSTM을 작성해야합니다. 제 아이디어는 동일한 시간대의 3 개의 시퀀스를 가질 수 있고 표준 LSTM을 사용할 수 있도록 입력 시계열 C를 덧셈 (예 : 0을 사용)하는 것입니다.케라를 이용한 (자동) 예측을위한 패딩 시계열

A1, A2, A3, ... A28, A29, A30 --> 
B1, B2, B3, ... B28, B29, B30 --> LSTM --> C11, C12, ..., C30 
C1, C2, C3, ... 0, 0, 0 --> 

기술적으로 이것은 기술적으로 볼 때 개념적 관점에서 보면 올바를까요? LSTM은 패딩을 잊을 정도로 영리한가요?

답변

0

아마도이 문제를 해결할 수있는 다양한 아키텍처가있을 수 있지만 30+30+10 = 70이라는 고정 된 입력 크기를 가지고 있기 때문에 70 입력 기능을 사용하는 표준 피드 포워드 네트워크를 사용하는 것이 좋습니다. 하나 이상의 밀집 연결 숨겨진 레이어를 선택하고 C의 누락 된 값에 해당하는 20 값을 예측합니다.

Keras에서이 같을 수 있습니다

당신이 ReLUBatchNormalization 레이어를 추가 훈련 시도 중 그라디언트에 문제가, 당신은 overfitting 얻는 경우 숨겨진 레이어의 수를 감소 및/또는 추가하려는 경우
model = Sequential() 
model.add(Dense(500, input_dim=70)) 
model.add(Activation('relu')) 
model.add(Dense(300)) 
model.add(Activation('relu')) 
model.add(Dense(20)) 
model.add(Activation('linear')) 

model.compile(loss='mean_squared_error', optimizer='adam', metrics=['accuracy']) 

, ReLUBatchNorm 이후.

특히 상대적으로 작고 더 중요한 것은 고정 된 입력 크기이므로 LSTM과 같은 시퀀스 모델을 사용할 필요가 없습니다. 그들은 작업하기가 더 어려우며 입력이 고정 된 크기가 아닌 경우에만 가치가 있습니다. 당신이 찾아내는 경우에

당신은 정말 현지 시간 현지 시간 종속성을 모델 1D 회선으로 30x3 입력 형상의 convnet을 시도 할 수 있습니다 모델 아키텍처가 필요합니다. 이 경우에는 제안대로 C을 제로 패드 할 수 있습니다.

편집 : @TitusPullo는 복수 출력 timeseries 예측에 의 This example을 시도했다고 채팅에서 언급했습니다.

+0

답장을 보내 주셔서 감사합니다. 나는 깊은 학습에 익숙하지 않다 ... 왜 LSTM은 고정 된 입력 순서를 다룰 때 가치가 없습니까? 감사합니다 –

+0

LSTM은 여러 가지 이유로 훈련하기가 어렵습니다. 그들은 초기화에보다 민감하며, 사라지는/폭발하는 그라디언트로 인해 어려움을 겪을 가능성이 더 많으며 더 많은 계산 리소스가 필요합니다. 먼저 더 간단한 아키텍처를 먼저 시도해야합니다. 입력 내용의 크기가 매우 다양하거나 매우 길거나 시간/시퀀스에 따라 크게 달라지지 않으면 일반적으로 반복 아키텍처가 필요하지 않습니다. 그러나 마지막 케이스가 사실이라하더라도 나는 고정 크기 입력으로 1 차 회선을 먼저 시도 할 것입니다. – Imran

+0

1D 컨볼 루션은 다중 입출력에서도 작동합니까? 즉, 4 개의 입력 시계열이 있고 그 중 2 개를 미래의 값으로 예측해야한다면 (그림과 같은 시나리오에서 2에 대한 정보가 적을 것으로 예측해야합니다). –

관련 문제