1. RNN(Recurrent Neural Network)
1) Basic RNN
(1) RNN 구조

왼쪽-rolled RNN, 오른쪽-unrolled RNN
- RNN은 sequence 데이터가 입출력으로 주어진 상황에서 각 time step에서 주어진 입력 벡터 $x_t$와 이전 time step에서 계산한 hidden state vector $h_{t-1}$를 입력으로 받아 와 현재 time step에서의 $h_t$를 출력으로 만드는 구조이다.
- 그림에서 A모듈이 재귀적으로 호출되어 현재 time step (t)에서의 출력값 $h_t$는 다음 time step (t+1)의 입력값으로 사용된다. 즉, RNN은 매 time step에서 hidden state를 계산하기 위해 동일한 파라미터(가중치 행렬)를 사용한다.

- RNN 계산에 사용되는 변수들은 위와 같다.
- 이전 time step에서의 hidden state vector $h_{t-1}$과 현재 time step의 입력값 $x_t$를 입력받아 현재 time step의 출력값인 $h_t$를 계산한다.
- 함수 $f_W$에서의 $W$는 RNN 모듈에 필요한 linear transformation matrix를 정의한다.
- $y_t$는 각 time step에서의 출력값으로 매 time step마다 예측하는 경우도 있고, 마지막 time step에서만 예측하는 경우도 있다.(단어별 품사 예측-매번 예측, 문장별 긍부정 예측-마지막에서만 예측)
(2) RNN hidden state 계산하기

- 각 단어의 임베딩 벡터는 3차원, hidden state는 2차원으로 가정하고(미리 정의해야 함), $h_t$는 $h_{t-1}$과 동일한 파라미터를 공유하기 때문에 동일한 2차원 벡터이다.
- 각각의 가중치 행렬 $W$와 $x_t$, $h_{t-1}$의 연산 후 tanh activation function을 거쳐 $h_t$를 구한다.
- W: linear transformation matrix,
(2,5)
크기로 정의됨
- $W_{xh}$ : $x_t$ → $h_t$로 변환하는 역할