인공지능/공부

이전부터 살짝 아리까리 했던 RNN 정리하기

이게될까 2024. 5. 9. 15:08
728x90
728x90

RNN은 기본적으로 시계열 데이터를 예측할 때 사용된다고 한다.

그런데 인공지능을 만드는데 사용하면서 항상 애매했다...

이 친구의 input, output이 어떻게 되는지

내부 구조는 아는데 명확하게 계산이 어떻게 되는지를 정립을 못하고 있었다.

2023.12.15 - [인공지능/공부] - 시계열 데이터(주가, imu data) 예측 인공지능 - RNN, LSTM

 

시계열 데이터(주가, imu data) 예측 인공지능 - RNN, LSTM

RNN은 시간에 따라 변화하는 데이터를 얘측할 때 사용된다. stationary( 변화없는 )데이터 NON - stationary 데이터 둘 중에 무엇이든 이러한 데이터들은 이전의 값들이 필요하다. 그러나 CNN, FCN을 사용하

yoonschallenge.tistory.com

 

주식 데이터 맞추기는 위와 같은 형태라고 보면 된다.

만약 10개 주가를 뽑아서 그 다음 1분개 주가를 예측한다고 하면 입력 데이터는 10개, 라벨은 1개이다.

RNN에 인풋으로는 1개의 주가가 들어간다. 이것이 RNN input이다.

그럼 차례대로 10개가 계속 들어가면서 RNN은 옆으로 hiddenstate를 넘겨주면서 다시 input을 받는다.

마지막 10개의 데이터가 들어오면 그 때 데이터와 히든 스테이트를 통해 출력을 뱉는 것이다. 

self.rnn= nn.RNN(input_size=n_inputs, hidden_size=n_neurons, batch_first=True, nonlinearity='relu')

근데 그때의 차원은 뉴런 수(히든 사이즈) 이다.

여기서는 hidden_size를 100으로 뒀었는데 100으로 나오니 그걸 1로 줄여주는 FCN이 필요하다.

self.fc= nn.Linear(n_neurons, n_outputs)  # RNN의반환값은h이므로한층더필요

맨날 아리까리 하다가 이번에 확실히 여쭤봐서 정리...

many to many일 때도 RNN의 weight는 동일하고 매번 결과를 뱉는다는 것만 차이가 있는 것이다.

 

728x90