1) RNN
: 시계열 데이터(시간에 따라 변하는 데이터)를 처리하기에 좋은 뉴럴 네트워크 구조
EX) 음성인식, 번역기, 감정 분석, 음악 생성기
CNN은 이미지 구역별로 같은 weigth를 공유한다면,
RNN은 시간별로+과거와 현재가 같은 weight를 공유한다
기본가정
- First Order System
: 현재 시간의 상태가 이전 시간의 상태와 관련이 있다고 가정
(이 시스템은 외부 입력 없이 자기 혼자서 돌아간다(autonomous system)
과정

실제 구조

Many-to-Many ex) 번역
Many-to-one ex) 예측 / seq2seq
One-to-many ex) 생성
many-to-one 예시
-> seq2seq

🎀 RNN 단점보완 -> LSTM과 GRU
- 무한대로 발산 or 0으로 발산..(exploding/vanishing gradient)
-> 해결 : Gate RNNs..
(수도꼭지처럼 일정 수준에서 멈춰준다)
2) LSTM(Longh short-term memory)
- Gate 구조 추가(gradient flow를 제어할 벨브 역할)
- 4개의 MLP 구조

- Forget Gate : 얼마나 잊어버릴까?
- Input Gate : 얼마나 사용할까?
-> 두 데이터를 Cell state에서 적절히 섞는다.
-> Cell을 합쳐서 Output Gate로 넘긴다.
- LSTM은 3개의 gate(forget, Input, output)를 가지고 있고
- 이 gate들은 cell state를 보호하고 제어한다.
🌟 구조 상세설명 🌟
참고 사이트

LSTM의 반복 모듈에는 4개의 상호작용하는 layer가 들어있다.
3개의 Gate가 있고, 이 Gate들은 Cell State를 보호하고 제어한다.
Gate
- Gate는 시퀀스 데이터의 흐름을 제어하고
- 어떤 정보를 저장하고 삭제할지를 결정한다.
Gate 사용으로 LSTM이 장기 의존성 정보를 유지
할 수 있게 됨
Cell State
- <선택된 정보들>을 < cell state>와 조합하여 사용하게 됨
장기 의존성 정보를 업데이트
하고 전달
할 수 있게 됨
즉, Gate
와 Cell State
를 통해 LSTM은 장기적인 의존성 정보를 기록하고 학습할 수 있어, 더 긴 시퀀스 데이터를 처리할 수 있다.




3) GRU(Simplification of LSTM)
: LSTM 모델이 너무 복잡하기 때문에 간소화시킨 버전
- Cell state가 없음
LSTM에서는 cell, hidden 둘다 초기화 해주지만, GRU에서는 hidden만 초기화 시켜줌
🎀 LSTM VS GRU
- 둘다 RNN보다는 좋다.
- 둘 중 뭐가 좋은지는 확실히 말할 수 없음
RNN 더 이해하기
https://ratsgo.github.io/natural%20language%20processing/2017/03/09/rnnlstm/