DL Basic 7강) Sequential Models & RNN

한량·2021년 8월 12일
0
post-custom-banner

Sequential Model

Naive sequence model

  • Sequential data: 음성, 영상 등 데이터 집합 내의 객체들이 어떤 순서를 가진 데이터
    Input의 길이가 어떻게 될지 누구도 모르는 것이 문제
  • 고려해야하는 과거의 정보량이 점점 늘어남

Autoregressive model

  • 과거의 몇 개만 볼지를 고정해둠

Markov model(first-order autoregressive model)

  • 현재는 바로 전 과거에만 dependent하다는 가정
  • 많은 정보를 버릴 수 밖에 없다

Latent autoregressive model

  • hidden(latent) state가 과거의 정보를 요약해서 담고, 현재는 바로 전 hidden state에만 영향을 받음

RNN, Recurrent Neural Network

  • RNN을 시간순으로 풀게되면 입력이 굉장히 많은 fully-connected layer로도 볼 수 있다
  • Feed-forward NN은 Sequential data를 잘 다루지 못했기 때문에 생겨남

Short-term dependency

  • 시간이 지날수록 과거의 input의 영향이 적어져 반영이 제대로 안됨

Long-term dependency

  • ϕ\phi(sigmoid)는 값을 0~1 사이로 mapping 시키기 때문에 값이 사라지게 됨(vanishing)
  • ReLU를 사용하면 값이 0보다 클 경우 그대로 by-pass하기 때문에 그대로 곱해져 값이 매우 크게 나옴(exploding)

LSTM, Long Short Term Memory

Vanilla RNN의 구조

  • 이전 result ht1h_{t-1}와 현재의 input XtX_t이 concat돼서 tanh를 거쳐 output ht으로

LSTM의 구조

Sigmoid

  • Sigmoidϕ\phi는 0~1 사이의 값을 갖기 때문에 데이터를 얼마나 다음으로 넘겨줄지 결정한다

Hardmard Product(아다마르 곱)

  • 이때 LSTM에서 사용되는 곱셈*는 Hardmard Product(아다마르 곱)이라고 하여, 행렬의 원소별 곱셈을 의미한다

  • Cell state: 지금까지의 정보를 summarize
  • Hidden state: 바로 직전의 output

  • Forget gate: prev hidden state와 현재 input을 갖고 어떤 정보를 살리고, 어떤 정보를 버려서 cell state에 올릴지 결정

  • Input gate: 현재 input 중 어떤걸 사용할지(cell state에 올릴지) 결정
    C~t\tilde{C}_t: sigmoid가 아닌 tanh를 사용하는 이유는 이 '새로운 기억 셀'은 게이트가 아닌, 새로운 데이터를 기억 셀에 추가하는 것이기 때문
    iti_t: C~t\tilde{C}_t를 얼마나 반영할지를 결정

  • Update cell: 버릴건 버리고 챙길건 챙겨서 cell state를 update
    CtC_t는 forget gate의 출력인 ff와 이전 기억 셀 Ct1C_{t-1}의 아다마르 곱으로 계산

  • Output gate: output 결정

LSTM가 어떻게 gradient vanishing를 해결했는가?

  1. 행렬곱이 아닌 아다마르곱을 사용해 기울기를 덜 손실시킴

  2. RNN과 같이 매번 똑같은 가중치 행렬을 사용하는게 아닌, 새로 들어온 데이터에 대해 아다마르 곱이 수행되므로 곱셈의 효과가 누적되지 않음

  3. Cell state가 tanh, sigmoid를 지나지 않기 때문


Gated Recurrent Unit, GRU

  • Reset Gate: 과거의 hidden state를 얼마나 무시할지 결정
    r = 0이면 완전 무시

  • Update Gate: Hidden state를 갱신

  • 매개변수가 적고 계산량도 적기 때문에, 데이터셋이 작거나 모델 설계 시도를 반복해야할 경우 적합
profile
놀고 먹으면서 개발하기
post-custom-banner

0개의 댓글