Gated Recurrent Unit(GRU)의 이해

박재한·2022년 2월 24일
1

Deep Learning

목록 보기
10/22

GRU(Gated Recurrent Unit) 셀은 2014년에 K. Cho(조경현) 등에 의해 논문에서 제안된 LSTM 셀의 간소화된 버전이라고 할 수 있다.
주요 특징은,
1) LSTM의 cell state가 없고 hidden state가 cell state의 역할까지 같이 한다.
2) LSTM의 Forget gate와 Input gate가 Update gate라는 하나의 gate로 결합되었다.
3) LSTM의 Output gate의 역할과 비슷한 역할을 하는 Reset gate가 추가되었다.

1. GRU의 구조

GRU의 구조는 다음과 같다.

동그라미에 점 찍힌 기호는 elementwise multiplication 연산을 말한다.

GRU는 LSTM을 간소화시킨 버전이라 여러가지 비슷한 점이 많은데 이를 그림으로 정리해 보았다.
LSTM과 GRU의 비교

그림을 잘 보면 각 대응되는 gate에서의 연산이 유사한 것을 볼 수 있다.

2. GRU 각 단계 설명

2.1 Update Gate


LSTM의 Forgat gate와 Input gate의 역할을 모두 담당한다.
ztz_t가 이전 정보의 비율을 결정하고 1zt1 - z_t가 여기에 대응되는 현재 정보의 비율을 결정한다. 즉 과거의 정보를 얼마만큼 가져가고 현재 새로운 정보를 얼마만큼 가져갈지를 정해준다. 그래서 ztz_t는 Forget gate의 역할을 하고 1zt1 - z_t는 Input gate의 역할을 한다.

수식표현
Forget Gate : zt=σ(Wxzxt+Whzht1+bz)z_t=\sigma(W_{xz}x_t+W_{hz}h_{t-1}+b_z)
Input Gate : 1zt1-z_t

2.2 Reset Gate


Reset Gate는 이전 정보에서 얼마만큼을 선택해서 내보낼지를 결정한다.(The reset gate is another gate is used to decide how much past information to forget.)
LSTM의 output gate와 유사한 역할을 한다고 했었는데 LSTM의 output gate는 최종 출력에서 output으로 나갈 정보를 선별하는 것이라면 GRU의 reset gate는 이전 정보에서 미리 내보낼 정보를 선별하는 정도로 처리 순서가 다르다고 볼 수 있다.

수식표현
rt=σ(Wxrxt+Whrht1+br)r_t=\sigma(W_{xr}x_t+W_{hr}h_{t-1}+b_r)

3.3 Hidden State


1) Reset Gate, Update Gate(Forget Gate + Input Gate)를 모두 적용하여 Hidden State를 계산한다.
2) 이전 정보에 reset gate의 결과를 곱하여 이전 정보 중 출력(hth_t)으로 내보앨 정보를 선별한다.(같은 말인데 바꿔 말하면 이전 정보에서 어떤 정보를 내보내지 말아야 할지를 선별한다고 볼 수 있다.)
3) 2)의 결과에 tanh를 적용하여 -1~1사이의 값으로 바꾼다.
4) 다음 update gate에서 구해진 현재 새로운 정보를 적용할 비율(1-ztz_t)을 3)의 결과에 곱하여 현재 정보 중 내보낼 정보를 계산한다.
5) update gate에서 구해진 이전 정보의 비율(ztz_t)에 이전 정보(ht1h_{t-1})를 곱하여 이전 정보 중 내보낼 값을 계산하고 이를 4)에 더하여 최종적으로 output으로 내보낼 hidder state의 값을 계산한다.

수식표현
gt=tanh(Wxgxt+Whg(rtht1)+bg)g_t=tanh(W_{xg}x_t+W_{hg}(r_t\bigodot h_{t-1})+b_g)
ht=ztht1+(1zt)gth_t=z_t\bigodot h_{t-1}+(1-z_t)\bigodot g_t

수식을 모두 정리하면 다음과 같다.

GateEquation
Reset Gatert=σ(Wxrxt+Whrht1+br)r_t=\sigma(W_{xr}x_t+W_{hr}h_{t-1}+b_r)
Forget Gatezt=σ(Wxzxt+Whzht1+bz)z_t=\sigma(W_{xz}x_t+W_{hz}h_{t-1}+b_z)
Input Gate1zt1-z_t
Hidden Stategt=tanh(Wxgxt+Whg(rtht1)+bg)g_t=tanh(W_{xg}x_t+W_{hg}(r_t\bigodot h_{t-1})+b_g)
ht=ztht1+(1zt)gth_t=z_t\bigodot h_{t-1}+(1-z_t)\bigodot g_t

이로서 GRU(Gated Recurrent Unit)에 대한 정리를 모두 마친다. 강의만 들어서는 무슨말인지 도저히 감이 안잡혔는데 많은 자료를 web에서 찾아다니면서 하나하나 읽어보고 필요한 정보들만 추려서 하나하나 필사(筆寫)해 가면서 정리를 해보니 GRU를 이해하는데 많은 도움이 되었다.

profile
바쁘게 부지런하게 논리적으로 살자!!!

0개의 댓글