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.

  • $f_{t}=\sigma\left(W_{f} \cdot\left[h_{t-1}, x_{t}\right]+b_{f}\right)$

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 등장 이후엔 둘 다 잘 쓰지 않음.

Author

Yohan Lee

Posted on

2021-08-12

Updated on

2021-08-22

Licensed under

댓글