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の場所からnpnpの場所に00が入る場合を順番に関係なく選ぶことであり、したがって次のようになる。

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 ↩︎