RNN의 문제

  • gradient vanishing
    • 관련 정보와 그 정보를 사용하는 지점 사이의 거리가 멀 경우 역전파 과정에서 기울기가 점차 줄어들어 학습능력이 크게 저하되는 문제가 발생
    • tanh(..tanh(...tanh(..))) 이렇게 tanh를 반복적으로 적용하는데, tanh는 미분하면 1보다 작기 때문에 gradient vanshing
    • 따라서 RNN은 long-range dependency를 잘 학습하지 못한다.

LSTM

  • gate-sigmoid를 이용하여 0~1 사이의 값을 구한다
    • forget gate : 이전 cell state 정보를 얼마나 잊어버릴지 (0에 가까울수록 많이 잊어버림)
    • input gate : 새로운 정보를 cell state에 얼마나 반영할지 (1에 가까울수록 많이 반영한다)
    • output gate : cell state 정보를 hidden state에 얼마나 내보낼지 (1에 가까울수록 많이 내보낸다)

 

  • gradient vanishing 문제의 완화

curt-park.github.io/2017-04-03/why-is-lstm-strong-on-gradient-vanishing/

 

LSTM가 gradient vanishing에 강한이유?

The reason why LSTM is strong on gradient vanishing

curt-park.github.io

RNN의 backpropagation

$$ h^{<t>} = tanh(W_{hh}h^{<t-1>}+W_{xh}x^{<t>}+b_h) $$

$$ \frac{\partial h^{<t>}}{\partial h^{<t-1>}} = W_{hh} tanh'(W_{hh}h^{<t-1>}+W_{xh}x^{<t>}+b_h) $$

$$ \frac{\partial h^{<t_1>}}{\partial h^{<t_2>}} 
= \frac{\partial h^{<t_1>}}{\partial h^{<t_1-1>}} * \frac{\partial h^{<t_1-1>}}{\partial h^{<t_1-2>}} * ... *\frac{\partial h^{<t_2+1>}}{\partial h^{<t_2>}} $$

$$ \prod_{t=t_2}^{t_1-1} W_{hh} tanh'(W_{hh}h^{<t>}+W_{xh}x^{<t+1>}+b_h) $$

 

W_hh의 값이 -1 ~ 1 사이라면 곱해질수록 0에 가까워지고,

W_hh의 값이 -1 미만, 1 초과라면 곱해질수록 gradient가 exploding된다.

 

 

LSTM의 backpropagation

$$ C^{<t>} = f_t*C^{<t-1>} + i_t\tilde{C^{<t>}} $$

$$ \frac{\partial C^{<t>}}{\partial C^{<t-1>}} = f_t $$

$$ \frac{\partial C^{<t_1>}}{\partial C^{<t_2>}} =\frac{\partial C^{<t_1>}}{\partial C^{<t_1-1>}} * \frac{\partial C^{<t_1-1>}}{\partial C^{<t_1-2>}} * ... * \frac{\partial C^{<t_2+1>}}{\partial C^{<t_2>}} $$

 

$$ \frac{\partial C^{<t_1>}}{\partial C^{<t_2>}} =\prod_{t=t_2+1}^{t1}f_t $$

 

forget gate의 값이 1에 가깝다면(=이전 hidden state를 잊어버리지 않는 것) gradient가 유지되어 전달될 것이고,

forget gate의 값이 0에 가깝다면(=이전 hidden state를 잊어버리고 새로운 hidden state 계산된 것) gradient가 0에 가까울 것이다.

 

forget gate의 의미와 gradient의 크기가 유사하게 된다.

 

 


GRU

  • LSTM를 조금 더 간단하게 수정한 버전

https://excelsior-cjh.tistory.com/185

 

  • LSTM에서는 cell state, hidden state가 사용된 반면, GRU에서는 hidden state만 사용한다.
  • LSTM에서는 3개의 gate(forget, input, output)가 사용된 반면, GRU에서는 forget, input gate만 사용한다.
    • z_t가 1에 가깝다면 이전의 hidden state를 많이 잊어버리고, 새로운 정보를 많이 반영
    • z_t가 0에 가깝다면 이전의 hidden state를 많이 유지하고, 새로운 정보를 덜 반영

$$ z_t = \sigma(W_z[h_{t-1}, x_t]) $$

$$ r_t = \sigma(W_r[h_{t-1}, x_t]) $$

$$ \tilde{h}_t = tanh(W[r_t*h_{t-1}, x_t]) $$

$$ h_t = (1-z_t)*h_{t-1}+z_t*\tilde{h}_t $$

'🙂 > Coursera_DL' 카테고리의 다른 글

WEEK8 : negative sampling  (0) 2020.12.26
WEEK8 : Word Embedding (word2vec)  (0) 2020.12.26
WEEK7 : RNN  (0) 2020.12.25
WEEK7 : convNet in 1D, 2D, 3D  (0) 2020.12.25
WEEK7 : Neural Style Transfer  (1) 2020.12.25

+ Recent posts