RNN 소개
Sequential Model
- 일상에서 다루는 대부분의 데이터가 시퀀셜 데이터다. (말, 영상 등)
- 시퀀셜 데이터를 다루는 가장 큰 어려움은, 우리가 가장 얻고 싶은 것은 어떤 영역에 어떤 정보가 있다와 같은 것인데, 시퀀셜 데이터는 길이가 얼마나 될지 모르는 것이다. 즉 데이터가 몇개의 차원으로 되어있을지 모른다는 것인데, 이것은 시퀀셜 모델은 몇 개의 데이터가 들어오든 동작할 수 있어야 한다.
- 이전에 어떤 데이터가 들어왔을 때 다음에 어떤 데이터가 들어올 지 예측하는 것이 가장 기본적인 모형이다.
- 과거에 고려해야 하는 정보량이 계속 늘어난다는 것이 가장 큰 어려움이다.
시퀀셜 모델을 가장 간단히 만들 수 있는 방법은, Fix the past timespan 과거의 데이터를 몇 개만 보겠다고 정해두는 것이다.
- Autoregressive model
- Markov model (first-order autoregressive model) 가장 큰 특징은 가정을 할 때 바로 이전 과거에만 dependent 한다는 것이다. 이러한 마르코프 모델은 과거의 많은 정보를 버릴 수밖에 없다는 단점이 있다.
Latent autoregressive model
- 위의 모델들은 과거의 많은 정보를 사용할 수 없기에 대안으로 나온 것이 Latent autoregressive model이다.
- 중간에 Hidden state가 들어가 있는데, 이것은 과거의 정보를 요약하고 있다고 생각하면 됨.
- 즉 바로 직전 과거에 의존하는 것이 아닌 hidden state에 의존하는 구조이다.
Recurrent Neural Network
자기 자신으로 돌아오는 구조가 하나 있다. 나의 h_t 에서의 t에서의 hidden state는 x_t에 의존하는 것이 아니라 t - 1에서 얻어진 cell state에 의존하는 구조임.
Recurrent 구조를 시간순으로 풀게 되면 입력이 많은 FC Layer로 표현할 수 있다.
Short-term dependencies
- 과거에 얻어진 정보들이 전부 취합되어서 미래에 고려해야 하는데 RNN 자체는 하나의 Fixed Rule로 하나로 취합하기 때문에 과거의 정보가 현재까지 살아남기가 힘들어진다.
- 즉 불과 몇 스텝 전의 정보는 잘 고려가 되는데 한참 전의 정보는 잘 고려가 되지 않는다.
- 활성화함수가 sigmoid 인 경우 Vanishing(기울기소실) 문제, ReLU일 때는 exploding gradient(기울기폭발) 문제가 발생한다.
Varnila RNN
LSTM (Long Short Term Memory)
- cell state는 내부에서만 흘러가고 t + 1개의 정보를 summarize 해준다.
- output이 아래로도 흐르는데, 이 output은 previous hidden state로 t+1로도 흐르게 된다.
Forget gate
중간에 흘러가는 cell state가 핵심이다.
흘러가는 컨베이어 벨트처럼, 어떤 물건을 올리고 빼고 결정하는 것이 Cell State로 Forget Gate의 역할이다.
Decide which information to throw away.
Input gate
- \begin{aligned} i_{t} &=\sigma\left(W_{i} \cdot\left[h_{t-1}, x_{t}\right]+b_{i}\right) \\ \tilde{C}_{t} &=\tanh \left(W_{C} \cdot\left[h_{t-1}, x_{t}\right]+b_{C}\right) \end{aligned}
- Decide which information to store in the cell state.
Update cell
- Update the cell state.
- $\begin{aligned}
i_{t} &=\sigma\left(W_{i} \cdot\left[h_{t-1}, x_{t}\right]+b_{i}\right) \\
C_{t} &=f_{t} C_{t-1}+i_{t} \tilde{C}_{t}
\end{aligned}$
Output gate
- Decide which information to store in the cell state.
- \begin{aligned} i_{t} &=\sigma\left(W_{i} \cdot\left[h_{t-1}, x_{t}\right]+b_{i}\right) \\ \tilde{C}_{t} &=\tanh \left(W_{C} \cdot\left[h_{t-1}, x_{t}\right]+b_{C}\right) \end{aligned}
GRU (Gated Recurrent Unit)
게이트가 두 개임. (reset gate & update gate)
cell state가 없고 hidden state만 있음.
LSTM보다 GRU의 성능이 높은 경우가 있음. 하지만 Transformer 등장 이후엔 둘 다 잘 쓰지 않음.