섀넌 엔트로피 계산기 쉽게 이해하기 — 개념과 원리
섀넌 엔트로피는 메시지에 나오는 기호가 얼마나 예측하기 어려운지를 '기호당 비트'로 나타낸 값입니다. 이 계산기는 입력한 글에서 각 문자가 몇 번 나오는지 세고, 그 빈도 분포의 엔트로피를 구합니다. 정보이론 공부, 데이터가 얼마나 압축될지 가늠할 때, 문자열의 무작위성을 비교할 때 쓰입니다.
계산 방법
H = −Σ p(x) × log₂ p(x) (서로 다른 모든 문자 x에 대해 더함)
여기서 p(x) = (문자 x의 개수) ÷ (전체 문자 수)입니다.
- 엔트로피(비트/기호): H 값
- 메시지 최소 비트: H × 전체 문자 수. 이 빈도를 바탕으로 만든 부호로 이 글을 표현할 때의 하한입니다.
- 고유 기호 수: 서로 다른 문자의 개수(공백·문장부호 포함)
원리
섀넌은 확률이 p인 사건의 정보량을 log₂(1/p)비트로 정의했습니다. 반드시 일어나는 일(p = 1)은 새로운 정보가 없고, 드문 일일수록 정보가 많습니다. 엔트로피는 기호 하나당 평균 정보량입니다. 모든 기호가 똑같은 확률일 때 가장 크고(기호 수의 log₂), 한 기호만 나오면 0입니다. 섀넌의 정보원 부호화 정리에 따르면 어떤 무손실 부호도 평균 H비트보다 짧게 만들 수 없으므로, 엔트로피가 곧 압축의 한계가 됩니다. 다만 이 계산기는 문자 하나하나의 빈도만 보는 0차 모델로, 순서와 문맥은 고려하지 않습니다.
예제 풀이
- 입력: "hello world"는 공백을 포함해 11글자입니다.
- 개수: l = 3, o = 2, h·e·공백·w·r·d는 각 1로 고유 기호는 8개입니다.
- 항별 값: l은 0.5112, o는 0.4472, 1번 나온 문자는 각 0.3145이고 여섯 개를 합하면 1.8870입니다.
- 합계: 0.5112 + 0.4472 + 1.8870 = 2.845350937 비트/기호
- 최소 비트: 2.845350937 × 11 = 31.2988603비트(8비트 ASCII로는 88비트)
결과 해석
최댓값은 log₂(고유 기호 수)이며, 8개라면 3비트이므로 2.85는 거의 고른 분포입니다. 영어 문장은 이 방식으로 보통 문자당 4~4.5비트 정도이고, 무작위 바이트는 8비트에 가까워집니다. 값이 낮을수록 일부 문자가 자주 반복된다는 뜻이며 압축이 잘 됩니다.
흔한 실수
- 0차 엔트로피를 실제 정보량으로 여기는 경우. 실제 언어는 문맥 덕분에 훨씬 낮습니다.
- 짧은 문자열의 높은 엔트로피를 무작위성의 증거로 보는 경우
- 대소문자, 공백, 문장부호가 각각 다른 기호라는 점을 잊는 경우
자주 묻는 질문
텍스트 엔트로피의 최댓값은 얼마인가요?
알파벳 크기의 log₂입니다. 영문 26자는 약 4.7비트, 임의의 바이트는 8비트입니다.
왜 로그의 밑을 2로 쓰나요?
밑이 2이면 단위가 비트가 됩니다. 자연로그를 쓰면 nat 단위가 되며 값은 일정한 비율로 바뀝니다.
파일을 엔트로피보다 작게 압축할 수 있나요?
정보원의 진짜 엔트로피보다는 불가능하지만, 실제 압축기는 반복 패턴을 활용해 이 0차 값보다 더 작게 줄이기도 합니다.
출처: C. E. Shannon, "A Mathematical Theory of Communication", Bell System Technical Journal, 1948 · T. M. Cover, J. A. Thomas, Elements of Information Theory, Wiley