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

출발 문제

종이 한 장을 테이블에 놓자. 완벽하게 평평하다. 이제 이 종이를 돌돌 말아서 원기둥 모양으로 만들어 보자. 우리 눈에는 종이가 분명히 “휘어졌다”. 하지만 종이 위에 사는 아주 작은 개미, 곧 곡면 밖을 볼 수 없고 곡면 안에서만 재는 관찰자의 관점에서 생각해 보자. 이 개미는 종이 위에서 직선을 긋고, 삼각형을 그리고, 원의 둘레와 넓이를 잴 수 있다. 놀랍게도, 개미가 측정하는 모든 기하학적 양은 종이를 말기 전과 완전히 동일하다. 삼각형의 내각의 합은 여전히 정확히 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}

가우스 곡률(두 주곡률의 곱, Gaussian Curvature, K=κ1κ2\textcolor{#b8860b}{K} = \textcolor{#b8860b}{\kappa_1} \textcolor{#b8860b}{\kappa_2})은 곡면이 각 점에서 휜 정도를 숫자 하나로 적은 것이다. K>0\textcolor{#b8860b}{K} > 0이면 구면형, K<0\textcolor{#b8860b}{K} < 0이면 안장형, K=0\textcolor{#b8860b}{K} = 0이면 평면형(원기둥 포함).

반지름이 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의 두 공. 반지름 2 cm인 탁구공과 약 12 cm인 농구공을 같은 축척으로 그린 단면
문제 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는요?

이서연 S01
이서연

Q에서 축 둘레로 걸으면… 곡면이 바깥으로도 안쪽으로도 기울지 않고 평평하게 돌아요. 그 방향의 주곡률은 0이에요.

김민준 M01
김민준

그럼 곱하면 K\textcolor{#b8860b}{K}도 0이네.

이서연 S07
이서연

응. 한 곡면 위에서 가우스 곡률이 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의 파라미터 평면. 그래디언트가 0인 원점과 경사하강법의 출발점 (1, 1). 확대 상자에 0.001 떨어진 두 출발점 (1, 1)과 (1, 0.999)를 그렸다
문제 3의 파라미터 평면. 그래디언트가 0인 원점과 경사하강법의 출발점 (1, 1). 확대 상자에 0.001 떨어진 두 출발점 (1, 1)과 (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
이서연

대각 성분 둘만 보면 xyxy 항이 빠지니까, 헤시안 (1/2111/2)\begin{pmatrix} 1/2 & 1 \\ 1 & 1/2 \end{pmatrix} 전체를 봐야 할 것 같아.

선생님 T01
선생님

주곡률은 헤시안의 고윳값이었죠. 민준 학생이 간 (1,−1)(1, -1) 방향부터 곱해 볼래요?

이서연 S01
이서연

(1,−1)(1, -1)을 곱하면 (−1/2, 1/2)(-1/2,\ 1/2)이니까 −1/2-1/2배예요. 그러면 수직인 (1,1)(1, 1)도 고유 방향이겠네요. 곱하면 (3/2, 3/2)(3/2,\ 3/2), 3/23/2배요.

선생님 T01
선생님

그럼 가우스 곡률은요?

이서연 S01
이서연

주곡률의 곱이니까 3/2×(−1/2)=−3/43/2 \times (-1/2) = -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 아래로 떨어져요. 멈춘 게 아니라 안장 위에서 한참 쉬고 있었던 거예요.

이서연 S01
이서연

아까 구한 두 고유 방향으로 나눠 보면, 한 스텝마다 (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배로 늘어.

김민준 M01
김민준

늘어나는데 왜 20스텝 동안이나 가만있었지?

이서연 S07
이서연

처음 (1,−1)(1, -1) 방향 성분이 0.0007쯤이라, 1.25배씩 불어나도 눈에 띄려면 한참 걸려. (1,1)(1, 1)에서 시작하면 그 성분이 처음부터 0이라 영영 안 늘고.

선생님 T13
선생님

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

김민준 M01
김민준

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