- RNN (순환 신경망) 은 입력과 출력을 시퀀스 단위로 처리하는 시퀀스(Sequence) 모델.
- 시퀀스들을 처리하기 위해 고안된 모델을 시퀀스 모델이라 함
- 그 중 RNN은 가장 기본적인 인공 신경망 시퀀스 모델
- LSTM, GRU 또한 근본적으로 RNN에 속함
- 이전 단어들에 대한 이해를 바탕으로 다음 단어를 이해하는 방법을 사용하며 내부에 정보를 지속하는 루프로 구성된 신경망

Xt 현재의 입력이 Cell을 거쳐 과거와 현재의 정보를 반영하여 yt 가 됨
- RNN은 입력의 길이만큼 신경망이 펼쳐짐
- 피드 포워드 신경망에 시점(time step)이라는 개념을 도입한 것과 같음
- RNN의 입력과 출력은 모두 기본적으로 벡터 단위를 가정
- 각 시점의 입력은 주로 단어 벡터 혹은 형태소(한국어) 벡터
대표적인 유형

RNN의 기본 구조
- 은닉층에 있는 RNN의 처리 단위는 셀(cell)
- 셀의 출력을 은닉 상태(hidden state)라고 한다.
- RNN은 시점에 따라서 입력을 받는데 현제 시점의 hidden state인 ht 연산을 위해 직전 시험의 hidden state인 h(t−1)를 입력 받아 과저의 정보를 기억한다.

행렬 연산(Matrix Calculation)

하이퍼볼릭탄젠트 함수
- -1 ~ 1의 범위 값으로 값을 반환하는 함수
- 반환값의 범위가 시그모이드 함수보다 크므로 일반적으로 은닉층에서 시그모이드 보다 더 잘 동작한다.
(음수, 0, 양수 모두 표현이 가능하고 출력 평균이 0 근처가 되기 쉬워서 가중치 업데이트가 한쪽 방향으로 치우치지 않음)

LSTM (Long-Term Dependency Problem)
- 기존의 RNN은 시점이 길어지면서 앞에 있던 정보가 소실되는 '장기 의존성 문제'를 가지고 있음
- 기존 RNN의 장기 의존성 문제를 개선하여 기억력을 높인 RNN이 LSTM

x(t−1),xt,x(t+1) - 각 시점의 입력값
h(t−1),ht,x(h+1) - 은닉 상태 (다음 시점으로 전달되는 출력)
σ - 활성화 함수 (시그모이드, 게이트)
tanh - 하이퍼볼릭탄젠트 함수 (새로운 후보 생성)
W - 가중치




GRU (Gated Recurrent Unit, GRU)
- LSTM과 마찬가지로 장기 의존성 문제에 강함
- 3개의 게이트가 있던 LSTM과 다르게 업데이트, 리셋 게이트로 2개

Deep Bidirectional Recurrent Neural Networks
- RNN의 은닉층을 높이거나, 역방향으로 입력을 참고하는 RNN을 추가하여 양방향으로 만들 수있다.
- 또는 양방향 RNN의 은닉층을 추가하여 깊은 양방향 RNN을 만들 수도 있다.
