기본 콘텐츠로 건너뛰기

ENTROPY-04. 정보량과 엔트로피: 동전 던지기와 데이터 압축으로 이해하기

시작하며: 정보란 무엇일까?

정보 이론에서 '정보량'은 어떤 사건이 발생했다는 소식을 들었을 때 얻게 되는 '놀라움의 정도'를 숫자로 나타낸 것입니다. 아주 드문 일이 벌어졌다면 놀라움이 크고, 따라서 정보량도 큽니다. 반면, 늘상 일어나는 일이라면 놀라움이 적고 정보량도 작습니다.

'엔트로피'는 어떤 정보원(예: 동전)이 발생시킬 수 있는 모든 사건들의 정보량을 '평균'낸 값입니다. 즉, 그 정보원에서 사건이 하나 발생할 때마다 평균적으로 어느 정도의 정보량을 기대할 수 있는지를 나타냅니다.

이 글에서는 가장 단순한 예시인 '동전 던지기'를 통해 정보량과 엔트로피의 개념을 명확히 이해하고, "왜 정보량이 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_2​P(x) \quad \text{(단위: 비트)}$$

엔트로피 (Entropy):

엔트로피 $H(X)$는 각 사건의 정보량에 발생 확률을 곱한 값을 모두 더하여 계산합니다. 이는 정보량의 평균, 즉 기댓값입니다.

$$H(X)=\sum_i ​P(x_i​)I(x_i​)=−\sum_i ​P(x_i​)\log_2​P(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)가 필요하지만, 긴 관점에서 보면 훨씬 효율적인 표현이 가능한 것입니다.

    댓글

    이 블로그의 인기 게시물

    Windows에 AMP와 MediaWiki 설치하기

    1. 들어가기     AMP는 Apache + MySQL +  Perl/PHP/Python에 대한 줄임말이다. LAMP (Linux + AMP)라고 하여 Linux에 설치하는 것으로 많이 소개하고 있지만 Windows에서도 간편하게 설치하여 사용할 수 있다.       이 글은 Windows 7에 Apache + MySQL + PHP를 설치하고 그 기반에서 MediaWiki를 설치하여 실행하는 과정을 간략히 정리한 것이다. 2. MySQL     * 버전 5.6.12     1) 다운로드         http://dev.mysql.com/downloads/installer/         MySQL Installer 5.6.12         Windows (x86, 32-bit), MSI Installer         (mysql-installer-web-community-5.6.12.0.msi)     2) 다운로드한 MSI 파일을 더블클릭하여 설치를 진행한다.           설치 위치:                   C:\Program Files\MySQL               선택 사항:                       Install MySQL Products             Choosing a Se...

    MATLAB Rutime 설치하기

    MATLAB Rutime 설치하기 미설치시 에러 MATLAB Runtime 을 설치하지 않은 환경에서 MATLAB 응용프로그램이나 공유 라이브러리를 사용하려고 하면 아래와 같은 에러 메시지가 표시될 것입니다. 처리되지 않은 예외: System.TypeInitializationException: 'MathWorks.MATLAB.NET.Utility.MWMCR'의 형식 이니셜라이저에서 예 외를 Throw했습니다. ---> System.TypeInitializationException: 'MathWorks.MATLAB.NET.Arrays.MWArray'의 형식 이니셜라이저에서 예외를 Throw했습니다. ---> System.DllNotFoundException: DLL 'mclmcrrt9_3.dll'을(를) 로드할 수 없습니다. 지정된 모듈을 찾을 수 없습니다. (예외가 발생한 HRESULT: 0x8007007E) 위치: MathWorks.MATLAB.NET.Arrays.MWArray.mclmcrInitialize2(Int32 primaryMode) 위치: MathWorks.MATLAB.NET.Arrays.MWArray..cctor() --- 내부 예외 스택 추적의 끝 --- 위치: MathWorks.MATLAB.NET.Utility.MWMCR..cctor() --- 내부 예외 스택 추적의 끝 --- 위치: MathWorks.MATLAB.NET.Utility.MWMCR.processExiting(Exception exception) 해결 방법 이 문제를 해결하기 위해서는 MATLAB Runtime 을 설치해야 합니다. 여러 가지 방법으로 MATLAB Runtime 을 설치할 수 있습니다. MATLAB 이 설치되어 있는 경우에는 MATLAB 설치 폴더 아래에 있는 MATLAB Runtime 설치 프로그램을 실행하여 설치합니다. ...

    Wi-Fi 카드 2.4GHz로만 동작시키기

    Wi-Fi 카드 2.4GHz로만 동작시키기 별도의 Wi-Fi AP 장치를 두지 않고 아래와 같은 기기들로만 Wi-Fi 네트워크를 구성하고자 할 때 주변 기기들이 2.4GHz만 지원하기 때문에 PC에서 실행하는 AP가 항상 2.4GHz를 사용하도록 Wi-Fi 카드를 설정해 주어야 합니다. 기기 Wi-Fi 카드 주파수 대역 Wi-Fi Direct 지원 PC (Windows 10) 2.4GHz, 5GHz O 주변 기기들 2.4GHz X Wi-Fi 카드별 주파수 대역 선택 방법 Windows 시작 메뉴에서 설정 을 클릭합니다. Windows 설정 화면에서 네트워크 및 인터넷 을 클릭합니다. 설정 화면의 왼쪽 메뉴바에서 Wi-Fi 를 클릭합니다. 화면 오른쪽 관련 설정 구역에 있는 어댑터 옵션 변경 을 클릭합니다. 설정을 바꾸고자 하는 Wi-Fi 카드 항목을 선택하고 마우스 오른쪽을 누른 다음 속성 메뉴를 클릭합니다. 대화상자의 네트워킹 탭 화면에 있는 구성 버튼을 클릭합니다. 장치 속성 대화상자의 고급 탭 화면으로 이동합니다. 제시되는 속성 항목들은 제품별로 다르며 자세한 사항은 아래의 제품별 설명을 참고하여 값을 설정하시기 바랍니다. Intel Dual Band Wireless-AC 7265 기술 사양 주파수 대역: 2.4GHz, 5GHz 무선 표준: 802.11ac 주파수 대역 선택 장치 속성 대화상자에서 아래와 같이 선택합니다. Wireless Mode 1. 802.11a => 5GHz 4. 802.11b/g => 2.4GHz (이 항목 선택) 6. 802.11a/b/g => 2.4GHz, 5GHz Intel Dual Band Wireless-AC 8265 기술 사양 주파수 대역: 2.4GHz, 5GHz 무선 표준: 802.11ac 주파수 대역 선택 장치 속성 대화상자에서 아래와 같이 ...