RNN은 시퀀스 데이터를 처리하는 네트워크 구조 중 하나입니다. 이 네트워크 구조를 통해 자연어 처리, 비디오 인식 등에 활용하고 있습니다.
이번에는 RNN의 기본 구조와 원리에 대한 소개를 시작으로, 시간 스텝이 길어질수록 정보가 어떻게 손실되는지 알아보겠습니다.
RNN (Recurrent Neural Network)
이번에는 딥러닝의 한 분야인 RNN에 대해 설명하겠습니다.
RNN은 Recurrent Neural Network의 줄임말이며 이는 반복되는 뉴럴 네트워크라는 의미입니다.
그렇다면, 반복되는 뉴럴 네트워크?? 이게 무슨 말일까요?
RNN 네트워크 구조
일단, 일반적인 뉴럴 네트워크 구조는 다음과 같습니다.
이 구조가 수백 개, 수천 개가 있어도 기본적인 형태는 비슷하게 유지됩니다.
다음은 RNN의 기본구조입니다.
이 구조를 더 확장하면 아래와 같습니다.
자세하게 설명하자면, $x$가 함수$f$를 통과하는 것을 볼 수 있습니다. 자세히 보니 $h$도 함수$f$를 통과합니다. 함수$f$ 는 $x$와 $h$를 동시에 처리해서 새로운 $h$를 만듭니다. 이 새로운 $h$는 출력 $y$가 됩니다.
보이시나요? $h$가 반복적으로 다음 단계의 함수$f$의 입력으로 사용되고 처리하고 있습니다.
RNN 수식
알게 된 바와 같이, RNN은 시간 스탭별로 반복적인 연산을 수행합니다. 이를 수식으로 표현하면 다음과 같습니다.
$$h_{new} = f(h_{old}, x_{new})$$
여기서 $h_{new}$는 새로운 상태값을, $h_{old}$는 이전 상태값을, 그리고 $x_{new}$는 새로운 입력값을 나타냅니다. 이 수식은 RNN의 기본적인 동작 원리를 나타내며, 반복적으로 진행되는 것이 RNN의 핵심입니다.
이 기본 수식을 더 확장하여 활성화 함수와 가중치를 포함해서 다음과 같이 변형할 수 있습니다.
$$h_{t} = tanh(W_{hh}h_{t-1} + W_{xh}x_t)$$
- $h_{t}$ : 현재 시간 스탭에서의 상태값
- $h_{t-1}$ : 이전 시간 스탭에서의 상태값
- $x_{t}$ : 현재 시간 스탭에서의 입력값
- $W_{hh}$, $W_{xh}$ : 각각 상태값과 입력값에 대한 가중치
- $tanh$ : 활성화 함수로, 주로 Zero Centered인 Tanh를 사용합니다.
RNN 구조 및 형태
RNN은 출력과 입력을 자율롭게 조절해서 다양한 형태 및 구조를 만들 수 있습니다.
RNN층을 여러 겹으로 쌓아서 위 그림과 같은 구조를 만들 수 있습니다.
RNN의 입력과 출력을 조절해서 위 그림처럼 다양한 형태를 만들 수 있습니다. 형태에 따른 예시는 간단하게 정리했습니다.
- one to many : 단어 -> 단어 해설
- many to one : 단어 해설 -> 단어
- many to many : 번역
RNN의 문제점
상상해봅시다. 앞에 지나가는 자동차들이 있습니다. 우리는 지나가는 자동차의 번호를 최대한 기억합니다.
처음에는 쉽게 자동차의 번호를 기억할 수 있습니다. 하지만, 2대 3대... 점점 지나가는 자동차가 많아지면, 첫 번째 자동차 번호를 기억하기 어렵습니다. RNN도 마찬가지 입니다. 스탭이 많아질수록 앞에 있는 정보를 잃어버리게 됩니다.
이러한 현상을 이해하기 위해 Forward propagation과 Backpropagation 과정을 통해 간단하게 설명하겠습니다.
먼저, Forward propagation과정입니다.
Backpropagation 과정입니다.
chain rule에 의해서 위 식이 성립됩니다.
tanh를 미분하면 최대 1이 됩니다.
이를 처음 식에 적용하면, 다음과 같은 결과를 얻을 수 있습니다.
이제, a가 n개 만큼 있다고 가정하겠습니다. 그럼 a는 다음과 같은 결과를 얻을 수 있습니다.
a가 1보다 클경우 Exploding Gradient가 발생합니다. 반대로 1보다 작을 경우 Vanishing Gradinent가 발생합니다. 이러한 문제는 신경망 학습에서 큰 어려움을 야기할 수 있습니다.
Exploding Gradient와 Vanishing Gradinent에 대한 자세한 내용은 다음 포스팅에서 자세하게 설명하겠습니다.
앞선 설명을 통해, 스탭이 증가할수록 앞부분의 정보가 점차 소실되는 이유를 이해할 수 있습니다.
아래는 Vanishing Gradinent가 발생했을 때 상황을 시각적으로 나타낸 것입니다. 여기서 볼 수 있듯, 값들이 점점 소실되어서 뒷부분으로 갈수록 정보를 찾기 어려워지는 모습을 보여주고 있습니다.
마무리
지금까지 우리는 RNN의 기본 구조와 작동 원리, 그리고 시간 스탭이 증가함에 따라 발생하는 Vanishing 및 Exploding Gradient 문제에 대해 살펴보았습니다.
우리도 이전에 기억한 내용을 잃어버린것 처럼, RNN도 초기의 정보를 점차 잃어버리게 됩니다, 특히 시간 스탭이 길어질수록 이러한 현상은 RNN의 학습 과정에서 주요한 문제점으로 작용할 수 있습니다.
'딥러닝 머신러닝 > 정리' 카테고리의 다른 글
Attention (0) | 2023.09.23 |
---|---|
LSTM(Long Short-Term Memory) (2) | 2023.09.16 |
평균 제곱 오차(Mean Squared Error, MSE) (0) | 2023.09.11 |
오차제곱합(Sum of Squares for Error, SSE) (0) | 2023.09.10 |
교차 엔트로피 오차(Cross Entropy Error, CEE) (0) | 2023.09.08 |