Deep-RNN 정규화가 궁금해?

Junho Baek
CURG
Published in
9 min readMay 23, 2020

이번 글에서 Recurrent Neural Network Regularization[1]이라는 논문을 소개하고자 한다. 이 논문에서는 multi-layer recurrent neural network 모델을 효과적으로 정규화하는 방법을 제시한다. 이 논문을 이해하기 위해서는 LSTM과 Dropout에 대한 이해가 필요하므로 이 둘에 대한 설명을 간단히 한 후 논문에서 제시한 모델 정규화 방법을 설명하고 글을 마치겠다.

LSTM(Long-Short-Term-Memory)과 Dropout

[RNN]
[LSTM]

LSTM(Long-Short Term Memory models)이란 RNN(Recurrent Neural Network)의 hidden state에 memory cell state를 추가하여 기존 RNN의 gradient vanishing problem을 해결한 모델이다[2]. 기존의 RNN은 input 되는 학습 데이터의 길이가 길어질수록 back-propagation 단계에서 gradient가 줄어들어 weight와 bias가 유의미하게 변하지 못하는 gradient vanishing problem을 가지고 있다. 이를 해결하기 위해 LSTM은 cell state를 추가하여 과거의 정보를 얼마나 잊을지, 현재 time stamp에서 input 된 정보를 얼마나 기억할지를 결정한다. 이를 통해 gradient가 vanishing 되지 않고 잘 전달된다.

위의 LSTM 그림에서 x는 input을 의미하고, t는 time stamp, h는 output이다. 빨간 원으로 표시된 두 지점 중 위에 있는 흐름에서 cell state를 저장하고, 밑의 흐름에서는 input을 받고 output을 출력한다.

이때 왼쪽에서 오른쪽으로 연결되는 두 흐름을 과거의 정보가 같이 전달된다고 하여 recurrent connection이라 한다.

Dropout이란 deep 한 neural network 모델을 만들 때 overfitting 문제를 해결하고 정규화된 모델을 만들기 위해 말 그대로 network 일부를 생략하는 방법이다[3]. 생략된 network는 학습에 영향을 끼치지 않게 된다.

[Dropout]

모델을 학습시키다 보면 학습 데이터에 의해 각 각의 network의 weight들이 동조화(co-adaption)되는 현상이 일어날 수 있다. 이 현상을 dropout을 적용하면 network를 무작위로 생략하여 학습을 시킴으로써 피할 수 있다.

왜 RNN은 안돼?

hidden layer 층을 여러 개 쌓아 올린 deep 한 RNN 구조를 Multi-layer RNN이라고 한다. 논문에서는 Multi-layer RNN이 존재하지만, 일반적으로 RNN을 적용하는 application들이 overfitting문제로 얕은 RNN 모델을 사용하고 있음을 지적한다. 우리는 앞서 overfitting 문제를 해결하는 방법에 대해 알아보았다. ‘dropout을 적용하면 되는 것 아닌가?’ 하는 의문이 드는 것이 자연스럽다. 하지만 논문에서는 RNN에서 dropout이 효과적으로 모델을 정규화시키지 못한다고 말한다. 이유는 과거의 정보가 현재 input 되는 정보에 영향을 미치는 RNN의 구조상 dropout을 적용하여 무작위로 network를 생략하였을 때 과거의 정보가 통째로 지워질 수 있기 때문이다. 이 결과로 학습 데이터에 noise가 증폭되고 학습에 치명적인 영향을 줄 수 있다.

IDEA

논문에서는 RNN 모델에서 과거가 다음 time stamp로 전달되는 recurrent connection이 아닌 connection에만 dropout을 적용하는 방식을 제안한다. 글로만 설명하는 것은 한계가 있음으로 논문에서 제시한 그림을 통해 설명하겠다.

[LSTM memory cell state]
[dropout을 적용한 multi-layer RNN]

위의 그림에서 y는 output이고 직사각형 하나하나는 hidden state, x는 input이고 t는 time stamp이다. multi-layer RNN을 간단히 그림으로 표현하기 위해 논문에서는 두 층의 hidden state를 가진 RNN을 표현하였다. 이때 점선으로 연결된 부분이 dropout을 적용할 수 있는 connection이다. 다음 layer 층으로 넘어가는 connection에만 dropout을 적용하는 것이 이 논문의 핵심 idea이다.

dropout을 적용하기 전과 후의 수식을 같이 놓고 차이점에 주목하여 더 자세히 알아보자.

[RNN]

기존의 RNN에 대한 equation이다. 여기서 ⊙는 두 벡터의 element-wise multiplication이다. 그리고 이 논문에서 각 input에 weight와 bias를 곱하는 행위를 T라는 notation으로 간단히 치환하였다. l은 multi layer에서 layer 층을 의미한다.

[LSTM]

dropout을 적용하기 전 LSTM의 equations이다. cell state가 추가되었기 때문에 equation 하나가 더 추가되었다.

말로써 풀어보면 다음과 같다.

1. (l번째 layer, t(현재) time stamp의 memory cell state)

= (forget gate (과거의 정보를 얼마나 잊을지)) ⊙ (이전 time stamp의 cell state)

+ (input) ⊙ (input modulation gate (현재 정보를 얼마나 기억할지))

2. (l번째 layer, t(현재) time stamp의 hidden state)

= (output) ⊙ (현재의 cell state)

빨간 박스가 1번 equation에 해당하는 영역이고, 주황색 박스가 2번 equation에 해당하는 영역이다.

이제 dropout을 적용한 LSTM의 equations를 살펴보자.

[regularized LSTM]

D가 해당 hidden state를 random 하게 비활성화시키는 dropout operator이다. D가 적용된 hidden state를 보면 l-1 층의 같은 time stamp의 hidden state에만 dropout이 적용됨을 알 수 있다.

모든 hidden state에 dropout을 적용하는 경우 총 L 층의 hidden layer가 쌓인 모델에서 input 되는 정보는 dropout connection을 L+1번 이상 지날 수 있다. 하지만 논문에서 제안한 방법처럼 일부분에만 dropout을 적용하면 input 되는 정보는 output 될 때까지 최대 L+1번의 dropout connection을 지난다. 이렇게 dropout connection을 지나는 횟수를 제한함으로써 과거의 정보가 크게 유실됨을 방지하는 것이다.

[L=2, 굵은 선으로 흐르는 정보는 3번까지 dropout에 영향을 받는다]

실험

논문에서는 language modeling, speech recognition, machine translation, image caption generation 총 4가지로 실험을 진행하였다. 언어 모델의 평가 방법은 perplexity이다. perplexity는 엔트로피와 유사한 측면이 있는데, cross entropy의 근삿값으로 다룰 수 있다. ‘착각의 정도’라는 의미로 해석할 수 있기에 수치가 낮을수록 모델의 성능이 좋다.

Table 1만 간단하게 살펴보면 non-regularized LSTM 모델은 test set 점수가 114.5점이다. 이와 비교하여 Dropout을 적용한 Large-regularized LSTM은 test set 점수가 78.4점으로 더 일반화를 잘 시킨 모델이라는 결과가 나왔다.

결론

이 논문은 RNN에 dropout을 부분적으로만 적용하여 multi-layer RNN을 현실적으로 application에 사용할 수 있다는 가능성을 제시하였다. 다음 포스팅부터는 GRU, LSTM 등과 같은 여러 가지 순환신경망의 모델 구조에 대해 살펴보자.

References

[1] Wojciech Zaremba, Ilya Sutskever, Oriol Vinyals. Recurrent Neural Network Regularization(2015)

[2] https://colah.github.io/posts/2015-08-Understanding-LSTMs/

[3] Nitish Srivastava, Geoffrey Hinton, Alex Krizhevsky, Ilya Sutskever, Ruslan Salakhutdinov. Dropout: A Simple Way to Prevent Neural Networks from Overfitting(1929−1958, 2014)

--

--