logo

정보이론에서 부호화, 복호화 📂양자정보이론

정보이론에서 부호화, 복호화

양자정보이론
[ 펼치기 · 접기 ]

정의1

알파벳들의 집합을 Σ\Sigma라고 하자. 다음과 같이 정의되는 fnf_{n}압축률compression rate0<α10 \lt \alpha \le 1코딩 함수encoding scheme, 부호화라고 한다.

fn:Σn{0,1}αn f_{n} : \Sigma^{n} \to \left\{ 0, 1 \right\}^{\lfloor \alpha n \rfloor}

아래와 같은 gng_{n}을 압축률이 α\alpha디코딩 함수decoding scheme, 복호화라고 한다.

gn:{0,1}αnΣn g_{n} : \left\{ 0, 1 \right\}^{\lfloor \alpha n \rfloor} \to \Sigma^{n}

설명

쉽게 말해서 압축률이란 알파벳들을 2진수로 매핑할 때, 0011의 개수를 알파벳의 개수로 나눈 것이다. 예를들어 LESSERAFIM101(2)\text{LESSERAFIM} \mapsto 101_{(2)}과 같은 매핑이라면 압축률은 다음과 같다.

0.3=310={1,0,1}{L,E,S,S,E,R,A,F,I,M} 0.3 = \dfrac{3}{10} = \dfrac{\left| \left\{ 1, 0, 1 \right\} \right|}{ \left| \left\{ L, E, S, S, E, R, A, F, I, M \right\} \right| }

데이터의 양이 많으면 이를 효율적으로 저장하고 전송하는데에 어려움이 있다. 그래서 정보이론에서는 메세지 mΣnm \in \Sigma^{n}이 얼마나 효율적으로 압축될 수 있는지에 관심을 갖는다. 효율적이라는 말은 압축 뿐 아니라 복원에도 포함된다. m1m \mapsto 1과 같이 매핑하면 엄청난 효율로 압축한 것이지만, 이 11을 원래의 메세지 mm으로 복원하는 것은 불가능하다. 따라서 m=gn(fn(m))m = g_{n}(f_{n}(m))을 만족하는 fn,gnf_{n}, g_{n}이 존재하도록하는 최소의 α\alpha를 찾는 것이 곧 메세지를 효율적으로 압축하는 것이다. 이는 정보이론의 아버지 클로드 섀넌에 의해 수학적으로 정리되었다.

  • 잡음이 없는 코딩 정리
  • 잡음이 있는 채널 코딩 정리

본 글에서는 메세지의 효율적인 압축에 대해 좀 더 나이브하게 설명한다. 0011로 이루어진 길이가 nn인 메세지를 보내려는 상황을 생각하자. 메세지에서 00이 등장할 확률이 pp라면 11이 나올 확률은 1p1-p이다.

큰 수의 법칙

{Xi}i=1n\left\{ X_{i} \right\}_{i=1}^{n}을 서로 독립인 확률변수이라고 하자. XiX_{i}들의 평균이 μ\mu이면, 임의의 ϵ>0\epsilon \gt 0에 대해 다음이 성립한다.

limnP(1ni=1nXiμϵ)=0 \lim\limits_{n \to \infty} P\left( \left| \dfrac{1}{n}\sum\limits_{i=1}^{n}X_{i} - \mu \right| \ge \epsilon \right) = 0

큰 수의 법칙은 시행횟수 nn이 충분히 크면, 표본평균 1ni=1nXi\dfrac{1}{n}\sum\limits_{i=1}^{n}X_{i}이 모평균 μ\mu에 충분히 가깝다는 것을 의미한다. 이에 따라서 nn이 충분히 클 때 메세지에서 00의 개수는 npnp이고 11의 개수는 n(1p)=(nnp)n(1-p) = (n - np)이다. 이러한 0011로 만들 수 있는 메세지의 경우의 수는 nn개의 자리에서 00이 들어갈 자리 npnp개를 순서에 상관없이 뽑는 것이므로 다음과 같다.

n!(np)!(nnp)! \dfrac{n!}{(np)! (n-np)!}

이 메세지들에 이진법으로 번호를 붙여 구분하려면 필요한 비트의 개수는 다음과 같다.

log2n!(np)!(nnp)! \begin{equation} \log_{2}\dfrac{n!}{(np)! (n-np)!} \end{equation}

스털링 공식

log2n!nlog2nnlog2e \log_{2} n! \approx n \log_{2} n - n \log_{2}e

(1)(1)을 스털링 공식으로 근사하면 다음과 같다.

log2n!log2(np)!log2(nnp)!(nlog2nnlog2e)(nplog2(np)nplog2e)((nnp)log2(nnp)(nnp)log2e)=nlog2nnlog2enplog2(np)+nplog2e(nnp)log2(nnp)+(nnp)log2e=nlog2nnplog2nnplog2pnlog2n(1p)+nplog2n(1p)=nlog2nnplog2nnplog2pnlog2nnlog2(1p)+nplog2n+nplog2(1p)=nplog2pnlog2(1p)+nplog2(1p)=nplog2pn(1p)log2(1p)=n(plog2p(1p)log2(1p)) \begin{align*} & \log_{2} n! - \log_{2}(np)! - \log_{2}(n-np)! \\ &\approx \left( n \log_{2} n - n \log_{2}e \right) - \left( np \log_{2} (np) - np \log_{2}e \right) \\ &\qquad - \left( (n-np) \log_{2} (n-np) - (n-np) \log_{2}e \right) \\ &= n \log_{2} n - {\color{red}\cancel{\color{black}n \log_{2}e}} - np \log_{2} (np) + {\color{green}\cancel{\color{black}np \log_{2}e}} \\ &\qquad - (n-np) \log_{2} (n-np) + ({\color{red}\cancel{\color{black}n}}-{\color{green}\cancel{\color{black}np}}) \log_{2}e \\ &= n \log_{2} n - np \log_{2} n - np \log_{2} p - n\log_{2} n(1-p) + np\log_{2} n(1-p) \\ &= n \log_{2} n - np \log_{2} n - np \log_{2} p \\ &\qquad - n\log_{2} n - n\log_{2}(1-p) + np\log_{2} n + np\log_{2} (1-p) \\ &= - np \log_{2} p - n\log_{2}(1-p) + np\log_{2} (1-p) \\ &= - np \log_{2} p - n(1-p)\log_{2}(1-p) \\ &= n\Big(- p \log_{2} p - (1-p)\log_{2}(1-p) \Big) \end{align*}

괄호 안의 식은 엔트로피이다. 따라서 다음을 얻는다.

log2n!(np)!(nnp)!nH(p) \log_{2}\dfrac{n!}{(np)! (n-np)!} \approx nH(p)

따라서 nn이 충분히 클 때 nH(p)nH(p)개의 비트로 코딩하는 것이 효율적이고, 효율적인 압축률은 H(p)=nH(p)nH(p) = \dfrac{nH(p)}{n}이다. 이 결과는 확률변수 XX의 엔트로피란 곧 XX의 독립시행으로 만들어지는 메세지의 압축 효율이라는 것을 의미한다.

위의 내용을 일반적으로 얘기해보자. 어떤 알파벳 xix_{i}가 등장할 확률을 p(xi)p(x_{i})라고 하면 메세지에서 알파벳 xix_{i}가 등장하는 횟수는 평균적으로 np(xi)np(x_{i})이다. 알파벳을 k2k \ge 2개 써서 만든 길이가 nn인 메세지의 수는 다음과 같다.

n!1ik(np(xi))! \dfrac{n!}{\prod\limits_{1\le i \le k}(np(x_{i}))!}

이 메세지들에 이진법으로 번호를 붙이면,

log2n!1ik(np(xi))!=log2n!1iklog2(np(xi))!(nlog2nnlog2e)1ik(np(xi)log2(np(xi))nplog2e)=n1ikp(xi)log2p(xi)=nH \begin{align*} &\log_{2} \dfrac{n!}{\prod\limits_{1\le i \le k}(np(x_{i}))!} \\ &= \log_{2}n! - \sum\limits_{1\le i \le k}\log_{2}(np(x_{i}))! \\ &\approx \left( n \log_{2} n - n \log_{2}e \right) - \sum\limits_{1\le i \le k}\Big( np(x_{i})\log_{2}(np(x_{i})) - np\log_{2}e \Big) \\ &= - n\sum\limits_{1\le i \le k} p(x_{i})\log_{2}p(x_{i}) \\ &= - nH \end{align*}


  1. 김영훈·허재성, 양자 정보 이론 (2020), p258~261 ↩︎