경북대학교컴퓨터학부 2022. 12. 14. 20:54

📌 Time series data

  • dynamic data
  • 가변 길이
  • sequential data

 

📌 Recurrent Neurons

  • MLP, CNN : Feedforward NN
  • RNN : backward connection
  • RNN은 input을 받으면 output을 만들어내고, 그 output을 다시 넣는다

 

📌 Recurrent Neurons

  • 시간 $t$일 때, recurrent neuron은 2개의 input을 받는다
    • $x(t)$
    • $y(t-1)$ : 이전 시간의 output
    • $y(t)=\theta(W_x^t x(t)+W_y^T y(t-1) +b) $. theta는 activation function
  • 노드는 1개이지만, 이해하기 위해서 펼쳐놓은 것
  • input, output의 개수는 여러 개가 될 수 있다

  • MLP와 비슷하게 입력층, 은닉층, 출력층을 가진다
  • 순환 에지는 t-1 순간에 발생한 정보를 t 순간으로 전달하는 역할이다(시간에 따라 weight는 변하지 않고, 동일하게 곱해진다)

 

📌 Memory cells

  • recurrent neuron은 output이 input으로 들어가야 하므로 저장하고 있어야 한다.
  • 시간 단계에 걸쳐 일부 상태를 보존하는 recurrent NN의 일부를 memory cell이라고 한다
  • short pattern에 대한 학습만 가능한 neuron이다

 

📌 Recurrent Neural Network types

  • TL : Sequence-to-sequence
    • 주식 시장 예측
  • TR : Sequence-to-vector
    • 문장을 읽고 뜻을 파악할 때 활용
  • BL : Vector-to-sequence
    • 사진의 캡션(주석)을 만들 때 활용
  • BR : Encoder-Decoder
    • 문장을 번역할 때 활용

 

📌 Training RNNs

  • unroll RNN이 필요하다
  • Backpropagation through time(BPTT)
    1. unrolled net에 대해 forward pass를 진행한다
    2. cost function C()를 사용하여 output sequence를 평가한다
    3. gradient를 backward로 전파한다(실선)
    4. update model parameter
  • weight, bias는 time step 상관없이 동일하다!

 

  • RNN은 input shape에서 길이를 지정할 필요가 없다(애초에 data가 가변적이므로)

 

📌 Deep RNNS

  • layer도 쌓아서 성능을 좋게 만든 것

 

📌 Problem in handling LONG sequences

  • gradient vanish(weight가 1보다 작을 때) 또는 gradient 폭발(weight가 1보다 클 때) RNN은 DMLP, CNN보다 더 심각하다. (긴 샘플이 자주 발생하고, 가중치 공유 때문에 같은 값을 계속 곱하기 때문이다)
  • 결과적으로 sequence의 first input을 잊어버리게 된다

 

📌 Unstable gradients problem

  • Non-saturating activation function -> saturating
    • ReLU는 해결책이 되지 않는다. 왜냐하면 같은 weight가 계속해서 곱해지게 될텐데, 그렇게 되다보면 output은 explode하게 된다. 그래서 nonsaturating activation function을 사용하는 것은 도와주지 못한다
    • hyperbolic tangent와 같은 saturating activation function을 사용하자
  • Batch Normalization -> Layer Normalization
    • 가로방향(batch) Normalization을 통해 조정해봤자 다시 들어오는 input은 평균과 표준편차가 다르다. 즉, batch normalization은 의미가 없다.
    • 따라서 세로방향(layer) Normalization을 하여 Feature demension 중심으로 normalization을 진행하는 것이 효율적이다

 

 

📌 LSTM cells

  • converge faster, long-term dependency 탐지 가능

  • $h(t)$ : short-term state
  • $c(t-1)$ : long-term state
  • x gate : output이 0이면 close, 1이면 open
  • $f_{(t)}$ (forget gate) : long-term state을 살릴지, 죽일지 결정
  • $i_{(t}}$ (input gate) : $g_{(t)}$의 어떤 부분을 long-term state에 추가해야 할지 결정
  • $o_{(t)}$ (output gate) : output을 살릴 것 ? 버릴 것? 

 

📌 GRU cell

  • LSTM Cell에서의 두 상태 벡터 $C_t$와 $h_t$가 하나의 벡터 로 합쳐졌다.
  • 삭제 게이트와 입력 게이트가 리셋 게이트와 업데이트 게이트로 변화되었다.
  • 하나의 gate controller인 $z_t$가 forgetinput 게이트(gate)를 모두 제어한다. $z_t$가 1을 출력하면 forget 게이트가 열리고 input 게이트가 닫히며, $z_t$가 0일 경우 반대로 forget 게이트가 닫히고 input 게이트가 열린다. 즉, 이전($t-1$)의 기억이 저장 될때 마다 타임 스텝 $t$의 입력은 삭제된다.
  • GRU 셀은 output 게이트가 없어 전체 상태 벡터 $h_t$가 타임 스텝마다 출력되며, 이전 상태 $h_{t-1}$의 어느 부분이 출력될지 제어하는 새로운 gate controller인 $r_t$가 있다.