[U] Week 3 - Recurrent Neural Networks

JaeJun Lee ·2022년 10월 4일
0

부스트캠프 AI Tech

목록 보기
19/30

Seqeuntial한 데이터를 다루기 위한 네트워크들이 있다.

Markov model(first-order autoregressive model)

t=1Tp(xtxt1)\prod^\Tau_{t=1}p(x_t|x_t-1)

입력 데이터와 이전 time step 1개만 고려해서 다음을 예측한다.

  • 과거에 많은 정보를 고려할 수가 없다

Latent autoregressive model

x^=p(xtht)ht=g(ht1,xt1)\hat{x}=p(x_t|h_t) \qquad h_t=g(h_{t-1},x_{t-1})

과거의 정보를 요약하는 hidden state(hth_t)와 입력 데이터를 고려해서 다음을 예측한다.

Recurrent Neural Network (RNN)

h1=ϕ(Wth0+UTx1)h1=\phi(W^th_0+U^Tx_1)
h2=ϕ(WTϕ(Wth0+UTx1)+UTx2)h_2=\phi(W^T\phi(W^th_0+U^Tx_1)+U^Tx_2)
h3=ϕ(WTϕ(WTϕ(Wth0+UTx1)+UTx2)+UTx3)h_3=\phi(W^T\phi(W^T\phi(W^th_0+U^Tx_1)+U^Tx_2)+U^Tx_3)
h4=ϕ(WTϕ(WTϕ(WTϕ(Wth0+UTx1)+UTx2)+UTx3)+UTx4)h_4=\phi(W^T\phi(W^T\phi(W^T\phi(W^th_0+U^Tx_1)+U^Tx_2)+U^Tx_3)+U^Tx_4)

short-term dependencies한 문제가 있다.

  • 과거에 얻은 정보들을 요약해서 미래에 예측할 때 고려해야 하는데 RNN은 고정된 벡터(규칙)로 계속 정보들을 취합하기 때문에 뒤로 갈수록 초기 정보들을 고려하기 힘들어진다
    • hidden state에서 sigmoid를 사용하면 정보를 계속 줄이기 때문에 vanishing gradient가 발생한다
    • ReLU를 사용하면 W가 양수일 때 계속 곱해지기 때문에 exploding gradient가 발생한다
    • activation function을 주로 tanh를 사용한다

Long Short Term Memory (LSTM)

입력으로는 input(xtx_t)와 previous cell state(ct1c_{t-1}), previous hidden state(h_{t-1}) 총 3가지를 사용해 output(hth_t)와 next cell state(ctc_t), next hidden state(hth_t)를 출력한다. 이때 사용하는 Gate들이 있다.

  • Forget Gate

    ft=σ(Wf[ht1,xt]+bf)f_t=\sigma(W_f \cdot [h_{t-1}, x_t]+b_f)
    • 어떤 정보를 버릴지 결정하는 Gate이다
  • Input Gate

    it=σ(Wi[ht1,xt]+bi)Ct~=tanh(WC[ht1,xt]+bC)i_t=\sigma(W_i\cdot[h_{t_1},x_t]+b_i)\\ \tilde{C_t}=tanh(W_C\cdot[h_{t-1},x_t]+b_C)
    • cell state에 저장할 정보를 결정한다
  • Update cell

    it=σ(Wi[ht1,xt]+bi)Ct=ftCt1+itCt~i_t=\sigma(W_i\cdot[h_{t_1},x_t]+b_i)\\ C_t=f_t*C_{t-1}+i_t*\tilde{C_t}
    • ftf_tCt~\tilde{C_t}를 사용해 새로운 cell에 update한다
  • Output Gate

    ot=σ(Wo[ht1,xt]+bo)ht=ottanh(Ct)o_t=\sigma(W_o[h_{t-1},x_t]+b_o)\\ h_t=o_t*tanh(C_t)
    • 밖으로 내보낼 output과 next로 보낼 정보를 결정한다
  • RNN이 잡지 못하는 Long-term dependencies를 극복한다

Gated Recurrent Unit (GRU)

zt=σ(Wz[ht1,xt])rt=σ(Wr[ht1,xt])ht~=tanh(W[rtht1,xt])ht=(1zt)ht1+ztht~z_t=\sigma(W_z\cdot[h_{t-1},x_t])\\ r_t=\sigma(W_r\cdot[h_{t-1},x_t])\\ \tilde{h_t}=tanh(W\cdot[r_t*h_{t-1},x_t])\\ h_t=(1-z_t)*h_{t-1}+z_t*\tilde{h_t}

Reset Gate, Update Gate 총 2개의 Gate를 가지며 hidden state(hth_t)가 output 역할을 해서 Output Gate가 없다.

  • LSTM보다 Gate 수가 적어 파라미터 수가 적고 성능이 보다 나은 경향이 있다고 알려져 있다

0개의 댓글