본문 바로가기
딥러닝으로 하루하루 씹어먹기

LSTM으로 수요 예측하기 - 4장 (BI-LSTM 사용)

by Yoo Sung Hyun 2021. 4. 7.
728x90

항상 업무에 시달리느냐고, 블로그를 쓸때 몰아쓰는 경향이 있는 것 같다...ㅋㅋ

지금도 바다나우 어텐션 안되서 이것저것 바꿔돌려가면서, 기다리는 동안에 블로그를 써본다.

 

1. 시간별로 데이터 전처리 / Not Scaled

2. 일반 lstm 3레이어 정도(?)

3. 이후 data도 중요하다고 생각듬

4. BI-LSTM 사용

5. 데이터가 너무 없어 K-Fold 적용

6. Layer만 주구장창 쌓다가 AutoEncoder 활용

7. 데이터 Scaled 적용

8. Loss Function Custom

9. 1차 마무리

  - 여기 사이에는 BERT가 포함되어있다. (Google Source를 다 까봤는데, 이건 언제 또 정리할까...) -

10. Attention 적용

  => Dual-Stage Attention RNN (DA-RNN)

  => Luong Attention (Dot-Product Attention)

  => Bahdanau Attention                                         => 현재는 여기서 개고생하는중....

 

 

연도별 일 그래프

해당 그래프는 실제 현업 데이터의 일별 그래프이다.

연도별 추세가 있을 것 같지만, 한눈에 봐도 눈에 띄는 패턴은 보이지 않는 상태.

 

특정기간 시간별 그래프

해당 그래프는 특정기간의 시간별 그래프다.

일별로 가끔씩 튀는 데이터들은 존재하나, 1일에 대한 24시간의 그래프는 얼추 패턴의 양상이 보인다.

 

단순히 시간별 데이터를 보면, 수량이 쭉 상승하다가 어느 변곡점에서 하락하는 패턴은 모두 동일하다.

-> 상승할때 상승하다가, 하락하는 시점이 존재하면 바로 하락한다. = 상승과 하락이 앞뒤 패턴으로 판단 가능하다.

-> 다음 값의 데이터도 활용하면 상승과 하락의 패턴을 학습할 수 있지 않을까?

-> BI-LSTM이다!

라는 생각으로 바로 BI-LSTM으로 거저먹기 해보았다.

 

아! 참고로 BI-LSTM은,

논문 : citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.331.9441&rep=rep1&type=pdf

해당 논문을 찾아보면 되는데,

사람이란 역시 한쪽 면만 보면 안된다.

Forward State만 사용되는 기존의 LSTM에서 Backward까지 같이 사용하여 (Hidden State가 Concat되어 사용된다.)

t-1만 보는게 아니라 t+1로부터도 확인해서 output을 결정해주자는 이론이다. (return_states를 찍어보면 backward, forward의 각각 의 hidden,cell state가 나온다.)

 

대부분의 다른 time-forecasting이나, 문자열 학습등에서 일반 lstm보다 bi-lstm을 사용하면 조금 더 좋아진다는 내용들이 많은데, 실제로 현업에서 사용해보진 않아서, 무조건 좋다고는 나는 말 못하겠다.

 

방법은 기존에 LSTM으로 되어있던거, BI-LSTM으로만 바꿔주고, return_sequnece=True만 추가해줬던 것 같다.

(3장 참조)

 

이전 그래프를 보면 (바로 직전 3장에 있던.)

LSTM 24시간

3장에서 봤던 이랬던 그래프가,

BI-LSTM 적용

BI-LSTM으로만 바꿔주고 return_sequence만 추가해줬는데 이렇게나 좋아졌다.

 

(시간별 데이터 그래프를 Pivot으로 Day 기준으로 변경한 모습이다.

시간별로도 얼추 잘 맞기 때문에, 일도 어느정도 맞기 시작한 것을 볼 수 있다.)

 

해당 부분도 소스는 없고 결과만 있는데, 아무래도 LSTM같은 블랙박스 모델을 사용하게되면, 무식하게 unit들에 대한 output 값과 W를 전부 출력하여 일일이 가늠하면서 작업하던가, 아니면 EDA를 빡세게 해서 어느정도 데이터에 대한 이해도가 있는 상태로 접근하는게, 무작정 노가다를 피할 수 있는 방법이라고 볼 수 있겠다.

 

뭐, 물론 이정도도 팔아먹을 수준은 못되기에, 리젝먹고 더 다듬기에 열중하게 된다.

728x90

댓글