정보 처리 부등식: 가공해서 정보가 늘지는 않는다
첸초프의 정리를 다룬 절에서 날씨 기록을 두 분포로 비교했을 때, 결과를 잘게 쪼개 적어도 KL은 그대로였고 칸을 합치면 KL이 줄었다. 합쳐도 그대로인 것은 합친 칸 안에서 두 분포가 똑같은 비율로 나뉠 때뿐이었다(A = (0.5, 0.3, 0.2)와 C = (0.25, 0.45, 0.30)는 결과 2와 3이 둘 다 3 : 2였다). 그 비교에는 분포가 둘뿐이었지만, 실제로 데이터를 다룰 때는 그럴듯한 파라미터 후보가 여럿이고 데이터는 늘 무언가로 요약된다. 로그 대신 평균과 개수만 남기고, 사진을 줄여 저장하고, 신경망은 입력을 층마다 다른 벡터로 바꾼다. 요약이 파라미터에 대해 얼마나 알려 주는지는 상호정보량(한 변수를 알 때 다른 변수의 불확실성이 평균으로 얼마나 줄어드는지 재는 양) 하나로 잴 수 있다. 그러면 요약을 잘 고르면 기록 전체보다 더 많이 알려 줄 수도 있을까? 그리고 「이 요약은 아무것도 잃지 않았다」는 말을 숫자로 하면 어떻게 될까?
동전 셋, 기록 여덟 가지
상자에 앞면이 나올 확률이 0.2, 0.5, 0.8인 동전이 셋 있다. 누군가 하나를 고르게 꺼내 세 번 던지고 그 기록을 우리에게 넘길 때, 우리가 알고 싶은 것은 어느 동전인가(Θ)다. 파라미터 후보가 셋, 기록이 여덟 가지라 모든 경우를 손으로 셀 수 있고, 무엇이 충분통계량(그것만 알면 파라미터에 대해 데이터 전체가 알려 주는 것을 다 아는 요약)인지 이미 알려진 경우라 답을 맞춰 볼 수 있어서 고른 예다. 앞면이 나온 횟수와 던진 횟수만 알면 타율을 알 수 있다는 야구 기록과 같은 구조다.
어느 동전인지 모를 때의 엔트로피는 log₂ 3 = 1.585 bit인데, 세 번 던진 기록 전체를 보면 평균 0.445 bit만큼 덜 헷갈리게 된다. 0.445 bit가 기록과 동전 사이의 상호정보량 I(Θ; X) = 0.445다. 이제 기록을 넘기는 사람이 기록 대신 요약 하나만 알려 준다고 하자. 요약마다 상호정보량을 재면 아래와 같다.
어떤 요약도 점선을 넘지 못했고, 점선에 닿은 것은 앞면 수 하나뿐이다. 왜 앞면 수만 닿았는지는 첸초프 절의 칸 합치기로 읽히는데, 요약은 기록 여덟 가지를 몇 개의 칸으로 합치는 일이기 때문이다. 앞면 수는 앞면이 하나인 세 기록(앞뒤뒤, 뒤앞뒤, 뒤뒤앞)을 한 칸에 모으는데, 앞뒤뒤·뒤앞뒤·뒤뒤앞은 어느 동전에서나 똑같이 1/3씩 나온다. 칸 안의 나뉨이 세 동전에서 같으니 합쳐도 동전을 가를 단서를 버리지 않지만, 첫 결과는 첫 던지기가 앞면인 기록 넷을 한 칸에 모은다. 첫 던지기가 앞면인 네 기록의 나뉨은 0.2 동전에서 (0.64, 0.16, 0.16, 0.04), 0.8 동전에서 (0.04, 0.16, 0.16, 0.64)로 서로 다르다. 0.2 동전과 0.8 동전에서 서로 다르던 네 기록의 나뉨 비율이 첫 결과의 칸 안에 묻혀 버린다.
왜 어떤 요약도 점선을 넘지 못하는지는 상호정보량을 KL로 다시 쓰면 보인다. 상호정보량은 결합 분포와 주변분포의 곱 사이의 KL이었고, 같은 양을 동전마다 「그 동전의 기록 분포가 동전을 모를 때의 기록 분포와 얼마나 다른가」를 잰 KL의 평균으로도 쓸 수 있다.
요약은 두 분포 p(x∣θ)와 p(x)에 똑같은 칸 합치기를 한다. 칸을 합치면 KL은 줄거나 그대로라는 것을 첸초프 절에서 보았으니, 동전마다 KL이 줄거나 그대로고, 그 평균인 상호정보량도 줄거나 같다. 숫자로 보면 기록 전체의 KL은 동전마다 (0.617, 0.101, 0.617)이고 평균이 0.445다. 첫 결과로 요약하면 (0.278, 0, 0.278)로 줄어 평균이 0.185가 된다. 0.5 동전의 KL이 0이 된 것은, 첫 결과가 앞면일 확률이 0.5 동전에서도 동전을 모를 때에서도 똑같이 0.5이기 때문이다.
이렇게 마르코프 체인(동전이 기록을 낳고, 기록이 요약을 낳는 차례) Θ → X → T에서 데이터를 어떻게 가공해도 파라미터에 대한 상호정보량이 늘지 않는다는 성질을 정보 처리 부등식이라 부른다. 등호가 서는 것은 동전마다 KL이 하나도 줄지 않을 때다. 합친 칸마다 안쪽 나뉨이 모든 동전에서 같아야 하고, 「칸 안의 나뉨이 동전과 상관없다」는 조건이 충분통계량의 정의와 같다. 사전을 (0.6, 0.3, 0.1)로 바꿔 다시 재도 기록 전체와 앞면 수는 0.324로 같고, 나머지 요약은 모자란다. 그래서 충분통계량을 이렇게 다시 말할 수 있다. 모든 후보에 0보다 큰 확률을 주는 사전 아래에서, 파라미터에 대한 상호정보량을 하나도 잃지 않는 요약이 충분통계량이다. 데이터 백만 개를 숫자 세 개로 줄여도 잃는 것이 없다던 지수족의 충분통계량은, 상호정보량으로 재도 한 자리도 줄지 않는 요약이다.
첸초프의 정리와도 이렇게 이어진다. 첸초프는 「정보를 잃지 않는 옮기기」를 거쳐도 값이 변하지 않는 계량을 찾았고, 답은 피셔 계량 하나였다. 그 잃지 않는 옮기기가 바로 정보 처리 부등식에서 등호가 서는 옮기기이고, 반대로 칸 안의 나뉨이 파라미터에 따라 달라지는 옮기기는 KL도 상호정보량도 줄인다.
파이썬
import itertools
import numpy as np
thetas = np.array([0.2, 0.5, 0.8]) # 동전 셋의 앞면 확률
prior = np.ones(3) / 3 # 어느 동전인지 모름: 고르게
records = list(itertools.product([0, 1], repeat=3)) # 세 번 던진 기록 8가지, 1 = 앞면
lik = np.array([[np.prod([t if r else 1 - t for r in x]) for x in records] for t in thetas])
def mi(summary): # I(Θ; T) (bit), T = summary(기록)
vals = sorted({summary(x) for x in records})
J = np.zeros((3, len(vals))) # J[동전, 요약값]
for k, x in enumerate(records):
J[:, vals.index(summary(x))] += prior * lik[:, k]
indep = J.sum(1, keepdims=True) * J.sum(0, keepdims=True)
m = J > 0
return (J[m] * np.log2(J[m] / indep[m])).sum()
for name, f in [("기록 전체", lambda x: x), ("앞면 수", sum), ("앞면이 둘 이상인가", lambda x: sum(x) >= 2),
("첫 결과", lambda x: x[0]), ("앞면 수의 홀짝", lambda x: sum(x) % 2)]:
print(f"I(Θ; {name}) = {mi(f):.3f}")
# I(Θ; 기록 전체) = 0.445
# I(Θ; 앞면 수) = 0.445
# I(Θ; 앞면이 둘 이상인가) = 0.346
# I(Θ; 첫 결과) = 0.185
# I(Θ; 앞면 수의 홀짝) = 0.023
ML에서: 층은 라벨에 대한 정보를 만들지 못한다
신경망은 입력 X를 층마다 다른 벡터 h₁, h₂, …로 바꾼다. 라벨이 입력을 낳고, 입력이 h₁을, h₁이 h₂를 낳는 마르코프 체인이므로 정보 처리 부등식이 그대로 걸린다. 라벨에 대한 상호정보량은 층을 지날수록 줄거나 그대로이고, 어떤 층도 입력에 없던 라벨 정보를 새로 만들지 못한다. 문제 8에서 본 「상위 두 토큰만 알려 주는 API」가 KL을 늘 작게 보여 준 것도 같은 부등식의 한 모습이다. 그렇다면 층은 왜 쌓는지를 아래 문제 11에서 숫자로 따져 본다.
이 절의 결론
「데이터를 요약하고 가공하는 어떤 단계도 파라미터에 대한 상호정보량을 늘리지 못한다. 하나도 줄이지 않는 요약이 충분통계량이고, 그 요약은 칸 안의 나뉨이 파라미터와 상관없는 칸 합치기다.」
인물 이야기: 쿨백과 라이블러, 「정보와 충분성」
KL 발산이라는 이름을 준 1951년 논문의 제목은 「정보와 충분성에 대하여(On Information and Sufficiency)」다. 발산은 이 논문의 목적이 아니라 도구였고, 제목의 둘째 낱말 「충분성」이 무엇을 겨냥했는지는 논문의 첫 쪽에 적혀 있다.
피셔는 1922년 충분성이라는 기준을 처음 내놓으면서, 고른 통계량이 "샘플이 주는 관련 정보 전체를 요약해야 한다"고 썼지만, 「정보」가 무엇인지는 정해 두지 않았다. 피셔 자신이 쓴 정보는 추정값이 얼마나 흔들리는지(분산)로 잰 양이었다. 쿨백과 라이블러가 논문 머리에 인용한 할모스(Paul Halmos)와 새비지(Leonard Savage)의 1949년 논문은 이 점을 짚었다. 충분통계량이 정보를 모두 담는다는 말을 분산으로 잰 좁은 뜻의 「정보」로만 받아들이는 가정이 이 주제에 때때로 혼란을 낳았다는 것이다.
쿨백과 라이블러는 정보를 섀넌과 위너(Norbert Wiener)가 쓴 엔트로피 쪽의 뜻으로 일반화해 「충분통계량이 담는 정보란 무엇인가」에 답했다. 논문 첫 쪽의 말을 옮기면, 엔트로피 쪽 뜻으로 잰 샘플 속 정보는 “어떤 통계적 조작으로도 늘릴 수 없고, 변하지 않는(줄지 않는) 것은 충분통계량을 쓸 때이고 그때뿐이다”. 이 절에서 동전 셋으로 확인한 것이 바로 이 문장이다. 두 가설을 가르는 평균 정보, 곧 오늘날의 KL 발산은 이 문장을 증명하려고 세운 양이었다.
오늘날 정보이론 교과서는 「어떤 조작으로도 정보가 늘지 않는다」는 성질을 정보 처리 부등식(data processing inequality)이라는 이름으로 가르친다. 1951년의 논문은 같은 내용을 통계학의 말, 「충분성」으로 먼저 적었다.
문제 9. 6이 잘 나오는 주사위
상자에 주사위가 둘 있는데, 하나는 공정하고 다른 하나는 6이 나올 확률이 0.5이고 나머지 눈은 0.1씩이다. 친구가 둘 가운데 하나를 반반의 확률로 골라 두 번 굴리고, 두 눈 대신 요약 하나만 알려 준다. 두 눈을 그대로 알려 주면 어느 주사위인지에 대한 상호정보량은 0.1755 bit다. (가) 요약 「두 눈의 합」「6이 나온 횟수」「첫 눈」 가운데 어느 것이 어느 주사위인지에 대해 가장 많이 알려 주는가? 각각의 상호정보량을 0.1755와 비교하라. (나) 합이 7일 때, 두 눈이 (1, 6)인 경우와 (3, 4)인 경우에 조작된 주사위일 확률을 각각 구하라. (다) 6이 나온 횟수는 왜 충분통계량인가?
함께 풀기

조작된 주사위는 6이 잘 나오니까 합이 크게 나올 거예요. 합이 가장 많이 알려 줄 것 같아요. 그래도 돌려 봤어요. 합 0.1279, 6이 나온 횟수 0.1755, 첫 눈 0.0933 bit예요.

6이 나온 횟수가 두 눈 그대로랑 같고, 합은 모자라요. 합이 12면 조작일 확률이 0.900인데요.

합이 7인 날을 봐요. (1, 6)과 (3, 4)는 합 칸에서 한 칸에 들어가는데, 조작일 확률도 같아요?

(1, 6)은 0.643, (3, 4)는 0.265예요. 많이 다르네요. 합은 6이 끼어 있는 7과 6이 없는 7을 한 칸에 섞어 버려요. 첸초프 절에서 결과 2와 3을 합치면 KL이 줄던 것처럼, 합도 단서를 한 칸에 섞어 버렸어요.

(다)는 반대로 6이 나온 횟수의 칸 안을 보면 돼. 6이 한 번 나온 칸에는 (6, 1)부터 (5, 6)까지 열 가지가 있는데, 6이 아닌 눈은 공정한 주사위에서도 조작된 주사위에서도 다섯 눈이 모두 같은 확률이야.

아, 그런데 공정한 주사위에서 6이 아닌 눈은 1/6, 조작된 쪽은 0.1이라 확률 자체는 달라요. 그래도 충분통계량이 돼요?

칸을 합칠 때 따져야 하는 건 칸 하나의 확률이에요, 칸 안에서 기록들이 나뉘는 비율이에요?

나뉘는 비율이요. 6이 한 번 나온 칸 안의 열 가지는 두 주사위 모두에서 똑같이 1/10씩이에요.

그럼 칸 전체의 확률이 두 주사위에서 다른 건?

그건 6이 나온 횟수 자체가 이미 알려 주는 정보야. 동전에서 앞면이 하나인 세 기록이 어느 동전에서나 1/3씩이었던 것과 같아.

시험 채점에서 몇 번을 틀렸는지만 보면 되는 시험이 있고, 몇 번 문제를 틀렸는지까지 봐야 하는 시험이 있는 거네요. 문제마다 난이도가 같으면 틀린 개수가 충분한 거고요.
문제 10. 한 동전에 몰린 사전, 그리고 피셔 정보
본문의 동전 셋(앞면 확률 0.2, 0.5, 0.8)과 세 번 던진 기록을 그대로 쓴다. (가) 사전이 (1, 0, 0)이라서 0.2 동전인 줄 이미 안다면 I(Θ; 기록 전체)와 I(Θ; 첫 결과)는 얼마인가? 두 값이 같으니 첫 결과는 충분통계량이라고 해도 되는가? (나) 사전을 (0.98, 0.01, 0.01)로 조금만 풀면 두 값은 어떻게 되는가? (다) 앞면 확률 θ를 이어진 값의 파라미터로 보고, θ = 0.5에서 기록 전체, 앞면 수, 첫 결과, 「앞면이 둘 이상인가」 각각의 피셔 정보를 구하라. 첸초프의 정리와 어떻게 이어지는가?
함께 풀기

(가)는 둘 다 0 bit야. 동전을 이미 아니까 무엇을 봐도 더 알 게 없지. 등호가 섰으니까 정의대로면 첫 결과도 충분통계량이에요.

그 사전 아래에서 「앞면 수의 홀짝」은 몇 bit예요? 아무것도 알려 주지 않는 요약, 예를 들어 늘 0이라고만 말하는 요약은요?

…둘 다 0이에요. 그 사전에서는 모든 요약이 등호를 세워요. 늘 0이라고 말하는 요약까지 충분통계량이 되면 말이 안 되죠. 본문의 정의에 「모든 후보에 0보다 큰 확률을 주는 사전」이라는 조건이 왜 붙었는지 이제 알겠네요.

(나)는 기록 전체 0.0425, 첫 결과 0.0149예요. 사전을 조금만 풀어도 바로 벌어져요. 등호가 섰던 건 첫 결과가 좋아서가 아니라 물을 게 없어서였어요.

(다)는 동전 한 번의 피셔 정보가 1/(θ(1 − θ)) = 4니까, 세 번이면 12. 앞면 수도 12, 첫 결과는 4예요. 「앞면이 둘 이상인가」는 예/아니오 하나니까 동전 한 번이랑 같은 4요.

아, 확인해 보니 9예요. 둘 이상일 확률 g(θ) = 3θ²(1 − θ) + θ³ 이 θ에 따라 움직이는 속도가 동전 한 번보다 빨라서, g′² / (g(1 − g)) = 1.5² / 0.25 = 9가 나와요.

12, 12, 9, 4. 피셔 정보도 상호정보량이랑 같은 순서로 줄어요. 앞면 수만 그대로고요.

그래요. 피셔 정보는 작은 걸음의 길이를 재는 피셔 계량이니, 요약이 칸을 합치면 피셔 계량이 재는 길이도 줄거나 같아요. 길이가 줄지 않는 옮기기가 어떤 것이었죠?

첸초프 정리에서 말한 정보를 잃지 않는 옮기기, 곧 충분통계량이요. 피셔 계량이 변하지 않아야 한다고 요구했던 바로 그 옮기기가, 상호정보량에서 등호를 세우는 옮기기였네요.

극한을 배울 때 「모든 ε에 대해」를 빼먹으면 아무 수열이나 수렴한다고 증명돼 버리던 게 생각나요. 조건 하나가 빠지면 정의가 아무것이나 다 받아들이게 돼요.
문제 11. 층을 지날수록
고양이 사진과 개 사진이 반반이다. 입력 X는 네 가지 모양 a, b, c, d 가운데 하나로 나오는데, 고양이일 때 (0.5, 0.3, 0.15, 0.05), 개일 때 (0.05, 0.15, 0.3, 0.5)의 확률로 나온다. 첫 층은 b와 c를 같은 값으로 보내고(h₁ = a, {b, c}, d), 다음 층은 거기서 {b, c}와 d를 다시 합친다(h₂ = a, {b, c, d}). (가) 라벨 Y에 대한 상호정보량 I(Y; X), I(Y; h₁), I(Y; h₂)를 bit로 구하라. (나) 첫 층을 바꿔 a와 b, c와 d를 합치면 상호정보량과, 그 표현만 보고 라벨을 가장 잘 맞힐 확률은 어떻게 되는가? X 그대로일 때와 비교하라. (다) 층이 라벨 정보를 늘리지 못한다면, 신경망은 왜 층을 쌓는가?
함께 풀기

(가)는 0.3450, 0.3083, 0.2053 bit예요. 층을 지날 때마다 줄어요. 부등식대로네요.

(나)는 a와 b, c와 d를 합치면 0.2781이에요. h₁보다 더 줄었으니까 맞히는 것도 h₁보다 못하겠죠.

맞힐 확률을 직접 세어 봤어요?

그 표현만 보고 더 그럴듯한 쪽을 고르면 0.800이에요. X 그대로 봐도 0.800이고, h₁은 0.725예요. 상호정보량은 줄었는데 맞힐 확률은 그대로네요.

a와 b는 둘 다 고양이 쪽, c와 d는 둘 다 개 쪽이라, 합쳐도 어느 쪽인지는 그대로 남아. 버린 건 「얼마나 확실한가」야. a면 고양이일 확률이 0.91인데 b면 0.67이었거든. 맞힐 확률은 0.91과 0.67의 차이를 안 보지만 상호정보량은 봐.

그럼 (다)는요? 층이 정보를 만들지 못하는데도 왜 층을 쌓아요?

만들지 못하면 그냥 입력을 바로 마지막 분류기에 넣는 게 가장 좋은 거 아니에요? 입력이 상호정보량이 가장 크니까요.

사진 한 장의 픽셀 값을 그대로 직선 하나로 가르는 분류기에 넣으면 고양이와 개를 잘 가를까요? 픽셀 안에 라벨 정보가 다 있는데도요.

못 가르죠. 정보가 있는 것과 직선 하나로 읽어 낼 수 있는 것은 다르네요. 층은 정보를 새로 만드는 게 아니라, 라벨과 상관없는 것을 버리고 남은 것을 마지막 층이 읽기 쉬운 모양으로 다시 늘어놓는 거고요. (나)의 표현처럼 잘 버리면 맞히는 데는 손해가 없고요.

조별 과제 자료를 정리하는 거랑 같아요. 정리한다고 내용이 늘지는 않는데, 발표하는 사람이 바로 읽을 수 있게 돼요.