안에서만 보고도 휘어짐을 안다

출발 문제

종이 한 장을 테이블에 놓자. 완벽하게 평평하다. 이제 이 종이를 돌돌 말아서 원기둥 모양으로 만들어 보자. 우리 눈에는 종이가 분명히 “휘어졌다”. 하지만 종이 위에 사는 아주 작은 개미의 관점에서 생각해 보자. 이 개미는 종이 위에서 직선을 긋고, 삼각형을 그리고, 원의 둘레와 넓이를 잴 수 있다. 놀랍게도, 개미가 측정하는 모든 기하학적 양은 종이를 말기 전과 완전히 동일하다. 삼각형의 내각의 합은 여전히 정확히 180°이고, 반지름 rr인 원의 둘레는 여전히 2πr2\pi r이다. 개미에게 종이는 말기 전이나 후나 “같은” 공간이다.

이제 구면 — 예를 들어 지구본 — 위에 사는 개미를 생각하자. 이 개미가 적도와 두 자오선(북극과 남극을 잇는 세로선, 곧 경도선)으로 이루어진 삼각형을 그리면, 내각의 합이 180°를 넘는다. 북극에서 두 자오선이 이루는 각도가 α\alpha라면, 이 삼각형의 내각의 합은 180°+α180° + \alpha이다. 반지름 rr인 원을 그리면 둘레가 2πr2\pi r보다 짧다(마치 누군가 원을 오그라뜨린 것처럼). 이 개미는 자기가 사는 공간이 평평하지 않다는 것을 밖을 볼 필요 없이 알 수 있다.

원기둥의 개미와 구면의 개미 — 둘 다 “휘어진” 곡면 위에 살지만, 한쪽은 그것을 감지할 수 없고 다른 쪽은 감지할 수 있다. 이 차이는 무엇인가? 같은 "휘어짐"이라는 단어를 쓰고 있지만, 사실 이것은 전혀 다른 두 종류의 휘어짐이다. 이 구분을 명확히 하는 것이 이 장의 핵심이다.

세 종류의 곡면: 공 겉면(구면), 원기둥, 말안장 모양의 곡면. 원기둥은 종이를 말아서 만들 수 있지만, 구면은 종이를 찢거나 구기지 않고는 만들 수 없다.
세 종류의 곡면: 공 겉면(구면), 원기둥, 말안장 모양의 곡면. 원기둥은 종이를 말아서 만들 수 있지만, 구면은 종이를 찢거나 구기지 않고는 만들 수 없다.

한 가지 실마리: 종이를 원기둥으로 말 때 종이는 찢어지거나 늘어나지 않는다. 점과 점 사이의 거리가 보존된다. 하지만 종이를 구면 위에 빈틈없이 붙이려면 반드시 찢거나 구기거나 늘여야 한다. 이 차이가 결정적이다.

가우스 곡률: 두 주곡률의 곱

원기둥의 개미와 구면의 개미를 가르는 차이를 숫자 하나로 적을 수 있을까? 먼저 곡면을 밖에서 내려다보는 관찰자의 눈으로, 곡면이 한 점에서 얼마나 휘었는지부터 재 보자.

한 점에서 가장 많이, 가장 적게 휘는 방향

휘는 정도는 곡률로 잰다. 반지름 rr인 원의 곡률은 1/r1/r이라, 반지름 2인 원은 0.5, 반지름 1인 원은 1이다. 반지름 2인 원기둥 옆면의 한 점에서 곡면을 여러 방향으로 잘라 보자. 둘레 방향으로 자르면 반지름 2인 원이 나와 곡률이 0.5이고, 기둥의 길이 방향으로 자르면 직선이 나와 곡률이 0이다. 다른 방향은 그 사이다. 반지름 2인 공은 어느 방향으로 잘라도 반지름 2인 원이 나와 곡률이 0.5다.

한 점 P에서 곡면을 두 방향으로 잘라 본 단면. (가) 반지름 2인 원기둥은 둘레 방향으로 자르면 반지름 2인 원(곡률 0.5), 길이 방향으로 자르면 직선(곡률 0)이 나온다. (나) 반지름 2인 공은 어느 방향으로 잘라도 반지름 2인 원(곡률 0.5)이 나온다
한 점 P에서 곡면을 두 방향으로 잘라 본 단면. (가) 반지름 2인 원기둥은 둘레 방향으로 자르면 반지름 2인 원(곡률 0.5), 길이 방향으로 자르면 직선(곡률 0)이 나온다. (나) 반지름 2인 공은 어느 방향으로 잘라도 반지름 2인 원(곡률 0.5)이 나온다

이렇게 한 점에서 가장 많이 휘는 방향과 가장 적게 휘는 방향의 곡률을 주곡률(principal curvature) κ1\kappa_1, κ2\kappa_2라 부른다. 두 수를 곱하면 원기둥은 0.5×0=00.5 \times 0 = 0, 공은 0.5×0.5=0.250.5 \times 0.5 = 0.25다. 이 곱이 가우스 곡률이다.

K=κ1 κ2 \textcolor{#b8860b}{K} = \textcolor{#b8860b}{\kappa_1}\,\textcolor{#b8860b}{\kappa_2}
K가우스 곡률κ1,κ2주곡률: 한 점에서 가장 많이⋅가장 적게 휘는 방향의 곡률 (볼록하면 양수, 오목하면 음수) \begin{array}{ll} \textcolor{#b8860b}{K} & \text{가우스 곡률} \\ \textcolor{#b8860b}{\kappa_1}, \textcolor{#b8860b}{\kappa_2} & \text{주곡률: 한 점에서 가장 많이·가장 적게 휘는 방향의 곡률 (볼록하면 양수, 오목하면 음수)} \end{array}

반지름이 2가 아니라 r\textcolor{#0561ff}{r}이어도 같다. 원기둥은 κ1=1/r\textcolor{#b8860b}{\kappa_1} = 1/\textcolor{#0561ff}{r}, κ2=0\textcolor{#b8860b}{\kappa_2} = 0이라 밖에서 보면 분명히 휘었는데도 K=0\textcolor{#b8860b}{K} = 0이고, 구면은 K=1/r2>0\textcolor{#b8860b}{K} = 1/\textcolor{#0561ff}{r}^2 > 0이다. 안장면은 κ1>0\textcolor{#b8860b}{\kappa_1} > 0, κ2<0\textcolor{#b8860b}{\kappa_2} < 0이므로 K<0\textcolor{#b8860b}{K} < 0. 가우스 곡률 K\textcolor{#b8860b}{K}의 부호가 곡면 위 기하학의 성격을 결정한다: K>0\textcolor{#b8860b}{K} > 0이면 삼각형 내각의 합이 180°보다 크고, K<0\textcolor{#b8860b}{K} < 0이면 작으며, K=0\textcolor{#b8860b}{K} = 0이면 정확히 180°이다.

한 점 근처의 곡면을 두 주곡률 κ1\textcolor{#b8860b}{\kappa_1}, κ2\textcolor{#b8860b}{\kappa_2}로 빚어 보는 위젯이다. 슬라이더로 두 방향의 휘어짐을 정하면 가우스 곡률 K=κ1κ2\textcolor{#b8860b}{K} = \textcolor{#b8860b}{\kappa_1}\textcolor{#b8860b}{\kappa_2}가 바로 나오고, 그 곡면을 종이 한 장을 굽혀 만들 수 있는지도 함께 나온다. 「종이 모드」를 켜고 한 방향을 굽혀 보자. 다른 방향은 어떻게 되는가? 곡면은 끌어서 돌릴 수 있다.

ML에서: 손실 곡면의 안장점

매개변수가 두 개인 모델의 손실 L(x,y)\textcolor{#6b6b6b}{L}(x, y)를 높이로 그리면 곡면이 하나 생긴다. 그래디언트(가장 가파른 방향의 벡터)가 0인 점(임계점)에서는 이 곡면의 두 주곡률이 헤세 행렬의 두 고윳값과 같고, 가우스 곡률은 헤세 행렬의 행렬식 LxxLyy−Lxy2\textcolor{#6b6b6b}{L}_{xx}\textcolor{#6b6b6b}{L}_{yy} - \textcolor{#6b6b6b}{L}_{xy}^2이 된다. 예를 들어 L=x2−y2\textcolor{#6b6b6b}{L} = x^2 - y^2의 원점에서는 주곡률이 22와 −2-2, K=−4\textcolor{#b8860b}{K} = -4로 안장형이다. 여기서 곡면 위를 움직이는 것은 매개변수 (x,y)(x, y), 곧 학습 중인 모델이다.

K<0\textcolor{#b8860b}{K} < 0인 임계점은 한 방향으로는 바닥이고 다른 방향으로는 꼭대기인 안장점이다. 도핀(Y. Dauphin) 등은 2014년 NIPS(지금의 NeurIPS) 논문 "Identifying and attacking the saddle point problem in high-dimensional non-convex optimization"에서, 고차원 신경망 학습을 가로막는 것은 나쁜 극소점보다 이런 안장점이라고 주장했다. 안장점이 경사하강법을 어떻게 붙잡는지는 아래 문제 3에서 직접 돌려 보자.

문제 1 — 탁구공과 농구공

확인 탁구공의 반지름은 2 cm, 농구공의 반지름은 약 12 cm다. 두 공의 겉면에서 가우스 곡률은 몇 배 차이 나는가?

같이 풀기 세션 1

김민준 M01
김민준

반지름이 6배니까 곡률은 6분의 1이죠. 탁구공이 농구공보다 6배 더 휘었어요.

선생님 T01
선생님

탁구공 겉면의 한 점에서 주곡률은 몇 개였고, 각각 얼마죠?

김민준 M07
김민준

어느 방향으로 잘라도 반지름 2인 원이니까 두 개 모두 1/21/2이요. 아, 곱이니까 K=1/4\textcolor{#b8860b}{K} = 1/4이고, 농구공은 1/12×1/12=1/1441/12 \times 1/12 = 1/144예요. 6배가 아니라 36배네요.

이서연 S01
이서연

주곡률 하나하나가 6배씩 차이 나고, 그 둘을 곱하니까 6의 제곱이야. 넓이가 가로 곱하기 세로라 길이를 두 배 늘리면 넓이는 네 배가 되는 것과 같은 모양이네. 단위도 1/cm21/\text{cm}^2, 넓이의 역수야.

문제 2 — 도넛의 바깥, 꼭대기, 안쪽

계산 아래 그림처럼 반지름 r=1\textcolor{#0561ff}{r} = 1인 원을 가운데 축에서 R=3\textcolor{#0561ff}{R} = 3만큼 떨어진 곳에서 축 둘레로 한 바퀴 돌려 도넛 모양의 곡면(토러스)을 만든다. 축에서 가장 먼 바깥 점 P, 맨 위의 꼭대기 점 Q, 축에 가장 가까운 안쪽 점 S에서 두 주곡률과 가우스 곡률을 구하라. 주곡률의 부호는 곡면 바깥쪽으로 볼록하면 양수로 잡는다.

문제 2의 도넛. 축을 품은 평면으로 자른 단면으로, 반지름 1인 원 두 개가 축에서 3씩 떨어져 있다. P는 바깥 점, Q는 꼭대기 점, S는 안쪽 점
문제 2의 도넛. 축을 품은 평면으로 자른 단면으로, 반지름 1인 원 두 개가 축에서 3씩 떨어져 있다. P는 바깥 점, Q는 꼭대기 점, S는 안쪽 점

같이 풀기 세션 2

김민준 M01
김민준

세 점 모두 단면 원 쪽으로는 반지름 1인 원이라 주곡률 1이에요. 축 둘레로 도는 방향은 P에서 반지름 3+1=43 + 1 = 4인 원, S에서 반지름 3−1=23 - 1 = 2인 원이니까 1/41/4과 1/21/2이요. 그래서 P는 K=1/4\textcolor{#b8860b}{K} = 1/4, S는 K=1/2\textcolor{#b8860b}{K} = 1/2로 안쪽이 더 휘었어요.

선생님 T01
선생님

도넛 안쪽 S에 서서 축 둘레 방향으로 걸어 본다고 해 봐요. 발밑의 땅은 바깥쪽 P에서처럼 법선 쪽에서 멀어지며 굽나요?

이서연 S01
이서연

P에서는 축 둘레의 원이 곡면 안쪽으로 굽으니까 바깥에서 보면 볼록해. 그런데 S에서는 그 원의 중심, 곧 축이 곡면 바깥쪽에 있어. 축 방향으로는 오목하니까 −1/2-1/2야.

김민준 M07
김민준

그럼 S는 한 방향은 볼록하고 한 방향은 오목한 말안장이네요. K=1×(−1/2)=−1/2\textcolor{#b8860b}{K} = 1 \times (-1/2) = -1/2이요. 위젯 슬라이더에 1과 −0.5-0.5를 넣으니까 진짜 말안장 모양이 나와요.

선생님 T01
선생님

꼭대기 Q는요?

이서연 S07
이서연

Q에서 축 둘레로 걸으면 곡면은 옆으로 기울지 않고 평평하게 돌아요. 그 방향의 주곡률은 0이고, K=0\textcolor{#b8860b}{K} = 0이에요. 한 곡면 위에서 가우스 곡률이 1/41/4에서 0을 지나 −1/2-1/2까지 바뀌네요. 구면처럼 어디서나 같은 값인 게 오히려 특별한 경우였어요.

김민준 M01
김민준

조교님이 제 보고서 첫 쪽만 보고 “전체가 이 수준이면 좋겠네” 하셨는데 뒤로 갈수록 엉망이었던 게 생각나요. 한 점만 보고 곡면 전체를 말하면 안 되는 거죠.

문제 3 — 멈춘 줄 알았던 학습

킬러 매개변수가 두 개인 모델의 손실이 L(x,y)=14x2+xy+14y2\textcolor{#6b6b6b}{L}(x, y) = \frac{1}{4}x^2 + xy + \frac{1}{4}y^2이다. 원점에서 그래디언트는 0이다. (가) 원점에서 손실 곡면의 두 주곡률(헤세 행렬의 두 고윳값)과 가우스 곡률을 구하고, 원점이 극소인지 안장인지 말하라. (나) 학습률 0.5로 경사하강법을 (1,1)(1, 1)에서 시작하면 어떻게 되는가? (1,0.999)(1, 0.999)에서 시작하면 손실은 어떻게 움직이는가?

같이 풀기 세션 3

김민준 M01
김민준

Lxx=1/2\textcolor{#6b6b6b}{L}_{xx} = 1/2, Lyy=1/2\textcolor{#6b6b6b}{L}_{yy} = 1/2로 둘 다 양수예요. xx로 잘라도 yy로 잘라도 그릇 모양이니 원점은 극소죠.

선생님 T01
선생님

그럼 원점에서 (1,−1)(1, -1) 쪽으로 가 볼까요? 거기서 손실은 얼마예요?

김민준 M07
김민준

1/4−1+1/4=−1/21/4 - 1 + 1/4 = -1/2요. 원점의 0보다 낮아요! 대각선으로 가면 내려가네요. xyxy 항을 빼먹고 판단했어요.

이서연 S01
이서연

대각 성분 둘만 보면 안 되고 헤세 행렬 (1/2111/2)\begin{pmatrix} 1/2 & 1 \\ 1 & 1/2 \end{pmatrix}의 고윳값을 봐야지. (1,1)(1, 1) 방향이 3/23/2, (1,−1)(1, -1) 방향이 −1/2-1/2야. 주곡률이 3/23/2와 −1/2-1/2이니까 K=−3/4\textcolor{#b8860b}{K} = -3/4, 안장이야. 행렬식 1/4−11/4 - 1로 구해도 −3/4-3/4고.

김민준 M01
김민준

(나)는 numpy로 돌렸어요. (1,1)(1, 1)에서 시작하면 10걸음쯤에 원점에 닿아서 손실 0, 그래디언트 0이에요. 거기서 꼼짝도 안 해요. 학습이 끝난 거죠?

선생님 T01
선생님

시작점을 (1,0.999)(1, 0.999)로 아주 조금만 바꿔 볼래요?

김민준 M05
김민준

3걸음째부터 20걸음째까지 손실이 0.001 안쪽에서 거의 안 움직여요. 그러다 21걸음째부터 음수로 커지더니 36걸음째에 −1-1 아래로 떨어져요. 멈춘 게 아니라 안장 위에서 한참 쉬고 있었던 거예요.

이서연 S07
이서연

한 걸음마다 (1,1)(1, 1) 방향 성분은 1−0.5×3/2=0.251 - 0.5 \times 3/2 = 0.25배로 줄고, (1,−1)(1, -1) 방향 성분은 1+0.5×1/2=1.251 + 0.5 \times 1/2 = 1.25배로 늘어. 처음 (1,−1)(1, -1) 방향 성분이 0.0007쯤이라 1.25배씩 불어나도 눈에 띄려면 한참 걸려. (1,1)(1, 1)에서 시작하면 그 성분이 처음부터 0이라 영영 안 늘고.

선생님 T13
선생님

그래요. 음수인 주곡률 방향이 빠져나갈 길이고, 그 방향의 곡률이 작을수록 빠져나가는 데 오래 걸려요. 매개변수가 수백만 개인 신경망에는 이런 방향이 곳곳에 있어요. 도핀 등이 말한 안장점의 평지가 이거예요.

김민준 M01
김민준

과제에서 loss 곡선이 한참 평평하길래 버그인 줄 알고 학습률을 바꿔 다시 돌렸는데, 그냥 뒀으면 떨어졌을지도 모르겠네요.