위키득계정 ↗
기술

GRU

영문명
Gated Recurrent Unit
주요 상태
은닉 상태 h
대표 게이트
갱신 게이트와 리셋 게이트
주의할 변형
리셋 적용 순서와 계수 규약
GRU는 갱신 게이트와 리셋 게이트로 은닉 상태를 조절하는 순환 신경망 구조다. 이름은 Gated Recurrent Unit에서 왔다. 대표적인 기본형은 LSTM처럼 별도의 셀 상태를 두는 대신 하나의 은닉 상태를 이어 갱신한다.

기존 상태와 후보 섞기

이전 상태의 비중을 z, 후보 상태를 n이라 쓰는 규약에서는 hₜ=zₜ⊙hₜ₋₁+(1-zₜ)⊙nₜ다. 갱신 게이트는 보통 시그모이드로 계산한다. 문헌에 따라 z를 새 후보의 비중으로 정의하기도 하므로 기호 이름만 보고 식을 옮기면 안 된다.

상태 갱신 예

이전 상태 0.8, 후보 -0.4, 이전 상태의 비중 z=1/4이면 새 상태는 -0.1이다. z=3/4이면 새 상태는 0.5다. 게이트 값이 바뀌면 같은 후보라도 과거 상태를 남기는 비중이 달라진다. 이 예는 게이트와 후보가 이미 계산됐다고 가정한 것이다.

리셋 게이트의 위치

리셋 게이트는 후보를 만들 때 과거 상태의 영향을 조절한다. 행렬 U를 곱하기 전에 r⊙h를 만드는 방식과, Uh를 구한 뒤 r을 곱하는 방식은 일반적으로 다르다. U의 두 행이 (1,1), (0,1), h=(2,4), r=(1/2,1/4)이면 U(r⊙h)=(2,1)이지만 r⊙(Uh)=(3,1)이다.

구현을 비교할 때

후보의 리셋 순서뿐 아니라 편향을 어디에 더하는지도 결과를 바꿀 수 있다. 같은 GRU 이름이나 같은 상태 크기만으로 서로 다른 구현의 가중치를 그대로 호환할 수 있다고 가정해서는 안 된다. 순서의 초기 상태와 마스크도 함께 확인해야 한다.

관련 문서

LSTM / 단순 순환 신경망 / 인공 신경망 / 활성화 함수 / 임베딩 층 / 기울기 클리핑 / 내적 어텐션