1. RNN (Recurrent Neural Network)
1. 기본 구조
- 순차 데이터(문장, 음성, 시계열 등) 처리를 위해 설계
- 은닉층에 loop(순환 구조)를 둬서 이전 시점의 hidden state와 현재 입력을 종합해 현재 hidden state를 계산
- 모든 시점에서 같은 가중치(Weight)와 바이어스 사용 $h_t = \tanh(W \cdot [h_{t-1},\, x_t] + b)$
- Output($y_t$)을 내고 싶다면 별도 가중치를 통해 출력 레이어로 연결
- 구조에 따라 One-to-One, One-to-Many, Many-to-One, Many-to-Many 형태 등 다양
2. 문제점: Gradient Exploding / Vanishing
- RNN은 시퀀스 길이가 길어질수록 Gradient가 Backpropagation 시 반복 곱셈으로 인해 폭발(Exploding) 혹은 소실(Vanishing) 문제 발생
- 가중치 W의 고유값이 1보다 크면 Exploding, 작으면 Vanishing 경향 → 장기 의존(Long-term Dependency) 학습이 어려움
2. LSTM (Long Short-Term Memory)
1. 배경
- H.ochreiter & Schmidhuber (1997)가 제안
- RNN의 Gradient Vanishing / Exploding 문제를 해결하기 위해 Cell state를 추가
2. LSTM 셀 구조
(하나의 LSTM 셀 내부에는 다음과 같은 요소들이 존재)
- Cell state:
- RNN에서의 장기 기억(Long-term memory) 역할
- Hidden state:
- LSTM에서의 단기 기억(Short-term memory) 역할
- Gate (총 4개):
- Forget gate (f): 이전 셀 상태 $(c_{t-1})$를 얼마나 반영할지 결정
- Input gate (i): 새로운 정보(g)를 얼마나 현재 셀 상태에 반영할지
- Output gate (): 최종적으로 $c_t$에서 얼마나 추출해서 $h_t$로 내보낼지
- Candidate gate (): 새로 들어올 후보 정보(주로 $\tanh$활성화)
- Gate 계산:
- 현재 입력 $(x_t)$와 이전 hidden $(h_{t-1})$를 합쳐서, 각각의 게이트($i,f,o,g$)를 구함
- $f, i, o$는 sigmoid(0~1), $g$는 tanh(-1~1)
- Cell state 업데이트: $c_t = f \odot c_{t-1} + i \odot g$
- : 요소별 곱(Element-wise multiplication)
- Hidden state 업데이트: $h_t = o \odot \tanh(c_t)$
3. Gradient 문제 해결
- Cell state $(c_t)$를 도입해, 과거 정보를 직접 경로로 전달
- Forget gate 등으로 $(c_t)$의 경사(gradient) 흐름이 시점마다 달라지는 가중치(f)를 거치게 하여 장기간 Gradient 소실/폭발 문제 완화
- ResNet의 Identity 연결과 유사한 효과로 해석 가능
3. GRU (Gated Recurrent Unit)
1. 배경
- Cho, Chung (2014) 등이 제안
- LSTM의 구조를 더 간단하게 만든 RNN 변형
- Gate 수와 매개변수 수가 줄어, 학습 효율이 좋아짐
2. GRU 셀 구조
- Update gate $(z_t)$:
- LSTM의 input gate + forget gate 역할을 합친 것
- 과거($h_{t-1}$)와 현재($x_t$) 중 어느 비율로 정보를 가져갈지 결정
- Reset gate $(r_t)$:
- 이전 시점 $(h_{t-1})$ 정보를 얼마나 무시할지 결정
- Candidate hidden $(\tilde{h}_t)$:
- reset gate 적용된 $(r_t \odot h_{t-1})$와 $x_t$ 결합 → 새로운 후보 상태
- 최종 hidden state $(h_t)$ 계산: $h_t = z_t \odot h_{t-1} + (1 - z_t) \odot \tilde{h}_t$
- $(1-z_t)$가 새 정보 반영 비중, $z_t$가 과거 정보 유지 비중
- Cell state 없음:
- LSTM의 $(c_t)$와 $(h_t)$를 통합해 단일 $(h_t)$로 사용
3. 장단점
- 장점: 구조 단순 → 연산량↓, 파라미터 수↓
- 성능 비교: LSTM vs GRU는 과제별 성능 편차가 있으나, 일반적으로 GRU가 더 빠르고, 메모리 사용량 적음
- 활성화 함수: 최종 출력에서 별도 활성화가 없고, 내부에서 sigmoid/tanh만 사용
정리
- RNN: 순환 구조로 시퀀스 처리 but Gradient Vanishing / Exploding 문제
- LSTM: 셀 상태($c_t$)와 게이트(4개)로 장기 의존성 문제 해결
- GRU: LSTM 간소화 버전(게이트 2개), 파라미터 수 적고 학습 빠름
'Theory > LLM & NLP' 카테고리의 다른 글
[NLP] 이론 정리 (0) | 2025.04.08 |
---|---|
[Euron 8th Research 예습 과제] Neural Network(RNN & LSTM) & Transformer 개념 정리 (0) | 2025.03.17 |