매개변수 공간의 풍경을 걷다

몰입: 끌어온 자가 제대로 된 자일 조건

문제 9의 과일 바구니에서는 사과 3개를 넣고 배 2개를 빼 바구니가 크게 바뀌었는데, 영수증은 그대로라 끌어온 자로 잰 크기가 0이었다. 문제 10의 구면에서도 극에서는 경도 방향의 길이가 0이었다. 0이 아닌 변화에 길이 0을 주는 것을 자라고 부를 수 있을까? 끌어온 것은 언제 제대로 된 계량이 될까?

번역표가 납작해지면. 끌어온 f∗g\textcolor{#3c7b8b}{f}^*\textcolor{#d62728}{g}가 늘 제대로 된 자인 것은 아니다. 번역표가 0이 아닌 어떤 화살표를 0으로 보내면, 곧 다이얼을 돌렸는데 결과가 움직이지 않는 방향이 있으면, 그 방향의 길이는 저쪽 자로 재도 0이다. 0이 아닌 화살표에 늘 양수를 주어야 한다는 계량의 조건(양의 정부호)이 깨진다. 끌어온 것이 진짜 계량이 되려면 번역표가 어떤 화살표도 0으로 보내지 않아야 한다.

저쪽 자로 잰 길이가  이하인 이쪽의 변화들을 붉게 칠했다. 위: 번역표가 어떤 화살표도 0으로 보내지 않으면 끝이 있는 타원이다. 아래: 번역표가 한 방향을 0으로 보내면 그 방향으로는 아무리 가도 길이가 0이라 끝없는 띠가 된다
저쪽 자로 잰 길이가 ϵ\epsilon 이하인 이쪽의 변화들을 붉게 칠했다. 위: 번역표가 어떤 화살표도 0으로 보내지 않으면 끝이 있는 타원이다. 아래: 번역표가 한 방향을 0으로 보내면 그 방향으로는 아무리 가도 길이가 0이라 끝없는 띠가 된다

납작해지는 곳에는 두 종류가 있다. 극좌표는 r=0\textcolor{#1b9e77}{r} = 0에서, 구면좌표는 극에서만 몰입이 아니다. 좌표를 붙이는 방식 탓일 뿐 평면과 구면 자체는 멀쩡하고, 그 한 점을 피해 다른 좌표를 쓰면 된다. 반면 과일 바구니처럼 다이얼이 둘인데 결과가 수 하나이면, 어디서나 한 방향이 눌린다. 피할 곳이 없다. 아래 위젯에서 「로짓 두 개 → 확률」을 누르면 이 경우가 보인다. 끌어온 타원이 한 방향으로 끝없이 펴져 띠가 된다. 위젯은 풀백 절의 것과 같고, 이 페이지에서는 「로짓 두 개 → 확률」로 열린다.

ML에서: 과매개화와 특이 피셔 행렬

여기서 움직이는 것은 신경망의 매개변수다. 서로 다른 가중치가 똑같은 함수를 만드는 방향이 있는 신경망에서는, 그 방향을 번역표가 0으로 보낸다. 끌어온 자는 그 방향을 "길이 0"으로 판정하고, 피셔 행렬은 역행렬이 없는 특이행렬이 된다. 자연 경사를 실제로 계산할 때 피셔 행렬에 단위행렬의 작은 배수를 더하는 감쇠항이나, 역행렬이 없을 때 그 대신 쓰는 유사역행렬(pseudo-inverse)을 쓰는 것은 이 지점을 우회하는 처방이다.

가우스-뉴턴 행렬. 손실의 곡률도 출력 쪽에서 재기가 쉽다. 네트워크 출력으로 두 번 미분한 손실의 헤세 행렬 Hz\textcolor{#ff4314}{H_z}를 네트워크의 번역표로 끌어온 JTHzJ\textcolor{#964079}{J}^T\textcolor{#ff4314}{H_z}\textcolor{#964079}{J}가 일반화 가우스-뉴턴 행렬(뉴턴법이 쓰는 손실의 헤세 행렬 대신, 출력 쪽 곡률만 끌어와 만든 행렬)이다. 마튼스(J. Martens)가 정리한 대로, 소프트맥스와 교차 엔트로피를 함께 쓰면 이 행렬은 피셔 행렬과 같다. 다만 출력 수보다 매개변수가 많으면 번역표가 어떤 방향은 반드시 눌러 버리므로, 이 행렬도 특이하다.

문제 11 — 로짓 두 개짜리 모델의 피셔 행렬

킬러 로짓 두 개 (θ1,θ2)(\textcolor{#1b9e77}{\theta}^1, \textcolor{#1b9e77}{\theta}^2)(로짓은 흔히 zz로 적지만, 여기서는 학습하는 매개변수라 좌표 글자 θ\textcolor{#1b9e77}{\theta}로 적었다)를 소프트맥스에 넣어 두 결과의 확률을 내는 모델에서, 첫 결과의 확률은 p=1/(1+e−(θ1−θ2))\textcolor{#2e8b3a}{p} = 1/(1 + e^{-(\textcolor{#1b9e77}{\theta}^1 - \textcolor{#1b9e77}{\theta}^2)})이다. 결과가 둘인 분포 공간의 자는 g=1/(p(1−p))\textcolor{#d62728}{g} = 1/(\textcolor{#2e8b3a}{p}(1 - \textcolor{#2e8b3a}{p}))다(dpd\textcolor{#2e8b3a}{p} 하나로 쓴 ∑a(dpa)2/pa\sum_a (d\textcolor{#2e8b3a}{p}_a)^2/\textcolor{#2e8b3a}{p}_a). 이 자를 끌어와 피셔 행렬 F=JTgJ\textcolor{#d62728}{F} = \textcolor{#964079}{J}^T\textcolor{#d62728}{g}\textcolor{#964079}{J}를 구하고, (θ1,θ2)=(log⁡3, 0)(\textcolor{#1b9e77}{\theta}^1, \textcolor{#1b9e77}{\theta}^2) = (\log 3,\ 0)에서의 값과 행렬식을 적어라. 길이가 0인 방향은 무엇이고, 무슨 뜻인가? 위 위젯의 「문제 11 불러오기」로 그 점의 값을 확인할 수 있다.

같이 풀기 세션 11

김민준 M01
김민준

∂p/∂θ1=p(1−p)\partial\textcolor{#2e8b3a}{p}/\partial\textcolor{#1b9e77}{\theta}^1 = \textcolor{#2e8b3a}{p}(1 - \textcolor{#2e8b3a}{p}), ∂p/∂θ2=−p(1−p)\partial\textcolor{#2e8b3a}{p}/\partial\textcolor{#1b9e77}{\theta}^2 = -\textcolor{#2e8b3a}{p}(1 - \textcolor{#2e8b3a}{p})니까 J=p(1−p) (1, −1)\textcolor{#964079}{J} = \textcolor{#2e8b3a}{p}(1 - \textcolor{#2e8b3a}{p})\,(1,\ -1). 이걸 JJT\textcolor{#964079}{J}\textcolor{#964079}{J}^T로 곱하고 g\textcolor{#d62728}{g}를 곱하면 2p(1−p)2\textcolor{#2e8b3a}{p}(1 - \textcolor{#2e8b3a}{p}), (log⁡3, 0)(\log 3,\ 0)에서는 p=3/4\textcolor{#2e8b3a}{p} = 3/4라서 3/83/8이에요. 0이 아니니까 역행렬도 있고요.

이서연 S01
이서연

숫자 하나가 나왔으면 그건 결과 쪽, p\textcolor{#2e8b3a}{p} 쪽 자야. 로짓이 두 개니까 피셔 행렬은 2×2여야 해. 구면 문제에서 내가 한 실수랑 같은 거야, 곱하는 순서가 거꾸로.

김민준 M04
김민준

아, J\textcolor{#964079}{J}가 1×2라서 JJT\textcolor{#964079}{J}\textcolor{#964079}{J}^T는 1×1이구나. 다시 하면 F=JTgJ=p(1−p)(1−1−11)\textcolor{#d62728}{F} = \textcolor{#964079}{J}^T\textcolor{#d62728}{g}\textcolor{#964079}{J} = \textcolor{#2e8b3a}{p}(1 - \textcolor{#2e8b3a}{p})\begin{pmatrix} 1 & -1 \\ -1 & 1 \end{pmatrix}, (log⁡3, 0)(\log 3,\ 0)에서는 p(1−p)=3/16\textcolor{#2e8b3a}{p}(1 - \textcolor{#2e8b3a}{p}) = 3/16이라서 316(1−1−11)\frac{3}{16}\begin{pmatrix} 1 & -1 \\ -1 & 1 \end{pmatrix}. 행렬식은… 9256−9256=0\frac{9}{256} - \frac{9}{256} = 0이에요. 역행렬이 없네요.

선생님 T01
선생님

어느 방향의 길이가 0이죠?

이서연 S01
이서연

(1,1)(1, 1)이요. F\textcolor{#d62728}{F}에 (1,1)(1, 1)을 넣으면 두 줄 다 1−1=01 - 1 = 0. 두 로짓에 같은 수를 더하는 방향이에요. 그러면 차이 θ1−θ2\textcolor{#1b9e77}{\theta}^1 - \textcolor{#1b9e77}{\theta}^2가 그대로라 p\textcolor{#2e8b3a}{p}가 안 변해요.

김민준 M08
김민준

이거 과일 바구니랑 같네요. 사과 3개 넣고 배 2개 빼면 영수증이 그대로였던 것처럼, 로짓 두 개를 똑같이 올리면 확률이 그대로예요. 그래서 끌어온 자로 재면 크기가 0이고요.

선생님 T13
선생님

그래요. 매개변수는 두 개인데 분포는 한 개의 수로 정해지니까, 번역표가 한 방향을 납작하게 눌러요. 수억 개의 가중치를 가진 신경망에서는 이런 방향이 셀 수 없이 많고, 그래서 피셔 행렬이 특이해져요.

김민준 M01
김민준

소프트맥스 과제에서 오버플로 막으려고 로짓마다 최댓값을 빼도 답이 똑같았던 게 바로 이 방향이었네요. 그때는 요령인 줄만 알았어요.

김민준 M05
김민준

그런데 역행렬이 없으면 자연 경사는 어떻게 구해요? F−1\textcolor{#d62728}{F}^{-1}을 곱해야 하잖아요.

선생님 T01
선생님

첫 결과가 정답인 데이터 하나에서 교차 엔트로피 손실의 그래디언트는 (p−1)(1, −1)(\textcolor{#2e8b3a}{p} - 1)(1,\ -1)이에요. 이 그래디언트에 (1,1)(1, 1) 방향 성분이 있나요?

이서연 S07
이서연

(1,−1)(1, -1)과 (1,1)(1, 1)의 내적이 0이니까 없어요. 길이 0인 방향으로는 손실도 안 변하니 그쪽으로 걸을 까닭이 없네요. F\textcolor{#d62728}{F}에 단위행렬의 작은 배수, 예를 들어 0.01I0.01 I를 더하면 역행렬이 생기고, (1,−1)(1, -1)은 F\textcolor{#d62728}{F}의 고유벡터라 고윳값 3/83/8에 0.01이 더해져요. 걸음은 1/40.385(1,−1)≈0.649 (1,−1)\frac{1/4}{0.385}(1, -1) \approx 0.649\,(1, -1)이고, 유사역행렬을 쓰면 1/43/8=23\frac{1/4}{3/8} = \frac23이에요.

선생님 T13
선생님

그래요. 감쇠항은 길이 0인 방향에 작지만 0은 아닌 길이를 줘서 역행렬을 만들어요. 그 방향에는 그래디언트가 없으니 걸음은 거의 그대로이고, 더한 수를 0으로 보내면 유사역행렬의 답에 다가가요.