피셔 계량: 파라미터 공간의 자
파라미터 공간에서 한 걸음은 어디서나 같은 크기일까? 아니라면, '진짜 거리’는 어떻게 잴까?
메르카토르 지도 — 곳마다 다른 축척
메르카토르 지도에서 그린란드는 아프리카만큼 커 보인다. 실제로는 아프리카의 1/14이다. 지도의 축척이 위도마다 달라서, 설명을 위해 어림하면 적도에서 100km인 지도 위의 1cm가 북위 84도 근처에서는 10km쯤이다. 같은 "지도 위 한 걸음"이 실제 거리로는 다르다.
파라미터 공간도 그렇다. 키 분포를 예로 들자. 한국 남성의 키 분포(어림으로 잡은 값: 평균 174cm, 표준편차 5.8cm)에서 σ를 1만큼 바꾸는 것과, σ = 30인 아주 넓은 분포에서 σ를 1만큼 바꾸는 것. 좌표 위에서는 같은 한 걸음이다. 하지만 σ = 5.8일 때 분포의 모양 변화는 극적이고, σ = 30일 때 변화는 거의 눈에 띄지 않는다. 아래에서 세울 자로 재면 앞의 걸음은 0.244, 뒤의 걸음은 0.047로 다섯 배쯤 차이가 난다. “파라미터 공간의 메르카토르 왜곡.”
리만 계량은 지도의 각 지점에서 "여기서의 1cm는 실제로 몇 km인가"를 알려주는 축척이다. 피셔 정보 행렬이 바로 그 축척이다.
고무판 위의 격자 — 늘어나고 찌그러진 칸
고무판에 정사각형 격자를 그린다. 고무판을 늘리면 어떤 곳은 격자가 벌어지고 어떤 곳은 찌그러진다. 벌어진 곳에서의 한 칸은 “큰 거리”, 찌그러진 곳에서의 한 칸은 “작은 거리”. 피셔 행렬은 각 지점에서 격자가 얼마나 늘어나고 찌그러졌는지를 기록한 것이다.
정규분포족의 자
정규분포족 N(μ, σ²)에 이 자를 대면 한 걸음의 길이는 이렇다.
σ가 작은 곳에서는 같은 dμ, dσ가 긴 걸음이다. 각 점에서 "피셔 자로 잰 길이가 같은 걸음들"을 모으면 작은 타원이 된다. μ 방향 반지름은 σ에 비례하고, σ 방향 반지름은 그 1/√2이다.
불러오는 중…
KL 발산의 발밑에서 만나는 같은 자
이 자는 스코어의 분산에서 나왔다. 그런데 두 분포가 얼마나 다른지 재는 양으로는 KL 발산(모형 분포가 기준 분포와 얼마나 다른지 재는 비대칭의 양)도 있다. 두 자는 서로 다른 것을 잴까? 숫자로 대 보자. N(0, 1)에서 평균을 0.1 옮기면 KL은 0.00500이고, ½ × 0.1² × Iμμ = ½ × 0.01 × 1 = 0.005다. 표준편차를 1에서 1.01로 늘리면 KL은 0.0000984이고, ½ × 0.01² × Iσσ = ½ × 0.0001 × 2 = 0.0001이다. σ = 0.5인 분포에서 평균을 0.1 옮기면 KL은 0.020으로 네 배가 되는데, Iμμ = 1/0.5² = 4도 네 배다.
아주 가까운 두 분포 사이에서 KL은 비대칭이 사라지고 ½ dθᵀ I dθ 꼴이 된다. 스코어의 분산으로 만든 자와 KL의 발밑은 같은 자다.
왜 피셔 정보가 “유일한” 자연스러운 계량인가
모수에 이름을 다시 붙여도 — θ 대신 φ(θ)를 써도 — 분포 자체는 안 변한다. 좋은 자라면 좌표를 바꿔도 재는 거리가 같아야 한다. 그런데 이것은 피셔 계량만의 자랑이 아니다. 어떤 리만 계량이든 좌표를 바꿀 때 성분을 야코비안으로 함께 바꿔 쓰면 재는 거리가 그대로다. 모든 자가 가진 성질이다.
피셔 계량을 특별하게 만드는 조건은 따로 있다. 데이터를 충분통계량(모수에 대한 정보를 하나도 잃지 않는 요약)으로 요약해도 두 분포 사이의 거리가 그대로여야 한다는 조건이다. 설문지 원본 천 장으로 재든, 정보를 하나도 잃지 않은 요약표 한 장으로 재든, 두 가설이 얼마나 다른지는 같아야 한다. 니콜라이 첸초프(Nikolai Chentsov)는 1972년 러시아어로 낸 책에서, 표본 공간이 유한할 때 이런 요약에 대해 변하지 않는 자는 상수배를 빼면 피셔 계량뿐임을 보였다. 이 조건을 받아들이면 자는 고를 수 있는 것이 아니라 하나로 정해진다.
지수족에서의 아름다운 사실
지수족에는 로그정규화자 F(θ)(확률의 합이 1이 되게 나누는 수의 로그)가 있다. 자연모수 θ에서 피셔 정보 행렬은 F의 헤시안이다.
스코어의 분산으로 정의한 피셔 정보가, 지수족에서는 로그정규화자를 두 번 미분한 것이고 충분통계량의 공분산이다. 지수족의 스코어가 t(x) − E[t(x)]라서 그렇다.
이것은 우연이 아니다. F(θ)가 볼록함수이므로 헤시안은 양의 준정부호다. 충분통계량 성분들 사이에 군더더기가 없으면(최소 지수족이면) 어느 방향으로도 분산이 0이 아니므로 헤시안은 양의 정부호(positive definite)가 된다. 양의 정부호 행렬이어야 내적을 정의한다. 모든 0 아닌 걸음에 양의 길이를 준다. 내적이 있으면 거리를 잴 수 있다. “F의 볼록성이 파라미터 공간에 자를 선물한다.”
지수족에서는 KL 발산도 F로 만든 브레그만 발산(볼록함수와 그 접선 사이의 높이 차이)과 같아서, 가까운 두 점 사이의 2차 근사가 같은 ∇²F를 준다. 스코어의 분산, KL의 발밑, 로그정규화자를 두 번 미분한 것. 이 절에서 걸어온 세 길이 한 행렬에서 만난다.
파이썬
(μ, σ) = (1, 0.5)인 정규분포에서 스코어 벡터의 바깥곱을 평균 내어 피셔 행렬을 만든다.
import numpy as np
np.set_printoptions(suppress=True)
rng = np.random.default_rng(1)
mu, sigma, N = 1.0, 0.5, 1_000_000
x = rng.normal(mu, sigma, N)
score = np.stack([(x - mu) / sigma**2, -1 / sigma + (x - mu)**2 / sigma**3]) # 2 × N
I_mc = score @ score.T / N # E[score scoreᵀ]
I_th = np.diag([1 / sigma**2, 2 / sigma**2])
print("표본으로 잰 I:\n", I_mc.round(3))
print("식 diag(1/σ², 2/σ²):\n", I_th)
print("고유값:", np.linalg.eigvalsh(I_mc).round(3), "→ 둘 다 양수 (양의 정부호)")
# 표본으로 잰 I:
# [[ 3.988 -0.003]
# [-0.003 8.006]]
# 식 diag(1/σ², 2/σ²):
# [[4. 0.]
# [0. 8.]]
# 고유값: [3.988 8.006] → 둘 다 양수 (양의 정부호)
비대각 성분은 0 근처다. μ와 σ의 스코어는 서로 얽히지 않는다. σ = 0.5에서 σ 방향이 μ 방향보다 두 배 민감하다.
수확
“피셔 정보 행렬은 파라미터 공간의 축척이다. 스코어의 분산, KL의 발밑, 로그정규화자의 두 번 미분이 모두 이 행렬이다. 충분통계량으로 요약해도 변하지 않는 자는 이것 하나다. 지수족에서는 이 자가 F(θ)의 볼록성에서 태어난다.”
문제 4. 키를 cm로 적느냐 m로 적느냐
어떤 키 분포가 표준편차 6cm인 정규분포다. 평균을 모수로 보고, 평균을 1cm 옮기는 한 걸음을 생각하자. (가) 키를 cm로 적을 때와 m로 적을 때, 평균 방향의 피셔 정보 1/σ²는 각각 얼마인가? (나) 두 단위에서 이 한 걸음의 피셔 길이 √(I · dμ²)를 각각 구하라. (다) "m로 적은 모델은 피셔 정보가 만 배쯤 크니 평균을 옮기는 데 훨씬 민감하다"는 말은 맞는가?
함께 풀기

(가)는 cm면 1/6² = 0.0278, m면 σ = 0.06이라 1/0.06² = 277.8이에요. 만 배예요. (다)는 맞는 말 같아요. 피셔 정보가 민감도라고 했으니까 m로 적은 쪽이 만 배 민감하죠.

두 모델이 서로 다른 분포를 내놓나요?

아니요, 같은 키 분포를 단위만 바꿔 적은 거예요. 같은 분포인데 민감도가 만 배 다르다는 건 이상하네요.

(나)를 해 보면 보여. cm에서는 한 걸음이 dμ = 1이니까 0.0278 × 1² = 0.0278, 제곱근을 씌우면 0.167. m에서는 한 걸음이 dμ = 0.01이니까 277.8 × 0.0001 = 0.0278, 역시 0.167이야.

피셔 정보가 만 배 커진 만큼 같은 걸음을 적는 숫자가 100분의 1이 돼서, 제곱하면 정확히 상쇄돼요. 피셔 정보 하나만 떼어 보면 단위에 따라 달라지고, 걸음과 함께 재야 단위와 상관없는 값이 나와요.

그래요. 이 절의 식으로 쓰면 J는 얼마예요?

m 눈금의 한 칸이 cm로 100칸이니까 J = 100. Im = 100² × Icm = 277.8. 맞네요. 실험 보고서에서 한 친구는 오차를 cm로, 한 친구는 m로 적어 와서 누구 측정이 더 정밀한지 다퉜는데, 단위를 맞추니 같았던 거랑 같아요.
문제 5. 정규분포의 피셔 행렬과 좌표 바꾸기
(가) N(μ, σ²)의 피셔 행렬이 diag(1/σ², 2/σ²)임을 유도하라. (나) 좌표를 (μ, s = log σ)로 바꾸면 피셔 행렬은 어떻게 되는가? (다) (나)의 결과를 보고 "σ 방향은 이제 평평해졌다"고 말할 수 있는가?
함께 풀기

(가)부터 할게요. log p = −log σ − (x−μ)²/(2σ²) + 상수. μ 스코어는 (x−μ)/σ², 분산이 σ²/σ⁴ = 1/σ². σ 스코어는 −1/σ + (x−μ)²/σ³이고, z = (x−μ)/σ로 두면 (z² − 1)/σ라서 분산이 Var(z²)/σ² = 2/σ². 두 스코어의 곱은 z³, z 같은 홀수 차수라서 평균이 0이고요.

(나)는 야코비안만 곱하면 돼요. σ = eˢ니까 ∂σ/∂s = σ, J = diag(1, σ). I·J = diag(1/σ², 2/σ)예요.

새 좌표에서 σ 방향 성분이 2/σ인데, ds²에 그대로 넣어 봐요. 걸음 dσ = σ ds를 원래 식에 넣은 것과 같아요?

원래 식에 넣으면 2dσ²/σ² = 2σ²ds²/σ² = 2ds². 제 행렬로는 2ds²/σ… 달라요.

야코비안을 한쪽에만 곱했어요. 한 걸음 길이는 dθ가 두 번 들어가니까 양쪽에 곱해야 해요. JᵀIJ = diag(1/σ², 2). 조교가 과제에서 "행렬 크기만 맞으면 곱셈이 맞는 건 아니다"라고 빨간 펜으로 쓴 게 이거였어요.

그러면 (다)는 쉬워요. s 방향 성분이 상수 2니까 s 방향으로는 눈금이 어디서나 같아요. 좌표를 잘 바꿔서 공간이 σ 방향으로는 평평해진 거예요. 곡률도 줄었겠죠.

곡률은 좌표를 바꾸면 변하는 양이었어요?

아니요, 안에서 재는 양이라 좌표와 무관해요. 그런데 성분 하나가 상수가 됐잖아요.

나머지 성분도 봐요. μ 방향은요?

1/σ² = e^(−2s)예요. 여전히 s에 따라 변해요. μ 방향 걸음의 값어치가 s에 따라 달라지고… ds² = e^(−2s)dμ² + 2ds². 이걸로 곡률을 계산하면 −1/2가 그대로 나와요.

성분 하나를 상수로 만든 건 평면 극좌표에서 반지름 방향이 상수인 것과 같아요. 눈금 하나를 정리했을 뿐, 공간의 휨은 그대로예요. JᵀIJ는 맞게 계산했는데 해석을 거꾸로 했어요.

좋아요. (μ, log σ)는 실제로 학습에서 많이 쓰는 좌표예요. σ 방향 걸음이 어디서나 같은 값어치를 갖게 되니 편하죠. 편해지는 건 눈금이지 곡률이 아니에요.
문제 6. 확신한 모델은 로짓 한 칸에 얼마나 움직이나
모델이 로짓 z 하나로 정답 확률 p = 1/(1 + e−z)를 낸다. p를 좌표로 쓰면 이 베르누이 분포의 피셔 정보는 I(p) = 1/(p(1 − p))이다. (가) p = 0.5인 모델과 p = 0.99인 모델에서 I(p)를 구하라. (나) 두 모델에서 로짓을 1만큼 올리면 p는 각각 얼마가 되는가? (다) 로짓 좌표에서의 피셔 정보 I(z)를 구하고, 로짓 한 칸 걸음의 피셔 길이를 두 모델에서 견주어라.
함께 풀기

(가)는 p = 0.5에서 4, p = 0.99에서 1/(0.99 × 0.01) = 101이에요. 확신한 모델이 스물다섯 배 민감하네요. 그러면 로짓을 1 올릴 때도 확신한 모델이 훨씬 크게 움직이겠죠.

(나)로 확인해 봐요.

p = 0.5는 z = 0에서 1이 되니까 p = 0.731, 0.231 올라가요. p = 0.99는 z = 4.595에서 5.595가 되니까 p = 0.9963, 0.0063밖에 안 움직여요. 반대로 나왔어요.

I(p)는 p를 한 칸 옮기는 걸음의 값어치야. 로짓 한 칸이 p로 몇 칸인지를 곱해야지. 문제 5처럼 J = dp/dz = p(1 − p)니까 I(z) = I(p) × (p(1 − p))² = p(1 − p). 0.5 모델은 0.25, 0.99 모델은 0.0099야.

로짓 한 칸의 피셔 길이는 √0.25 = 0.5와 √0.0099 = 0.0995. 확신한 모델은 같은 로짓 한 칸에 분포가 5분의 1쯤만 움직여요.

그럼 "확신한 모델은 민감하다"와 "확신한 모델은 로짓을 옮겨도 둔하다"는 어느 쪽이 맞아요?

둘 다 맞아요. 앞의 말은 p로 잰 걸음, 뒤의 말은 z로 잰 걸음에 대한 말이에요. p = 0.99 근처에는 움직일 여지가 0.01밖에 없어서 p의 작은 걸음도 분포로는 큰 걸음이고, 로짓은 그 좁은 곳을 넓게 펴 놓은 좌표라서 한 칸이 분포로는 작은 걸음이에요. 민감도는 어느 좌표의 걸음인지와 함께 말해야 해요.

그래요. 경사하강법은 로짓 같은 파라미터 좌표에서 걸음 크기를 정하니까, 이미 확신한 예제에서는 같은 크기의 걸음이 분포를 거의 옮기지 못해요. 걸음을 피셔 자로 재는 자연 기울기는 이 차이를 되돌리려는 방법이고요.

문제 4의 cm와 m처럼 좌표만 다르고 분포는 같았네요. 다만 이번에는 환산 비율이 곳마다 달라요.