추론의 기하학

사영의 피타고라스: 직각으로 떨어지는 점

모델을 학습하다 보면 지금 모델이 가장 좋은 모델보다 얼마나 나쁜지 알고 싶을 때가 많다. 가장 좋은 점, 곧 사영점을 찾았다면 모형 위의 다른 점들은 그 점과 어떤 관계에 있을까? 사영점에는 무슨 특별한 모양이 있는가?

평면에서 점 하나를 직선에 내려찍으면, 내려온 선분이 직선과 직각이다. 그리고 직선 위의 다른 점까지의 거리가 피타고라스로 나뉜다. 정보기하학의 사영에도 같은 두 가지가 있다. 다만 「직각」을 재는 자가 피셔 계량이고, 「거리의 제곱」 자리에 KL이 들어간다.

현실 p, 모형 위의 m-사영점 qₘ, 모형 위의 다른 점 r. p에서 qₘ으로 내린 길이 모형과 피셔 계량으로 직각을 이루고, 빗변 KL(p‖r)이 KL(p‖qₘ)과 KL(qₘ‖r)의 합으로 나뉜다
현실 p, 모형 위의 m-사영점 qₘ, 모형 위의 다른 점 r. p에서 qₘ으로 내린 길이 모형과 피셔 계량으로 직각을 이루고, 빗변 KL(p‖r)이 KL(p‖qₘ)과 KL(qₘ‖r)의 합으로 나뉜다

직교

모형 M 위의 곡선을 따라 움직이는 방향을 ∂i라 하자. qm이 KL(p‖q)의 최소점이면, 그 점에서 KL을 ∂i 방향으로 미분한 값이 0이다. 그 조건을 풀어 쓰면 이렇다.

∑x(p(x)−qm(x)) ∂ilog⁡q(x)∣q=qm=0\sum_{\textcolor{#6f8fa6}{x}} \big(\textcolor{#d6479f}{p}(\textcolor{#6f8fa6}{x}) - \textcolor{#7f8f10}{q}_{\mathrm{m}}(\textcolor{#6f8fa6}{x})\big)\, \partial_i \log \textcolor{#7f8f10}{q}(\textcolor{#6f8fa6}{x}) \Big|_{\textcolor{#7f8f10}{q} = \textcolor{#7f8f10}{q}_{\mathrm{m}}} = 0
p−qmp 에서 qm 으로 가는 m-측지선의 방향∂ilog⁡q모형을 따라 움직이는 방향 (모수에 대한 스코어)p현실 분포q, qm모형 안의 분포, m-사영점x표본 공간의 값i모형 모수의 번호\begin{array}{ll} \textcolor{#d6479f}{p} - \textcolor{#7f8f10}{q}_{\mathrm{m}} & \text{p 에서 } q_{\mathrm{m}} \text{ 으로 가는 m-측지선의 방향} \\ \partial_i \log \textcolor{#7f8f10}{q} & \text{모형을 따라 움직이는 방향 (모수에 대한 스코어)} \\ \textcolor{#d6479f}{p} & \text{현실 분포} \\ \textcolor{#7f8f10}{q},\ \textcolor{#7f8f10}{q}_{\mathrm{m}} & \text{모형 안의 분포, m-사영점} \\ \textcolor{#6f8fa6}{x} & \text{표본 공간의 값} \\ i & \text{모형 모수의 번호} \end{array}

두 방향 u, v의 피셔 내적은 Σ u(x) v(x) / q(x)이다. u = p − qm, v = ∂iq를 넣으면 바로 위의 식이 된다. 「최소점이다」와 「p에서 온 m-측지선이 모형과 피셔 직교한다」는 같은 말이다. 유클리드 직교가 아니다. 심플렉스(결과가 셋인 분포를 점으로 찍는 삼각형) 그림 위에서 눈으로 보면 비스듬하다.

쌍대, 곧 m과 e를 바꾸고 KL의 앞 칸과 뒤 칸을 바꾼 짝도 그대로다. qe가 KL(q‖p)의 기울기가 0인 점(정류점)이면, p와 qe를 잇는 e-측지선이 모형과 피셔 직교한다.

언제 하나인가

직교 조건을 만족하는 점이 하나뿐이라는 보장은 모형의 모양에 달려 있다.

가우시안족은 e-평탄하다. 그래서 m-사영(모멘트 일치)은 늘 하나였다. 가우시안족은 m-평탄하지 않다. 그래서 e-사영에는 보장이 없다. 폭이 1인 두 봉우리를 간격 5로 반반 섞은 분포를 가우시안 하나에 맞추면, e-사영의 후보가 가운데 하나와 봉우리 쪽 둘, 모두 셋이었다. 아래 그림은 같은 분포에서 두 KL을 가우시안의 평균 μ의 함수로 그린 것이다(표준편차 σ는 μ마다 가장 좋은 값으로 고른다). m 쪽은 바닥이 하나인 그릇이고, e 쪽은 바닥이 셋이다. 직교 조건은 「바닥에서 기울기가 0」이라는 조건이므로, 바닥이 여럿이면 직교하는 점도 여럿이다.

폭 1, 간격 5인 두 봉우리 분포를 가우시안 하나에 맞출 때의 두 KL. 위: KL(p‖q)는 평균 μ = 0에 바닥이 하나다. 아래: KL(q‖p)는 μ = 0과 μ = ±2.4 근처에 바닥이 셋이다(σ는 μ마다 가장 좋게 골랐다)
폭 1, 간격 5인 두 봉우리 분포를 가우시안 하나에 맞출 때의 두 KL. 위: KL(p‖q)는 평균 μ = 0에 바닥이 하나다. 아래: KL(q‖p)는 μ = 0과 μ = ±2.4 근처에 바닥이 셋이다(σ는 μ마다 가장 좋게 골랐다)

사영의 이름과 모형의 평탄함이 엇갈려야 유일하다는 것, 이것이 쌍대 구조가 일하는 방식이다.

피타고라스

유일한 사영점에서는 KL이 두 조각으로 깔끔하게 나뉜다.

KL(p ∥ r)=KL(p ∥ qm)+KL(qm ∥ r)(M 이 e-평탄, r∈M)KL(r ∥ p)=KL(r ∥ qe)+KL(qe ∥ p)(M 이 m-평탄, r∈M)\begin{aligned} \textcolor{#c2398a}{\mathrm{KL}}(\textcolor{#d6479f}{p}\,\|\,\textcolor{#7f8f10}{r}) &= \textcolor{#c2398a}{\mathrm{KL}}(\textcolor{#d6479f}{p}\,\|\,\textcolor{#7f8f10}{q}_{\mathrm{m}}) + \textcolor{#c2398a}{\mathrm{KL}}(\textcolor{#7f8f10}{q}_{\mathrm{m}}\,\|\,\textcolor{#7f8f10}{r}) \\ &\quad (\textcolor{#407050}{M} \text{ 이 e-평탄, } \textcolor{#7f8f10}{r} \in \textcolor{#407050}{M}) \\[6pt] \textcolor{#c2398a}{\mathrm{KL}}(\textcolor{#7f8f10}{r}\,\|\,\textcolor{#d6479f}{p}) &= \textcolor{#c2398a}{\mathrm{KL}}(\textcolor{#7f8f10}{r}\,\|\,\textcolor{#7f8f10}{q}_{\mathrm{e}}) + \textcolor{#c2398a}{\mathrm{KL}}(\textcolor{#7f8f10}{q}_{\mathrm{e}}\,\|\,\textcolor{#d6479f}{p}) \\ &\quad (\textcolor{#407050}{M} \text{ 이 m-평탄, } \textcolor{#7f8f10}{r} \in \textcolor{#407050}{M}) \end{aligned}
p현실 분포 (모형 밖)qme-평탄 모형 위로의 m-사영점qem-평탄 모형 위로의 e-사영점r모형 위의 아무 점KLKL 발산M모형\begin{array}{ll} \textcolor{#d6479f}{p} & \text{현실 분포 (모형 밖)} \\ \textcolor{#7f8f10}{q}_{\mathrm{m}} & \text{e-평탄 모형 위로의 m-사영점} \\ \textcolor{#7f8f10}{q}_{\mathrm{e}} & \text{m-평탄 모형 위로의 e-사영점} \\ \textcolor{#7f8f10}{r} & \text{모형 위의 아무 점} \\ \textcolor{#c2398a}{\mathrm{KL}} & \text{KL 발산} \\ \textcolor{#407050}{M} & \text{모형} \end{array}

첫 줄을 읽어 보자. 현실 p에서 모형 위의 아무 점 r까지의 KL은 「p에서 사영점까지」와 「사영점에서 r까지」의 합이다. 직각삼각형의 빗변이 두 변으로 나뉘듯이. KL의 앞 칸과 뒤 칸에 무엇을 넣느냐가 중요하다. p는 언제나 앞 칸, r은 언제나 뒤 칸이다. 순서를 바꾸면 등식이 깨진다(아래 문제 6).

이 등식에서 두 가지가 바로 나온다. KL(qm‖r) ≥ 0이므로 qm이 정말로 최소점이다. 그리고 r이 사영점에서 멀어질수록 얼마나 손해인지가 정확히 KL(qm‖r)이다. EM 알고리즘(기댓값 계산 Expectation과 최대화 Maximization을 번갈아 하는 알고리즘)은 이 분해를 한 걸음마다 쓴다.

직접 움직여 보기

불러오는 중…

파이썬

import numpy as np

def q(th):                                  # 모형 M: 이항분포 B(2, θ) — 지수족, e-평탄
    return np.array([(1 - th)**2, 2 * th * (1 - th), th**2])

def dq(th):                                 # 모형 곡선의 접벡터(곡선을 따라가는 방향) dq/dθ
    return np.array([-2 * (1 - th), 2 - 4 * th, 2 * th])

def kl(a, b):
    return np.sum(a * np.log(a / b))

p = np.array([0.6, 0.1, 0.3])               # 모형 밖의 현실
th_m = (p @ [0, 1, 2]) / 2                  # m-사영점 = 평균 k 를 맞춘 θ
q_m = q(th_m)

u = p - q_m                                 # p 에서 q_m 으로 가는 m-측지선의 방향
print(f"θ_m = {th_m:.3f}   q_m = {np.round(q_m, 4)}")
print(f"유클리드 내적 {u @ dq(th_m):+.4f}   피셔 내적 {np.sum(u * dq(th_m) / q_m):+.1e}")

for th_r in [0.1, 0.7, 0.9]:
    r = q(th_r)
    lhs, rhs = kl(p, r), kl(p, q_m) + kl(q_m, r)
    print(f"r=B(2,{th_r}):  KL(p‖r) {lhs:.6f}   KL(p‖q_m)+KL(q_m‖r) {rhs:.6f}   잔차 {lhs - rhs:+.1e}")
# θ_m = 0.350   q_m = [0.4225 0.455  0.1225]
# 유클리드 내적 -0.3195   피셔 내적 +0.0e+00
# r=B(2,0.1):  KL(p‖r) 0.781518   KL(p‖q_m)+KL(q_m‖r) 0.781518   잔차 +1.1e-16
# r=B(2,0.7):  KL(p‖r) 0.847577   KL(p‖q_m)+KL(q_m‖r) 0.847577   잔차 +0.0e+00
# r=B(2,0.9):  KL(p‖r) 2.099853   KL(p‖q_m)+KL(q_m‖r) 2.099853   잔차 +0.0e+00

유클리드 자로는 직교하지 않는다(−0.32). 피셔 자로는 정확히 직교한다. 피타고라스의 잔차는 부동소수점의 바닥, 10−16 크기다.

수확

「사영점에서는 p로 가는 길이 모형과 피셔 직교한다. 그래서 KL이 피타고라스처럼 두 조각으로 나뉜다.」

인물 이야기 — Imre Csiszár와 「발산의 통일」

임레 치사르(Imre Csiszár)
임레 치사르(Imre Csiszár)

1960년대 초, 부다페스트. 헝가리 과학원 수학연구소에 막 들어온 젊은 수학자 임레 치사르(Imre Csiszár)는 정보이론과 확률론의 경계에서 일하고 있었다. 연구소를 세우고 이끌던 알프레드 레니(Alfréd Rényi)는 1961년 논문 「엔트로피와 정보의 척도에 대하여」에서 이미 비슷한 양을 다룬 적이 있었다.

문제는 이것이었다. KL 발산이 있다. χ²(카이제곱) 발산도 있다. 헬링거 거리도 있다. 분포 사이의 「다름」을 재는 양이 여러 개인데, 이것들 사이에 체계가 있는가? 아니면 각각이 별개의 발명인가?

1963년, 치사르는 마르코프 사슬의 에르고딕성(오래 돌리면 모든 상태를 고르게 지나는 성질)을 증명하는 논문에서 이 양들을 하나의 가족, f-발산(f-divergence)으로 묶었다. 볼록함수 f 하나를 고르면 발산 하나가 정해진다. f(x) = x log x이면 KL, f(x) = (x−1)²이면 χ², f(x) = (√x − 1)²이면 헬링거(의 제곱)다.

같은 1963년, 일본의 물리학자 모리모토 데쓰조(Tetsuzo Morimoto)가 마르코프 과정과 H-정리(엔트로피가 시간이 갈수록 늘어난다는 볼츠만의 정리)를 다루며 같은 꼴에 닿았다. 1966년에는 알리(S. M. Ali)와 실비(S. D. Silvey)가 영국 왕립통계학회지에 같은 가족을 통계학의 언어로 정리했다. 그래서 이 발산은 치사르–모리모토 발산, 알리–실비 거리라고도 불린다. 문제가 무르익으면 다른 곳에서 같은 답이 나온다.

치사르의 기여는 거기서 멈추지 않았다. 1975년 논문에서 그는 KL 발산(그의 말로는 I-발산, I-divergence)이 유클리드 거리의 제곱 노릇을 하는 기하학을 썼다. 볼록 집합 위로 분포를 사영하는 문제, 그 사영점이 있는지와 어떤 모양인지, 그리고 사영점에서 성립하는 피타고라스형 관계. 이 절의 사영과 피타고라스가 서 있는 기초 가운데 하나다. 1984년에는 가보르 투슈나디(Gábor Tusnády)와 함께, 두 집합 사이를 번갈아 최소화하는 절차를 같은 기하학으로 분석했다.

그가 놓은 기초, 곧 f-발산과 I-사영(KL 발산을 최소로 하는 사영)은 아마리(Amari)의 쌍대 구조와 만나 사영과 교대 최소화의 기하학을 꿰뚫는 뼈대가 되었다.

문제 6. 피타고라스를 증명하라 (킬러)

모형 M은 이항분포족 B(2, θ)이고, p = (0.2, 0.2, 0.6)이다. (가) m-사영점 qm을 구하고, r = B(2, 0.4)에 대해 KL(p‖r) = KL(p‖qm) + KL(qm‖r)를 수치로 확인하라. (나) KL의 앞 칸과 뒤 칸을 모두 뒤집은 등식 KL(r‖p) = KL(r‖qm) + KL(qm‖p)도 성립하는가? (다) 모형이 지수족 pθ(x) = exp(θ·t(x) − F(θ))일 때(F는 합이 1이 되게 맞추는 로그정규화자) (가)의 등식을 증명하라. (위 위젯의 「문제 6의 p」 단추로 이 p와 r을 불러올 수 있다.)

함께 풀기

김민준 M01
김민준

qm은 평균을 맞추면 되니까, 평균 k가 1.4라서 θ = 0.7, (0.09, 0.42, 0.49)예요. 좌변 0.5004, 우변 0.1328 + 0.3676 = 0.5004. 맞아요.

김민준 M01
김민준

(나)도 KL이니까 당연히 돼요. 저는 처음에 이쪽으로 짰거든요. 그런데… KL(r‖p) = 0.4203이고, 우변은 0.3841 + 0.1405 = 0.5246이에요. 안 맞아요.

김민준 M01
김민준

코드에 버그가 있나 해서 세 번 봤어요. 같은 KL인데 왜 한쪽만 되죠?

선생님 T01
선생님

등식의 세 KL에서 p는 늘 어느 칸에 있었어요?

김민준 M01
김민준

(가)에서는 p가 늘 왼쪽이에요. p‖r, p‖qm. 그리고 qm‖r에서는 사영점이 왼쪽이고요.

선생님 T01
선생님

qm은 어떤 KL을 최소로 한 점이었죠?

김민준 M07
김민준

KL(p‖·)요. p를 왼쪽에 두고 최소화한 점이니까, 그 점에서 나뉘는 것도 p가 왼쪽인 KL이에요. 뒤집은 등식은 KL(·‖p)를 최소화한 e-사영점에서, 그것도 m-평탄한 모형에서나 기대할 수 있는 거네요.

선생님 T01
선생님

그래요. (다)로 가죠. 서연 학생?

이서연 S01
이서연

직교를 쓰면 될 것 같아요. p − qm이 모형의 접벡터와 직교하고, qm − r도 모형을 따라가니까, 유클리드 공간의 피타고라스 ‖p − r‖² = ‖p − qm‖² + ‖qm − r‖²를 KL로 옮기면…

선생님 T01
선생님

그 직교, 유클리드 내적으로 재 봤어요?

이서연 S01
이서연

(p − qm)·dq/dθ = +0.26이에요. 0이 아니에요. 피셔 내적으로는 0이고요. 그리고 모형이 심플렉스 안에서 휘어 있으니까 qm − r가 접벡터 방향도 아니에요. 게다가 KL은 제곱 노름이 아니니까 전개가 애초에 안 맞아요.

이서연 S06
이서연

그럼 어디서 시작해야 하죠? 기하 그림으로는 확실한데 식이 안 따라와요.

선생님 T01
선생님

그림은 잠깐 내려놓고, 좌변에서 우변을 빼 봐요. 로그가 어떻게 모이는지만 봐요.

이서연 S01
이서연

KL(p‖r) − KL(p‖qm) − KL(qm‖r)… log p 항은 지워지고, Σ p log(qm/r) − Σ qm log(qm/r)이 남아요. 합치면 Σ (p − qm) log(qm/r).

선생님 T01
선생님

지수족이면 log(qm/r)는 뭐예요?

이서연 S08
이서연

log qm − log r = (θm − θr)·t(x) − F(θm) + F(θr). 상수항은 Σ(p − qm) = 0 때문에 사라지고, 남는 건 (θm − θr)·(Ep[t] − Eqm[t])예요.

이서연 S09
이서연

그리고 qm은 모멘트 일치점이니까 Ep[t] = Eqm[t]. 뒤 괄호가 0이에요. 끝이에요. θ의 차이와 η의 차이가 곱해지는데, η 쪽이 0이라서 사라지는 거예요.

김민준 M01
김민준

숫자로 보면 θm − θr = 0.847 − (−0.405) = 1.253이고, 평균 k는 p도 qm도 1.4예요. 곱이 0이에요.

선생님 T01
선생님

그 증명에서 「직교」는 어디 있었어요?

이서연 S01
이서연

θ의 차이와 η의 차이의 곱이 0이라는 것, 그게 직교예요. 한쪽 좌표는 e-측지선을 따라 재고, 다른 쪽은 m-측지선을 따라 재요. 유클리드 직교가 아니라 두 좌표를 짝지은 직교예요.

선생님 T13
선생님

두 사람 다 한 번씩 그림에 속았어요. 민준 학생은 KL이 대칭인 것처럼 칸을 바꿨고, 서연 학생은 심플렉스 그림의 직각을 유클리드 직각으로 읽었어요. 가져갈 것은 셋이에요. 피타고라스는 사영의 방향과 KL 칸의 순서가 맞을 때만 성립한다. 직교는 피셔 자로 잰다. 그리고 지수족에서는 그 직교가 θ의 차이와 η의 차이의 곱으로 쓰인다.

이서연 S01
이서연

선형대수에서 쌍대 기저를 배울 때, 한 기저로 잰 좌표와 다른 기저로 잰 좌표를 곱해야 내적이 된다는 게 이해가 안 됐는데요. 이게 그거였네요. θ와 η가 서로의 쌍대 기저예요.

문제 7. loss의 차이는 데이터 없이 잴 수 있는가

리뷰 100개에 긍정·중립·부정 라벨이 70, 10, 20개 붙어 있고, 로짓을 (w, 0, −w)로 묶은 분류기로 학습한다. 교차엔트로피 loss가 가장 작은 모델은 w* = 0.834, 그 확률은 q* = (0.616, 0.268, 0.116), loss는 0.901이다. (가) 학습을 시작하기 전의 모델 w = 0과, 너무 멀리 간 모델 w = 1.5의 loss를 구하고, 가장 좋은 모델과의 loss 차이를 두 모델 사이의 KL과 견주어라. (나) 이 loss 차이를 계산하는 데 데이터가 필요한가? (다) 로짓을 (w, −w², −w)로 바꾼 분류기에서도 (가)에서 찾은 관계가 성립하는가?

함께 풀기

김민준 M01
김민준

w = 0이면 세 확률이 다 1/3이라 loss는 ln 3 = 1.099, 차이는 0.197이에요. w = 1.5면 loss 0.991, 차이 0.090이고요.

이서연 S01
이서연

모델 사이의 KL이면, 비교할 모델을 앞에 두고 KL(q0‖q*)겠지. 0.220이야. w = 1.5는 0.074. 차이랑 비슷은 한데 같지는 않네. 역시 loss 차이에는 데이터가 들어가니까 모델 둘만으로는 안 되는 거야.

선생님 T01
선생님

사영의 피타고라스에서 세 KL의 칸을 다시 봐요. 사영점은 어느 칸에 있었어요?

이서연 S08
이서연

KL(p‖r) = KL(p‖qm) + KL(qm‖r)니까 사영점이 앞 칸이에요. 제가 칸을 거꾸로 넣었어요. KL(q‖q0) = 0.197, KL(q‖q1.5) = 0.090. 소수 다섯째 자리까지 같아요.

선생님 T01
선생님

왜 같은지도 말해 볼래요?

이서연 S01
이서연

loss는 H(p̂) + KL(p̂‖q)니까, 두 모델의 loss 차이는 KL(p̂‖qw) − KL(p̂‖q*)예요. 로짓을 묶은 분류기는 지수족이고 q는 p̂의 m-사영점이니까, 피타고라스로 그 차이가 KL(q‖qw)예요.

김민준 M07
김민준

그럼 (나)는 필요 없다예요! 가장 좋은 모델 하나만 알면, 다른 모델이 loss를 얼마나 더 내는지는 데이터를 다시 보지 않고 두 모델만으로 알 수 있어요.

이서연 S01
이서연

q*가 데이터에서 가져온 건 「긍정 비율 빼기 부정 비율」 하나뿐이고, 이 모델들이 loss로 느끼는 데이터도 그것뿐이니까요.

선생님 T01
선생님

(다)는요?

김민준 M01
김민준

돌려 보니 가장 좋은 w는 0.846, 확률은 (0.717, 0.150, 0.132), loss는 0.827이에요. 오히려 더 잘 맞아요. 그런데 w = 0과의 loss 차이는 0.272인데 KL(q*‖q0)은 0.308이에요. 안 맞아요.

이서연 S07
이서연

w²가 들어가면 log q가 w에 대해 선형이 아니에요. 이 모델들의 모임은 지수족이 아니고 e-평탄하지 않아요. 피타고라스가 보장되는 건 e-평탄한 모형 위로 m-사영할 때뿐이었어요.

선생님 T01
선생님

loss는 더 낮았는데요?

이서연 S01
이서연

잘 맞는 것과 기하가 깔끔한 건 다른 일이에요. 더 잘 맞는 대신, 데이터 없이 loss 차이를 재는 지름길은 잃었어요.

김민준 M01
김민준

시험 채점에서 모범 답안과 내 답의 차이만 보면 감점이 바로 나오는 문제가 있고, 채점 기준표를 다시 펼쳐야 하는 문제가 있는 거랑 같네요.