기대모수 η: 데이터에서 바로 읽히는 좌표
키 데이터를 받아 가우시안 하나를 맞춘다고 하자. 데이터의 평균과 제곱의 평균은 곧장 계산된다. 그런데 그 분포를 θ로 적으려면 평균과 분산을 구한 뒤 θ = (μ/σ², −1/(2σ²)) 를 한 번 더 거쳐야 한다. 데이터가 새로 들어올 때마다 이 셈을 다시 한다.
θ가 '행정 주소’라면, 같은 분포를 데이터에서 바로 읽어 낼 수 있는 좌표는 없을까?
집의 GPS — 평균 낼 수 있는 좌표
“37.5°N, 127.0°E” GPS 좌표는 물리적 위치를 직접 가리킨다. 그리고 두 집의 GPS를 평균 내면 두 집의 중간 지점이 된다.
η는 분포의 "GPS 좌표"다. 충분통계량의 기댓값이다. 가우시안이면 η = (E[x], E[x²]) = (μ, μ² + σ²). 데이터의 평균과 이차모멘트. 데이터를 보면 바로 계산할 수 있다.
F의 기울기가 η다
정규화 조건 Σ pθ(x) = 1 을 θ로 미분하면 한 줄로 나온다. Σ (t(x) − ∇F(θ)) pθ(x) = 0, 곧 ∇F(θ) = E[t(x)]. 한 번 더 미분하면 공분산이 나온다.
두 번째 식은 F가 볼록함수라는 것을 보장한다. 공분산 행렬은 음수 방향이 없기 때문이다. 한 가지 조건이 있다. 미분과 합(적분)의 순서를 바꾸었으므로, θ가 자연모수 공간의 안쪽에 있어야 한다(아래 문제 9). F의 헤시안(두 번 미분한 행렬)이 곧 θ 좌표의 피셔 정보(모수를 조금 움직일 때 분포가 얼마나 민감하게 변하는지 재는 행렬)라는 것도 여기서 한 번 봐 두자.
η를 평균 내면 무엇이 되나
두 가우시안의 η를 반씩 평균 내면, 그것은 두 분포를 반반 섞은 혼합분포의 E[t(x)]와 같다. 기댓값은 섞으면 섞인 대로 평균 나기 때문이다. 그러나 혼합분포 자체는 가우시안이 아니다. 봉우리가 둘일 수도 있다. 그러면 가우시안 가족 안에서 그 η를 주소로 갖는 한 명, 곧 혼합과 평균·이차모멘트가 같은 가우시안은 혼합과 어떤 사이일까? 두 분포가 얼마나 다른지는 KL 발산으로 잴 수 있다. 두 분포가 얼마나 다른지 재는 비대칭의 양이다. 가족 안의 여러 가우시안 가운데 혼합까지의 KL이 가장 작은 것이 누구인지는 아래 문제에서 직접 재 본다.
결과가 유한한 범주분포(확률표) 전체에서는 사정이 다르다. 확률표끼리는 섞어도 확률표이므로, 거기서는 η-직선이 곧 혼합의 길이다. 가족이 섞기에 닫혀 있지 않으면, η-직선 위의 점은 혼합을 대신하는 한 명이다.
불러오는 중…
파이썬
import numpy as np
mu, s = 1.0, 2.0
t1, t2 = mu / s**2, -1 / (2 * s**2)
F = lambda a, b: -a * a / (4 * b) + 0.5 * np.log(-np.pi / b)
h = 1e-5
g = [(F(t1 + h, t2) - F(t1 - h, t2)) / (2 * h), (F(t1, t2 + h) - F(t1, t2 - h)) / (2 * h)]
print(f"∇F(θ) 수치미분 = ({g[0]:.4f}, {g[1]:.4f}) (μ, μ²+σ²) = ({mu}, {mu**2 + s**2})")
x = np.random.default_rng(0).normal(mu, s, 2_000_000)
print("Cov[(x, x²)] 표본:\n", np.round(np.cov(np.vstack([x, x**2])), 2))
print("정확한 값: [[σ², 2μσ²], [2μσ², 4μ²σ² + 2σ⁴]] =", [[s**2, 2 * mu * s**2], [2 * mu * s**2, 4 * mu**2 * s**2 + 2 * s**4]])
# η 의 평균 = 혼합의 모멘트 → 모멘트를 맞춘 가우시안
rng = np.random.default_rng(1)
mix = rng.normal(0, 1, 2_000_000) + rng.choice([-2, 2], 2_000_000)
print(f"½N(−2,1)+½N(2,1) 의 η = ({mix.mean():.3f}, {(mix**2).mean():.3f}) → 같은 η 의 가우시안 N(0, 5)")
# ∇F(θ) 수치미분 = (1.0000, 5.0000) (μ, μ²+σ²) = (1.0, 5.0)
# Cov[(x, x²)] 표본:
# [[ 4. 8.02]
# [ 8.02 48.1 ]]
# 정확한 값: [[σ², 2μσ²], [2μσ², 4μ²σ² + 2σ⁴]] = [[4.0, 8.0], [8.0, 48.0]]
# ½N(−2,1)+½N(2,1) 의 η = (0.000, 4.995) → 같은 η 의 가우시안 N(0, 5)
수확
“η는 데이터에서 바로 읽히는 좌표이고, F의 기울기다. F의 헤시안은 t(x)의 공분산이라서 F는 볼록하다. η를 평균 낸 점은 섞인 두 분포의 모멘트를 평균 낸 주소다.”
문제 9. 기울기는 평균, 두 번 미분한 값은 공분산
(가) 푸아송의 F(θ) = eᶿ 에서 F′(θ)와 F″(θ)를 구해, 푸아송 분포의 평균·분산과 견줘라. (나) 베르누이 F(θ) = log(1 + eᶿ) 에서 F″(θ) 를 수치로 구해 μ(1−μ) 와 비교하라. (다) 본문은 미분과 합(적분)의 순서를 바꿀 때 θ가 자연모수 공간의 안쪽에 있어야 한다고 했다. 이 조건이 빠지면 무엇이 깨지는지 보이는 가족을 하나 만들어 보라.
함께 풀기

(가)는 F′ = F″ = eᶿ = λ 예요. 푸아송은 평균과 분산이 둘 다 λ라고 배웠는데, 그게 여기서 한 번에 나오네요. 본문처럼 Σ exp(θ·t − F + k) = 1 을 θ로 두 번 미분하면 어느 가족이든 ∇²F = Cov[t] 가 나와요. 이건 언제나 돼요. 공분산이니까 F는 언제나 볼록이고요.

(나)에서 이상한 게 나왔어요. θ = 2 에서 h = 1e-8 로 이차 차분을 했더니 F″ 이 −4.44 예요. 공분산이 음수라니, 그럼 F가 볼록이 아닌 거 아니에요?

참값은 얼마예요?

μ = 시그모이드(2) = 0.881, μ(1−μ) = 0.105 요. h = 1e-7 로 하면 0.044, 3e-8 이면 −0.49… h를 줄일수록 더 엉망이에요.

분자 F(θ+h) − 2F(θ) + F(θ−h) 는 얼마나 작아요?

0.105 × 10⁻¹⁶ 정도요. 그런데 F 자체가 2.13 이라 부동소수점 반올림 오차가 10⁻¹⁶ 쯤 깔려 있어요. 그걸 h² = 10⁻¹⁶ 으로 나누니까 오차가 1 크기로 부풀었어요. 음수는 반올림 오차예요.

이차 차분은 h = 1e-4 근처가 적당해요. 부호가 이상하면 식보다 먼저 숫자를 의심해요.

서연 학생, (다)요. "언제나 된다"고 했는데, 미분을 합 안으로 넣은 건 언제나 괜찮아요?

베르누이는 합이 두 항이라 괜찮은데… 적분이면 조건이 필요할 것 같아요. 그런데 안 되는 예가 떠오르지 않아요.

적분이 어떤 θ에서 겨우 유한해지는 가족을 일부러 만들어 봐요. x ≥ 0 에서 exp(θx)만 있으면 θ = 0 에서 적분이 무한이죠. 꼬리를 조금만 더 빨리 줄여 주는 바탕 무게를 붙이면요?

1/x² 쯤 줄여 주면 적분은 되니까, 0 근처에서 터지지 않게 1/(1 + x²)를 붙이면… x ≥ 0 에서 exp(θx)/(1 + x²). θ ≤ 0 이면 적분이 유한하고 θ > 0 이면 무한이에요.

θ = 0 에서 E[x] 는요?

(2/π) ∫ x/(1+x²) dx 인데… 무한대로 가요. F(0) = log(π/2) 로 유한한데 평균은 무한대예요. θ = 0 은 자연모수 공간의 끝점이라, 오른쪽으로 미분할 수가 없어요. 제가 "언제나"라고 한 건 θ가 자연모수 공간의 안쪽에 있을 때만 맞아요.

그래요. 안쪽에서는 지수족의 적분이 넉넉하게 수렴해서 미분과 적분을 바꿀 수 있어요. 끝점에서는 보장이 없어요.

해석학에서 "균등수렴이면 극한과 적분을 바꿔도 된다"를 조건 없이 쓰다가 감점당한 기억이 나요.
문제 10. η의 평균은 가족의 누구인가
두 가우시안 N(−1, 1), N(3, 1) 의 η 를 반씩 평균 낸 점을 구하라. 그 η 를 주소로 갖는 가우시안은 무엇인가? 혼합 ½N(−1, 1) + ½N(3, 1) 과 그 가우시안, 그리고 분산만 다른 가우시안 몇 개 사이의 KL(혼합 ‖ q)를 재어 견줘라. (위 위젯의 「문제 10 불러오기」 단추로 두 성분을 불러올 수 있다.)
함께 풀기

η 는 (−1, 2) 와 (3, 10) 이니까 평균은 (1, 6). 그러면 평균 1, 분산 6 인 N(1, 6) 이에요.

η₂ 는 무엇의 평균이었죠?

x² 의 평균이요… 분산이 아니라 이차모멘트였어요. 분산은 6 − 1² = 5. N(1, 5) 예요.

이상한데. 두 성분의 분산이 둘 다 1 인데 같은 η 의 가우시안은 분산이 5 야. 성분 분산을 그대로 가져오면 N(1, 1) 이어야 할 것 같은데.

그 N(1, 1) 의 E[x²] 는요?

2 요. 그런데 η₂ 는 6 이었어요. 아, 각 성분의 E[x²] 는 분산 1 에 자기 평균의 제곱을 더한 거예요. 혼합의 분산에는 성분 평균 −1 과 3 이 퍼진 정도 4 가 더 들어가요. 1 + 4 = 5 예요.

두 후보로 KL(혼합 ‖ q) 를 재 봐요.

N(1, 1) 은 1.367, N(1, 5) 는 0.172 예요. 분산을 4 나 6 으로 바꾸면 0.185, 0.180 이라 5 가 가장 작아요. 위젯에서 분산 배율을 움직여도 1 에서 가장 작아요.

가우시안 가족 안에서 혼합에 가장 가까운(KL(혼합 ‖ q) 최소) 한 명이 모멘트가 같은 N(1, 5) 예요. 이것을 m-사영이라고 불러요. m 은 혼합 쪽이라는 뜻이에요. η 직선 위의 점은 혼합 자체가 아니라 혼합을 대신하는 한 명이에요.

두 조의 발표를 한 슬라이드로 합칠 때, 두 결론을 붙여 놓는 게 혼합이고, 평균 낸 결론 하나로 쓰는 게 모멘트 일치네요. 평균 결론은 두 조 누구의 주장과도 다를 수 있고요.
문제 11. 교차엔트로피의 기울기가 「확률 빼기 정답」인 까닭
분류 모델이 로짓 (θ₁, θ₂, θ₃) = (2, 1, 0)을 내놓았고 정답은 첫째 칸이다. 손실은 교차엔트로피 −log p₁ 이다. (가) 손실을 세 로짓으로 미분한 기울기를 구하라. (나) 기울기 세 성분을 더하면 얼마이고, 왜 그런가? (다) 손실을 로짓으로 두 번 미분한 행렬은 무엇인가?
함께 풀기

−log p₁ 을 미분하면 −1/p₁ 이니까, p₁ = 0.665 에서 −1.503 이에요. 나머지 두 로짓은 손실 식에 안 나오니까 기울기가 0 이고요.

둘째 로짓을 올리면 p₁ 은 어떻게 돼요?

내려가요… 분모에 exp(θ₂)가 있으니까요. 그럼 둘째 기울기가 0 일 리가 없네요. −1/p₁ 은 확률로 미분한 거지 로짓으로 미분한 게 아니었어요.

지수족 꼴로 쓰면 한 줄이야. log p(x) = θ·t(x) − F(θ) 이니까 정답이 y 일 때 손실은 F(θ) − θ·t(y). 로짓으로 미분하면 ∇F(θ) − t(y). ∇F 는 η, 곧 원-핫 벡터의 평균이니까 확률 벡터 그 자체야. 기울기는 (0.665, 0.245, 0.090) − (1, 0, 0) = (−0.335, 0.245, 0.090).

수치미분으로도 (−0.335, 0.245, 0.090) 이에요. 소프트맥스 교차엔트로피의 기울기가 「확률 빼기 정답」이라고 외웠던 게 이거였네요. η 빼기 t(y) 였어요.

(나)는요?

−0.335 + 0.245 + 0.090 = 0 이에요.

로짓 셋에 같은 수를 더해도 분포가 그대로였잖아. 손실도 그대로니까 (1, 1, 1) 방향으로는 기울기가 0 이어야 해. 식으로도 확률의 합 1 에서 정답의 합 1 을 빼니까 0 이고.

(다)는요?

∇²F 는 t 의 공분산이니까 원-핫 벡터의 공분산, diag(p) − ppᵀ 예요. 이것도 (1, 1, 1) 방향으로는 0 이라 고윳값 하나가 0 이어야 해요.

계산해 보니 고윳값이 0, 0.119, 0.371 이에요.

그래요. 앞에 어떤 신경망이 있든, 마지막 로짓에서 손실까지의 기울기는 η − t(y), 두 번 미분한 행렬은 Cov[t] 로 이미 정해져 있어요.