원천 부호화 정리(Source coding theorem)
기호들이 서로 독립(independence)이고 같은 분포를 따르는 원천에서, 이어 붙여도 되살릴 수 있는 어떤 부호도 기호당 평균(mean) 비트 수를 엔트로피(entropy)보다 작게 할 수 없고, 기호들을 길게 묶어 부호화하면 엔트로피에 얼마든지 가까워질 수 있다.
기계 하나가 a, b, c, d 네 글자를 하나씩 뱉는다고 합시다. a가 나올 확률(probability)은 절반(0.5), b는 4분의 1(0.25), c는 0.15, d는 0.1이고, 앞에 무엇이 나왔든 다음 글자의 확률은 늘 같습니다. 이 글자열을 0과 1로 적어 보내되, 받는 쪽이 원래 글자열을 정확히 되살릴 수 있어야 합니다. 글자 하나에 평균 몇 비트가 필요할까요? 네 글자에 00, 01, 10, 11을 붙이면 글자당 2비트로 됩니다. 자주 나오는 a에 더 짧은 부호를 주면 줄일 수 있을 것 같은데, 얼마까지 줄일 수 있을까요?
1948년 클로드 섀넌이 이 물음에 정확히 답했습니다. 이 기계처럼 기호가 하나씩 나오되, 각 기호가 앞의 기호들과 상관없이(독립적으로) 늘 같은 확률분포에서 뽑히는 것을 원천이라 합니다. 답은 그 분포의 엔트로피
먼저 말 두 개를 정합시다. 기호 하나에 붙이는 0과 1의 줄을 부호어라 합니다. 부호어(codeword)를 이어 붙여 보내므로 받는 쪽은 어디서 끊을지 알아야 합니다. 가장 쉬운 방법은 어떤 부호어도 다른 부호어의 앞부분이 되지 않게 하는 것입니다. 예를 들어 a = 0, b = 10, c = 110, d = 111이라면 0110100은 0 | 110 | 10 | 0, 다시 말해 a c b a로만 읽힙니다. 이런 부호를 접두 부호라 합니다.
하한(lower bound)은 접두 부호(prefix code)의 부호어가 차지하는 '자리'에서 나옵니다. 부호어 10을 쓰면 10으로 시작하는 비트열(100, 101, 1011, …)은 더 이상 다른 부호어가 될 수 없습니다. 이 몫을 수로 재 봅시다. 0과 1이 끝없이 이어지는 비트열 앞에 '0.'을 붙여 이진 소수(binary expansion)로 읽으면 0 이상 1 미만의 수가 됩니다. 이 범위를 [0, 1)로 씁니다. 10으로 시작하는 비트열은 0.10…₂ 꼴이므로 0.5 이상 0.75 미만의 수가 되어 구간 [0.5, 0.75)를 차지하고, 그 길이는
거꾸로, 합이 1 이하인 길이들이 주어지면 그런 길이의 접두 부호를 언제나 만들 수 있습니다. 짧은 부호어부터 차례로 [0, 1)의 왼쪽 끝에서 구간을 떼어 주면 되고, 아래 그림의 부호가 그렇게 만든 것입니다. 접두 부호가 아니면서도 한 가지로만 끊어 읽히는 부호도 있는데, 그런 부호도 같은 부등식을 따릅니다. 그래서 아래의 하한은 접두 부호만이 아니라 한 가지로만 끊어 읽히는 부호 전체에 대한 것입니다. 부등식은 1949년 미국의 레온 크래프트가 접두 부호에 대해 밝혔고, 1956년 브록웨이 맥밀런이 이렇게 넓혔습니다.
처음의 네 글자로 해 봅시다. 부호 길이를 정해 보고, 그림의 아래 줄이 테두리 밖으로 넘치는지 보세요. a
평균 길이는
왜 그럴까요? 평균 길이에서 엔트로피를 뺀 차는
깁스 부등식의 열쇠는 로그 곡선의 모양입니다. 로그 곡선은 위로 볼록하게 휘어 있어서 곡선 위 두 점을 잇는 선분이 늘 곡선 아래에 놓입니다. 이 성질을 오목성이라 합니다. 그래서 로그 값들을 평균한 것은 평균의 로그를 넘지 못하고, 이를 위의 차에 쓰면 차가 0 이상임이 나옵니다. 같은 내용을 두 분포가 얼마나 다른지의 언어로 말한 것이, 쿨백–라이블러 발산(Kullback–Leibler divergence)이 0 이상이라는 사실입니다.
이상적인 길이
n을 늘리면 노란 점은 대체로 보라 선(엔트로피)을 향해 내려가지만, 결코 그 아래로 가지는 않습니다. 정리의 첫째 부분이 말하는 하한입니다. 점선(H + 1/n)은 정리의 둘째 부분이 보장하는 상한이고, 노란 점은 늘 그 아래에 있습니다. 처음 값 p = 0.1에서 엔트로피는 약 0.469비트입니다. 묶지 않으면(n = 1) 한 번에 1비트가 들지만, 3개씩 묶으면 0.533비트, 5개씩 묶으면 0.480비트로 줄어듭니다.
다른 설명도 있습니다. 동전을 n번 던지면 큰 수의 법칙(law of large numbers)에 따라 앞면이 거의 언제나 np번 안팎 나옵니다. 앞면이 꼭 np번인 결과열의 개수는 n개의 자리 가운데 앞면이 나올 np개의 자리를 고르는 가짓수, 이항계수(binomial coefficient)
한편 모든 파일을 줄이는 압축기는 없습니다. n비트 파일은
역사. 자주 쓰는 글자에 짧은 부호를 주는 생각은 1830–40년대 모스와 베일의 전신 부호에 이미 있었습니다. 가장 흔한 E는 점 하나, 드문 Q는 점과 선 네 개입니다. 그러나 얼마나 짧게 할 수 있는지의 한계는 한 세기 동안 아무도 몰랐습니다. 1920년대 전화 회사 AT&T와 그 벨 연구소에서 해리 나이퀴스트와 랠프 하틀리가 전선 하나로 보낼 수 있는 신호의 양을 재려 했고, 벨 연구소의 섀넌은 그 물음을 이어받았습니다. 1948년 『벨 시스템 기술 저널』에 실린 「통신의 수학적 이론」에서 그는 원천이 내는 기호 하나당 정보를 엔트로피로 정의하고, 그것이 바로 압축의 한계임을 이 정리로 보였습니다. 크래프트 부등식(1949)과 맥밀런의 확장(1956)은 그 뒤에 나와, 위에서 본 것처럼 부호어 하나하나의 길이로 하한을 따지는 길을 열었습니다.
이어지는 곳.
- 기호가 앞 기호에 기대는 원천, 예컨대 마르코프 연쇄(Markov chain)에서는 엔트로피 대신 엔트로피율(entropy rate)이 한계가 됩니다. 엔트로피율은 기호 n개의 결합 엔트로피(joint entropy)를 n으로 나눈 값이 n이 커질 때 다가가는 값입니다. 통계적 성질이 시간에 따라 바뀌지 않는 원천이라면, 앞의 기호들을 다 알 때 다음 기호 하나에 남는 평균 불확실성과 같습니다.
- 섀넌은 1951년 사람들에게 다음 글자를 맞히게 하는 실험으로 영어의 엔트로피율을 글자당 약 0.6~1.3비트로 어림했습니다. 오늘날 n-그램(n-gram)이나 신경망(neural network) 언어 모델(language model)의 성능도 같은 잣대로 잽니다. 모델이 실제 글에 준 확률로 잰 기호당 평균 비트 수(교차 엔트로피, cross-entropy) H가 작을수록 좋은 모델이고, 흔히 쓰는 퍼플렉시티(perplexity)는
입니다. - 렘펠–지브 압축(Lempel–Ziv compression)은 분포를 모르고도 이 한계에 다가가는 방법입니다.
- 콜모고로프 복잡도(Kolmogorov complexity)는 분포 없이 문자열 하나의 정보량을 묻습니다.
- 섀넌의 같은 논문에는 짝이 되는 정리도 있습니다. 잡음이 있는 통로로 얼마나 빨리 믿을 만하게 보낼 수 있는지를 말하는 통로 부호화 정리(noisy-channel coding theorem)이고, 이를 실제로 해내는 방법이 오류 정정 부호(error-correcting code)입니다.
- 산술 부호화(arithmetic coding)는 기호를 묶는 대신 글 전체를 수 하나로 적어 올림 손해를 거의 없앱니다.
- 조금 틀려도 되는 손실 압축(lossy compression)의 한계는 율–왜곡 이론(rate–distortion theory)이 정합니다.
이 개념이 나오는 긴 글
이 개념 위에 세워진 것
이 개념을 언급하는 페이지
- 큰 수의 법칙
… 섀넌은 1948년 이 논법으로, 기호 하나당 평균 H비트까지는 줄일 수 있고 그보다 더는 줄일 수 없다는원천 부호화 정리를 증명했습니다. 같은 논리가 잡음에도 통합니다. 비트 하나가 확률 p로 뒤집히는 통로로 n비트짜리 긴 …
- 정보 엔트로피
… 주는 허프만 부호(1952년 데이비드 허프만)로 적으면 한 글자에 평균 비트가 듭니다. 섀넌의원천 부호화 정리에 따르면 이어 붙인 부호열을 모호함 없이 되읽을 수 있는 부호라면 어떤 것도 평균 길이가 엔트로피보다 …
- n-그램 언어 모델
… 부호화⟧) 글자당 비트 수가 교차 엔트로피에 가까워지고, 참 엔트로피보다 짧게 할 수는 없다는 것이원천 부호화 정리입니다. 확률을 따로 세지 않고 앞에 나온 문자열을 '몇 칸 앞에서 몇 글자'로 가리키는 ⟦렘펠–지브 …
- 비교 정렬의 하한
… 한 비트도 잃지 않고 되살릴 수 있는 무손실 압축은 평균적으로 엔트로피보다 짧아질 수 없다는 섀넌의원천 부호화 정리도 같은 셈입니다. 자료를 예/아니오 질문으로 나누어 예측하는 기계 학습의 결정 트리도 같은 모양의 …
- 허프만 부호
… 때 O(k \log k) 에 끝납니다. 평균 길이는 엔트로피 H 밑으로 내려갈 수 없고(섀넌의원천 부호화 정리), 허프만 부호는 언제나 H 이상 H+1 미만입니다. 부호 길이가 정수라서 생기는 이 1비트 미만의 …
- 렘펠–지브 압축
… 모든 상태로 갈 수 있는 마르코프 연쇄(정상 분포에서 출발한 것)가 그런 예입니다. 분포를 모르고도원천 부호화 정리의 한계에 닿으니 '범용' 압축이라 부릅니다. 반면 '무작위 글'처럼 되풀이가 없는 글은 거의 줄지 …
- 오류 정정 부호
… 않아야 하는데, 공을 겹치지 않게 많이 넣을수록 부호어가 많아져 전송률이 올라가기 때문입니다. 압축(원천 부호화 정리, 허프만 부호)은 쓸모없는 여분을 없애고, 오류 정정 부호는 쓸모 있는 여분을 규칙적으로 되돌려 …
- 콜모고로프 복잡도
… K를 길이로 나눈 값이 길이가 길어질수록 확률 1로 그 분포의 엔트로피로 수렴합니다. 섀넌의원천 부호화 정리를 문자열 하나에 대한 말로 옮긴 셈입니다. 렘펠–지브 압축 같은 압축기가 만든 파일 길이에 풀기 …
- 결합 엔트로피와 조건부 엔트로피
… 한 걸음마다 새로 생기는 불확실성 H(X n+1 |X n )이 그 엔트로피율입니다. 엔트로피율은원천 부호화 정리에서 압축의 한계가 되고, 앞 기호를 문맥으로 쓰는 산술 부호화나 렘펠–지브 압축이 그 한계에 …
- 쿨백–라이블러 발산
… = \sum_i p_i \log_2 \frac{p_i}{q_i} 압축으로 보면 뜻이 더 또렷합니다.원천 부호화 정리에 따르면 결과 i에 길이 -\log_2 q_i 비트인 부호를 주는 것이 분포 q에 가장 잘 맞는 …
- 통로 용량
… 발산⟧이기도 합니다. 용량이 전송의 한계라는 통로 부호화 정리는, 압축의 한계가 엔트로피라는원천 부호화 정리와 함께 섀넌 이론의 두 기둥입니다.
- 통로 부호화 정리
… 부호를, 제어 신호에 극 부호를 씁니다(오류 정정 부호). 이어지는 곳. 섀넌은 같은 논문에서 압축(원천 부호화 정리)과 이 정리를 합쳐, 원천을 먼저 엔트로피까지 줄인 다음 통로에 맞게 여분을 덧붙여도, 길게 묶어 …
- 산술 부호화
… 없으니, 치우친 원천에서는 엔트로피의 몇 배를 쓰게 됩니다. 기호를 여러 개씩 묶으면 손해가 줄지만(원천 부호화 정리) 묶음의 가짓수가 지수적으로 늘어 부호표가 감당할 수 없이 커집니다. 산술 부호화는 부호표를 버리고, …
- 율–왜곡 이론
원천 부호화 정리는 원래대로 정확히 되살려야 하는 무손실 압축의 한계였습니다. 그런데 소리의 세기나 화소의 밝기 같은 실수 …
- 맥스웰의 악마와 란다우어 원리
… 단위)는 k_B \ln 2 라는 환산 계수만 다릅니다. 악마의 기록이 치우쳐 있으면 지우기 전에압축해서(산술 부호화) 비용을 엔트로피만큼으로 줄일 수 있고, 기록 하나의 궁극적인 크기는 ⟦콜모고로프 …
- 토큰화와 BPE
… 달라집니다. 압축의 눈으로 보면, 흔한 것에 짧은 부호를 줄 때 평균 길이를 어디까지 줄일 수 있는지는원천 부호화 정리가 엔트로피로 정해 줍니다. 토큰마다 확률을 주는 모델에 산술 부호화를 붙이면 그 한계에 다가가는, …
- 언어 모델과 다음 토큰 예측
… 때문입니다. 그러니 교차 엔트로피를 줄이는 것과 글을 더 짧게 압축하는 것은 같은 목표이고, 그 한계가원천 부호화 정리의 엔트로피입니다. 은닉 마르코프 모델은 눈에 보이지 않는 상태(예: 품사)가 마르코프 연쇄로 바뀌고 …
- 최소 기술 길이
… 거꾸로 확률 q를 주면 길이가 -\log_2 q 보다 1비트 이내로 긴 부호를 만들 수 있습니다(원천 부호화 정리, 산술 부호화). 둘째, 그렇게 읽으면 두 부분 부호는 베이즈 추론이 됩니다. L(H) = …