기존 상태와 후보 섞기
이전 상태의 비중을 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 / 단순 순환 신경망 / 인공 신경망 / 활성화 함수 / 임베딩 층 / 기울기 클리핑 / 내적 어텐션