피셔 계량을 정규분포족에 대면 한 걸음의 길이가 ds² = (dμ² + 2dσ²)/σ² 였다. 이 계량으로 잰 정규분포족의 모양은 평면일까, 구면일까, 아니면 그 어느 쪽도 아닐까?
계량과 곡률은 다르다
피셔 계량으로 잰 길이가 같은 걸음들을 (μ, σ) 평면에 모아 그리면 작은 타원이 되고, 그 타원은 σ에 비례해서 아래로 갈수록 작아진다. 타원이 작아지는 모습을 "공간이 아래쪽에서 심하게 휘었다"로 읽고 싶어진다. 그런데 평면에 극좌표를 그리면 바깥쪽 한 칸이 안쪽 한 칸보다 길어도 평면은 평평하다. 타원의 크기가 곳마다 다른 것은 계량의 눈금 이야기이고, 곡률은 피셔 계량에서 따로 계산해야 한다.
곡률을 재려면 계량 말고 하나가 더 필요하다. 떨어진 두 점의 방향을 비교하려면 “옮기는 규칙”, 곧 접속(connection, 무엇을 곧은 길로 볼지 정하는 규칙)이 있어야 한다. 이 절에서는 곧은 길이 곧 가장 짧은 길이 되는 접속, 레비-치비타 접속으로 곡률을 잰다. 계산하면 놀랍게도, 타원은 σ에 따라 수십 배로 커지고 작아지는데, 곡률은 모든 점에서 똑같다.
푸앵카레 상반평면
피셔 계량을 정규분포에 적용하면 ds² = (dμ² + 2dσ²)/σ² 였다. μ를 √2로 나눈 좌표 u = μ/√2를 쓰면
ds2=2σ2du2+dσ2,u=2μ
dsuμσ피셔계량으로잰한걸음평균을2로나눈좌표평균표준편차
괄호 안은 푸앵카레 상반평면의 계량 (du² + dσ²)/σ² 과 같은데, 그 계량이 정하는 면은 곡률이 −1인 쌍곡 평면(어디서나 말안장처럼 휜 면)이다. 앞의 2배 때문에 거리가 √2배로 늘어나고 곡률은 1/2배가 되므로, 정규분포들의 공간은 곡률이 어디서나 −1/2인 쌍곡 평면이다.
쌍곡 평면에서는:
σ가 작을수록(아래로 갈수록) 거리가 길어진다.
두 점을 잇는 가장 짧은 길(측지선)은 (u, σ) 좌표에서 σ = 0 위에 중심을 둔 반원이다. 원래의 (μ, σ) 좌표로 돌아오면 가로로 √2배 늘어난 반타원이다.
평균이 같은 두 분포 사이는 σ 축을 따라 곧게 올라가는 길이 가장 짧다.
정규분포 공간을 피셔 계량으로 같은 크기인 칸들로 나눈 그림
그림의 칸들은 피셔 계량으로 재면 모두 크기가 같다. σ가 절반이 될 때마다 칸의 폭도 절반이 되어, 아래로 내려갈수록 한 줄에 드는 칸이 두 배씩 늘어난다. 에셔의 판화 「원형 극한(Circle Limit)」 연작(1950년대 말)은 같은 쌍곡 평면을 원판 안에 그린 것이다(푸앵카레 원판 모델). 원판 가장자리로 갈수록 물고기가 작게 그려지지만 쌍곡 평면의 계량으로 재면 모두 같은 크기다. 상반평면에서는 σ = 0 쪽이 그 가장자리다.
"정규분포들의 세계는 에셔가 그린 그 쌍곡 평면이고, 곡률만 절반이다."라는 문장은 비유로 하는 말이 아니고 수학적 사실이다.
두 점 사이의 정확한 거리
유한하게 떨어진 두 점 사이의 거리는 √(ΔθᵀIΔθ)가 아니다. √(ΔθᵀIΔθ)는 한 점의 계량을 끝까지 그대로 쓴 근사이고, 두 점이 가까울 때만 맞는다. 정확한 피셔–라오 거리는 쌍곡 평면의 거리 공식에서 나온다.
평균이 같으면 d = √2 · |log(σ₂/σ₁)|로 줄어들어, σ를 두 배로 늘리는 것은 어디서 하든 같은 거리 √2 log 2 ≈ 0.980이다. 그리고 리만 거리는 늘 대칭이므로, 피셔–라오 거리는 KL과 달리 방향이 없는 대칭인 거리다.
직접 움직여 보기
불러오는 중…
파이썬
sympy로 곡률을 계산하고, 세 가지 "거리"를 비교한다.
import numpy as np
import sympy as sp
# (1) 피셔 계량 ds² = (dμ² + 2dσ²)/σ² 의 가우스 곡률 (레비-치비타)
m, s = sp.symbols("mu sigma", positive=True)
E, G = 1 / s**2, 2 / s**2
W = sp.sqrt(2) / s**2 # √(EG)
K = -(sp.diff(sp.diff(G, m) / W, m) + sp.diff(sp.diff(E, s) / W, s)) / (2 * W)
print("K =", sp.simplify(K))
# (2) 두 분포 사이의 세 가지 "거리"
def fisher_rao(m1, s1, m2, s2):
return np.sqrt(2) * np.arccosh(1 + ((m1 - m2)**2 / 2 + (s1 - s2)**2) / (2 * s1 * s2))
def local(m1, s1, m2, s2): # 출발점의 계량을 끝까지 그대로 쓴 근사
return np.sqrt((m1 - m2)**2 / s1**2 + 2 * (s1 - s2)**2 / s1**2)
def along_straight(m1, s1, m2, s2, n=200_001): # (μ,σ) 직선을 따라 피셔 계량으로 잰 길이
t = np.linspace(0, 1, n)
return np.trapezoid(np.sqrt((m2 - m1)**2 + 2 * (s2 - s1)**2) / (s1 + (s2 - s1) * t), t)
# 둘째 쌍: 한국 남성 (174, 5.8)과 네덜란드 남성 (183, 7.1), 대략 잡은 키 분포(cm)
for pair in [(0, 1, 0.1, 1), (174, 5.8, 183, 7.1), (-2, 1, 2, 1)]:
print(pair, f"국소근사 {local(*pair):.3f} 직선길이 {along_straight(*pair):.3f} 측지거리 {fisher_rao(*pair):.3f}")
# K = -1/2
# (0, 1, 0.1, 1) 국소근사 0.100 직선길이 0.100 측지거리 0.100
# (174, 5.8, 183, 7.1) 국소근사 1.584 직선길이 1.429 측지거리 1.376
# (-2, 1, 2, 1) 국소근사 4.000 직선길이 4.000 측지거리 3.242
가까운 두 점에서는 셋이 같지만, 한국 남성과 네덜란드 남성 사이에서는 국소 근사가 15% 부풀린다. 표준편차 1인 두 분포가 평균 4만큼 떨어진 마지막 경우, 측지선은 σ가 큰 쪽으로 돌아가며 길이를 19% 줄인다. 곧장 옆으로 가는 것보다, 일단 넓어졌다가 옮겨 가서 다시 좁아지는 편이 “분포로서” 더 가깝다.
이 절의 결론
“피셔 계량으로 재면 정규분포들의 공간은 곡률이 어디서나 −1/2인 쌍곡 평면이다. 계량의 눈금이 곳마다 다른 것과 공간이 휜 것은 다른 이야기다. 떨어진 두 분포의 거리는 한 점의 계량으로 근사하지 말고 가장 짧은 길을 따라 재야 한다.”
문제 7. 서울에서 샌프란시스코까지, 위도선을 따라갈까
서울과 샌프란시스코는 둘 다 북위 37.7도 근처에 있고, 경도로는 110.6도 떨어져 있다(대략의 값). 지구를 반지름 6371km인 공으로 보자. (가) 북위 37.7도의 위도선을 따라가면 몇 km인가? 위도선의 둘레는 적도 둘레에 cos(위도)를 곱한 것이다. (나) 가장 짧은 길(지구 중심을 지나는 평면이 지구 표면을 자른 큰 원을 따라가는 길)의 거리 d는 cos(d/6371) = sin²φ + cos²φ · cos Δλ로 구한다(φ는 위도, Δλ는 경도 차). 몇 km인가? (다) 가장 짧은 길은 가장 북쪽에서 tan φ최고 = tan φ / cos(Δλ/2)인 위도까지 올라간다. 몇 도인가? 메르카토르 지도에서 위도선은 곧은 가로선인데, 왜 가장 짧은 길은 북쪽으로 불룩한가?
메르카토르 지도 위의 서울과 샌프란시스코, 그리고 둘을 잇는 북위 37.7도 위도선
함께 풀기
김민준
(가)는 2π × 6371 × cos 37.7° × 110.6/360 = 9,731km예요. 지도에서 곧은 선이니까 이게 가장 짧겠죠. (나)는 확인만 할게요. …9,024km? 700km나 짧아요. 제 계산이 틀렸나 봐요.
선생님
두 계산이 모두 맞다면, 어느 쪽 길이 지도 위에서 곧아 보였죠?
김민준
위도선이요. 지도에서 곧아 보이는 길이 가장 짧은 길은 아니었네요.
이서연
(다)는 tan 37.7° / cos 55.3° = 0.773 / 0.569 = 1.358이라 53.6도예요. 16도 가까이 북쪽으로 올라갔다 내려와요. 그런데 왜 북쪽이죠? 북쪽으로 가면 돌아가는 건데요.
선생님
북쪽으로 갈수록 경도 1도의 실제 거리는 어떻게 돼요?
이서연
cos(위도)에 비례해서 짧아져요. 북위 53.6도에서는 적도의 0.59배예요. 조금 올라가는 값을 치르면 옆으로 가는 한 도 한 도가 싸져요. 지도는 북쪽의 짧은 거리를 넓게 늘려 그려서 북쪽으로 불룩한 대원이 돌아가는 것처럼 보이는 거고요.
선생님
그래요. 정규분포의 공간에서는 무엇이 옆으로 가는 걸음을 싸게 만들죠?
김민준
σ가 커지면 μ 방향 한 칸의 피셔 길이가 1/σ로 줄었어요. 위도가 σ, 경도가 μ에 해당하네요. 캠퍼스 지도에서는 돌아가는 것처럼 보이던 언덕길이 실제로는 도서관까지 더 빨랐던 거랑 같아요.
문제 8. 동전의 피셔 계량을 상수로 만들기
베르누이 분포(성공 확률 p)의 피셔 정보가 I(p) = 1/(p(1−p))일 때, (가) 새 좌표 φ = arcsin√p에서 피셔 정보가 상수 4임을 보여라. (나) p = 0.1과 p = 0.5 사이의 피셔–라오 거리를 구하라.
베르누이 분포의 피셔 정보 I(p) = 1/(p(1−p)) 곡선과 두 점 p = 0.1, p = 0.5
민준아, 방향이 반대야. 새 좌표의 한 칸이 옛 좌표로 몇 칸인지, dp/dφ를 곱해야 해. 문제 5의 J가 ∂θ/∂φ였잖아.
김민준
그럼 (dp/dφ)² = 4p(1−p)니까 I(φ) = 4. 새 걸음을 옛 걸음으로 바꿔서 옛 계량으로 재는 거니까 dp/dφ구나. 이번엔 한쪽만 빠뜨린 게 아니고 아예 뒤집었네요.
이서연
(나)는 피셔 정보가 상수 4니까 거리가 √4 · |Δφ| = 2|arcsin√0.5 − arcsin√0.1|. 0.927이에요. 적분 ∫ dp/√(p(1−p))를 직접 해도 같아요.
이서연
그림으로 보면 더 재밌어요. (√p, √(1−p))는 반지름 1인 원 위의 점이고 φ는 그 각도예요. 동전의 공간은 사분원이고, 피셔 거리는 그 호의 길이의 두 배예요.
선생님
그래서 1차원에서는 좌표를 잘 바꾸면 계량이 늘 상수가 돼요. 1차원은 곡률이 없어요. 그게 이렇게 보여요.
문제 9. 평평하면서 휜 공간?
(가) N(μ, σ²)의 피셔 계량 ds² = (dμ² + 2dσ²)/σ²의 가우스 곡률이 −1/2임을 보여라. (나) 같은 분포족을 자연 파라미터 θ = (μ/σ², −1/(2σ²))로 쓰자. 자연 파라미터의 직선을 곧은 길로 보는 접속을 e-접속(e = 지수)이라 한다. 접속을 좌표로 적은 수를 크리스토펠 기호 Γ라 하고(모두 0이면 좌표의 직선이 곧은 길), e-접속에서는 Γij,k = E[∂ᵢ∂ⱼℓ · ∂ₖℓ]이다(∂ᵢ는 θᵢ로 미분). 이 크리스토펠 기호가 모두 0임을 보여라. (다) 두 결과는 모순인가?
같은 정규분포족의 격자를 (μ, σ) 좌표와 자연 파라미터 θ 좌표에 그린 그림
함께 풀기
이서연
(가)는 앞의 sympy 계산 그대로 −1/2예요.
김민준
(나)는 이렇게 했어요. e-접속의 크리스토펠 기호는 E[∂ᵢ∂ⱼℓ · ∂ₖℓ]인데, 지수족에서 log p = θ₁x + θ₂x² − F(θ)라서 ∂ᵢ∂ⱼℓ = −∂ᵢ∂ⱼF예요. x가 없는 상수니까 밖으로 나오고, 남는 E[∂ₖℓ]은 문제 2에서 0이었어요. 그래서 전부 0.
그런데 Γ가 0이면 곡률도 0이잖아요. (가)는 −1/2라면서요. 둘 중 하나는 계산이 틀린 거예요. 제 건 간단하니까 (가)의 sympy가 의심스러워요.
이서연
나는 반대로 생각해. 곡률은 좌표와 상관없는 양이라고 했잖아. (μ, σ)에서 −1/2이면 θ 좌표로 가도 −1/2여야 해. 그러니까 θ 좌표에서 Γ가 0이 나온 (나)가 틀렸어.
선생님
둘 다 "곡률"이라고 했는데, (가)의 곡률은 어느 접속의 곡률이에요?
이서연
(가)는 계량만 넣고 계산했으니까… 레비-치비타 접속이요.
선생님
(나)는요?
이서연
e-접속이요. 다른 접속이에요. 곡률이 좌표에 무관한 건 맞지만, 접속을 바꾸면 곡률이 바뀌어요. 같은 공간, 같은 계량 위에 서로 다른 두 "곧음"을 얹은 거예요. 모순이 아니에요.
김민준
그럼 θ 좌표에서 레비-치비타의 Γ를 구하면 0이 아니어야겠네요. 돌려 볼게요. Γ¹₁₂ = −(θ₁² + θ₂)/(2θ₂²). 0이 아니에요. 그리고 그 Γ로 곡률을 내면 θ 좌표에서도 −1/2이 나와요.
김민준
같은 좌표계 안에서 두 접속을 나란히 놓으니까 보이네요. 제 Γ = 0은 틀린 게 아니고 다른 질문의 답이었어요.
선생님
한 줄로 말하면, 곡률은 (공간, 접속) 쌍의 성질이에요. 정규분포족은 e-접속으로 평평하고, m-접속(충분통계량의 평균인 기댓값 파라미터 η의 직선을 곧은 길로 보는 접속, m = 혼합)으로도 평평하고, 레비-치비타로는 −1/2로 휘었어요.
김민준
같은 코드를 채점해도 조교가 "스타일 기준"으로 보면 만점이고 "성능 기준"으로 보면 감점인 거랑 비슷하네요. 코드는 하나인데 기준이 바뀌면 점수가 바뀌는.
문제 10. 좁은 두 분포 사이의 가장 짧은 길 (킬러)
두 정규분포 N(−2, 0.5²)과 N(2, 0.5²)가 있을 때, (가) 두 분포 사이의 피셔–라오 거리를 구하라. (나) (μ, σ) 평면에서 측지선을 그려라. 가장 높이 올라가는 σ는 얼마인가? (다) √(ΔθᵀIΔθ)로 잰 값과, (μ, σ)에서 그린 반원을 따라 잰 길이는 각각 얼마이고, 왜 (가)와 다른가?
N(−2, 0.5²)과 N(2, 0.5²)의 밀도와, (μ, σ) 평면에서 두 분포의 자리
함께 풀기
김민준
(가)는 공식에 넣으면 돼요. √2 · arccosh(1 + (16/2)/(2 × 0.25)) = √2 · arccosh 17 = 4.986. 위젯의 처음 배치가 이 두 분포라서 거기서도 맞춰 봤어요. (다)의 국소 근사는 Δμ = 4, Δσ = 0, I = diag(1/0.25, 2/0.25)니까 √(16 × 4) = 8인데, 멀리 떨어진 두 점이라 그냥 틀린 값이죠.
이서연
(나)는 가장 짧은 길이 쌍곡 평면에서 반원이니까, (μ, σ) 평면에 μ = 0을 중심으로 두 점을 지나는 반원을 그리면 돼. 반지름이 √(2² + 0.5²) = 2.06이니까 가장 높은 σ도 2.06이야. 그 위에서 피셔 길이를 적분하면… 5.163이고.
선생님
민준 학생, 8은 틀린 값이라고 했는데, 어떤 길의 길이도 아니에요?
김민준
근사니까 길이는 아니지 않나요… 출발점의 계량을 끝까지 들고 간 값이니까요.
선생님
σ = 0.5인 가로 직선을 따라가면 계량이 어디서나 같아요. 그 직선의 피셔 길이는요?
김민준
계속 σ = 0.5니까 계량이 안 변해서… 정확히 8이에요. 제 "국소 근사"는 틀린 값이 아니고 가로 직선을 따라 정확히 잰 길이였네요. 가장 짧은 길이 아닐 뿐이고요.
선생님
그럼 서연 학생의 반원은 가장 짧은 길이에요? 민준 학생의 4.986과 견줘 봐요.
이서연
5.163이 4.986보다 길어요. 쌍곡 평면의 측지선은 반원인데요. …아닌가요? 앞의 쌍곡 평면 설명을 다시 볼게요. 반원인 건 (u, σ) 좌표, u = μ/√2에서예요. 저는 (μ, σ)에서 반원을 그렸어요.
이서연
다시 할게요. u로 바꾸면 두 점이 u = ±√2, σ = 0.5. 중심은 u = 0이고 반지름은 √(2 + 0.25) = 1.5. 가장 높은 σ는 1.5예요. (μ, σ)로 돌아오면 가로 반지름이 1.5 × √2 = 2.12, 세로 반지름이 1.5인 반타원이에요.
김민준
그 반타원을 따라 수치 적분하면 공식과 같은 4.986이 나와요.
이서연
그래서 제 반원 5.163은 가장 짧은 길보다 3.6% 길어요. 반원 모양이라는 결론은 맞았는데, 그 반원이 사는 좌표를 놓쳤어요. 계량 앞의 2를 무시하고 푸앵카레 평면이라고 불렀던 거예요.
김민준
그리고 제 8은 가장 짧은 길보다 60%나 길어요. 좁은 두 분포는 옆으로 곧장 가는 것보다, σ = 1.5까지 넓어졌다가 건너가서 다시 좁아지는 게 훨씬 가까워요. 두 분포가 거의 안 겹치는데, 중간에 넓은 분포들을 거치면 한 걸음 한 걸음이 싸져요.
선생님
(다)의 "왜"를 한 줄로 정리해 봐요.
이서연
√(ΔθᵀIΔθ)는 한 점의 계량을 끝까지 들고 간 근사라서 두 점이 가까울 때만 맞아요. 반원은 μ를 √2로 나누는 것을 빠뜨려서 측지선이 아니었어요. 정확한 답은 (u, σ)의 반원, 곧 (μ, σ)의 반타원을 따라 잰 4.986이에요.
김민준
서울에서 부산 갈 때 서울 시내 지도의 축척을 끝까지 쓰면 안 되는 거랑 같네요. 동네 축척은 동네에서만 맞아요.
선생님
오늘 두 사람의 실수가 이 장의 두 교훈이에요. 민준 학생은 계량이 위치마다 다르다는 것, 그래서 유한한 거리는 경로를 따라 적분해야 한다는 것을 봤어요. 서연 학생은 가장 짧은 길의 모양이 어느 좌표에서 그리느냐에 따라 달라 보인다는 것을 봤고요. 반원이든 반타원이든 같은 길이에요. 길이는 좌표를 바꿔도 4.986이고요.