Recurrent Neural Network (RNN) 이란?
Recurrent Neural Network (RNN)은 시계열 데이터와
같이 순차적으로 이루어진 데이터를 처리하는 데 적합한 신경망입니다.
RNN의 기본 아이디어는 이전 시점의 정보를 기억하고 이를 현재 시점의 입력과 함께 사용하여 출력을 생성하는 것입니다.
RNN의 기본 개념
RNN은 다음과 같은 수식으로 표현됩니다:
\( h_{t} = \text{tanh}(W_{hh} h_{t-1} + W_{xh} x_{t}) \)
여기서:
- \( h_{t} \) 는 현재 시점 t의 은닉 상태입니다.
- \( h_{t-1} \) 는 이전 시점의 은닉 상태입니다.
- \( W_{hh} \) 는 은닉 상태에서 은닉 상태로의 가중치입니다.
- 는 입력에서 은닉 상태로의 가중치입니다.
- \( x_{t} \) 는 현재 시점의 입력입니다.
RNN은 시간이 흐름에 따라 은닉 상태를 업데이트하며, 이를 통해 시계열 데이터를 처리할 수 있습니다.
RNN의 문제점: Vanishing Gradient와 Exploding Gradient
RNN의 역전파(backpropagation) 과정에서 두 가지 주요 문제가 발생할 수 있습니다.
**기울기 소실(Vanishing Gradient)**과 **기울기 폭발(Exploding Gradient)**입니다.
Vanishing Gradient 문제
역전파 과정에서 다음과 같은 미분이 계산됩니다:
\( \frac{\partial h_t}{\partial h_{t-1}} = \text{tanh}'(W_{hh} h_{t-1} + W_{xh} x_{t}) W_{hh} \)
여기서 tanh′\text{tanh}' 함수의 값은 일반적으로 0과 1 사이입니다.
이 값이 반복적으로 곱해지면, 기울기 값이 점점 작아져 0에 가까워지는 기울기 소실 문제가 발생할 수 있습니다.
Exploding Gradient 문제
반대로, 가중치 \( W_{hh} \) 가 큰 경우 동일한 행렬이 반복적으로 곱해지면
기울기가 기하급수적으로 증가하여 기울기 폭발 문제가 발생할 수 있습니다.
이는 학습 과정에서 매우 큰 값으로 인해 모델이 불안정해지고 학습이 실패하게 됩니다.
문제 해결 방법: Gradient Clipping
기울기 폭발 문제를 해결하기 위한 한 가지 방법은 Gradient Clipping입니다.
Gradient Clipping은 역전파 과정에서 기울기가 특정 임계값(threshold)을 초과할 경우
이를 잘라내어 최대값으로 설정하는 방법입니다.
결론
RNN은 시계열 데이터를 처리하는 데 유용하지만, 역전파 과정에서 기울기 소실과 기울기 폭발 문제를 겪을 수 있습니다. 이를 해결하기 위해 Gradient Clipping 기법을 사용하여 기울기의 크기를 제한할 수 있습니다.
하지만, 이 방법만으로는 충분하지 않을 수 있으며, LSTM이나 GRU와 같은 고급 구조를 사용 된다.
'AI Naver boost camp > [Week 02] ML LifeCycle' 카테고리의 다른 글
Seq2Seq: Sequence-to-Sequence 모델 (0) | 2024.08.18 |
---|---|
LSTM(Long Short-Term Memory Networks) (0) | 2024.08.18 |
활성화함수 (Activation funtion) (0) | 2024.08.16 |
2-layer MLP (Multi Layer Perceptron) (0) | 2024.08.16 |
Numpy - dot, @, * 차이점 (0) | 2024.08.16 |
댓글