재귀와 합성곱 part 3 of 13

게이트 하나를 없앤 쪽이 이겼다

guide / / 6 sections

2편에서 LSTM 은 게이트 세 개로 셀 상태를 지킨다는 것을 봤다. GRU 는 같은 일을 게이트 두 개로 하고 셀 상태를 따로 두지도 않는다. 뭘 버렸는데 1편에서 잊는 속도가 거의 같았고, 7편에서는 손실이 더 낮다.

GRU 한 걸음

gi = W_ih @ x + b_ih       # 세 덩어리
gh = W_hh @ h + b_hh

r = sigmoid(gi_r + gh_r)          # 리셋 게이트
z = sigmoid(gi_z + gh_z)          # 갱신 게이트
n = tanh(gi_n + r * gh_n)         # 후보. r 이 옛 상태 쪽에만 곱해진다

h = z * h + (1 - z) * n

마지막 줄이 LSTM 의 c = f * c + i * g 자리인데 모양이 다르다. LSTM 은 남길 양 f 와 넣을 양 i따로 정하고, GRU 는 z 하나로 둘 다 정한다. z 만큼 남기고 나머지 1 - z 만큼 넣는다.

r 은 LSTM 에 없는 것이다. 후보를 만들 때 옛 상태를 얼마나 볼지 정한다. 그러니 GRU 는 “LSTM 에서 게이트 하나를 뺀 것” 이 아니라 다르게 짠 것이다.

2편처럼 학습된 가중치로 손으로 돌려서 nn.GRU 와 최대 7.90e-07 차이로 같은 것을 확인하고, 아래 숫자는 거기서 꺼냈다.

             평균     5%      50%     95%
갱신 z      0.405  0.032   0.370   0.883
리셋 r      0.629  0.120   0.690   0.971

LSTM 은 그 둘을 따로 쓴다

묶어도 괜찮은 이유로 제일 그럴듯한 것은, LSTM 도 사실은 i 를 대충 1 - f 로 쓰고 있어서 자유도가 놀고 있다는 것이다. 그러면 GRU 가 묶어도 잃는 게 없다.

재 보면 아니다.

입력 게이트 대 1 - 망각 게이트 묶였다면 이 선 위 0 0 0.5 0.5 1 1 입력 게이트 i 1 - 망각 게이트 f 유닛별 반감기 0.5 1 2 3 LSTM f GRU z 유닛 (정렬)
왼쪽: LSTM 의 입력 게이트 i 와 1 에서 망각 게이트를 뺀 값이 놓인 자리, 값 131만 개를 24 x 24 칸에 담았다. GRU 처럼 묶여 있다면 점선 위에 몰려야 하는데 사각형 전체에 퍼져 있다. 오른쪽: LSTM 의 망각 게이트와 GRU 의 갱신 게이트에서 나오는 유닛별 반감기. GRU 쪽이 더 짧다.
i 와 (1 - f) 의 상관, 값 1,331,200 개 전체     +0.071
유닛별 상관   최소 -0.629   중앙 +0.052   최대 +0.768
상관 0.5 넘는 유닛                          13개 / 325
i + f 의 평균 (묶여 있으면 1.0)              1.156

왼쪽 그림에서 점들이 점선 위에 안 몰리고 사각형을 채운다. 두 게이트의 2차원 분포를 각자의 주변분포 곱과 대 보면 어긋남이 최대 칸당 0.175% 다 - 거의 완전한 독립이다.

LSTM 은 자유도를 놀리지 않는다. 실제로 따로 쓴다.

그런데도 진다

따로 쓰는데도 7편에서 GRU 가 1.6449, LSTM 이 1.6776 이다. 남은 설명은 폭이다. 게이트가 셋이면 같은 예산으로 상태를 더 크게 잡을 수 있다.

LSTM  게이트 4개  폭 325   4 x 325² = 422,500
GRU   게이트 3개  폭 381   3 x 381² = 435,483

같은 63만 예산에서 GRU 가 17.2% 넓다. 그래서 GRU 를 LSTM 과 같은 폭 325 로 묶어 다시 돌렸다. 상태 크기가 같아지는 대신 파라미터는 오히려 적어진다.

                파라미터    최소 검증 (시드 3개)              중앙값
GRU  폭 381     635,835   1.6449  1.6503  1.6276      1.6449
GRU  폭 325     489,675   1.6498  1.6624  1.6611      1.6611
LSTM 폭 325     637,550   1.6776  1.6737  1.6785      1.6776

폭을 맞춰도 GRU 가 이긴다. 그것도 파라미터를 23.2% 덜 쓰고서다. 시드 범위가 1.6498~1.66241.6737~1.6785 로 겹치지도 않는다.

이득이 정확히 반반으로 갈린다.

LSTM 폭 325   1.6776
GRU  폭 325   1.6611     구조가 사는 것  0.0165
GRU  폭 381   1.6449     폭이 사는 것    0.0162

절반은 게이트를 어떻게 짰느냐에서 오고, 절반은 게이트를 하나 덜 두어서 넓힐 수 있게 된 데서 온다.

잊는 속도는 GRU 가 더 빠르다

오른쪽 그림이다. 유닛별 게이트에서 반감기를 뽑으면

          최소    중앙    최대
LSTM f    0.59   0.98   2.99
GRU  z    0.45   0.75   1.89

GRU 가 전 구간에서 더 짧다. 2편에서 LSTM 유닛 중 열 자 넘게 붙드는 것이 하나도 없다고 했는데, GRU 는 두 자 넘는 것도 없다.

더 빨리 잊는 쪽이 더 잘한다. 8편에서 망각 게이트를 열어 도달을 늘렸을 때 손실이 나빠진 것과 같은 방향이다. 이 과제에서 오래 붙드는 것은 이득이 아니다.

남는 것

리셋 게이트 r 이 무엇을 하는지는 안 봤다. 평균이 0.629 로 반쯤 열려 있는데, 그것을 1 로 고정하면 무엇이 나빠지는지 재면 r 의 값을 알 수 있다. 안 쟀다.

그리고 “구조 절반, 폭 절반” 은 폭 325 한 점에서 잰 것이다. 폭을 더 넓히거나 좁히면 비율이 달라질 수 있다.

이 편의 모형도 전부 1층이다. 재귀를 2층으로 쌓으면 게이트 수와 폭의 거래가 어떻게 되는지는 이 시리즈에서 안 다룬다.

그래서

  • GRU 한 걸음은 h = z·h + (1-z)·n 이다. LSTM 이 fi 로 따로 정하던 것을 z 하나로 정한다
  • 리셋 게이트 r 은 LSTM 에 없다. GRU 는 게이트를 뺀 LSTM 이 아니라 다르게 짠 것이다
  • 손으로 돈 것과 nn.GRU 가 최대 7.90e-07 차이다
  • LSTM 은 i1-f 를 따로 쓴다. 상관 +0.071, i + f 평균 1.156, 2차원 분포가 독립에서 벗어난 최대가 칸당 0.175%
  • 그런데도 진다. 폭을 325 로 맞추면 GRU 가 1.6611, LSTM 이 1.6776 이고 GRU 쪽이 파라미터를 23.2% 덜 쓴다. 시드 범위가 안 겹친다
  • 이득이 반반이다. 구조에서 0.0165, 폭에서 0.0162
  • 유닛별 반감기가 GRU 0.45~1.89 자로 LSTM 0.59~2.99 자보다 짧다. 더 빨리 잊는 쪽이 더 잘한다

Comments