인공지능/공부

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

이게될까 2023. 12. 15. 15:36
728x90
728x90

RNN은 시간에 따라 변화하는 데이터를 얘측할 때 사용된다.

5번째 공의 위치는 점점 느려지면서 저 점선 안에 있을 것이다.

stationary( 변화없는 )데이터

평균에서 크게 벗어나지 않는다.

NON - stationary 데이터

평균과 진동이 계속 변한다.

둘 중에 무엇이든 이러한 데이터들은 이전의 값들이 필요하다. 그러나 CNN, FCN을 사용하면 이전 값들이 그냥 소멸되게 된다.

연결 되어 있지 않아 독립적으로 판단하게 된다.
이전 데이터들의 결과에 영향을 주게 된다.

위 사진이 RNN에 대한 기본 원리 이다.

사진을 간편하게 표현한다.
지속적으로 이전 값들이 들어간다.

이렇게 RNN이 들어가면 t1 -> t n 까지 모든 결과가 모든 input들을 포함하게 된다.

연결된 layer가 많을 수록 정확하지만 FCN으로 연결되어 있기 때문에 파라미터수가 급격히 증가한다.
이렇게 계속 연결되면 초반부에는 gradient가 소실되어 학습이 되지 않는다.
이것도 이렇게 간편하게 표기
rnn의 다양한 모습
rnn의 기본적인 계산 방법
위의 식을 풀어서 쓰면 이렇게 된다.
학습은 이렇게 된다.

위의 사지을 보면 확실히 뒤에 있는 부분은 미분이 많이 들어가서 gradient 소실이 크게 보인다. 그리하여 vanish나 explode를 막기 위해 LSTM을 사용하게 되었다.

728x90

LSTM Long Short Term Memory

LSTM을 이해하려면 gate 구조를 이해해야 된다.

O = open , ㅡ = close

gate구조는 open과 close를 통해 이 값을 저기에 줄지, 안 줄지를 결정할 수 있다.

이렇게 게이트를 사용하여 어떤 값을 넘길지 판별 가능
LSTM의 구조

여기서 Ct 는 장기기억이고, ht는 단기기억이다. 

LSTM 수식...

이 수식을 그냥 보면 너무 복잡하다. 하나하나 차근차근 해결해 보겠다.

이 구조를 통해 어느 데이터를 잊을지 판별한다.

여기서 sigmoid는 0(forget)과 1(유지)로 나누기 때문에 위에서 봤던 게이트 역활을 하게 된다.

h와 x를 더하는게 아닌 concatenate를 통해 붙인다.
sigmoid층을 통해 업데이트 할 정보를 선정하고, tanh를 통해 업데이트 할 정보를 만든다.
i가 0이면 ct값은 들어오지 못하고, i가 1이면 들어 올 수 있다.
이것을 통해 장기 기억이 업데이트 된다.
여기서 아웃풋 데이터를 만들어준다.

위 과정을 통해 LSTM이 업데이트 되게 된다. 

LSTM을 살짝 바꿔서 무조건 forget한 데이터를 업데이트 하는 방식도 있다.

단점으로는 시간 하나 하나 마다 FCN이 생기기 때문에 느리고, gradient의 vanishing과 exploding이 여전히 존재하고, 장기 기억이 어렵다는 것이다.

LSTM의 구현 코드는 저번에 apple 주식 맞추기로 있다.

2023.12.07 - [인공지능/공부] - TensorFlow - LSTM을 사용하여 apple 주식 예측하기

 

TensorFlow - LSTM을 사용하여 apple 주식 예측하기

데이터는 말씀해주시면 언제든지 보내드리겠습니다. import pandas as pd import tensorflow as tf from keras.models import Model from keras.layers import Input, Dense, Flatten, Dropout, LSTM from keras.utils import plot_model, to_categoric

yoonschallenge.tistory.com

 

 

728x90