Search

Time Series Data, RNN, LSTM

카테고리
DL/ML
Index
DeepLearning
LSTM
RNN
날짜
2024/12/27

1. 시계열 데이터의 이해

1.1 시계열 데이터

시계열 데이터는 시간 축을 따라 신호가 변하는 동적데이터로, 일정한 시간 간격으로 시간적 순서를 가진 데이터
→ 가변 길이이고, 벡터의 벡터(중첩된 벡터) 형태로 표현됨
정적 데이터 : 한꺼번에 입력 받는 데이터
→ 시간 데이터를 정적 데이터로 변환하여 입력하게 되면 정보손실이 생길 수 있음.

1.2 시계열 데이터 성능평가

Mean Absolute Error(MAE, 평균절대값 오차)
MAE=1MΣxMyoMAE = \frac{1}{|M|} \Sigma_{x\in M}|{y-o}|
→ 스케일 문제에 대처하지 못하는 한계가 존재
Maen Absolute Percentage Error(MAPE)
MAPE=1MΣxMyoyMAPE = \frac{1}{|M|} \Sigma_{x\in M}|\frac{y-o}{y}|

2. 순환 신경망 RNN의 구조

RNN(Recurrent Neural Network)은 유연한 구조를 가지고 있고, 언어 번역, 음성인식, 생성모델 등 여러 문제에 적용가능
주가 예측, 날씨 예측, 농산물 가격 및 수요량 예측등과 같이 미래 예측(prediction, forecasting) 분야에 많이 활용되고 있음

2.1 RNN을 활용한 Forecasting Task 예시

1.
농산물 수요량 예측 문제
농산물 유통업자가 5년동안 매일 판매량을 기록했을 때 데이터의 길이 t = 365*5=1825
하나의 긴 샘플을 가지고 모델링 및 예측 task를 수행하는 방법?
윈도우 크기(w) 단위로 패턴을 지정하고, 잘라서 여러 개의 샘플을 만듦
→ window size ww : 하나의 샘플 xx 가 가질 데이터의 개수
수평선 계수(h)로 얼마나 먼 미래를 예측할 것인지 지정
윈도우크기 w = 3, 수평선 계수 h=1 로 설정해서 label(y) 값을 h=1에 맞춰 다음 샘플로 지정
2.
다중 품목을 표현하는 데이터에 대한 예측문제
상추와 오이를 동시에 고려하는 예측문제가 있을 때, 두 가지 데이터를 중첩벡터 구조로 하나의 쌍으로 표현할 수 있음
h=1, w=3 인 경우 sample 1은 x= ((34,12), (35,10),(36,8)), y=(35,15)

2.2 RNN 구조

RNN의 구조는 다층 퍼셉트론 구조에 은닉층 노드 사이에 순환 에지를 추가한 형태를 가지고 있음
input layer → hidden layer → output layer 순으로 구성되어있고, 은닉층 노드 사이를 순환에지가 연결해서 노드 사이에서 가중치들을 공유할 수 있는 구조임
RNN의 기본 원리는 hidden state(은닉 상태)를 통해서 이전 타임스텝의 출력을 다음 타임 스텝의 입력으로 전달하는 것!
각 타임스텝에서 출력이 이전 상태에 의존하는 recurrent 구조를 형성
Deep Neural Network vs Recurrent Neural Network
DNN은 이전 시점정보를 반영하지 않고 현재 시점의 정보만 사용하는 Feed Forward 형 network
RNN은 이전 시점 정보들을 반영해서 시계열 모델링에 더 적합한 network

RNN 기본 구조 및 수식

각 시점 t에서 입력되는 데이터를 xtx_t 라고 할 때, RNN의 은닉층 함수 hth_t는 다음과 같음
ht=f(Wxhxt+Whhht1+bh_t = f(W_{xh}x_t + W_{hh}h_{t-1}+b) = tanh(Wxhxt+Whhht1+b) tanh(W_{xh}x_t + W_{hh}h_{t-1} +b)
WxhW_{xh} : 입력층 → 은닉층으로 가는 가중치
WhhW_{hh} : 이전 은닉층 → 현재 은닉층으로 가는 가중치
activation function ff 는 주로 tanh가 사용됨
RNN의 순환 구조를 통해서 이전 은닉층 ht1h_{t-1}이 현재 은닉층 hth_t를 계산하는데 반복적으로 사용되고, 이전 시점의 정보가 계속 반영됨
은닉층을 거쳐서 최종 출력값 yty_t 는 현재 은닉층 상태를 반영한 WhyhtW_{hy}h_t를 기반으로 계산하게됨
yt=g(Whyht)y_t = g(W_{hy}h_t)
WhyW_{hy} : 은닉층 → 출력층으로 가는 가중치
activation function g g : softmax 함수로 분류를 위해 사용됨

Activation Function of RNN

RNN에서는 Hyperbolic Tangent function을 activaton function 으로 사용
Hyperbolic Tangent vs Sigmoid
Hyperbolic Tangent
Sigmoid
범위
-1 ~ 1
0 ~ 1
중앙값
0
0.5
미분 최대값
1
0.3
→ Hyperbolic tangent가 sigmoid보다 함숫값 범위가 넓고, 기울기 최대값 또한 크기 때문에 gradient vanishing 증상이 더 적게 발생

3. Types of RNNs

RNN 구조의 장점은 시퀀스의 길이에 관계없이 입력과 출력을 받아들일 수 있는 네트워크이기 때문에 필요에 따라서 다양하고 유연한 구조를 만들 수 있음
순차적인 입력의 길이(input), 예측의 길이(output)에 따라서 Many-to-One, One-to-Many, Many-to-Many로 구분됨

3.1 Many-to-One

여러 시점의 데이터 X로 하나의 Y를 예측하는 문제
여러 시점의 다변량 센서 데이터가 주어졌을 때 특정 시점의 제품상태를 예측

3.2 One-to-many

단일 시점 X로 하나의 Y를 예측하는 문제
이미지 데이터가 주어졌을 때, 이미지에 대한 정보를 글로 생성하는 이미지 캡셔닝

3.3 Many to many

순차적인 X로 순차적인 Y를 예측하는 문제
문장이 주어졌을 때, 각 단어의 품사를 예측하는 POS(Part of Speech) Tagging
영어 문장이 주어졌을 때, 한글문장으로 번역하는 문제

4. LSTM

4.1 Limitation of RNN

RNN은 은닉층 상태를 다음 순간으로 넘기는 방법을 통해서 과거 정보를 기억하지만, 장기 문맥 의존성을 제대로 처리하지 못하는 한계가 존재
Long-term Dependency
멀리 떨어진 요소가 밀접한 상호작용을 하는 현상으로, RNN은 계속 새로들어오는 입력 데이터의 영향으로 멀리 떨어진 요소에 대한 기억력이 감퇴하는 현상이 있음

4.2 LSTM(Long Short Term Memory)

RNN의 장기 문맥 의존성 문제를 해결하기 위해 Gate 개념 도입을 통해 장단기 기억을 가능하게 한 신경망
→ 4개의 layer가 서로 정보를 주고받는 구조로 되어있음
Cell State
: LSTM의 장기적인 정보를 유지하는 역할로, 시퀀스 전체를 에 대한 정보를 저장
Input Gate
: 새로운 입력 데이터가 cell state에 얼마나 반영될지를 결정하는 부분
→ 현재의 cell state CtC_t 결정
→ 새로운 입력이 중요한 경우 cell state에 반영을 많이하고, 그렇지 않으면 무시할 수 있음
Forget Gate
: 이전 cell state에서 어떤 정보를 버릴지를 결정하는 부분
→ 이전 Cell State Ct1C_{t-1} 결정
→ 불필요한 정보를 제거해서 cell state를 효율적으로 유지
Output gate
: 현재 cell state에서 어떤 정보를 출력으로 보낼지 결정
→ 다음 시점에 필요한 정보를 결정하는데 중요한 역할