곡면 위에서 속도를 말하려면

접선다발: 위치와 속도를 한 공간에

출발 문제의 개미(구면 밖으로 나가지 않고 구면 위만 기어가는 관찰자)가 북극에서 적도로 내려가는 동안, 개미의 속도벡터가 사는 접선공간은 매 순간 바뀐다. 개미의 상태(“어디에 있고 어느 쪽으로 얼마나 빨리 가는가”)를 점 하나로 적고 싶다면 점마다 다른 접선공간들을 어떻게 모아야 할까? 평면이라면 위치 2개와 속도 2개를 이어 붙여 R4\mathbb{R}^4의 점 하나로 쓰면 끝이었는데, 곡면에서도 같은 생각을 한다.

원에서 먼저 해 보자. 원 위의 상태는 숫자 두 개로 적힌다. 위치를 적는 각도 하나와, 그 위치에서 각도가 시간에 따라 변하는 비율(각속도) 하나. 예를 들어 (0.5, 2)는 "각도 0.5인 점에서 각속도 2로 돌고 있다"는 상태다. 각도는 원을 따라 한 바퀴 돌아 제자리로 오고, 각속도는 음수부터 양수까지 어떤 실수든 될 수 있다. 원의 점마다 그 점의 속도 직선을 하나씩 세워 늘어놓으면, 원을 따라 세운 직선들이 원기둥을 이룬다. 원의 상태 공간은 원기둥이고, 원기둥은 2차원이다.

원의 상태 공간. 원(위치) 위의 점마다 그 점의 속도 직선을 세우면 원기둥이 된다. 원 자체는 각속도 0인 상태들이고, 각도 0.5인 점의 직선에서 높이 2인 점이 상태 (0.5, 2)다
원의 상태 공간. 원(위치) 위의 점마다 그 점의 속도 직선을 세우면 원기둥이 된다. 원 자체는 각속도 0인 상태들이고, 각도 0.5인 점의 직선에서 높이 2인 점이 상태 (0.5, 2)다

구면이라면 위치 2개와 속도 2개, 모두 4개의 숫자다. 일반적으로 MM이 nn차원이면 모든 점의 접선공간을 한데 모은 공간은 위치 nn개와 속도 nn개로 적히는 2n2n차원의 매니폴드다.

이처럼 점마다 같은 모양의 방을 붙이되 전체가 하나의 매끄러운 공간이 되게 하는 구조에는 따로 역사가 있다.

역사: 샤를 에레스만 (Charles Ehresmann, 1905–1979)

에레스만의 초상

"접선다발"이라는 말을 처음 들으면, 매니폴드의 각 점에 접선공간이라는 방을 하나씩 붙인다는 이미지가 떠오른다. 이 구조를 일반적인 틀로 다듬은 핵심 인물 가운데 한 사람이 샤를 에레스만이지만, 특별한 경우는 그보다 먼저 나왔다. 1933년 헤르베르트 자이페르트(Herbert Seifert)가 3차원 공간을 원들의 묶음으로 보는 논문에서 「올(Faser)」이라는 말을 처음 썼고, 1935년 해슬러 휘트니(Hassler Whitney)가 「구면 공간」(1940년에 「구면다발」로 이름을 바꾼다)을 정의했다. 휘트니와 에두아르트 슈티펠(Eduard Stiefel)이 이 틀로 따진 물음은, 매니폴드의 모든 점에 서로 나란하지 않은 화살표 몇 개를 끊김 없이 붙일 수 있느냐였다.

에레스만은 스트라스부르 출신의 프랑스 수학자로, 1934년 엘리 카르탕(Élie Cartan) 밑에서 대칭이 많은 공간들의 위상을 다룬 박사 논문을 썼다. 1940년 독일군이 알자스를 점령하자 스트라스부르 대학은 통째로 프랑스 중부의 클레르몽페랑으로 옮겨 갔고, 에레스만도 대학을 따라갔다.

다발에 관한 그의 연구는 1941년 무렵부터 이 피란 대학에서 나오기 시작했고, 그는 파이버 다발(fibre bundle)의 일반 이론을 세우는 데 앞장섰다. 바탕이 되는 공간의 각 점에 같은 모양의 공간(파이버)을 하나씩 붙이되, 전체가 매끄러운 매니폴드를 이루는 구조다. 접선다발은 그 가장 자연스러운 예로, 바탕은 매니폴드 MM이고 각 점에 붙은 파이버는 그 점의 접선공간이다. 원을 따라 속도 직선을 세운 원기둥이 바로 이 구조다.

에레스만은 또한 1950년, 다발 위에서 이웃한 점의 벡터를 비교하는 규칙(에레스만 접속)을 도입하여, 곡선을 따라 벡터를 돌리지 않고 옮기는 일반적 방법을 제시했다.

김민준 M01
김민준

점마다 방을 붙인다는 거, 지금 보면 배열 두 개잖아요. 모멘텀 옵티마이저도 위치 배열 옆에 속도 배열을 하나 더 들고 다니고요. 이걸 일반 이론으로 세우는 데 왜 1940년대까지 걸렸어요?

선생님 T01
선생님

배열 두 개로 적으려면 모든 점의 방에 같은 축을 깔아 둬야 해요. 원기둥에서는 축을 어떻게 깔았죠?

이서연 S01
이서연

원의 점마다 각도가 커지는 방향을 양수로 잡았어요. 한 바퀴 돌아와도 같은 방향이라 끊김이 없고요. 구면이라면… 점마다 두 축을 끊김 없이 깔 수 있는지는 바로는 모르겠어요.

선생님 T14
선생님

그게 휘트니와 슈티펠이 따진 물음이에요. 모든 점에 나란하지 않은 화살표 몇 개를 끊김 없이 붙일 수 있느냐. 그게 안 되는 공간이라면 방들을 어떻게 이어 붙였는지까지 적어야 전체가 한 공간이 돼요.

김민준 M06
김민준

그래도 그걸 묻는 틀 정도는 금방 만들었을 것 같은데요.

선생님 T01
선생님

「올」이라는 말이 처음 나온 게 1933년 자이페르트의 논문이고, 휘트니는 1935년에 붙인 「구면 공간」이라는 이름을 1940년에 「구면다발」로 바꿔요. 저마다 자기 경우를 자기 이름으로 다루던 때라, 이것들을 한 정의로 묶는 일부터 해야 했어요. 에레스만은 그 일을 점령을 피해 옮겨 간 피란 대학에서 했고요.

이서연 S03
이서연

그러면 접선다발의 점을 (위치, 속도)로 적을 때, 그 속도 숫자는 어느 방의 축으로 잰 거예요? 위치가 바뀌면 재는 축도 같이 바뀌어야 하잖아요.

ML에서: 모멘텀 옵티마이저의 상태

모멘텀을 쓰는 경사하강법은 매 스텝 파라미터 θ\theta와 함께 “지금까지 움직여 온 속도” vv를 기억한다. 옵티마이저의 상태는 (위치, 속도) 한 쌍이고, 파라미터가 nn개면 상태는 2n2n개의 숫자다. nn차원 매니폴드의 접선다발이 2n2n차원인 것과 같다. 파라미터 공간이 평평한 Rn\mathbb{R}^n이면 (θ,v)(\theta, v)는 그냥 숫자 2n2n개의 묶음이라 다발 구조가 드러나지 않는다. 하지만 파라미터를 길이 1인 벡터로 묶어 두면 파라미터는 구면 위를 움직이고, 속도 vv는 그 점의 접선공간 안에 있어야 한다는 제약이 생긴다. 실제로 엔비디아 연구진이 2024년에 낸 트랜스포머 nGPT는 임베딩과 가중치 행렬의 벡터를 학습 스텝마다 길이 1로 되돌려 놓는다. 그런데 한 스텝 업데이트하면 위치가 바뀌고 속도가 들어갈 접선공간도 바뀌는데, 옛 속도는 새 점의 접선공간에 그대로 들어갈까?

문제 4: 태풍 정보 한 줄

확인 태풍 정보에 「중심 위치 북위 30.0°, 동경 128.0°, 진행 방향 북북동, 진행 속도 시속 30 km」라고 나왔다. 태풍의 중심을 지구 표면 위를 움직이는 점으로 보자. (가) 이 한 줄에서 태풍 중심의 지금 상태(어디서, 어느 쪽으로, 얼마나 빨리)를 정하는 숫자는 몇 개인가? (나) 진행 방향과 속도를 동쪽으로 가는 빠르기와 북쪽으로 가는 빠르기로 바꿔 적어라. 북북동은 북쪽에서 동쪽으로 22.5° 돌린 방향이다.

문제 4의 그림. 북위 30.0°, 동경 128.0°에 있는 태풍 중심과, 북쪽에서 동쪽으로 22.5° 돌린 진행 방향(북북동, 시속 30 km)
문제 4의 그림. 북위 30.0°, 동경 128.0°에 있는 태풍 중심과, 북쪽에서 동쪽으로 22.5° 돌린 진행 방향(북북동, 시속 30 km)

같이 풀기 세션 4

김민준 M01
김민준

숫자로 적힌 게 30.0, 128.0, 30이니까 셋이요. 북북동은 글자고요.

선생님 T01
선생님

진행 방향을 북동으로 바꿔 적어도 같은 태풍이에요?

김민준 M07
김민준

아니요, 가는 방향이 달라지죠. 북북동도 22.5°라는 숫자 하나였네요. 넷이에요.

이서연 S01
이서연

(나)는 동쪽이 30×sin⁡22.5°≈11.530 \times \sin 22.5° \approx 11.5, 북쪽이 30×cos⁡22.5°≈27.730 \times \cos 22.5° \approx 27.7, 둘 다 시속 km야. 위치 둘에 빠르기 둘. 동쪽과 북쪽은 태풍이 지금 있는 자리에서 잰 방향이니까, 이 두 숫자는 태풍 중심이 지금 있는 점에 붙은 숫자고.

선생님 T01
선생님

맞아요. 곡면 위 한 점의 상태는 위치를 적는 숫자 둘과, 그 점에서 잰 속도의 숫자 둘이에요.

문제 5: 접선공간은 몇 차원인가

확인 반지름 1인 구면 S2S^2을 3차원 공간에 놓고, 점 p=(0.6, 0, 0.8)p = (0.6,\ 0,\ 0.8)에서 속도 (a,b,c)(a, b, c)를 생각한다. (가) (a,b,c)(a, b, c)가 접선공간 TpS2T_pS^2에 들어가려면 어떤 조건을 만족해야 하고, 마음대로 고를 수 있는 숫자는 몇 개인가? (나) 3차원 좌표로 적으면 접선다발 TS2TS^2의 점 하나는 (x,y,z,a,b,c)(x, y, z, a, b, c), 숫자 여섯 개다. 이 여섯 숫자에는 조건이 몇 개 걸리고, 그래서 TS2TS^2는 몇 차원 매니폴드인가?

문제 5의 그림. 반지름 1인 구면 위의 점 p = (0.6, 0, 0.8)과 세 좌표축
문제 5의 그림. 반지름 1인 구면 위의 점 p = (0.6, 0, 0.8)과 세 좌표축

같이 풀기 세션 5

김민준 M01
김민준

3차원이요. numpy로 접선공간의 벡터를 뽑아 보면 성분이 (x,y,z)(x, y, z) 세 개씩 나오거든요. 그러면 접선다발은 위치 3개에 속도 3개니까 6차원이겠네요.

이서연 S01
이서연

성분이 세 개라고 3차원은 아니지. 접선공간의 벡터는 법선(곡면에 수직으로 선 방향)과 수직이라는 조건을 하나 만족해야 하잖아. 자유롭게 고를 수 있는 건 두 개야.

선생님 T01
선생님

민준 학생, 이 점에서 접선공간의 벡터 (a,b,c)(a, b, c)를 하나 마음대로 골라 보세요. 몇 개까지 마음대로 정할 수 있어요?

김민준 M07
김민준

구면에서는 법선이 pp 자신이니까 0.6a+0.8c=00.6a + 0.8c = 0이어야 하네요. a=1a = 1, b=0b = 0으로 정하면 c=−0.75c = -0.75로 저절로 정해져요. 두 개를 정하면 세 번째는 법선과 수직이 되게 저절로 정해지네요. 그럼 TpS2T_pS^2는 2차원이에요.

선생님 T01
선생님

그럼 (나)의 여섯 숫자에는 조건이 몇 개 걸릴까요?

김민준 M01
김민준

방금 건 「법선과 수직」 xa+yb+zc=0xa + yb + zc = 0 하나고… 아, 점이 구면 위에 있어야 한다는 x2+y2+z2=1x^2 + y^2 + z^2 = 1도 있어요. 둘이니까 TS2TS^2는 6−2=46 - 2 = 4차원이에요. 태풍 정보도 위치 둘에 속도 둘이었어요.

선생님 T01
선생님

맞아요. 성분의 개수는 우리가 구면을 어디에 넣어 두었느냐에 달려 있지만, 차원은 구면이 스스로 정해요.

김민준 M01
김민준

보고서 표에 칸이 세 개 있어도 셋째 칸이 앞의 두 칸으로 계산되는 합계 칸이면, 조교님이 “실제로 입력한 값은 두 개네요” 하시는 거랑 같네요. cc가 aa와 bb로 저절로 정해진 것처럼요.

문제 6: 길이 1로 묶인 파라미터의 모멘텀

계산 파라미터 두 개를 길이 1로 묶어 두면 파라미터는 원 위를 움직이는데, 지금 파라미터는 p=(1, 0)p = (1,\ 0), 모멘텀에 쌓인 속도는 v=(0, 1)v = (0,\ 1)이다. 업데이트 한 스텝 p+0.5 vp + 0.5\,v로 간 뒤 길이를 1로 맞춘 새 점을 p′p'이라 하자. (가) p′p'은? (나) 옛 속도 vv는 p′p'의 접선공간에 들어 있는가? (다) 들어 있지 않다면, vv에서 p′p' 방향 성분을 빼서 p′p'의 접선공간으로 옮긴 속도는?

문제 6의 그림. 원 위의 파라미터 p = (1, 0)과 속도 v = (0, 1), 한 스텝 간 점 p + 0.5v, 그 점을 원점 쪽으로 당겨 길이를 1로 맞춘 새 점 p′
문제 6의 그림. 원 위의 파라미터 p = (1, 0)과 속도 v = (0, 1), 한 스텝 간 점 p + 0.5v, 그 점을 원점 쪽으로 당겨 길이를 1로 맞춘 새 점 p′

같이 풀기 세션 6

김민준 M01
김민준

p′p'은 (1,0.5)(1, 0.5)를 길이 1.25\sqrt{1.25}로 나눈 (0.894, 0.447)(0.894,\ 0.447)이에요. vv는 길이가 그대로 1이니까 새 점에서도 문제없는 속도죠.

선생님 T01
선생님

원 위 한 점의 접선공간에 들어 있는지는 길이로 봐요? 무엇으로 봐요?

김민준 M07
김민준

법선과 수직인지로 보죠. 원에서는 법선이 p′p' 자신이니까 v⋅p′=0.447v \cdot p' = 0.447… 0이 아니네요. 옛 속도의 일부가 원 밖으로 삐져나와 있어요.

이서연 S01
이서연

그러면 원 밖으로 삐져나온 p′p' 방향 성분을 빼면 돼. v−(v⋅p′) p′=(0,1)−0.447×(0.894, 0.447)=(−0.4, 0.8)v - (v \cdot p')\,p' = (0, 1) - 0.447 \times (0.894,\ 0.447) = (-0.4,\ 0.8). p′p'과 내적하면 −0.358+0.358=0-0.358 + 0.358 = 0이니까 이제 접선공간 안이야. 길이는 0.894로 조금 줄었고.

선생님 T01
선생님

그래요. 파라미터를 구면에 묶어 두고 모멘텀을 쓰는 최적화 방법은 이렇게 옛 속도를 새 점의 접선공간으로 옮기는 단계를 따로 둬요. 그대로 쓰면 삐져나온 법선 방향 성분은 다음에 길이를 1로 맞출 때 잘려 나가 업데이트에 아무 보탬이 안 되죠.

김민준 M01
김민준

법선 방향 성분이 잘려 나가는 건, 조별 과제 주제가 바뀌었는데 지난주 자료를 그대로 붙여 넣으면 새 주제와 안 맞는 부분은 결국 잘려 나가는 거랑 같네요. 새 주제에 맞는 부분만 옮겨 와야 해요.