재귀와 합성곱 part 12 of 13

층을 쌓아도 안 늘었다

guide / / 12 sections

11편은 답을 못 하고 끝났다. 커널 5짜리 4층 CNN 은 수용장이 17 이라 거리 16 까지 닿는데 실제로 푸는 것은 12 까지다. 네 자가 왜 남는지 못 밝혔다.

후보는 두 개 적어 두었다. 상한에서 층 하나 몫만큼 빠진다 (상한 - (k-1)) 와 상한의 일정 비율이다 (0.75 x 상한). 4층 커널5 에서는 둘 다 12 라 구별이 안 되니 깊이를 바꾸면 갈린다고 했다.

바꿔 봤다. 둘 다 틀렸고, 갈라진 것은 내가 본 축이 아니었다.

상한을 세 가지 값으로, 두 가지 방법으로

같은 예산 637k 에 커널과 층을 바꿔 상한을 16, 24, 32 로 만든다. 각 상한마다 층을 쌓아 만든 것과 커널을 키워 만든 것을 하나씩 둔다.

구성      커널   층   채널   파라미터    상한   층하나 예측   75% 예측
k5 x4      5    4   171   639,273    16       12        12
k3 x8      3    8   156   636,744    16       14        12
k5 x6      5    6   140   635,760    24       20        18
k3 x12     3   12   128   636,900    24       22        18
k5 x8      5    8   122   639,370    32       28        24
k9 x4      9    4   128   633,828    32       24        24

과제는 10편·11편의 복사다. 무작위 L 자, 구분자, 같은 L 자. 채점하는 자리는 전부 정확히 L 자 전을 되짚으므로 L 이 곧 거리다. 1000걸음, 시드 2개, 찍으면 ln(20) = 2.9957 이다.

거리마다 학습을 다시 해야 하니 이분 탐색으로 끊기는 자리를 찾았다.

판정 규칙을 조였다

처음에는 시드 2개의 중앙값2.0 아래면 푼 것으로 했다. 그러다 k5 x8 의 거리 130.01113.0004 로 나왔다. 중앙값은 1.51 이라 통과인데 실제로는 둘 중 하나만 푼 것이다.

규칙을 두 시드 다 2.0 아래로 조였다. 그러면 이분 탐색이 지나간 길이 더 이상 유효하지 않으므로, 확정 통과한 제일 먼 자리부터 확정 실패한 제일 가까운 자리까지 한 자씩 다시 채웠다.

이렇게 갈리는 자리가 여섯 구성 중 둘이었다 - k5 x813, k9 x422. 붕괴는 날카롭지만 딱 한 자리 폭으로 시드가 갈리는 구간이 있다.

결과

수용장 상한과 실제로 푼 거리 k3 x8 7 16 k3 x12 8 24 k5 x4 12 16 k5 x6 12 24 k5 x8 12 32 k9 x4 21 32 0 8 16 24 32 복사 거리 (자) 실제로 푼 거리 상한 커널 폭에 대해 놓으면 0 8 16 24 7 8 12 21 3 8·12 5 4·6·8 9 4 커널 폭 (아래 줄은 층 수)
위: 구성 여섯 개의 수용장 상한을 가로 막대로 놓고 실제로 푼 거리까지 채운 것. 어느 것도 상한에 못 미치고, 층을 쌓아 상한을 키운 쪽은 채운 길이가 그대로다. 아래: 같은 값을 커널 폭에 대해 놓은 것. 층 수가 4에서 12까지 다른데도 커널 5짜리 셋이 한 점에 겹친다.
구성      커널   층   상한   실제로 푼 거리   상한 대비
k3 x8      3    8    16          7          0.44
k3 x12     3   12    24          8          0.33
k5 x4      5    4    16         12          0.75
k5 x6      5    6    24         12          0.50
k5 x8      5    8    32         12          0.38
k9 x4      9    4    32         21          0.66

층은 값을 못 한다

커널 5 짜리 세 개를 보자. 층을 4, 6, 8 로 쌓아 상한을 16, 24, 32 로 두 배 만들었다.

실제로 푼 거리가 12, 12, 12 다. 한 자도 안 움직였다.

커널 3 쪽도 같다. 층을 8 에서 12 로 늘려 상한을 16 에서 24 로 키웠는데 7 에서 8 로 한 자 늘었다. 층 넷을 더 쌓아 상한을 여덟 자 넓히고 한 자를 얻었다.

“수용장이 모자라면 층을 더 쌓아라” 는 흔한 조언이다. 이 과제에서 그것은 상한만 늘리고 쓸 수 있는 거리는 안 늘린다.

커널은 값을 한다

같은 값을 커널로 정렬하면 다르다.

커널   실제로 푼 거리        층 수
 3      7,  8              8, 12
 5     12, 12, 12          4, 6, 8
 9     21                  4

커널 3 에서 5 로 갈 때 7.5 에서 12, 5 에서 9 로 갈 때 12 에서 21 이다. 두 구간 다 커널 한 칸에 2.25 자씩이다.

층 수가 4 에서 12 까지 흩어져 있고 상한이 16 에서 32 까지 흩어져 있는데도 점이 커널 축에 선다.

다만 커널 값이 세 개뿐이다. 2.25 는 세 점에 맞춘 기울기이지 법칙이 아니다. 순서와 무관함은 재 놓은 것이고, 식은 아니다.

채널 수도 아니다

예산이 고정이라 층을 쌓으면 채널이 깎인다. 그래서 채널이 진짜 원인일 수 있는데, 숫자가 그걸 부정한다.

k3 x8 은 채널 156 인데 7 이고, k5 x6 은 채널 140 인데 12 다. 채널이 더 많은 쪽이 더 짧다.

경로 수는 여기서 또 죽는다

11편은 경로 수로 설명하려다 반증됐다. 여기서 더 세게 죽는다.

k3 x8 의 경로는 6561 개고 거리별로 종 모양이다. 꼭대기가 거리 81107 개, 거리 71016 개다.

거리 7 은 풀고 거리 8 은 못 푼다. 경로가 제일 많은 자리에서 끊긴다. 경로 수가 능력을 정한다면 꼭대기가 제일 잘 돼야 한다.

걸음 수 때문은 아니다

깊은 구성이 나쁘게 나오면 제일 먼저 의심할 것은 1000걸음 안에 못 배웠다는 것이다. 그래서 1000걸음에서 못 푼 바로 그 거리를 3000걸음으로 다시 돌렸다.

구성      거리   1000걸음   3000걸음
k5 x4      13     3.0009    2.9989  2.9977
k3 x8       8     3.0003    2.9985  2.9988

둘 다 걸음을 세 배로 줘도 찍기다. 끊기는 자리는 학습 예산이 아니라 구조에 붙어 있다.

그래서 무엇인가

모른다.

배제된 것은 늘었다. 수용장 상한이 아니고 (두 배로 키워도 안 움직인다), 깊이가 아니고 (8층이 4층보다 낫지도 나쁘지도 않다), 경로 수가 아니고 (꼭대기에서 끊긴다), 채널 수가 아니고 (많은 쪽이 짧다), 걸음 수가 아니다.

남은 것은 커널 폭 하나다. 왜 커널 폭이 그 값을 정하는지는 못 밝혔다.

설계할 때 뜻하는 것

수용장 공식은 닿을 수 있는 자리를 준다. 그 숫자로 “거리 d 의 의존을 잡으려면 수용장을 d 이상으로” 라고 설계하면, 이 과제에서는 여섯 번 중 여섯 번 모자란다. 제일 나은 것이 0.75, 제일 나쁜 것이 0.33 이다.

그리고 모자란 만큼을 층으로 메우면 안 채워진다. 커널을 키우는 쪽만 채워진다. 같은 예산에서 커널을 키우면 채널이 깎이니 공짜도 아니다.

남는 것

한 과제다. 복사는 정확히 한 자리만 필요하고 그 자리가 어디인지도 정해져 있다. 글자 예측처럼 여러 자리를 조금씩 쓰는 과제에서 같은 값이 나오는지는 안 쟀다. 5편이 언어에서 잰 것은 손실이지 쓸 수 있는 거리가 아니다.

커널 값이 3, 5, 9 세 개다. 커널 7 이나 11 을 넣어 2.25 가 유지되는지 보면 식으로 내놓을 수 있는지가 갈린다. 안 했다.

시드는 2개다. 경계에서 시드가 갈리는 자리가 둘 있었으므로, 표의 값은 “여기까지는 두 시드 다 된다” 이지 “여기 다음은 절대 안 된다” 가 아니다.

팽창은 안 건드렸다. 5편의 팽창판은 상한 125 에서 거리 60 을 푸는데 (11편), 그게 상한 대비 0.48 이라 이 표와 같은 범위다. 팽창판의 끊기는 자리는 문맥이 128 자라 못 잰다.

그래서

  • 같은 예산 637k 에 커널과 층을 바꿔 수용장 상한을 16, 24, 32 로 만든 여섯 구성에서, 복사 거리를 이분 탐색해 끊기는 자리를 찾았다
  • 커널 5 는 층이 4, 6, 8 이고 상한이 16, 24, 32 인데 전부 12 다. 상한을 두 배로 키우는 동안 한 자도 안 늘었다
  • 커널 3 은 층을 8 에서 12 로 늘려 7 에서 8 로, 한 자 늘었다
  • 11편에 적어 둔 후보 둘 다 틀렸다. “층 하나 몫” 은 14, 20, 22, 28 을 예측했고 실측은 7, 12, 8, 12 다. “상한의 75%” 도 마찬가지다
  • 커널로 정렬하면 37.5, 512, 921 로 한 칸에 2.25 자씩 이다. 세 점에 맞춘 기울기이므로 법칙으로 내놓지 않는다
  • 채널 수가 아니다 - k3 x8 은 채널 1567, k5 x6 은 채널 14012
  • 경로 수도 아니다 - k3 x8 은 경로가 제일 많은 거리 8 (1107 개) 에서 끊기고 1016 개짜리 거리 7 은 푼다
  • 판정을 시드 중앙값에서 두 시드 다 로 조였다. k5 x8 의 거리 130.01113.0004 로 갈려서다
  • 왜 커널 폭이 정하는지는 못 밝혔다

Comments