접선공간이 벡터공간이라는 것은 알았다. 하지만 개미가 "내 속도는 이것"이라고 말하려면 숫자로 적어야 한다. 구면 안에서만 사는 개미는 x,y,z를 모르고 자기 좌표만 안다. 좌표만 가지고 화살표에 이름을 붙일 수 있을까?
구면의 다이얼은 둘이다. 북극에서 잰 각 θ(여위도)와 경도 ϕ. 지리의 위도는 적도에서 재지만 수학의 구면좌표는 북극에서 잰다. 그러면 위도선의 반지름이 sinθ 하나로 적혀 식이 간단해진다. 북위 60도는 θ=30°이고, 이름만 다를 뿐 같은 자리다. 경도 다이얼만 0.01 돌리고 θ는 그대로 두면 점은 동쪽으로 조금 움직인다. 적도에서는 거의 정확히 0.01만큼, 북극에서 30도 떨어진 곳(θ=30°)에서는 0.005만큼 움직인다. 같은 "경도 0.01"이라도 위도에 따라 실제 거리가 sinθ배로 줄어든다. 이렇게 다이얼 하나만 조금 돌릴 때 점이 움직이는 화살표를 그 다이얼의 기저 화살표 ∂ϕ라 부르고, 그 길이는 sinθ다. 다이얼마다 하나씩 이런 화살표가 있고, 어떤 속도든 "θ 화살표 몇 개와 ϕ 화살표 몇 개"로 적을 수 있다.
구면의 좌표 기저 화살표 — 남쪽을 가리키는 ∂θ(주황)는 어디서나 길이 1이고, 동쪽을 가리키는 ∂φ(파랑)는 적도에서 길이 1, 북극에서 30° 떨어진 곳(θ = 30°)에서 길이 0.5다. 같은 경도 다이얼 한 칸이 극에 가까울수록 짧은 걸음이 된다
좌표가 여럿일 때 쓰는 표기 세 가지를 먼저 풀어 둔다. 좌표는 x1,x2,…처럼 번호를 위에 붙여 xi라 적는다. 이 위첨자는 거듭제곱이 아니라 몇 번째 좌표인지 알려 주는 번호다. xi 다이얼의 기저 화살표는 ∂i라 적는다. 곱셈이 아니라 한 덩어리 이름이고, 그 방향으로 함수가 변하는 빠르기를 재는 일이 곧 편미분 ∂/∂xi라서 미분 기호를 빌려 쓴다. 그리고 vi∂i처럼 같은 첨자가 위와 아래에 한 번씩 나오면 그 첨자에 대해 모두 더한다고 약속한다(아인슈타인 합 규약).
좌표 기저 (좌표 한 칸 화살표 / Coordinate Basis) — 좌표 xi 하나만 늘리고 나머지 좌표는 그대로 둘 때 점이 움직이는 방향의 접선벡터 ∂i=∂/∂xi들의 모임. 길이가 1이라는 보장은 없다.
위 식의 vi∂i처럼 합 기호 ∑ 없이 더하기를 뜻하는 약속은 1916년 알베르트 아인슈타인이 일반 상대성 이론을 다루며 들여왔다. 시공간의 좌표 넷에 첨자가 둘 셋씩 붙은 양을 다루다 보니, 그의 식에는 같은 첨자를 좌표 넷에 걸쳐 더하는 항이 가득했다. 그는 뒤에 친구에게 「수학에서 큰 발견을 했다. 두 번 나오는 첨자에 대해 더해야 할 때마다 합 기호를 지워 버렸다」고 농담했다고 전해진다. 이 책도 그 약속을 따른다. 같은 첨자가 위와 아래에 한 번씩 나오면, 합 기호가 없어도 더한다.
좌표를 바꾸면 성분이 바뀐다
경도 다이얼 한 칸이 위도에 따라 다른 길이였다. 그렇다면 같은 화살표를 다른 다이얼로 읽으면 성분은 어떻게 바뀔까? 다이얼이 하나뿐인 가장 단순한 경우부터 보자. 로그 다이얼을 고른 것은, ML에서 표준편차처럼 양수여야 하는 값을 적을 때 흔히 쓰는 다이얼이기 때문이다.
양수 하나를 적는 다이얼 x와, 그 로그를 적는 다이얼 x~=logx가 있다고 하자. 같은 점을 가리키는 두 이름표다. x=2에서 x 다이얼을 0.01 돌리면 x~ 다이얼은 log2.01−log2≈0.00499, 거의 0.005 돌아간다. 이 자리에서는 x~가 x의 1/x=1/2배만큼 움직인다. 그러니 x 다이얼로 성분이 1인 화살표는 x~ 다이얼로는 성분이 1/2이다. 이 "1/2배"를 적어 둔 것이 번역표, 곧 야코비 행렬이다. 다이얼이 여럿이면 번역표는 "이 다이얼을 조금 돌리면 저 다이얼이 얼마나 돌아가는가"를 칸마다 적은 행렬이 되고, 성분은 이 표를 한 번 곱해 옮긴다.
앞에서 경도 다이얼 0.01로 확인한 대로 ∂ϕ의 길이는 sinθ다. 기저벡터는 "좌표 1칸"이지 "길이 1"이 아니다.
이제 개미가 적도 위의 점 (θ,ϕ)=(π/2,0)을 지나며 곡선 γ(t)=(π/2−t,t)를 따라 북동쪽으로 간다고 하자. 좌표를 시간으로 미분하면 성분이 바로 나온다: θ˙=−1, ϕ˙=1. 그러므로 속도는 γ′(0)=−∂θ+∂ϕ이다. 이 점에서 ∂θ=(0,0,−1), ∂ϕ=(0,1,0)이므로 3차원 화살표로는 (0,1,1)이다.
검산해 보자. 곡선을 3차원 위치로 쓰면 (cos2t,costsint,sint)이고, 이것을 t=0에서 미분하면 정확히 (0,1,1)이 나온다. 성분 (−1,1)은 구면 안에서만 사는 개미가 자기 좌표로 적은 속도이고, (0,1,1)은 바깥에서 본 같은 속도다.
구면 위의 한 점에 접선공간을 붙이고, 그 점을 지나는 곡선의 속도를 좌표 기저 ∂θ, ∂ϕ로 나누어 보는 위젯이다. 점을 북극 쪽으로 옮기면서 같은 성분 (vθ,vϕ)가 실제로 얼마나 빠른 속도가 되는지, 기저벡터 ∂ϕ가 어떻게 줄어드는지 지켜보자. 구면은 끌어서 돌려 볼 수 있다.
ML에서: σ로 적을까 logσ로 적을까
정규분포의 표준편차 σ를 학습할 때는 흔히 σ 대신 s=logσ를 매개변수로 둔다. 같은 분포 모임에 좌표가 두 벌 생기는 셈이고, 같은 변화(접선벡터)도 두 좌표에서 성분이 다르다. 앞의 로그 다이얼과 똑같이 번역표는 ds/dσ=1/σ 하나뿐이라 s˙=σ˙/σ이다. σ=1에서는 두 성분이 같지만, σ=0.01에서는 σ˙=1이 s˙=100이 된다. 움직이는 것은 모델 분포의 매개변수이고, 화살표는 하나인데 이름표만 100배 차이 난다.
문제 7 — 지폐가 작아지면 장수는
확인 지갑에 3만 원이 있다. (가) 만원권으로 세면 몇 장인가? (나) 같은 돈을 5천원권으로 세면 몇 장인가? (다) 지폐 한 장의 값이 절반이 되면 장수는 몇 배가 되는가?
같이 풀기 세션 7
김민준
만원권 3장이요. 5천원권은 만원권의 절반이니까 장수도 절반, 1.5장… 반 장이요?
선생님
5천원권 1.5장이면 얼마죠?
김민준
7,500원이네요. 거꾸로예요. 지폐가 절반이면 장수는 두 배, 6장이에요.
이서연
돈은 그대로고 「지폐 한 장의 값 × 장수」만 맞으면 되니까, 지폐가 몇 배로 커지면 장수는 그만큼 나눠져. 둘은 반대로 움직여.
문제 8 — 동쪽 화살표를 극좌표로 부르면
계산 평면의 점 (x,y)=(1,1)에서 동쪽을 가리키는 벡터 v=∂x를 극좌표 기저 ∂r, ∂θ로 나타내라. 즉 성분 (vr,vθ)를 구하라.
문제 8의 그림. 점 (1, 1)에서 동쪽을 가리키는 화살표 v와, 그 점을 지나는 극좌표의 두 좌표선(원점에서 뻗는 반직선, 반지름 √2인 원)
같이 풀기 세션 8
김민준
이건 그림으로 보여요. 점 (1,1)에서 동쪽은 바깥쪽 단위벡터 r^와 45도, 반시계 방향 단위벡터 θ^의 반대쪽과도 45도로 벌어져 있으니까, 21r^−21θ^예요. 그러니까 (vr,vθ)=(1/2,−1/2)요.
이서연
난 변환 규칙으로 했어. 야코비 행렬을 곱하면 되니까 vr=∂x/∂r=cosθ=1/2, vθ=∂x/∂θ=−rsinθ=−1. 둘째 성분이 민준이랑 다르네.
선생님
두 답이 다르니 검산해 봅시다. 성분을 기저에 곱해서 다시 더하면 (1,0)이 나와야 해요. 서연 학생, 평면에서 ∂θ는 어떤 화살표예요?
이서연
위치 (rcosθ,rsinθ)를 θ로 미분하면 (−rsinθ,rcosθ)니까, 이 점에서 (−1,1)이에요. ∂r은 (1/2,1/2)고요. 그러면 제 답은 21(1/2,1/2)−1⋅(−1,1)=(3/2,−1/2)이 돼요.
이서연
어, (1,0)이 안 나와요. 제가 행렬을 거꾸로 썼네요. 새 성분은 새 좌표를 옛 좌표로 미분한 ∂r/∂x, ∂θ/∂x로 만들어야 하는데, 옛 좌표를 새 좌표로 미분한 걸 썼어요.
선생님
그래요. ∂r/∂x=x/r=1/2, ∂θ/∂x=−y/r2=−1/2예요. 그럼 민준 학생 답은 어디서 틀렸을까요?
김민준
저는 방향은 맞게 봤는데… 아, ∂θ는 길이가 r=2라서 θ^랑 달라요. 같은 화살표를 만들려면 계수를 2로 나눠야 하니까 −1/2÷2=−1/2. 서연이 고친 답이랑 같아요.
아까 지폐 문제랑 같네요. ∂θ는 θ^보다 2배 큰 지폐라서 장수가 2배 적어야 했어요. 조교님이 과제에서 "단위 붙여서 쓰세요"라고 빨간 펜으로 쓰셨던 것도 같은 얘기고요. 성분만 보고 기저가 뭔지 안 적으면 아무도 못 알아본다는 거였는데.
이서연
선형대수 시간에 기저 변환 행렬 P랑 P−1을 헷갈려서 좌표가 거꾸로 나왔던 거랑 똑같은 실수다. 벡터 성분은 기저와 반대로 변한다는 게 이 얘기였네.
문제 9 — 로그 분산으로 적은 화살표
계산 VAE(변분 오토인코더. 이미지를 작은 잠재 변수로 줄였다가 되살리도록 학습하는 생성 모델)의 인코더는 흔히 표준편차 σ 대신 로그 분산 ℓ=logσ2을 내놓는다(PyTorch 예제 코드의 logvar). σ=0.1인 자리에서 (가) σ가 0.05의 빠르기로 커지는 화살표(σ˙=0.05)는 ℓ 좌표에서 성분이 얼마인가? (나) 거꾸로 ℓ 성분이 1인 화살표는 σ 좌표에서 성분이 얼마인가?