부스트캠프 AI Tech/DL Basic

[DL Basic] 07. Sequential Models - RNN

Angie 2022. 4. 25. 23:47
  • summaryRNN은 short term dependency는 좋지만 long term dependency 나쁨 → LSTM이 등장GRU은 게이트 2개→parameter개수 줄어듦, LSTM보다 성능 good
  • LSTM은 게이트 3개
  • Sequential 모델이 뭐야?

Sequential Model

  • 일상생활의 대부분 data
  • 어려움
    • 얻고싶은 건 하나의 라벨일 때가 많음
    • 길이가 언제 끝날 지 모름 → 입력의 차원을 알 수 없음

Naive sequence model

  • 입력이 들어왔을 때 다음번 예측
  • 고려해야하는 vector의 수 점점 늘어남

Autoregressive model

  • fix the timespan
    • 과거에 볼 것 개수 고정

Markon model (first-order autoregressive model)

  • 강화학습 MDP
  • 내가 가정을 하기에 나의 현재는 과거에만 dependent
    • 과거는 바로 이전 과거
  • 내일의 수능 점수는 오늘 공부한거에만 dependent?
  • 많은 정보를 버리게 됨
  • joint distribution 표현이 굉장히 쉬워지는 장점

Latent autoregressive model

  • hidden state가 과거의 정보를 summarize
  • 다음 step은 hidden state 하나에만 dependent

Recurrent Neural Networks

  • mlp와 같지만 자기 자신으로 돌아오는 구조 추가
    • time step $t$에서의 $H_t$(hidden state)는 $X_t$에만 dependent 한 것이 아니라 이전 $t-1$에서 얻어진 state에 dependent
  • RNN: 시간 순으로 푼다
    • 내가 지금 time step $t$에서 보고 있는 건 $t-1$에서 전달된 정보
  • 결국 입력이 굉장히 많은 fully connected layer로 표현가능
    • time step을 fix하고 시간 순으로 풀게 되면 결국에는 각각의 네트워크의 parameter가 share하는 굉장히 input이 큰 네트워크 하나가 됨

Short-term dependencies

  • 단점
    • 과거에 얻어지는 정보들이 미래까지 살아남기가 어려움

Long-term dependencies

  • 위의 단점을 극복하고자 LSTM이 등장!
  • 네트워크를 풀게 되면 굉장히 크기가 커짐
  • $W$, $U$: weight
  • $\phi$ : nonlinear activation function
  • 중첩되는 구조
    • 똑같은 weight를 곱하고 nonlinear를 통과시킴
  • if $\phi$가
    • sigmoid라면? (0~1)
      • 정보가 계속 줄어듦
      • vanishing gradient
    • ReLU라면?
      • exploding gradient

Long Short Term Memory

  • Recurrent Neural Network
    • $x$가 어떤 network를 통과해서 weight를 곱하고 그다음에 이전에서 나온 cell state를 합쳐서 concat 한 다음에 network를 통과해서 weight를 곱하고 nonlinear를 거쳐 나오는게 output, 다시 다음번에 들어가게 됨
  • Long Short Term Memory
    • Long Term dependency

  • input: 단어. word embeding
  • output: hidden state
  • previous cell state: 내부에서만 흐름, 정보를 summarize
  • previous hidden state: previous output
  • 입력: previous hidden state + previous cell state, time step $t$번째 입력
  • $\sigma$: gate들. 3개있다

Forget Gate

  • Decide which information to throw away
  • 입력: $x_t$ (현재 입력), $h_{t-1}$(이전의 output)
  • $\sigma$(sigmoid)를 통과하기 때문에 $f_t$는 항상 0~1사이의 값을 가짐

Input Gate

  • Decide which information to store in the cell state
  • $i_t$: 어떤 정보를 저장할까?
    • 이전에 previous hidden state와 현재 입력 $x_t$를 가지고
  • cell state candidate
    • 이전의 cell state와 현재 입력이 들어와서 다른 뉴럴 네트워크를 통해 하이퍼볼릭탄젠트를 통과해서 나오는 모든 값 (-1~+1) 정규화
    • 현재 정보와 이전 출력 값을 가지고 만들어지는 cell state 예비군

Update cell

  • update the cell state
  • $f_t$(forget gate)만큼 이전 $C_{t-1}$을 곱하여 버릴 건 버리고
  • $\tilde C_t$를 가지고 $i_t$만큼 곱해서 어느 값을 올릴 지 정해서
  • 두 값을 combine 한 것을 새로운 cell state로 업데이트

Output Gate

  • Make output using the updated cell state
  • 어떤 값을 밖으로 내보낼지
  • outputgate를 곱하여 next hidden state로 흘러가게 됨

Gated Recurrent Unit

  • Simpler architecture with two gates (reset gate and update gate)
    • reset gate $\approx$ forget gate
  • No cell state, just hidden state
    • hidden state가 곧 output, 다음번 input도 얘!