tecktom.com

出てくるもの (2):情報源符号化定理

2026年10月15日9分で読めますAI生成教科書『虎の巻』第1部 第5章 データ圧縮
目次
  1. ブロック符号:可変長の場合
  2. 固定長の符号と典型集合
  3. 木下の層

AI 生成・木下が未勉強

相対エントロピーから情報と物理を組み立てる 第1部 第5章 §1.5.5 ★★★ 記号を nn 個まとめて符号にすると、1記号あたりの長さは H/ln⁡2H/\ln2 に 1/n1/n の速さで近づく。固定長でも、典型集合を使えば率 HH で誤り確率を 00 にできる

ブロック符号:可変長の場合

無記憶情報源の記号を nn 個まとめた Xn=(X1,…,Xn)X^n=(X_1,\dots,X_n) を1つの記号とみなし、その上に符号を作る。XnX^n の分布は pn(xn)=p(x1)⋯p(xn)p^n(x^n)=p(x_1)\cdots p(x_n) で(右肩の nn は系列の長さで、冪ではない)、独立な確率変数のエントロピーは足し算になる(第1部第2章・第1部第3章)ので H(Xn)=nH(X)H(X^n)=nH(X) である。

定理 1.5.12(情報源符号化定理(可変長)★★★)

XnX^n の上の一意に復号できる符号の平均符号長の最小値を ℓˉn∗\bar\ell_n^* とすると

H(X)ln⁡2 ≤ ℓˉn∗n < H(X)ln⁡2+1n(1.5.9)\frac{H(X)}{\ln2}\ \le\ \frac{\bar\ell_n^*}{n}\ <\ \frac{H(X)}{\ln2}+\frac1n\tag{1.5.9}

が成り立つ。したがって n→∞n\to\infty で、1記号あたりの平均符号長の最小値は H(X)/ln⁡2H(X)/\ln2 ビットに収束する。

証明

XnX^n を1つの情報源とみなし、定理 1.5.7 と定理 1.5.8(q=pq=p)を当てると nH(X)/ln⁡2≤ℓˉn∗<nH(X)/ln⁡2+1nH(X)/\ln2\le\bar\ell_n^*<nH(X)/\ln2+1。nn で割ればよい。

下界は、D≥0D\ge0 が nn によらず成り立つことによる。上界の幅が 1/n1/n になるのは、整数に切り上げる損が符号語1つにつき1ビット未満で、それを nn 個の記号で分け合うからである。1.5.4節の最後の例(確率 0.90.9、0.10.1 の2値の情報源)で、ブロック長 nn の Huffman 符号の1記号あたりの平均符号長を数値で求めたものが図 1.5.3 である。n=1n=1 の 11 ビットから、n=2n=2 で 0.6450.645、n=4n=4 で 0.4930.493、n=6n=6 で 0.4700.470 ビットと下がり、下界 0.4690.469 ビットに近づく。ただし単調ではなく、n=7n=7 では 0.4740.474 ビットと n=6n=6 より長くなる。(1.5.9) が保証するのは 1/n1/n の幅の帯に入ることだけで、帯の中のどこに落ちるかは nn ごとの 22 の負べきへの合い方で決まる。

図

図 1.5.3 確率 (0.9,0.1)(0.9,0.1) の2値の無記憶情報源を nn 個ずつまとめて Huffman 符号にしたときの、1記号あたりの平均符号長(点線と点)。実線は定理 1.5.12 の下界と上界。値は 2n2^n 個の記号に Huffman の手続きを当てて数値で求めた(verify_ch1-05.py)。

固定長の符号と典型集合

可変長の符号は、記号列ごとに長さが変わる。これに対して、長さ nn の記号列をすべて同じ長さ nRnR ビットの符号語で表す固定長の符号を考える(RR を符号化率と呼び、単位はビット毎記号)。nRnR ビットで区別できる記号列は 2nR2^{nR} 個までなので、∣X∣n\lvert \mathcal X\rvert ^n 個のすべてに符号語を割り当てられない場合は、いくつかの列をあきらめ、それが出たら誤りとする。誤りの確率をいくらでも小さくできる率の下限が、ふたたび H/ln⁡2H/\ln2 になる。

ここで第1部第2章の漸近等分割性(AEP)を使う。ϵ>0\epsilon>0 に対して、

Aϵ(n)={xn: ∣−1nln⁡pn(xn)−H(X)∣≤ϵ}(1.5.10)A_\epsilon^{(n)}=\Bigl\{x^n:\ \Bigl|-\frac1n\ln p^n(x^n)-H(X)\Bigr|\le\epsilon\Bigr\}\tag{1.5.10}

を典型集合と呼ぶ。第1部第2章で示したとおり、大数の法則から Pr⁡(Xn∈Aϵ(n))→1\Pr(X^n\in A_\epsilon^{(n)})\to1(n→∞n\to\infty)で、典型集合に入る列の確率はどれも e−n(H+ϵ)≤pn(xn)≤e−n(H−ϵ)\mathrm{e}^{-n(H+\epsilon)}\le p^n(x^n)\le\mathrm{e}^{-n(H-\epsilon)} を満たし、その個数は ∣Aϵ(n)∣≤en(H+ϵ)\lvert A_\epsilon^{(n)}\rvert \le\mathrm{e}^{n(H+\epsilon)} である。

定理 1.5.13(情報源符号化定理(固定長)★★★)

符号化率 RR(ビット毎記号)について次が成り立つ。

  1. (i) Rln⁡2>H(X)R\ln2>H(X) なら、誤り確率が n→∞n\to\infty で 00 になる固定長の符号の列がある。
  2. (ii) Rln⁡2<H(X)R\ln2<H(X) なら、どの固定長の符号の列でも、誤り確率は n→∞n\to\infty で 11 に近づく。
証明

(i) Rln⁡2>H+ϵR\ln2>H+\epsilon となる ϵ>0\epsilon>0 をとる。典型集合の列にだけ番号を付けて、その番号を nRnR ビットで書く。個数は en(H+ϵ)<2nR\mathrm{e}^{n(H+\epsilon)}<2^{nR} なので番号は足りる。誤りは XnX^n が典型集合に入らないときだけで、その確率は n→∞n\to\infty で 00 になる。

(ii) Rln⁡2<H−2ϵR\ln2<H-2\epsilon となる ϵ>0\epsilon>0 をとる。符号語を割り当てた列の集合を BnB_n(∣Bn∣≤2nR\lvert B_n\rvert \le2^{nR})とすると、正しく戻る確率は

Pr⁡(Xn∈Bn)≤Pr⁡(Xn∈Bn∩Aϵ(n))+Pr⁡(Xn∉Aϵ(n))≤2nR e−n(H−ϵ)+Pr⁡(Xn∉Aϵ(n)).\Pr(X^n\in B_n)\le\Pr(X^n\in B_n\cap A_\epsilon^{(n)})+\Pr(X^n\notin A_\epsilon^{(n)}) \le2^{nR}\,\mathrm{e}^{-n(H-\epsilon)}+\Pr(X^n\notin A_\epsilon^{(n)}) .

第1項は en(Rln⁡2−H+ϵ)≤e−nϵ\mathrm{e}^{n(R\ln2-H+\epsilon)}\le\mathrm{e}^{-n\epsilon} で 00 に、第2項も 00 に行く。この評価は、第1部第2章で示した「確率 1−δ1-\delta を集める集合は en(H−ϵ)\mathrm{e}^{n(H-\epsilon)} 程度の大きさを要する」という命題を、符号化率の言葉で言い直したものである。

(ii) の証明が示すのは、典型集合の1つ1つの列の確率がほぼ e−nH\mathrm{e}^{-nH} にそろっているので、enH\mathrm{e}^{nH} 個より少ない列をどう選んでも、確率の合計がほとんど集まらない、ということである。固定長でも可変長でも限界が同じ HH になるのは、確率の重みがほぼ enH\mathrm{e}^{nH} 個の列に一様に広がっているからである。可変長の側では、同じ事実を分解 (1.5.5) と D≥0D\ge0 の形で使った。

例題 1.5.5 有限の nn で固定長の符号を作る ★★

オリジナル11 が確率 0.10.1、00 が確率 0.90.9 で独立に出る列を、長さ n=100n=100 ごとに固定長の符号にする。

  1. 11 の個数が少ない列ほど確率が大きい。11 の個数が kk 以下の列に番号を付け、それ以外が出たら誤りとする。誤り確率が 1%1\% 以下になる最小の kk を求めよ。
  2. そのとき必要なビット数を求め、nH(X)/ln⁡2nH(X)/\ln2 と生の 100100 ビットと比べよ。
  3. nn を 10001000、1000010000 と大きくすると、1記号あたりのビット数はどう変わるか。
解答

(1) 11 の個数 KK は2項分布 Bin(100,0.1)\mathrm{Bin}(100,0.1) に従う。Pr⁡(K≤17)<0.99\Pr(K\le17)<0.99、Pr⁡(K≤18)=0.9954\Pr(K\le18)=0.9954 なので、k=18k=18。

(2) 番号を付ける列の数は N=∑j=018(100j)N=\sum_{j=0}^{18}\binom{100}{j} で、log⁡2N=65.08\log_2N=65.08 だから、6666 ビットで足りる。nH(X)/ln⁡2=100×0.469=46.9nH(X)/\ln2=100\times0.469=46.9 ビットで、生の 100100 ビットよりは短いが、限界からは 1919 ビットほど離れている。

(3) 同じ手順(誤り確率 1%1\% 以下になる最小の kk を選ぶ)で数値計算すると、n=1000n=1000 では k=123k=123 で1記号あたり 0.5330.533 ビット、n=10000n=10000 では k=1070k=1070 で 0.4900.490 ビットとなり、H(X)/ln⁡2=0.469H(X)/\ln2=0.469 ビットに近づく。誤り確率を 1%1\% に固定したまま nn を大きくすると、KK のゆらぎ n⋅0.1⋅0.9\sqrt{n\cdot0.1\cdot0.9} が nn に比べて小さくなり、番号を付ける列の数の対数が nH/ln⁡2nH/\ln2 に近づく。近づき方は可変長の場合(図 1.5.3)よりずっと遅く、誤り確率 1%1\% を守るために、平均より 2∼32\sim3 標準偏差多い 11 を含む列まで番号を付ける必要がある。

分布を知らない場合

ここまでの符号はすべて情報源の分布 pp を知っていることを前提にしている。pp を知らずに qq を使うと、(1.5.7) のとおり1記号あたり D(p ∥ q)/ln⁡2D(p\,\|\,q)/\ln2 ビットの代価がかかり、nn を大きくしても消えることはない。データを読みながら分布を推定して符号を作り替える方法(Lempel–Ziv の方法1J. Ziv and A. Lempel (1977), IEEE Transactions on Information Theory 23, 337–343; (1978), 同 24, 530–536.下の脚注へなど)では、推定が正確になるにつれて1記号あたりの代価が 00 に近づくことが知られている。このような符号をユニバーサル符号と呼ぶ。推定と符号長の関係は 1.5.6節で、最尤推定と符号長の最小化が同じ問題であることとして見る。

1 J. Ziv and A. Lempel (1977), IEEE Transactions on Information Theory 23, 337–343; (1978), 同 24, 530–536.

木下の勉強ステータス

木下はまだこの記事を勉強していません。

AI(Claude)が書いた教材を、木下が勉強しながら公開しています。式と数値は検算していますが、誤りが残っているかもしれません。誤りのご指摘・削除のご依頼をいただければ直します。 連絡先:support@tecktom.com

← AI生成教科書『虎の巻』の記事一覧へ