시작하며: 정보란 무엇일까?
정보 이론에서 '정보량'은 어떤 사건이 발생했다는 소식을 들었을 때 얻게 되는 '놀라움의 정도'를 숫자로 나타낸 것입니다. 아주 드문 일이 벌어졌다면 놀라움이 크고, 따라서 정보량도 큽니다. 반면, 늘상 일어나는 일이라면 놀라움이 적고 정보량도 작습니다.
'엔트로피'는 어떤 정보원(예: 동전)이 발생시킬 수 있는 모든 사건들의 정보량을 '평균'낸 값입니다. 즉, 그 정보원에서 사건이 하나 발생할 때마다 평균적으로 어느 정도의 정보량을 기대할 수 있는지를 나타냅니다.
이 글에서는 가장 단순한 예시인 '동전 던지기'를 통해 정보량과 엔트로피의 개념을 명확히 이해하고, "왜 정보량이 1비트보다 작을 수 있는지"에 대한 질문에 답을 찾아봅니다.
핵심 개념 정리:
- 정보량 (Information Content): 개별 사건의 놀라움의 정도.
- 엔트로피 (Entropy): 정보원에서 얻을 수 있는 정보량의 기댓값(평균)이자, 궁극의 압축 한계.
1. 기본 개념과 수식 정의
- $x$: 개별 사건 (예: 동전의 앞면이 나옴)
- $P(x)$: 사건 $x$가 발생할 확률
- $I(x)$: 사건 $x$가 발생했다는 것을 알았을 때 얻는 정보량
- $H(X)$: 정보원 $X$의 엔트로피 (정보량의 기댓값)
정보량 (Information Content):
사건 $x$의 정보량 $I(x)$는 다음과 같이 계산합니다. 확률이 낮을수록($P(x)→0$) 정보량은 커집니다.
$$I(x)=−\log_2P(x) \quad \text{(단위: 비트)}$$
엔트로피 (Entropy):
엔트로피 $H(X)$는 각 사건의 정보량에 발생 확률을 곱한 값을 모두 더하여 계산합니다. 이는 정보량의 평균, 즉 기댓값입니다.
$$H(X)=\sum_i P(x_i)I(x_i)=−\sum_i P(x_i)\log_2P(x_i)$$
2. 예시 1: 공정한 동전 던지기 (가장 예측하기 어려운 경우)
앞면(h)과 뒷면(t)이 나올 확률이 각각 $\frac{1}{2}$로 동일한, 가장 일반적인 동전 던지기입니다.
- 확률: $P(h)=\frac{1}{2}, P(t)=\frac{1}{2}$
- 정보량: $I(h)=1\ \text{비트}, I(t)=1\ \text{비트}$
- 엔트로피: $H(X)=1\ \text{비트}$
해석:
결과가 무엇이든 우리는 정확히 1비트의 정보량을 얻습니다. 이 시스템의 불확실성은 최대로, 엔트로피 역시 최댓값(1 비트)을 가집니다. 결과를 전달하려면 '0'(앞면) 또는 '1'(뒷면)처럼 1비트가 필요하다는 직관과도 일치합니다.
3. 예시 2: 편향된 동전 던지기 (예측이 조금 더 쉬운 경우)
이제 앞면이 나올 확률이 $\frac{3}{4}$으로 매우 높은 동전을 생각해 봅시다. 던지기 전부터 우리는 앞면이 나올 것이라고 강하게 예상할 수 있습니다.
- 확률: $P(h)=\frac{3}{4}, P(t)=\frac{1}{4}$
- 정보량:
- 앞면(예상했던 결과)의 정보량: $I(h)=−\log_2(3/4)≈0.415\ \text{비트}$
- 뒷면(예상치 못한 결과)의 정보량: $I(t)=−\log_2(1/4)=2\ \text{비트}$
- 엔트로피: $H(X)≈0.811\ \text{비트}$
의문점과 해석:
- "어떻게 하나의 결과를 표현하는 데 1비트보다 작은 0.415 비트가 필요할 수 있을까요?"
- "뒷면이 나왔다는 사실은 0 또는 1, 단 1비트로 전달 가능한데 왜 정보량은 2비트인가요?"
핵심 설명:
정보량은 '하나의 사건을 독립적으로 부호화(encoding)하는 데 필요한 비트 수'가 아닙니다. 정보량과 엔트로피의 진정한 의미는 수많은 시행 결과를 한꺼번에 모아서 가장 효율적으로 압축(부호화)할 때 드러납니다.
4. 정보량의 진짜 의미: 데이터 압축
이론을 현실로: 묶음(Block)으로 압축하기
위 질문에 답하기 위해, 실제 압축 알고리즘이 사용하는 '블록 코딩(Block Coding)'의 원리를 살펴보겠습니다. 이는 동전 던지기 결과를 하나씩 처리하는 대신, 두 개씩 묶어서 하나의 '블록'으로 보고 코드를 할당하는 방식입니다.
먼저, 두 번 던졌을 때 나올 수 있는 블록과 각 블록의 확률을 계산해 봅시다.
- hh: 3/4×3/4=169≈56.25% (가장 흔함)
- ht: 3/4×1/4=163≈18.75%
- th: 1/4×3/4=163≈18.75%
- tt: 1/4×1/4=161≈6.25% (가장 드묾)
이제 확률에 따라 가변 길이 코드를 할당합니다. 확률이 높은 블록에는 짧은 코드를, 낮은 블록에는 긴 코드를 부여합니다.
- hh: 0
- ht: 10
- th: 110
- tt: 111
이제 동전을 8번 던져 h, h, h, t, h, h, t, t 결과가 나왔다고 가정하고, 두 가지 방식으로 인코딩해 봅시다.
- 고정 길이 코딩 (압축 전): h는 0, t는 1로 인코딩합니다.
- 00010011 -> 총 8비트
- 블록 코딩 (압축 후): 결과를 두 개씩 묶어 hh, ht, hh, tt 블록으로 만들고, 위 표의 코드로 변환합니다.
- hh -> 0
- ht -> 10
- hh -> 0
- tt -> 111
- 결합된 코드: 0100111 -> 총 7비트
결과적으로, 블록 코딩을 통해 데이터 크기가 8비트에서 7비트로 줄어들어 압축되었음을 확인할 수 있습니다.
이 방식의 평균 비트 수를 계산해 보면, (9/16 * 1) + (3/16 * 2) + (3/16 * 3) + (1/16 * 3) = 27/16 = 1.6875 비트/블록이 됩니다. 이는 동전 던지기 한 번당 평균 0.84비트(1.6875÷2)가 필요하다는 의미이며, 엔트로피 값(0.811)에 훨씬 더 가까운 수치입니다. 블록의 크기를 더 키울수록 이 값은 엔트로피에 수렴하게 됩니다.
엔트로피: 궁극의 압축률
결국 엔트로피가 말하는 것은 이것입니다.
- 이 편향된 동전($H≈0.811$)을 수없이 던져서 얻은 결과를 어떤 천재적인 방법으로 압축하더라도, 결과 한 개당 평균 데이터 크기를 0.811 비트 밑으로 낮추는 것은 불가능하다.
이것이 바로 클로드 섀넌이 증명한 '소스 코딩 정리'의 핵심이며, 엔트로피가 이론적으로 도달 가능한 최적의 압축률임을 의미합니다.
- 방법 1: 단순 방식 (압축 없음)
- 필요한 데이터 크기: 8,000,000번×1비트/번=8,000,000 비트
- 방법 2: 엔트로피를 이용한 최적 압축 (이론적 한계)
- 필요한 최소 데이터 크기: 8,000,000번×0.811 비트/번≈6,488,000 비트
결론
처음의 질문으로 돌아가 봅시다.
'앞면'의 정보량이 0.415비트라는 것은, 수많은 시행을 블록 단위로 묶어 효율적으로 압축할 때 '앞면' 하나가 전체 용량에 평균적으로 0.415비트만큼만 기여하게 만들 수 있다는 뜻입니다. 자주 나타나서 예측하기 쉬운 만큼, 전체 정보량에 미치는 영향이 적은 것입니다.
반대로 '뒷면'의 정보량이 2비트라는 것은, 드물게 나타나서 우리를 놀라게 하는 만큼, 전체 정보량에 더 큰 영향을 미친다는 의미입니다.
이처럼 엔트로피는 정보의 불확실성을 나타내는 동시에, 그 정보를 표현하는 데 필요한 평균 비트 수의 이론적 최솟값, 즉 '궁극의 압축률'을 알려주는 핵심 지표입니다. 단 하나의 사건을 전송할 때는 여전히 1비트(0 또는 1)가 필요하지만, 긴 관점에서 보면 훨씬 효율적인 표현이 가능한 것입니다.
댓글
댓글 쓰기