기본 콘텐츠로 건너뛰기

동전 던지기 정보량이 1 비트보다 작을 수도 있다?

동전 던지기 정보량이 1 비트보다 작을 수도 있다?

다음 두 가지 사항이 이 글을 이해하는데 도움이 될 것입니다.

  • 미시 상태를 대상으로 계산하는 값
    • 정보량
  • 거시 상태를 대상으로 계산하는 값
    • 정보량에 대한 기댓값
    • 엔트로피

본문에서 동전의 앞면과 뒷면을 지칭할 때 아래 기호를 사용하기도 합니다.

  • hh: 동전 앞면(head)
  • tt: 동전 뒷면(tail)

미시 상태(microstate), 거시 상태(macrostate) 정의

동전 열 개를 던지는 시행에서 미시 상태와 거시 상태를 다음과 같이 정의할 수 있습니다.

  • 미시 상태: 시행의 결과로 나타난 각 동전의 면을 지칭하는 값들의 배열
    • 예: 0 1 0 0 1 1 1 0 1 0 (0: 뒷면, 1: 앞면)
  • 거시 상태: 미시 상태로부터 얻을 수 있는 값
    • 예: 5 (앞면이 나온 동전의 개수)

특정 거시 상태에 해당하는 미시 상태들의 개수는 어떤 거시 상태냐에 따라 다를 수 있습니다.

정보량, 기댓값, 엔트로피 수식 정의

아래 수식에서,

  • xx: 개별 사건
  • P(x)P(x): 사건 xx가 발생할 확률
  • I(x)I(x): 발생한 사건이 xx임을 알았을 때 얻게 되는 정보량
  • XX: 확률 변수
  • E[I(X)]E[I(X)]: 정보원으로부터 얻을 수 있는 정보량에 대한 기댓값
  • H[X]H[X]: 정보원의 엔트로피

특정 사건의 정보량(Information Content):

I(x)=log2P(x) \begin{align} I(x) = -log_2{P(x)} \end{align}

정보량에 대한 기댓값:

XX가 이산 확률 변수일 경우

E[I(X)]=iP(xi)I(xi)=iP(xi)log2P(xi) \begin{align} E[I(X)] = \sum_i P(x_i) I(x_i)= - \sum_i P(x_i) log_2{P(x_i)} \end{align}

정보원의 엔트로피(Entropy):

H(X)=E[I(X)] \begin{align} H(X) = E[I(X)] \end{align}

예시-1. P(h)=12P(h)=\frac{1}{2}인 동전 한 개 던지기

두 번 중 한 번의 확률로 앞면이 나오는 동전을 던져서 나온 결과를 알고 있는 A가 B에게 결과 값을 전달하는 상황에서 B가 얻을 정보량과 기댓값을 계산합니다.

P(h)=12 \begin{align} P(h) = \frac{1}{2} \end{align}

I(h)=log2P(h)=log212=1I(t)=log2P(t)=log212=1 \begin{align} I(h) = -log_2{P(h)} = -log_2{\frac{1}{2}} = 1 \\ I(t) = -log_2{P(t)} = -log_2{\frac{1}{2}} = 1 \end{align}

E[I(X)]=12×log21212×log212=1 \begin{align} E[I(X)] = -\frac{1}{2} \times log_2{\frac{1}{2}} -\frac{1}{2} \times log_2{\frac{1}{2}} = 1 \end{align}

  • 동전 뒷면이 나온 사건의 정보량이 1이므로 이 사건을 다른 사건, 즉 동전 앞면이 나온 사건과 구분하여 지칭하기 위하여 1 비트가 필요할까요?
    • 1 비트를 사용하여 뒷면이면 0, 앞면이면 1로 표시하여 전달할 수 있습니다.

예시-2. P(h)=34P(h)=\frac{3}{4}인 동전 한 개 던지기

네 번 중 세 번의 확률로 앞면이 나오는 동전을 던져서 나온 결과를 알고 있는 A가 B에게 결과 값을 전달하는 상황에서 B가 얻을 정보량과 기댓값을 계산합니다.

P(h)=34 \begin{align} P(h) = \frac{3}{4} \end{align}

I(h)=log2P(h)=log2340.415I(t)=log2P(t)=log214=2 \begin{align} & I(h) = -log_2{P(h)} = -log_2{\frac{3}{4}} \approx 0.415 \\ & I(t) = -log_2{P(t)} = -log_2{\frac{1}{4}} = 2 \end{align}

E[I(X)]=34×log23414×log2140.811 \begin{align} E[I(X)] = -\frac{3}{4} \times log_2{\frac{3}{4}} -\frac{1}{4} \times log_2{\frac{1}{4}} \approx 0.811 \end{align}

  • 동전 앞면이 나온 사건의 정보량이 0.415이므로 이 사건을 다른 사건, 즉 동전 뒷면이 나온 사건과 구분하여 지칭하기 위하여 0.415 비트가 필요할까요?
    • 비트가 정보 전달의 최소 단위이므로 1 비트보다 작은 비트는 가능하지 않습니다. 그러므로 1 비트를 사용하여 뒷면이면 0, 앞면이면 1로 표시하여 전달할 수 있습니다.
    • 그렇다면 앞면이 나온 사건의 정보량이 0.415라는 것을 0.415 비트가 필요하다고 해석하면 안되는 것일까요?
  • 동전 뒷면이 나온 사건의 정보량이 2이므로 이 사건을 다른 사건, 즉 동전 앞면이 나온 사건과 구분하여 지칭하기 위하여 2 비트가 필요할까요?
    • 2 비트를 사용하지 않고 1 비트를 사용하여 뒷면이면 0, 앞면이면 1로 표시하여 전달할 수 있습니다.
    • 그렇다면 뒷면이 나온 사건의 정보량이 2라는 것을 2 비트가 필요하다고 해석하면 안되는 것일까요?

예시-3. P(h)=34P(h)=\frac{3}{4}인 동전 열 개 던지기

이번에는 열 개의 동전을 던지고 그 결과를 A가 B에게 전달하는 상황을 상상해 봅니다.

아래 수식에서,

  • indind: 개별 사건을 지칭
  • mm: 앞면이 나온 횟수
  • nn: 뒷면이 나온 횟수 (10m10 - m)
  • pp: 동전 앞면이 나올 확률
  • qq: 동전 뒷면이 나올 확률 (1p1-p)

개별 사건(미시 상태)를 대상으로 계산

  • 앞면이 나온 횟수에 해당하는 개별 사건의 발생 확률

Pind(m)=pmqn=pm(1p)10m \begin{align} P_{ind}(m) &= p^m q^n \\ &= p^m (1-p)^{10 - m} \end{align}

  • 앞면이 나온 횟수에 해당하는 개별 사건의 정보량

Iind(m)=log2pmqn=log2pm(1p)10m=mlog2p(10m)log2(1p)=mlog234(10m)log214=201.585×m \begin{align} I_{ind}(m) &= -log_2{p^m q^n} \\ &= -log_2{p^m {(1-p)}^{10-m}} \\ &= -mlog_2{p} -(10-m)log_2{(1-p)} \\ &=-mlog_2{\frac{3}{4}} - (10-m)log_2{\frac{1}{4}}\\ &= 20-1.585\times m \end{align}

  • 앞면이 나온 횟수에 해당하는 개별 사건이 정보량에 대한 기댓값에 기여하는 정도

Pind(m)Iind(m)=(pm(1p)10m)×(201.585×m) \begin{align} P_{ind}(m)I_{ind}(m) = (p^m (1-p)^{10 - m}) \times (20 - 1.585 \times m) \end{align}

정보원(거시 상태)을 대상으로 계산

  • 앞면이 나온 횟수에 해당하는 가능한 경우의 수

10Cm=10!m!(10m)! \begin{align} {}_{10} C_m = \frac{10!}{m!(10-m)!} \end{align}

  • 앞면이 나온 횟수에 해당하는 사건이 발생할 확률

P(m)=10Cm×Pind(m)=10Cm×pm(1p)10m \begin{align} P(m) = {}_{10} C_m \times P_{ind}(m) = {}_{10} C_m \times p^m (1-p)^{10-m} \end{align}

  • 앞면이 나온 횟수에 해당하는 개별 사건들이 정보량에 대한 기댓값에 기여하는 정도

10Cm×Pind(m)×Iind(m) \begin{align} {}_{10} C_m \times P_{ind}(m) \times I_{ind}(m) \end{align}

  • 개별 사건들이 정보량에 대한 기댓값에 기여하는 정도를 모두 합한 값

E[I]=m10Cm×Pind(m)×Iind(m) \begin{align} E[I] = \sum_m {}_{10} C_m \times P_{ind}(m) \times I_{ind}(m) \end{align}

정보량에 대한 기댓값(엔트로피): 8.1128

정보량에 대한 기댓값과 데이터 압축

예를 들어 8,000,0008,000,000 개의 동전을 던질 때 정보량에 대한 기댓값은 다음과 같습니다.

E=0.811×8,000,000=6,488,000 \begin{align} E = 0.811 \times 8,000,000 = 6,488,000 \end{align}

이 데이터를 전송할 때 어느 정도의 크기가 필요한지 계산해 봅시다.

  • 동전 한 개 당 1비트로 기록할 경우 데이터 크기(단위: 바이트)

8,000,0008=1,000,000 \begin{align} \frac{8,000,000}{8} = 1,000,000 \end{align}

  • 정보량에 대한 기댓값을 고려할 경우 데이터 크기(단위: 바이트)

6,488,0008=811,000 \begin{align} \frac{6,488,000}{8} = 811,000 \end{align}

위 두 가지 계산 결과는 정보량을 유지하면서도 전송 데이터의 크기를 줄일 수 있음을 보여줍니다.

압축 알고리즘들이 데이터에 나타나는 규칙성을 활용하여 데이터 크기를 줄여나간다는 점을 생각해 보면 앞면이 등장할 확률이 높은 동전들을 던져서 얻는 결과에 어느 정도의 규칙성이 있어서 앞면 뒷면 나올 확률이 같은 동전의 경우보다 압축률이 높아질 것이라 예상할 수 있습니다.

<예시-2>의 두 가지 질문을 다시 살펴보겠습니다.

  • 그렇다면 앞면이 나온 사건의 정보량이 0.415라는 것을 0.415 비트가 필요하다고 해석하면 안되는 것일까요?
  • 그렇다면 뒷면이 나온 사건의 정보량이 2라는 것을 2 비트가 필요하다고 해석하면 안되는 것일까요?

해석의 문제니까 안된다고 말할 이유는 없습니다. 다만 동전 한 개만을 대상으로 해석하면 비트보다 작은 정보의 단위를 직관적으로 생각하는 데에는 어려움이 있습니다. 그래서 아주 많은 동전들을 대상으로 얻는 데이터를 압축해서 전송하는 상황을 가지고 이야기하면 이해가 좀 더 쉽습니다.

Written with StackEdit.

댓글

이 블로그의 인기 게시물

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 주파수 대역 선택 장치 속성 대화상자에서 아래와 같이 ...