정보이론과 밀도추정 — 엔트로피, KL 발산, 최대가능도
1. 정보량 — 얼마나 놀라운가
앞 글에서 확률로 불확실성을 숫자로 나타냈습니다. 이번에는 그 확률로 정보의 양을 잽니다. 머신러닝은 데이터에서 정보를 뽑아내는 일이고, 학습에 쓰는 목적함수(objective function)도 대부분 이 장의 양으로 정의됩니다.
출발점은 뜻밖의 일일수록 정보가 많다는 생각입니다. 내일 해가 뜬다는 소식은 아무것도 알려 주지 않습니다. 해가 서쪽에서 떴다는 소식은 큰 뉴스입니다. 섀넌(Claude Shannon)은 1948년 논문에서 이 직관을 식으로 만들었습니다. 확률이 p(x)인 값 x를 관측했을 때 얻는 정보량(information content)은 다음과 같습니다.
h(x) = −log p(x)
왜 로그인지는 정보량에 바라는 성질 세 가지에서 나옵니다.
- 드문 사건일수록 커야 하고, 확률 1인 사건은 0이어야 합니다.
- 독립인 두 사건을 함께 관측하면 정보가 더해져야 합니다. 확률은 곱해지므로 f(p1p2) = f(p1) + f(p2)를 만족해야 하는데, 이런 연속함수는 로그뿐입니다.
- 음수가 아니어야 합니다. log p ≤ 0이므로 앞에 마이너스를 붙입니다.
로그의 밑은 단위만 바꿉니다. 밑이 2면 비트(bit), 자연로그면 냇(nat)입니다. 비트는 예/아니오 질문을 몇 번 해야 맞히는지로 읽을 수 있습니다. 동전 앞면은 1비트, 네 가지가 똑같이 그럴듯한 것 중 하나는 2비트, 주사위 눈 하나는 −log2(1/6) ≈ 2.58비트, 카드 52장 중 스페이드 에이스는 −log2(1/52) ≈ 5.70비트입니다.
2. 엔트로피 — 놀람의 평균
정보량은 관측한 값마다 다릅니다. 그 기댓값이 엔트로피(entropy)입니다. 확률변수 X를 관측하기 전에, 관측하면 평균 얼마나 놀랄지를 나타냅니다.
H[X] = −∑x p(x) log p(x) (연속이면 H[X] = −∫ p(x) ln p(x) dx)
엔트로피는 함수 p를 통째로 받아 숫자 하나를 내므로 H[p]라고도 씁니다. 이렇게 함수를 받는 함수를 범함수(functional)라고 합니다. 이름은 열역학에서 왔습니다. 볼츠만과 깁스의 열역학 엔트로피 S = −kB ∑ pi ln pi는 상수 kB와 로그의 밑만 빼면 섀넌의 식과 같습니다. 열역학에서 엔트로피는 계의 무질서를 나타내고, 무질서한 계일수록 지금 상태를 맞히기 어렵습니다.
양 끝을 먼저 봅니다. p(x) = 1이면 ln 1 = 0이라 그 항은 0입니다. p(x) → 0이면 p ln p → 0이라 역시 0입니다. 늘 일어나는 일도, 절대 일어나지 않는 일도 정보를 주지 않습니다.
앞면 확률이 p인 동전이라면 결과가 둘뿐이라 두 항만 남습니다.
H(p) = −p log2 p − (1 − p) log2(1 − p)
p = 0이나 1이면 결과를 이미 아니 0비트, p = 0.5에서 1비트로 최대입니다. p = 0.8이면 약 0.72비트입니다. 결과를 맞히기 쉬울수록 엔트로피가 낮습니다.
엔트로피는 부호 길이의 하한입니다
상태가 여섯 개인 변수를 전송한다고 합시다. 확률이 1/2, 1/4, 1/8, 1/16, 1/32, 1/32이면 엔트로피는 다음과 같습니다.
H = 1/2·1 + 1/4·2 + 1/8·3 + 1/16·4 + 2·(1/32·5) = 1.9375비트
부호를 0, 10, 110, 1110, 11110, 11111로 주면 길이가 각각 1, 2, 3, 4, 5, 5비트로 −log2 p(x)와 정확히 같습니다. 자주 나오는 상태에 짧은 부호를 준 결과 평균 길이가 엔트로피와 같아집니다. 섀넌은 어떤 부호를 설계해도 평균 길이가 엔트로피보다 짧아질 수 없음을 보였습니다. 엔트로피는 확률변수를 전송하는 데 필요한 비트 수의 하한(lower bound)입니다.
문제 1
위의 여섯 상태가 모두 같은 확률 1/6이라면 엔트로피는 얼마이고, 치우친 경우보다 얼마나 큽니까. 그 차이를 부호 길이로 해석해 보십시오.
모든 항이 같으므로 H = −6 × (1/6) log2(1/6) = log2 6 ≈ 2.585비트입니다. 치우친 분포의 1.9375비트보다 약 0.65비트 큽니다. 균등하면 어느 상태도 더 자주 나오지 않아 짧은 부호를 몰아줄 곳이 없습니다. 그래서 같은 여섯 상태라도 평균적으로 질문을 더 많이 해야 합니다.
3. 엔트로피가 가장 큰 분포
분포가 고르게 퍼질수록 엔트로피가 커집니다. 그렇다면 엔트로피를 최대로 만드는 분포는 무엇일까요. 답은 범위에 따라 다릅니다. 유한 구간 [a, b]에서는 균등분포, 평균과 분산이 정해진 무한 구간에서는 가우시안 분포입니다. 무한 구간에서는 균등분포를 정의할 수 없어서 가우시안이 그 자리를 차지합니다. 앞 글에서 가우시안을 기본 재료로 쓴 이유 하나가 여기 있습니다. 평균과 분산 말고 아무것도 모를 때 가장 덜 가정하는 분포입니다.
균등분포 쪽을 라그랑주 승수(Lagrange multiplier)로 확인합니다. 제약 ∫ab p(x) dx = 1 아래에서 엔트로피를 최대로 만들어야 하니 다음 식을 세웁니다.
L = −∫ab p(x) ln p(x) dx + λ(∫ab p(x) dx − 1)
p(x)를 구간 위의 점마다 값이 하나씩 있는 아주 긴 벡터로 보면, 적분은 성분들의 합처럼 다룰 수 있고 성분 p(x) 하나로 미분하면 됩니다.
∂L / ∂p(x) = −ln p(x) − 1 + λ = 0 ⇒ p(x) = eλ−1
결과에 x가 없습니다. 모든 점에서 값이 같은 상수 분포입니다. 2계 미분은 −1/p(x) < 0이라 이 점은 최대입니다. 제약에 넣으면 eλ−1(b − a) = 1이므로 p(x) = 1/(b − a)가 나옵니다. 가우시안 쪽은 평균과 분산에 대한 제약 두 개를 더해 같은 방식으로 풉니다.
4. 두 변수의 엔트로피와 상호정보량
확률을 결합·주변·조건부로 나눈 것처럼 엔트로피도 나눕니다.
- 결합 엔트로피: H[X, Y] = −∑x∑y p(x, y) log p(x, y)
- 조건부 엔트로피: H[Y | X] = −∑x∑y p(x, y) log p(y | x)
조건부 엔트로피는 로그 안이 p(y | x)인데 가중치는 p(x, y)입니다. x를 안 뒤에 남는 y의 놀람을, x와 y 둘 다에 대해 평균 낸 값이기 때문입니다.
예를 하나 만듭니다. X는 날씨로 맑음 1/2, 흐림 1/4, 비 1/4입니다. Y는 우산을 챙겼는지입니다. 맑으면 절대 안 챙기고, 흐리면 반반, 비가 오면 반드시 챙깁니다.
| p(x, y) | 챙김 | 안 챙김 | p(x) |
|---|---|---|---|
| 맑음 | 0 | 1/2 | 1/2 |
| 흐림 | 1/8 | 1/8 | 1/4 |
| 비 | 1/4 | 0 | 1/4 |
| p(y) | 3/8 | 5/8 |
밑을 2로 하면 H[X] = 1/2·1 + 1/4·2 + 1/4·2 = 1.5비트입니다. 결합 엔트로피는 0이 아닌 네 칸에서 H[X, Y] = 1/2·1 + 1/8·3 + 1/8·3 + 1/4·2 = 1.75비트입니다. 날씨를 알고 나면 우산이 불확실한 경우는 흐린 날뿐이고, 그때 1비트입니다. 그래서 H[Y | X] = 1/4 × 1 = 0.25비트입니다. 세 값 사이에 1.75 = 1.5 + 0.25가 성립합니다. 이것이 연쇄법칙입니다.
H[X, Y] = H[X] + H[Y | X]
증명은 곱 규칙 하나로 끝납니다. H[X]를 −∑x∑y p(x, y) log p(x)로 다시 쓰면 두 엔트로피의 합이 −∑∑ p(x, y) log[p(x) p(y | x)]가 되고, 로그 안이 p(x, y)이므로 결합 엔트로피와 같습니다.
상호정보량
상호정보량(mutual information) I[X, Y]는 두 변수가 공유하는 정보의 양입니다. 한쪽을 알았을 때 다른 쪽의 불확실성이 얼마나 줄어드는지로 잽니다.
I[X, Y] = H[Y] − H[Y | X] = H[X] + H[Y] − H[X, Y]
우산 예에서 H[Y]는 (3/8, 5/8)의 엔트로피로 약 0.954비트입니다. 날씨를 알면 0.25비트로 줄어드니 I ≈ 0.704비트입니다. 1.5 + 0.954 − 1.75로 계산해도 같습니다. 두 변수가 독립이면 한쪽을 알아도 다른 쪽이 그대로라 상호정보량은 0입니다. 상호정보량은 I[X, Y] = I[Y, X]로 대칭이라 어느 쪽이 원인인지는 말해 주지 않습니다. 방향을 재려면 과거 값을 조건에 넣은 전달 엔트로피(transfer entropy) 같은 양을 따로 씁니다.
5. KL 발산과 교차 엔트로피
이제 두 분포를 비교합니다. KL 발산(Kullback–Leibler divergence)은 분포 p와 q가 얼마나 다른지를 잽니다. 상대 엔트로피(relative entropy)라고도 합니다.
KL(p ‖ q) = −∑x p(x) log q(x) − (−∑x p(x) log p(x)) = −∑x p(x) log [q(x) / p(x)]
앞 항이 교차 엔트로피(cross entropy), 뒤 항이 p의 엔트로피입니다. 부호로 읽으면 뜻이 분명해집니다. 참 분포가 p = (1/2, 1/4, 1/4)인데 이를 모르고 q = (1/4, 1/4, 1/2)에 맞춰 부호를 짰다고 합시다. 부호 길이는 2, 2, 1비트가 되고, 실제 평균 길이는 p로 평균 내어 1/2·2 + 1/4·2 + 1/4·1 = 1.75비트입니다. 이 값이 교차 엔트로피입니다. p를 알고 짰다면 엔트로피인 1.5비트면 됐습니다. 차이 0.25비트가 KL입니다. 잘못된 분포로 부호를 짜서 생긴 손해입니다.
KL은 늘 0 이상이고, p와 q가 같을 때만 0입니다. 그리고 대칭이 아닙니다. KL(p ‖ q)와 KL(q ‖ p)는 대개 다릅니다. 거리(distance)는 대칭이어야 하므로 KL은 발산(divergence)이라고 부릅니다.
문제 2
p = (0.8, 0.2), q = (0.5, 0.5)일 때 KL(p ‖ q)와 KL(q ‖ p)를 비트로 구해 보십시오.
KL(p ‖ q) = 0.8 log2(0.8/0.5) + 0.2 log2(0.2/0.5) = 0.8 × 0.678 + 0.2 × (−1.322) ≈ 0.278비트입니다. KL(q ‖ p) = 0.5 log2(0.5/0.8) + 0.5 log2(0.5/0.2) = 0.5 × (−0.678) + 0.5 × 1.322 ≈ 0.322비트입니다. 값이 다른 이유는 평균을 내는 기준 분포가 바뀌었기 때문입니다. 앞에 오는 분포가 가중치를 줍니다.
교차 엔트로피로 학습한다
지도학습의 분류에서 정답 레이블도 분포입니다. 클래스가 4개이고 정답이 둘째면 p = (0, 1, 0, 0)으로 씁니다. 이것을 원-핫(one-hot) 표현이라고 합니다. 모델은 출력 숫자들을 지수 함수와 정규화로 확률 qθ로 바꿉니다. 학습은 파라미터 θ를 바꿔 KL(p ‖ qθ)를 줄이는 일입니다. 그런데 뒤 항 H(p)에는 θ가 없습니다. 그래서 KL을 줄이는 것과 교차 엔트로피를 줄이는 것은 같은 일이고, 교차 엔트로피가 분류에서 가장 흔한 손실 함수가 되었습니다. 대형 언어 모델도 앞 토큰들이 주어졌을 때 다음 토큰을 정답으로 놓고 이 방식으로 학습합니다.
p가 원-핫이면 합에서 정답 항 하나만 남습니다. 손실은 −ln q(정답 클래스)로, 1절의 정보량 그대로입니다. 그래서 실제 코드에는 합이 보이지 않습니다. 모델 출력이 q = (0.1, 0.6, 0.2, 0.1)이고 정답이 둘째면 손실은 −ln 0.6 ≈ 0.511냇, 정답이 넷째면 −ln 0.1 ≈ 2.303냇입니다. 정답에 준 확률이 낮을수록 손실이 크게 늘어납니다.
6. KL의 방향 — M-projection과 I-projection
KL이 대칭이 아니니 어느 쪽을 앞에 놓고 줄이느냐에 따라 답이 다릅니다. 모델 q를 축에 나란한 타원 모양의 가우시안으로 제한하고, 참 분포 p는 대각선으로 길쭉한 가우시안이라고 합시다.
- M-projection, KL(p ‖ q)를 줄입니다. 기댓값을 p로 내므로 p에서 나온 표본을 모두 설명해야 합니다. p > 0인데 q ≈ 0인 곳이 있으면 log(p/q)가 무한히 커지므로 q가 넓게 퍼져 p 전체를 덮습니다.
- I-projection, KL(q ‖ p)를 줄입니다. 기댓값을 q로 내므로 q가 표본을 내는 곳에서 p가 거의 0이면 손해가 큽니다. 그래서 q가 좁게 줄어들어 p의 한가운데에 붙습니다.
p가 봉우리 둘인 다봉(multimodal) 분포면 차이가 더 커집니다. M-projection은 두 봉우리를 함께 덮으려고 정작 p가 낮은 두 봉우리 사이에 중심을 둡니다. I-projection은 봉우리 하나에만 붙고, 어느 쪽을 골라도 똑같이 좋은 해입니다. 생성 모델에서 모델이 데이터의 여러 모양 중 한두 가지만 계속 만들어 내는 모드 붕괴(mode collapse)가 이 성질과 관련이 있습니다. 데이터로 모델을 학습할 때는 보통 M-projection 쪽인 KL(p ‖ q)를 씁니다.
KL(p ‖ q)는 p를 정확히 알아야 계산할 수 있습니다. 실제로는 p에서 나온 표본 N개의 평균으로 바꿉니다. 이런 근사를 몬테카를로(Monte Carlo) 근사라고 합니다. 데이터셋에서 표본 하나를 고르는 것이 곧 p(x)에서 하나를 뽑는 것입니다.
KL(p ‖ q) ≈ (1/N) ∑n [−ln q(xn | θ) + ln p(xn)]
둘째 항은 θ와 무관하니, 학습은 −(1/N) ∑ ln q(xn | θ)를 줄이는 것과 같습니다. 이 식은 다음 절의 최대가능도추정으로 그대로 이어집니다.
7. 밀도추정과 최대가능도
표본이 하나면 벡터로 충분하지만 표본이 많아지면 숫자를 늘어놓아서는 아무것도 보이지 않습니다. 시험에서 70점을 받았다면 좋은 점수인지는 점수 분포를 봐야 압니다. 밀도추정(density estimation)은 관측 데이터 x1, …, xN으로부터 그 밑의 확률밀도함수 p(x)를 추정하는 일입니다. 모든 표본이 알 수 없는 하나의 밀도함수에서 독립으로 뽑혔다고 가정하는데, 이는 강한 가정입니다. 레이블이 있으면 클래스별로 밀도 p(x | Ck)를 추정한 뒤 앞 글의 베이즈 정리로 뒤집어 분류에도 씁니다.
방법은 세 갈래입니다. 모수적(parametric) 방법은 함수 모양을 가정하고 파라미터만 추정합니다. 가우시안을 가정하면 평균과 분산만 구하면 됩니다. 비모수적(non-parametric) 방법은 모양을 가정하지 않고 데이터에서 바로 추정합니다. 히스토그램, KDE, kNN이 여기 속합니다. 준모수적(semi-parametric) 방법은 가우시안 혼합처럼 일반적인 함수족에 파라미터를 더 많이 둡니다.
편향과 분산
참 파라미터 θ는 있지만 모집단 전체를 잴 수 없으니 표본으로 추정량(estimator) θ̂을 만듭니다. 추정량의 기댓값 E[θ̂]은 표본을 새로 뽑아 추정하기를 무한히 되풀이했을 때의 평균입니다. 편향(bias)은 E[θ̂] − θ이고, 0이면 불편(unbiased) 추정량이라고 합니다. 분산(variance)은 E[(θ̂ − E[θ̂])2]로, 표본이 조금 바뀔 때 추정이 얼마나 흔들리는지입니다. 참값과의 제곱 오차는 E[θ̂]를 더하고 빼서 둘로 나뉩니다.
E[(θ̂ − θ)2] = (E[θ̂] − θ)2 + E[(θ̂ − E[θ̂])2] = 편향2 + 분산
교차항 2(E[θ̂] − θ)·E[θ̂ − E[θ̂]]은 뒤의 기댓값이 0이라 사라집니다. 모델을 복잡하게 만들면 편향은 줄고 분산은 늡니다. 편향이 크면 과소적합(underfitting), 분산이 크면 과대적합(overfitting)이고, 둘의 합이 가장 작은 복잡도를 찾아야 합니다.
최대가능도추정
최대가능도추정(maximum likelihood estimation, MLE)은 관측한 데이터가 가장 그럴듯해지는 파라미터를 고릅니다. 다섯 명의 키가 모두 170 근처라면 평균이 120인 가우시안에서는 이런 표본이 거의 나오지 않고, 평균이 170 근처인 가우시안은 쉽게 설명합니다. 표본이 독립이면 가능도(likelihood)는 각 표본 확률의 곱입니다.
p(X | θ) = ∏n=1N N(xn | μ, σ2)
곱은 다루기 어려우니 로그를 씌워 합으로 바꿉니다. 로그는 단조 증가 함수라 함숫값은 달라져도 최댓값을 주는 θ, 즉 argmax는 바뀌지 않습니다. 가우시안의 로그가능도는 다음과 같습니다.
ln p(X | μ, σ2) = −(N/2) ln(2π) − (N/2) ln σ2 − (1/(2σ2)) ∑n (xn − μ)2
μ로 미분해 0으로 두면 ∑(xn − μ) = 0에서 μML = (1/N) ∑ xn, 곧 표본 평균이 나옵니다. σ2을 변수 하나로 보고 미분하면 σ2ML = (1/N) ∑ (xn − μML)2이 나옵니다. 평균은 표본 평균으로, 분산은 표본 분산으로 추정한다는 직관에 MLE가 근거를 줍니다. D차원이면 같은 방식으로 ΣML = (1/N) ∑ (xn − μML)(xn − μML)T가 나옵니다. 열벡터와 행벡터의 곱이라 D × D 행렬이 됩니다.
μML은 불편입니다. E[μML] = (1/N) ∑ E[xn] = μ이기 때문입니다. 참 평균을 몰라도 기호 μ로 두고 계산하면 됩니다. 분산은 다릅니다. E[xnxm]가 n = m이면 μ2 + σ2, n ≠ m이면 독립이라 μ2인 것을 이용해 정리하면 E[σ2ML] = ((N − 1)/N) σ2이 나옵니다. 참 분산보다 조금 작습니다. 표본 평균이 바로 그 표본들의 한가운데에 놓이니 표본에서 잰 퍼짐이 실제보다 좁게 나옵니다. N/(N − 1)을 곱하면 불편 추정량 (1/(N − 1)) ∑ (xn − μML)2이 됩니다. 스프레드시트의 분산 함수가 N으로 나누는 것과 N − 1로 나누는 것 두 가지를 주는 이유입니다. 표본에 맞춰진 추정이 실제보다 좁게 나온다는 점에서 이 편향은 과대적합과 닮았습니다.
문제 3
표본 3, 5, 7, 9로 가우시안을 추정합니다. 평균의 최대가능도 추정값, 분산의 최대가능도 추정값, 불편 분산 추정값을 구해 보십시오.
평균은 (3 + 5 + 7 + 9)/4 = 6입니다. 편차는 −3, −1, 1, 3이고 제곱합은 9 + 1 + 1 + 9 = 20입니다. 최대가능도 분산은 20/4 = 5, 불편 분산은 20/3 ≈ 6.67입니다. 표본이 넷뿐이라 두 값의 차이가 꽤 큽니다. N이 커질수록 (N − 1)/N이 1에 가까워져 차이가 줄어듭니다.
8. 비모수적 방법 — 히스토그램, KDE, kNN
가장 단순한 비모수적 방법은 히스토그램입니다. 표본 공간을 구간(bin)으로 나눠 구간마다 표본 수를 세고, 전체 합이 1이 되도록 정규화합니다. 학습으로 바뀌는 파라미터는 없고, 구간 너비와 시작점이라는 하이퍼파라미터가 있습니다. 시작점을 옮기면 결과가 바뀌고, 구간 경계를 조금만 넘어도 확률이 뚝 바뀝니다. 가장 큰 문제는 차원의 저주(curse of dimensionality)입니다. 축마다 구간이 10개면 특징이 3개일 때 칸이 1,000개, 10개일 때 100억 개가 되어 대부분의 칸이 비어 버립니다.
한 식에서 두 방법이 나온다
점 x 둘레의 작은 영역 R에 표본이 들어갈 확률을 P라 합시다. N개 중 k개가 들어갈 확률은 이항분포를 따르고, k/N의 기댓값은 P, 분산은 P(1 − P)/N입니다. N이 크면 분산이 0에 가까워지니 P ≈ k/N입니다. 영역이 충분히 작아서 그 안에서 밀도가 거의 일정하면 P ≈ p(x)·V입니다. V는 영역의 부피로, 1차원이면 길이, 2차원이면 넓이입니다. 둘을 합치면 다음 식이 나옵니다.
p(x) ≈ k / (N V)
V는 표본을 충분히 담을 만큼 커야 하고 그 안에서 밀도가 일정할 만큼 작아야 합니다. N은 정해져 있으니 고를 수 있는 것은 V와 k입니다. V를 고정하고 k를 세면 커널 밀도추정(kernel density estimation, KDE), k를 고정하고 V를 키우면 k-최근접 이웃(k-nearest neighbors, kNN) 밀도추정입니다.
파젠 창과 kNN을 같은 데이터로
1차원 표본 10개가 1.0, 2.5, 3.0, 3.4, 6.0, 7.5, 8.0, 8.2, 8.9, 12.0입니다. 파젠 창(Parzen window)은 x를 가운데 둔 너비 h의 창 안에서 표본을 셉니다. h = 2로 두면 창은 x ± 1, V = 2입니다. h를 대역폭(bandwidth)이라고 합니다.
| x | 파젠 창 (h = 2) | kNN (k = 3) |
|---|---|---|
| 3 | 창 (2, 4)에 3개 → 3/(10×2) = 0.15 | 3번째로 가까운 표본까지 0.5 → V = 1 → 0.3 |
| 5 | 창 (4, 6)에 0개 → 0 | 3번째로 가까운 표본까지 2.0 → V = 4 → 0.075 |
| 8 | 창 (7, 9)에 4개 → 4/(10×2) = 0.2 | 3번째로 가까운 표본까지 0.5 → V = 1 → 0.3 |
x = 5에서 파젠 창은 0을 냅니다. 6.0이 창 경계에 걸려 빠졌기 때문입니다. kNN은 표본이 성긴 곳에서 V를 넓혀 작지만 0이 아닌 값을 냅니다. 표본이 몰린 곳은 V가 작아 밀도가 크고, 성긴 곳은 V가 커서 밀도가 작습니다.
부드러운 커널
파젠 창에는 문제가 둘 있습니다. 창 경계에서 밀도가 끊기고, 창 안의 표본은 x 바로 옆에 있든 가장자리에 있든 똑같이 1로 셉니다. 그래서 상자 대신 가우시안 커널을 씁니다. 표본마다 가우시안을 하나씩 얹고 모두 더해 N으로 나눕니다. 가까운 표본일수록 큰 값을 보태니 결과가 매끄럽습니다. 위 데이터에 표준편차 1인 가우시안 커널을 쓰면 x = 5에서도 약 0.045로 0이 아닌 값이 나옵니다. 대역폭이 너무 작으면 표본마다 뾰족한 봉우리가 남고, 너무 크면 봉우리가 뭉개져 밋밋한 곡선 하나가 됩니다. h는 조심해서 골라야 하는 하이퍼파라미터입니다.
9. 준모수적 방법 — 가우시안 혼합
가우시안 하나로는 봉우리가 둘인 데이터를 설명하지 못하고, 표본마다 커널을 얹으면 파라미터가 표본 수만큼 필요합니다. 그 사이가 가우시안 혼합(mixture of Gaussians)입니다.
p(x) = ∑i=1M πi N(x | μi, Σi), ∑ πi = 1
πi는 혼합 계수(mixing coefficient)입니다. 가우시안을 그냥 더하면 넓이가 1을 넘으니 합이 1인 가중치를 붙입니다. 세 방법을 가우시안 개수로 비교하면 모수적 방법은 1개, KDE는 표본 수 N개, 가우시안 혼합은 M개이고 각 가우시안이 데이터의 군집(cluster) 하나를 맡습니다. 각 표본이 어느 가우시안에서 나왔는지는 처음에 모르므로 학습하면서 알아내야 합니다. 그 방법은 군집화를 다룰 때 봅니다. M은 하나로 설명이 안 되면 늘려 가며 정합니다.
정리
정보량은 −log p로 잰 놀람이고, 엔트로피는 그 평균이자 부호 길이의 하한입니다. 두 변수 사이에서는 결합·조건부 엔트로피와 상호정보량을, 두 분포 사이에서는 KL 발산을 씁니다. KL에서 θ와 무관한 항을 빼면 교차 엔트로피가 남고, 표본 평균으로 근사하면 음의 로그가능도가 남습니다. 정답 레이블이 있는 분류에서는 교차 엔트로피를 줄이고, 표본만 있는 밀도추정에서는 가능도를 키웁니다. 밀도추정은 가우시안 하나로 하는 모수적 방법, 표본마다 커널을 얹는 비모수적 방법, 그 사이의 가우시안 혼합으로 나뉩니다. 다음 글에서는 이렇게 얻은 확률로 실제 결정을 내리는 결정이론을 봅니다.