본문 바로가기

DeepLearning

딥러닝으로 걷는 시계열 예측 [CH07] RNN

1) RNN이란?

RAN(순환신경망, Recurent Neural Network)은 주로 시계열 문적, 자연어 처리 등 순서가 있는 데이터에 사용하면 좋은 결과가 있는 모델이다. 실제로 주식, 파생상 품, 기상, 전력량 등을 계산할 때 매우 유효하고 캐글이나 해커톤 등의 대회에서 시계 열 문제를 다룰 때 많이 사용된다.

 

https://www.youtube.com/watch?v=PahF2hZM6cs&ab_channel=MinsukHeo%ED%97%88%EB%AF%BC%EC%84%9D 영상에 자세하게 나와있어서 링크 첨부!

 

2) SimpleRNN

가장 기본적인 RNN

x의 행의 수 = y의 벡터 크기

1~5까지의 인풋으로 6이 나오고, 2~6까지의 인풋으로 7이 아웃풋, 마지막 3~7까지의 인풋으로 8이 나오는 모델 훈련

 

<주의하기>

import Dense, SimpleRNN # 추가된 SimpleRNN
model.add(SimpleRNN(7, input_shape=(5, 1), activation="relu")) # input_shape이 2차원으로 변경됨!!

여기서 input_shape에서의 5는 x의 열의 수를 나타냄

뒤에 오는 1은 몇 개씩 자르는 지를 나타냄

 

input_shape = samples = time steps = feature ... 모두 정식용어로 혼용해서 사용함

https://github.com/yenyen31/Artificial-Intelligence-in-Finance/blob/main/CH07/ch07_1.py

 

GitHub - yenyen31/Artificial-Intelligence-in-Finance: Artificial-Intelligence-in-Finance

Artificial-Intelligence-in-Finance. Contribute to yenyen31/Artificial-Intelligence-in-Finance development by creating an account on GitHub.

github.com

 

3) LSTM

RNN에서 가장 많이 쓰이는 모델

SimpleRNN보다 파라미터의 수도 많고, 성능이 좋다

첫 번째 히든 레이어에 SimpleRNN 대신 LSTM을 사용해서 구현함

https://github.com/yenyen31/Artificial-Intelligence-in-Finance/blob/main/CH07/ch07_2.py

 

GitHub - yenyen31/Artificial-Intelligence-in-Finance: Artificial-Intelligence-in-Finance

Artificial-Intelligence-in-Finance. Contribute to yenyen31/Artificial-Intelligence-in-Finance development by creating an account on GitHub.

github.com

 

 

4) GRU

LSTM을 보완해 만든 뉴욕대학교 조경현 교수가 만든 모델.

LSTM의 아웃풋 게이트를 두지 않고 LSTM을 간단하게 변경한 구조이다. (약간 축소했다고 생각하면 됨)

속도는 LSTM보다 빨라지고, 성능은 거의 비슷하다.

https://github.com/yenyen31/Artificial-Intelligence-in-Finance/blob/main/CH07/ch07_3.py

 

GitHub - yenyen31/Artificial-Intelligence-in-Finance: Artificial-Intelligence-in-Finance

Artificial-Intelligence-in-Finance. Contribute to yenyen31/Artificial-Intelligence-in-Finance development by creating an account on GitHub.

github.com

 

5) Bidirectional

우선 RNN으로 진행시킨 후 역으로 다시 훈련을 시키는 방법 -> 1개의 데이터 셋으로 2번 훈련시키는 효과!

LSTM의 2배의 파라미터를 잡기 때문에 약 2배 정도 느려지는 것을 알 수 있다.

https://github.com/yenyen31/Artificial-Intelligence-in-Finance/blob/main/CH07/ch07_4.py

 

GitHub - yenyen31/Artificial-Intelligence-in-Finance: Artificial-Intelligence-in-Finance

Artificial-Intelligence-in-Finance. Contribute to yenyen31/Artificial-Intelligence-in-Finance development by creating an account on GitHub.

github.com

 

6) LSTM 레이어 연결

현재까지는 RNN 모델 다음에 바로 Dense층을 연결했다. 하지만 LSTM층에서도 2개 이상을 연결할 수 있다. 

LSTM 하단에 LSTM을 추가하는 방식으로 구현한다.

 

LSTM을 무조건 2개 이상 엮는다고 좋아지지는 않는다. 적은 데이터일수록 더더욱 좋아지지 않는 것을 알 수 있다. 

하이퍼파라미터를 튜닝할 경우 훨씬 더 좋은 성능이 나올 수 있다. 

결국 최종 성능 판단은 최종 acc나 지표로 확인하는 것이 좋고, 하이퍼파라미터 튜닝을 최대한 많이 해보는 것이 중요하다.

https://github.com/yenyen31/Artificial-Intelligence-in-Finance/blob/main/CH07/ch07_5.py

 

GitHub - yenyen31/Artificial-Intelligence-in-Finance: Artificial-Intelligence-in-Finance

Artificial-Intelligence-in-Finance. Contribute to yenyen31/Artificial-Intelligence-in-Finance development by creating an account on GitHub.

github.com

 

하이퍼파라미터튜닝이란?

https://velog.io/@emseoyk/%ED%95%98%EC%9D%B4%ED%8D%BC%ED%8C%8C%EB%9D%BC%EB%AF%B8%ED%84%B0-%ED%8A%9C%EB%8B%9D

 

하이퍼파라미터 튜닝

캐글 노트북으로 하이퍼파라미터 튜닝 공부

velog.io

 

반응형