이번에 리뷰할 논문은 Empricial Evaluation of Gated Recurrent Neural Networks On Sequence Modeling로, 일반적으로
GRU(Gated Recurrent Unit)이라고 불리는 딥러닝 아키텍처와 LSTM(Long Short-Term Memory)라고 불리는 딥러닝 아키텍처를 비교한 논문이다. GRU 같은 경우에는 NLP의 대가이신 조경현 교수님이 참여하셨기 때문에... 한국인으로서 더 의미있는 자연어처리 논문이 아닐까 싶다.
1. Introduction
지금은 바야흐로 트랜스포머의 시대지만, 이 논문이 나왔을 때에는 LSTM이 시계열 데이터 처리 모델로 각광받고 있었고
GRU는 나온지 얼마 되지 않았기 때문에 기계번역에서만 사용되고 있었다. 따라서 이 논문의 목표는 두 가지를 비교하는 것이고
결론부터 말하자면 일정 조건 하에서 보다 심플한 구조에도 불구하고 GRU가 LSTM보다 좋은 성능을 보였다고 한다.
2. Background: Recurrent Neural Network
RNN이 처음 나왔을 때 각광을 받았던 이유는 다양한 길이의 인풋을 하나의 hidden state(주로 마지막 히든 스테이트를
사용한다.)로 표현할 수 있기 때문이다. 이를 식으로 표현하면 다음과 같다.
$h_{t}=g(W\mathbf{x_{t}}+U\mathbf{h_{t-1}})$
이때, $g$는 시그모이드나 하이퍼볼릭 탄젠트처럼 스무스하고 bounded된 활성화 함수를 쓴다.
generative RNN은 어떤 시퀀스가 주어졌을 때 다음 아이템을 예측하는 모델이다.
즉, $g(h_{t})$는 $p(x_{t}|x_{1}, ..., x_{t-1})$을 모델링한 함수이다.
허나 불행하게도, gradient vanishing/exploding 문제로 RNN이 장기의존성을 잡는데는 부적합했고 이를 해결하기 위해
세 가지 방법이 고안되었다.
1. gradient clipping
2. second-order methods
3. 복잡한 activation function을 설계하기 => LSTM, GRU
물론 이 중에서 제일 성능이 좋은 것은 3번에 해당한다.

위 그림에서 알 수 있듯이 LSTM은 cell state를 매우 복잡한 방식(input, forget, output gates)으로 유지하는(?) 반면에
GRU는 hidden state에 reset/update gate를 적용하여 정보를 업데이트 해주는 방식이다.
3. Gate Recurrent Neural Networks
3.1 Long Short-Term Memory Unit
LSTM의 구조를 하나하나 살펴볼 예정인데, 논문과 달리 필자는 bottom-up approach로 설명을 하려고 한다.
일단 $j$번째 LSTM unit은 $t$번째 시간에서 $c_{t}^{j}$를 가진다.
1. input gate: $i_{t}^{j}=\sigma {(W_{i}\mathbf{x_{t}}+U_{i}\mathbf{h_{t-1}}+V_{i}\mathbf{c_{t-1}})}$
- $x_{t}$, hidden state, cell state에 Affine Transformation을 각각 적용해준 후 그걸 $\sigma$ 함수를
적용시켜 0-1부터 사이의 값으로 만들어서 $t-1$시점까지의 정보를 얼마나 기억할지 알려주는 게이트이다.
2. forget gate: $f_{t}^{j}=\sigma{(W_{f}\mathbf{x_{t}}+U_{f}\mathbf{h_{t-1}}+V_{f}\mathbf{c_{t-1}})}$
- $x_{t}$, hidden state, cell state에 Affine Transformation을 각각 적용해준 후 그걸 $\sigma$ 함수를
적용시켜 0-1부터 사이의 값으로 만들어서 $t-1$시점까지의 정보를 얼마나 잊을지 알려주는 게이트이다.
3. new memory gate: $\tilde{c_{t}}^{j}=\text{tanh}(W_{c}\mathbf{x_{t}}+U_{c}\mathbf{h_{t-1}})^{j}$
- input $x_{t}$와 그 전 시점의 hidden state를 이용하여 새로운 메모리 내용을 만들어주는 게이트이다.
4. $c_{t}^{j}=f_{t}^{j}c_{t-1}^{j}+i_{t}^{j}\tilde{c}_{t}^{j}$
- 새로운 cell state는 원래의 메모리를 어느 정도 잊고 새로운 정보를 어느 정도 기억하는 것으로 표현된다.
5. output gate: $o_{t}^{j}=\sigma{(W_{o}\mathbf{x_{t}}+U_{o}\mathbf{h_{t-1}}+V_{o}\mathbf{c_{t}})}^{j}$
- output gate는 새로운 인풋, hidden state, cell state를 모두 고려해서 $c_{t}^{j}$의 정보를 얼마나 $h_{t}^{j}$에
반영할지 나타내준다.
6. activation: $h_{t}^{j}=o_{t}^{j}\text{tanh}(c_{t}^{j})$
따라서, LSTM이 정보를 비교적 오래 유지할 수 있는 까닭은 인풋과 가지고 있는 메모리를 적절히 조합하여
중요한 피쳐를 자기자신이 결정하기 때문이다.
3.2 Gated Recurrent Unit
input, forget, output... 뭐가 많은 LSTM과 다르게 GRU는 비교적 심플하다. previous activation과 candidate
activation의 weighted average라고 할 수 있다. LSTM을 설명한 것처럼 bottom-up approach를
사용해보겠다.
1. reset gate: $r_{t}^{j}=\sigma{(W_{r}\mathbf{x_{t}}+U_{r}\mathbf{h_{t-1}})}$
- 지금까지의 정보와 새로운 인풋의 함수로, 새로운 정보를 얼마나 받아들일지/지금까지의 정보를
얼마나 잊을지를 나타낸다.
2. candidate activation: $\tilde{h}_{t}^{j}=\text{tanh}(W\mathbf{x_{t}}+U(r_{t}\odot\mathbf{h_{t-1}}))$
- $\odot$은 element-wise multiplication 기호로, 지금까지 계산된 state를 얼마나 지울지를 의미한다.
3. update gate: $z_{t}^{j}=\sigma{(W_{z}\mathbf{x_{t}}+U_{z}\mathbf{h_{t-1}})}$
- 2번에서 계산한 새로운 인풋을 포함한 candidate activation을 얼마나 사용할지를 의미하는 게이트
4. activation: $h_{t}^{j}=(1-z_{t}^{j})h_{t-1}^{j}+z_{t}^{j}\tilde{h}_{t}^{j}$
- 최종적으로 계산되는 hidden state는 전 hidden state와 candidate activation의 가중평균이다.
이때 가중치는 update gate에서 계산된 값이 들어간다.
3.3 Discussion
LSTM과 GRU의 공통점은 existing content를 유지하고 그 위에 새로운 content를 더한다는 것이다.
이 논문에서는 이러한 additive feature의 두 가지 장점을 설명한다.
1) 중요한 피쳐가 그대로 유지됨
2) addition으로 구현되었기 때문에 여러 타임스텝을 지나가는 지름길이 생기고 gradient문제가
완화된다. (사실 이 부분은 이해를 정확히 못한 것 같다ㅜㅜ)
그러나 LSTM과 GRU의 차이점도 존재한다.
1) LSTM은 메모리의 controlled exposure을 보게 되고(output gate) GRU는 아무 컨트롤 없이
그대로 본다는 것
2) LSTM은 input, forget gate가 독립적으로 계산되는 것에 비해 GRU는 아니라는 것
($h_{t}^{j}=(1-z_{t}^{j})h_{t-1}^{j}+z_{t}^{j}\tilde{h}_{t}^{j}$)
어떤 것이 더 좋은지는 판단하기 어렵고 그걸 실험해보는게 이 논문의 목적이다.
4. Experiments Setting
4.1 Tasks and Datasets
여기서 비교를 진행하는 태스크는 시퀀스 모델링으로, 목표는 log-likelihood를 최대화하는 것이다.
좀 더 자세하게 말하자면, 음악 모델링과 음성 신호 모델링을 태스크로 잡았다고 한다.
그 뒤로는 데이터셋에 대한 설명이 이어진다.
4.2 Models
비교를 위한 모델로는 LSTM, GRU, tanh-RNN을 사용했고
대부분의 데이터셋에서 GRU가 더 좋은 성능을 기록했다는 내용이 나온다.
5. Results and Analysis
사실 어떤 모델이 더 좋은지는 태스크에 따라 다른데, tanh-RNN은 두 모델보다 계산량이 현저히 적은 것에 비해
최적화가 잘 되지 않음을 말해주고 있다. 그에 비해 LSTM, GRU는 converge하는 속도가 빠르다.
하지만 여전히 두 모델 중 뭐가 더 뛰어난지는 결정하지 못했고.. 데이터셋과 태스크에 따라 다르다고 말하며
설명이 끝난다.

지적, 질문 모두 환영합니다! :)
이 글에서 쓰인 모든 이미지는 원본 논문에서 캡처한 것이며, 원본 논문의 링크는 우측에 있습니다. [링크]
'ML, DL > 논문 리뷰' 카테고리의 다른 글
| Generative Adversarial Nets 리뷰 (0) | 2020.11.20 |
|---|---|
| Auto-Encoding Variational Bayes 리뷰 (0) | 2020.11.09 |
| GPT-1 리뷰: Improving Language Understanding by Generative Pre-training (0) | 2020.09.30 |
| Why Should I Trust You? 리뷰 (0) | 2020.09.22 |
| Transformer-XL 리뷰 (0) | 2020.09.14 |