본문 바로가기
Deep Learning/Recurrent Neural Networks

Gated Recurrent Units (GRU)

by YJJo 2019. 8. 15.

Gated Recurrent Units (GRU)

GRU는 게이트 메커니즘이 적용된 RNN 프레임워크의 일종으로 LSTM에 영감을 받았고, 더 간략한 구조를 가지고 있습니다. 아주 자랑스럽게도 한국인 조경현 박사님이 제안한 방법입니다. (Cho et al., 2014) GRU는 LSTM에 영감을 받은 만큼 굉장히 유사한 구조로 LSTM을 제대로 이해하고 있으면 쉽게 이해할 수 있습니다. LSTM은 이곳에 자세히 정리되어 있으니 가볍게 읽고 이어질 포스팅을 읽으면 더 유익할 것 같습니다. 

GRU의 작동원리

LSTM과 같은 그림을 이용해서 GRU를 이해해보겠습니다. 전체적인 흐름은 아래와 같습니다.

Figure 1: GRU, 개요

뭔가 되게 복잡해보이지만, LSTM을 이해하셨다면 생각보다 단순합니다. 하나씩 단계별로 살펴보도록 하겠습니다.

1. Reset Gate

Reset Gate는 과거의 정보를 적당히 리셋시키는게 목적으로 sigmoid 함수를 출력으로 이용해 $(0, 1)$ 값을 이전 은닉층에 곱해줍니다.

Figure 2: GRU, Reset Gate

직전 시점의 은닉층의 값과 현시점의 정보에 가중치를 곱하여 얻을 수 있고 수식으로 나타내면 다음과 같습니다. $$r^{(t)}=\sigma\left(W_{r}h^{(t-1)}+U_{r}x^{(t)}\right)$$

2. Update Gate

Update Gate는 LSTM의 forget gate와 input gate를 합쳐놓은 느낌으로 과거와 현재의 정보의 최신화 비율을 결정합니다. Update gate에서는 sigmoid로 출력된 결과($u^{(t)}$)는 현시점의 정보의 양을 결정하고, 1에서 뺀 값($1-u^{(t)}$)는 직전 시점의 은닉층의 정보에 곱해주며, 각각이 LSTM의 input gate와 forget gate와 유사합니다.

Figure 3: GRU, Update Gate

이를 수식으로 나타내면 다음과 같습니다. $$u^{(t)}=\sigma\left(W_{u}h^{(t-1)}+U_{u}x^{(t)}\right)$$

3. Candidate

현 시점의 정보 후보군을 계산하는 단계입니다. 핵심은 과거 은닉층의 정보를 그대로 이용하지 않고 리셋 게이트의 결과를 곱하여 이용해줍니다.

Figure 4: GRU, Candidate

수식으로 나타내면 다음과 같습니다. $$\tilde{h}^{(t)}=\tau\left(Wh^{(t-1)}*r^{(t)}+Ux^{(t)}\right)$$ 여기에서 $\tau$는 tangent hyperbolic이고, $*$은 pointwise operation입니다.

4. 은닉층 계산

마지막으로 update gate 결과와 candidate 결과를 결합하여 현시점의 은닉층을 계산하는 단계입니다. 앞에 말했다시피 sigmoid 함수의 결과는 현시점 결과의 정보의 양을 결정하고, 1-sigmoid 함수의 결과는 과거 시점의 정보 양을 결정합니다.

Figure 5: GRU, hidden layer

수식으로 정리하면 아래와 같습니다. $$h^{(t)}=(1-u^{(t)})*h^{(t-1)}+u^{(t)}*\tilde{h}^{(t)}$$

GRU 정리

Figure 6: GRU

LSTM과 구조상 큰 차이도 없고, 분석결과도 큰 차이가 없는 것으로 알려져있습니다. 분석 결과가 큰 차이가 없다는 것은 같은 목적에서  성능상의 큰 차이가 없다는 의미가 아니라, 주제별로 LSTM이 좋기도, GRU가 좋기도 하다는 의미입니다. 다만 GRU가 학습할 가중치가 적다는 것은 확실한 이점입니다. 아마 LSTM을 보고오셨다면 쉽게 이해하셨을거라고 생각합니다. 마지막으로 수식을 한 군데 모으며 포스팅을 마치겠습니다 :) $$\begin{align*}r^{(t)}&=\sigma\left(W_{r}h^{(t-1)}+U_{r}x^{(t)}\right)\\u^{(t)}&=\sigma\left(W_{u}h^{(t-1)}+U_{u}x^{(t)}\right)\\\tilde{h}^{(t)}&=\tau\left(Wh^{(t-1)}*r^{(t)}+Ux^{(t)}\right)\\h^{(t)}&=(1-u^{(t)})*h^{(t-1)}+u^{(t)}*\tilde{h}^{(t)}\end{align*}$$

References

  • Cho, Kyunghyun, et al. "Learning phrase representations using RNN encoder-decoder for statistical machine translation." arXiv preprint arXiv:1406.1078 (2014).
  • Wikipedia contributors. "Gated recurrent unit." Wikipedia, The Free Encyclopedia. Wikipedia, The Free Encyclopedia, 12 Jul. 2019. Web. 25 Aug. 2019.

'Deep Learning > Recurrent Neural Networks' 카테고리의 다른 글

Seq2seq Model (Sequence to Sequence Model)  (0) 2020.04.20
RNN Tensorflow + Keras  (10) 2019.12.07
Long Short-Term Memory (LSTM)  (9) 2019.08.15
Recurrent Neural Networks (RNN)  (0) 2019.08.13

댓글