지수 사상: 한 점에서 쏘아 보낸 측지선들
측지선 방정식은 출발점과 출발 속도만 정하면 경로를 하나로 정해 준다. 곡면 위에서 학습하는 옵티마이저 가운데에는 걸음마다 지금 점에서 방향 하나와 걸음 크기를 골라 이렇게 측지선을 따라 가는 것이 있다. 그렇다면 한 점에서 모든 방향, 모든 속력으로 측지선을 쏘아 보내면 곡면 위에 어떤 그림이 생길까?
방향과 힘을 정하면 떨어지는 곳이 정해진다
한 점에서 방향과 속력을 정해 측지선을 쏘아 보내는 일은 대포를 쏘는 것과 같다. 방향과 힘(속도)을 정하면 포탄이 떨어지는 곳이 정해진다. 반지름 1인 구의 북극에서 같은 발사 속력으로 두 발을 쏘아 보자. 한 발은 경도 0° 쪽, 한 발은 경도 90° 쪽이다. 포탄은 측지선을 따라 1초 동안 날아가 떨어진다. 접선공간(북극에서 구에 닿는 평면)에 그린 두 발사 화살표는 끝끼리 발사 속력의
| 발사 속력 | 평면에서 두 화살표 끝의 거리 | 곡면에서 두 착탄점의 거리 |
|---|---|---|
| 0.1 | 0.1414 | 0.1413 |
| 1 | 1.414 | 1.275 |
| 4.443 | 0 (둘 다 남극) |
발사 속력이 작으면 평면에 그린 그림을 곡면에 거의 그대로 옮겨 붙일 수 있다. 속력이 커질수록 곡률 때문에 어긋나고, 속력이
- 지수 사상 (방향 발사기 / Exponential Map,
) — 접선공간(그 점에서 곡면에 닿는 평면)의 벡터 를 받아, 에서 속도 로 출발한 측지선을 시간 1만큼 따라간 점을 돌려주는 함수. 접선공간(평면)과 매니폴드(곡면)를 잇는 다리다. 기호 에서 는 세 글자의 곱이 아니라 함수 이름 하나이고(exponential의 줄임), 아래 첨자 는 출발점이다. 수를 받아 를 내는 지수함수가 아니라, 벡터를 받아 곡면 위의 점을 내는 함수다.
그런데 왜 하필 「지수」일까? 곱셈으로 이루어진 공간에서 보면 까닭이 드러난다. 양수 전체를, 두 수 사이의 거리를 차가 아니라 비율의 로그로 재는 공간으로 보자(1에서 2까지와 2에서 4까지가 같은 거리). 이 공간에서 1에서 속도
구면에서 길이
측지선이 가장 짧다고 한 것은 조금만 흔들어 본 가까운 경로들과 견줄 때, 곧 국소적으로(가까운 것끼리만 견줄 때) 한 이야기였다. 멀리 돌아가는 길까지 모든 경로와 견주는 전역적으로(곡면 전체를 놓고 견줄 때)도 가장 짧은지는 아직 따지지 않았다. 곡면의 위상(topology: 전체가 어떻게 이어져 있는지. 원기둥처럼 한 바퀴 감기는 구조)과 켤레점이 이 물음과 어떻게 얽히는지는 아래 문제 7에서 보자.
ML에서: 곡면 위의 경사하강법
평면에서의 경사하강법은
문제 7 — 측지선은 언제까지 가장 짧은가
킬러 (가) 서울에서 대원을 따라 25,000 km를 간 경로는 최단경로인가? (나) 서울에서 대척점(지구 반대편 정반대 점)까지 대원을 따라 가는 약 20,015 km의 경로는 최단경로인가? 최단경로는 하나뿐인가?
같이 풀기 세션 7

둘 다 최단이죠. 측지선은 최단경로라고 배웠잖아요.

민준 학생, 지구 둘레가 몇 km예요?

약 40,030 km요. 그럼 25,000 km를 갔으면… 반대 방향으로 가면 40,030 − 25,000 = 15,030 km밖에 안 되네요.

측지선인데 최단이 아니라고요? 핸들을 한 번도 안 꺾었는데요?

측지선은 “가까운 경로들 중에서” 짧은 거예요. 조금만 흔들어 본 경로보다는 짧지만, 완전히 다른 쪽으로 도는 경로까지 이긴다는 보장은 없어요.

(가)는 최단이 아니고, 그럼 (나)는 대척점까지니까 짧은 쪽 호 그 자체잖아. 최단이고, 최단이면 하나뿐이야. 강볼록 함수의 최솟점은 유일하다고 배웠거든.

서연 학생, 서울에서 북쪽으로 출발한 대원과 남쪽으로 출발한 대원은 각각 어디로 가요?

둘 다 대척점으로 가요. 동쪽으로 출발해도, 어느 방향으로 출발해도 반 바퀴 가면 전부 대척점에서 만나요. 길이도 전부 20,015 km로 같고요. 최단경로가 무한히 많아요.

길이 범함수는 볼록하지 않구나. 구면이 둥글어서 경로 공간이 휘어 있으니 유일성을 공짜로 얻을 수 없는 거야.

맞아요. 지수 사상에서 본 켤레점, 곧 한 점에서 나간 측지선들이 다시 한 점에 모이는 곳이 여기서 나와요. 측지선은 켤레점에 닿기 전까지만 가까운 경로들보다 짧아요. 구면에서는 켤레점이 바로 대척점이라서 (가)의 경로는 대척점을 지나는 순간 최단 자격을 잃었어요.

그러니까 측지선은 "지금 당장은 직진이 제일 빠르다"는 뜻이지, "끝까지 제일 빠르다"는 뜻은 아니네요!

PyTorch 과제에서 처음 그래디언트 방향으로 계속 밀고 나갔더니 loss가 줄다가 어느 순간부터 다시 늘었던 거랑 비슷해요. 처음에 제일 좋은 방향이 끝까지 제일 좋은 방향은 아니었어요.

원기둥에서도 생각해 볼 만해요. 한 점에서 바로 위의 점까지 가는 나선 측지선은 몇 바퀴 감느냐에 따라 무수히 많은데, 그중 최단은 감지 않는 세로 모선 하나예요.
문제 8 — 구면 위의 한 걸음, 싸게 가기
계산 길이가 1이어야 하는 매개변수
같이 풀기 세션 8

(가)는

(나)부터 직접 구해 봐요. 대원을 따라 길이 0.5만큼 가면 어디예요?


더하면 접선 쪽으로 곧게 나가서 구면에서 멀어지고, 나누면 그 점을 중심 쪽으로 끌어내리니까 원래 가려던 호보다 덜 간 자리에 떨어지는 거야.

걸음을 0.1로 줄이면요?


아까 발사 속력 표랑 같네요. 작게 쏘면 평면에 그린 그림을 곡면에 거의 그대로 옮겨 붙일 수 있었잖아요. 걸음이 작으면 싸게 더하고 나누기만 해도 지수 사상과 거의 같은 데 떨어져요. 그래서 구현에서는 이렇게 바꿔 쓰는 거였구나.

보나벨의 논문도 구면에서는 「바깥 공간에서 더한 뒤 구면으로 되돌리기」를 지수 사상 대신 쓰는 방법의 예로 들어요. 되돌리기(retraction)라고 불러요. 측지선이나 크리스토펠 기호를 구하지 않아도 되니 계산이 훨씬 가벼워요.