본문 바로가기

Deep Learning

RNN 쉽게 이해하기

이 글은 고려대학교 산업경영공학부 김성범 교수님의 유튜브 영상 [핵심 머신러닝] RNN, LSTM, GRU를 정리한 것임을 밝힙니다.

 

어떠한 데이터로 미래의 y값을 예측한다고 했을 때, 이전 시점들의 결과가 추후에 영향을 줄 수 있다. 이를 '시계열 데이터'라고 한다.

시계열 데이터에 접근하기 위한 모델은 전통적인 통계 기법부터 딥러닝까지 다양한데, 아래와 같이 정리할 수 있다.

 

- 전통 통계 기반 시계열 데이터 분석 방법론

1. 이동평균법 (Moving Average)

2. 지수평활법 (Exponential smoothing)

3. ARIMA(Auto Regressive Integrated Moving Average)

4. SARIMA(Seasonal ARIMA) - ARIMA 모델에 계절성을 추가한 것

5. ARIMAX(ARIMA exogenous) - 다변량 ARIMA 모델

6. Prophet(facebook)

...

 

- 머신러닝 기반 시계열 데이터 분석 방법론

1. Linear Regression / Logistic Regression

2. SVM

3. Random Forest

4. Boosting

5. Hidden Markov model (HMM)

...

 

- AI 기반 시계열 데이터 분석 방법론

1. RNN(1986)

2. LSTM(1997)

3. GRU(2014)

4. Seq2Seq(NIPS 2014)

5. Seq2Seq with attention(ICLR 2015)

6. Convolutional neural networks (CNN) for time series analysis(2016)

7. Transformer(NIPS 2017)

8. GPT-1(2018), BERT(2019), GPT-3(2020), GPT-3.5(2022), ChatGPT(2023)

...

 

RNN(Recurrent Neural Network)

이 글에서는 시계열 데이터에 기초가 되는 신경망 모델인, RNN(순환신경망)에 대해 정리해보려고 한다.

위의 그림은 센서데이터에 대한 RNN 모델을 도식화한 것이다. 

RNN은 쉽게 말해, t시점 hidden vector의 값을 구할 때 t-1, t-2, ... t-n 시점과 같이 이전 값들을 사용하는 모델이라고 할 수 있다.

여기서, 파라미터(W)는 크게 세 가지가 있는데, Wxh, Whh, Why 가 데이터를 학습하면서 설정되게 된다.

    → 이 세 파라미터는 모든 시점마다 동일하며, 이를 'Parameter Sharing'이라고 한다.

위의 수식에서 ht를 구할 때 이전 시점의 hidden vector의 값이 Whh값에 곱하여 선형결합을 이루는 것을 확인할 수 있는데, 이를 통해 모델은 과거 시점의 데이터 정보를 현재 시점까지 반영할 수 있게 된다.

 

RNN 구조

순환신경망의 구조는 input과 output에 따라서 위와 같이 네 가지로 구분할 수 있다.

 

RNN 학습

Wxh, Whh, Why 의 파라미터가 어떻게 학습되는지 살펴보자.

 

활성화함수: tanh 로 설정, L은 손실함수를 의미한다.

 

학습 메커니즘은 DNN과 같다. (Back Propagation 과정이 조금 복잡해질 뿐)

위 과정을 수식으로 나타내면 아래와 같다.

(* one to many, many to many 구조에서는 각 시점별 loss의 평균을 전체 loss로 활용함)

Gradient descendent 에 대해서는 다음에 자세히 다뤄보자.

Forward, Backward Propagation을 거친 후에 Learning rate 만큼 곱하여 학습의 기여도를 설정해준다.

Each gradient of weights

 

RNN 한계점 - long-term dependency problem

그러나, 기억해야 할 시점이 길어지면 문제가 발생한다!

이 문제를 장기 의존성 문제(long-term dependency problem)이라고 하는데,
시퀀스의 길이가 길어질수록 과거 시점의 정보를 학습하는데 어려움이 발생하는 것을 뜻한다.

 

그 이유는 무엇일까? 바로 기울기 소실(Vanishing Gradient) 때문이다.

 

앞서, Wxh, Whh 를 구할 때, 우리는 htht-1에 대한 편미분으로 나눠주고 chain rule을 통하여 여러 번 곱해주었다. 

예를 들어, 시점이 100개라고 가정해보면, 아래와 같이 표현할 수 있다.

 

위 그림처럼 tanh 함수의 도함수가 0~1의 값을 가지므로, htht-1로 편미분한 값이 0~1 의 범위를 가지게 된다. 

그렇게 되면 결국 과거 시점 데이터는 0에 수렴하여, 과거 데이터가 파라미터의 업데이트에 영향을 줄 수 없는 기울기 소실 문제가 발생하게 된다.

 

위의 문제를 해결하기 위해, 개선된 RNN 모델이 바로 LSTM(Long Short-Term Memory) 이다.

LSTM은 다음 글에서 자세히 다뤄보도록 하겠다.

'Deep Learning' 카테고리의 다른 글

Sequence-to-Sequence(Seq2Seq)  (0) 2024.11.19
Attention 메커니즘  (0) 2024.05.15
Transformer  (0) 2024.04.28
[신경망] Neural Network와 Back propagation  (1) 2023.12.03
LSTM 쉽게 이해하기  (0) 2023.09.14