RNN(recurrent neural network)
- RNN(Recurrent Neural Network)은 시계열 데이터를 처리하기 위해 고안된 모델로 아래 그림에서와 같이 이전 시각(계층)의 출력 값(은닉 값)이 다음 시각(계층)으로 전파되어 즉, 과거 정보를 계승하여 시계열 데이터에 대응하는 신경망입니다.
RNN의 문제점
- 장기 의존성 문제
- RNN의 은닉층에서 과거의 정보와 현재의 input이 합쳐지면서 진행되는데 이때 과거의 정보가 마지막까지 전달 되지 않는 문제를 장기 의존성 문제라고 합니다.
- 아래의 수식처럼 현재의 입력과 과거의 정보를 더해 활성화 함수 탄젠트를 취해주는데, 함수는 값이 -1에서 1사이에 위치하게 됩니다.
- 문제는 역전파를 통한 가중치 업데이트 과정에서 반복적으로 기울기에 곱해지 보면 점점 작아지는 기울기 소실, 점점 커지는 기울기 폭발 문제가 발생합니다.
- 탄젠트 함수의 도함수는 값이 주로 1보다 작기 때문
RNN의 기울기 소실 문제의 해결
- 기존의 RNN에서 발생하는 기울기 소실 문제를 해결하기 위해 등장한 것이 '게이트가 추가된 RNN'이며 대표적으로 LSTM(Long Short-Term Memory model)과 GRU(Gated Recurrent Unit)이 있으며, 해당 모델에 관한 포스팅은 다음에 마저 진행하도록 하겠습니다.
LSTM(Long Short-Term Memory model)
- 장기 의존성 문제를 해결하기 위해 이전 정보를 오랫동안 기억할 수 있는 메모리셀을 보유하고 있으며, 이를 통해 긴 시퀀스 데이터 처리가 가능하다.
- LSTM은 기본적으로 셀과 게이트로 구성됩니다.
- 셀은 시퀀스데이터를 저장하고, 게이트는 셀의 상태를 조작합니다.
- 게이트는 입력게이트, 망각 게이트, 출력게이트로 이루어진다.
Cell State
- 이전 상태에서 현재 상태까지 유지되는 정보의 흐름을 나타내며, 이를 통해 LSTM은 오래된 정보를 기억하고 새로운 정보를 갱신이 가능합니다.
Forget gate
- 이전 셀 상태의 정보에 대해서 유지할지 삭제할지에 대해 관장하는 게이트입니다.
- 위의 수식과 같이 이전 은닉 값과 현재 입력이 합해지고 시그모이드의 결과에 따라 나온 값인 f_t 는 0~1 사이의 값으로 이를 통해 셀에 곱해져서 정보의 삭제 여부를 결정합니다.
Input gate
- 새로운 정보에 대한 반영 여부에 대해 관장 게이트입니다.
- 해당 게이트에는 시그모이드 함수와 탄젠트 함수가 존재하며, 시그모이드 함수는 새로운 정보를 얼마나 셀상태에 반영할지를 결정하며, 탄젠트 함수는 RNN과 동일한 출력 계산 원리이며 새로운 정보의 상태를 결정합니다.
- 최종적으로 두값을 곱해서 셀 상태에 더하면 최종적으로 다음 단계에 보내는 셀이 됩니다.
Output gate
- 셀 상태에서 어떤 정보를 은닉 상태(hidden state)로 내보낼지 결정하는 역할
- 현재 입력과 이전 은닉 상태를 결합하여 시그모이드를 통해 출력을 결정
- 이는 얼마나 많은 정보를 은직 상태로 출력할지 결정합니다.
- 마지막으로 tanh 함수는 셀 상태에서 출력될 값을 압축하고, 출력게이트에서 결정된 현재+ 이전 은닉의 정보와 곱해 최종 은닉상태를 만듭니다.
GRU
- LSTM 보단 단순하지만 RNN의 장기 의존성 문제를 해결한 모델
- LSTM과 다르게 두개의 게이트를 가지며, 셀 상태를 사용하지 않고 은닉 상태만 사용
Reset gate
- 현재 상태에서 얼마나 이전 상태의 정보를 유지할지 결정
- 현재 입력값과 이전 은닉상태를 더해 시그모이드 함수를 취해 정보를 얼마나 반영할지 결정
Update gate
- 현재 상태를 얼마나 이전 상태에 반영할지를 결정
- 리셋 게이트와 수식 동일 (가중치만 다름)
후보 은닉 상태 및 최종 은닉상태
- 후보 은닉 상태는 이전 은닉 상태와 현재 입력을 통해 계산
- 리셋 게이트에서 이전 은닉 상태의 정보를 어느정도 사용할지 계산한 값이 곱해짐
- 최종적으로 tanh 함수를 통해 새로운 정보로써 최종 은닉에 반영될 준비가 됨
- 최종 은닉 상태는 업데이트 게이트z_t에 의해 결정
- 1-z_t는 새로운 정보를 얼마나 반영할지 결정하고 후보 은닉 상태와 곱해짐
- 또한, 이전 은닉상태와 업데이트 게이트 출력 값z_t과 곱해져 이전 상태를 결정
- 두 값이 더해져 최종 은닉 상태가 생성
후보 은닉은 새로 생성된 정보이며, 업데이트 게이트는 이전 은닉 상태와 새로운 후보 은닉상태를 어떻게 조합할지 결정합니다.
LSTM VS GRU
- LSTM을 사용하는 경우: 데이터의 장기 의존성이 중요한 문제, 예를 들어 긴 문맥을 처리해야 하는 NLP 작업, 장기 기억이 중요한 시계열 분석 등에서 사용됩니다.
- GRU를 사용하는 경우: 모델이 더 간단한 구조와 빠른 학습 속도가 필요할 때 적합합니다. 상대적으로 짧은 시퀀스나 실시간 처리가 중요한 문제에서는 GRU가 더 나은 선택일 수 있습니다.
참고
1. 촌촌's 기록
2. DEVELOPER
3. DEVELOPER