相対エントロピーから情報と物理を組み立てる 第1部 第5章 §1.5.5 ★★★ 記号を n n n 個まとめて符号にすると、1記号あたりの長さは H / ln 2 H/\ln2 H / ln 2 に 1 / n 1/n 1/ n の速さで近づく。固定長でも、典型集合を使えば率 H H H で誤り確率を 0 0 0 にできる
ブロック符号:可変長の場合
無記憶情報源の記号を n n n 個まとめた X n = ( X 1 , … , X n ) X^n=(X_1,\dots,X_n) X n = ( X 1 , … , X n ) を1つの記号とみなし、その上に符号を作る。X n X^n X n の分布は p n ( x n ) = p ( x 1 ) ⋯ p ( x n ) p^n(x^n)=p(x_1)\cdots p(x_n) p n ( x n ) = p ( x 1 ) ⋯ p ( x n ) で(右肩の n n n は系列の長さで、冪ではない)、独立な確率変数のエントロピーは足し算になる(第1部第2章 ・第1部第3章 )ので H ( X n ) = n H ( X ) H(X^n)=nH(X) H ( X n ) = n H ( X ) である。
定理 1.5.12(情報源符号化定理(可変長)★★★)
X n X^n X n の上の一意に復号できる符号の平均符号長の最小値を ℓ ˉ n ∗ \bar\ell_n^* ℓ ˉ n ∗ とすると
H ( X ) ln 2 ≤ ℓ ˉ n ∗ n < H ( X ) ln 2 + 1 n (1.5.9) \frac{H(X)}{\ln2}\ \le\ \frac{\bar\ell_n^*}{n}\ <\ \frac{H(X)}{\ln2}+\frac1n\tag{1.5.9} ln 2 H ( X ) ≤ n ℓ ˉ n ∗ < ln 2 H ( X ) + n 1 ( 1.5.9 )
が成り立つ。したがって n → ∞ n\to\infty n → ∞ で、1記号あたりの平均符号長の最小値は H ( X ) / ln 2 H(X)/\ln2 H ( X ) / ln 2 ビットに収束する。
証明 X n X^n X n を1つの情報源とみなし、定理 1.5.7 と定理 1.5.8 (q = p q=p q = p )を当てると n H ( X ) / ln 2 ≤ ℓ ˉ n ∗ < n H ( X ) / ln 2 + 1 nH(X)/\ln2\le\bar\ell_n^*<nH(X)/\ln2+1 n H ( X ) / ln 2 ≤ ℓ ˉ n ∗ < n H ( X ) / ln 2 + 1 。n n n で割ればよい。
下界は、D ≥ 0 D\ge0 D ≥ 0 が n n n によらず成り立つことによる。上界の幅が 1 / n 1/n 1/ n になるのは、整数に切り上げる損が符号語1つにつき1ビット未満で、それを n n n 個の記号で分け合うからである。1.5.4 節の最後の例(確率 0.9 0.9 0.9 、0.1 0.1 0.1 の2値の情報源)で、ブロック長 n n n の Huffman 符号の1記号あたりの平均符号長を数値で求めたものが図 1.5.3 である。n = 1 n=1 n = 1 の 1 1 1 ビットから、n = 2 n=2 n = 2 で 0.645 0.645 0.645 、n = 4 n=4 n = 4 で 0.493 0.493 0.493 、n = 6 n=6 n = 6 で 0.470 0.470 0.470 ビットと下がり、下界 0.469 0.469 0.469 ビットに近づく。ただし単調ではなく、n = 7 n=7 n = 7 では 0.474 0.474 0.474 ビットと n = 6 n=6 n = 6 より長くなる。(1.5.9) が保証するのは 1 / n 1/n 1/ n の幅の帯に入ることだけで、帯の中のどこに落ちるかは n n n ごとの 2 2 2 の負べきへの合い方で決まる。
図 1.5.3 確率 ( 0.9 , 0.1 ) (0.9,0.1) ( 0.9 , 0.1 ) の2値の無記憶情報源を n n n 個ずつまとめて Huffman 符号にしたときの、1記号あたりの平均符号長(点線と点)。実線は定理 1.5.12 の下界と上界。値は 2 n 2^n 2 n 個の記号に Huffman の手続きを当てて数値で求めた(verify_ch1-05.py)。
固定長の符号と典型集合
可変長の符号は、記号列ごとに長さが変わる。これに対して、長さ n n n の記号列をすべて同じ長さ n R nR n R ビットの符号語で表す固定長の符号を考える(R R R を符号化率 と呼び、単位はビット毎記号)。n R nR n R ビットで区別できる記号列は 2 n R 2^{nR} 2 n R 個までなので、∣ X ∣ n \lvert \mathcal X\rvert ^n ∣ X ∣ n 個のすべてに符号語を割り当てられない場合は、いくつかの列をあきらめ、それが出たら誤りとする。誤りの確率をいくらでも小さくできる率の下限が、ふたたび H / ln 2 H/\ln2 H / ln 2 になる。
ここで第1部第2章 の漸近等分割性(AEP)を使う。ϵ > 0 \epsilon>0 ϵ > 0 に対して、
A ϵ ( n ) = { x n : ∣ − 1 n ln p n ( x n ) − 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} A ϵ ( n ) = { x n : − n 1 ln p n ( x n ) − H ( X ) ≤ ϵ } ( 1.5.10 )
を典型集合 と呼ぶ。第1部第2章で示したとおり、大数の法則から Pr ( X n ∈ A ϵ ( n ) ) → 1 \Pr(X^n\in A_\epsilon^{(n)})\to1 Pr ( X n ∈ A ϵ ( n ) ) → 1 (n → ∞ n\to\infty n → ∞ )で、典型集合に入る列の確率はどれも e − n ( H + ϵ ) ≤ p n ( x n ) ≤ e − n ( H − ϵ ) \mathrm{e}^{-n(H+\epsilon)}\le p^n(x^n)\le\mathrm{e}^{-n(H-\epsilon)} e − n ( H + ϵ ) ≤ p n ( x n ) ≤ e − n ( H − ϵ ) を満たし、その個数は ∣ A ϵ ( n ) ∣ ≤ e n ( H + ϵ ) \lvert A_\epsilon^{(n)}\rvert \le\mathrm{e}^{n(H+\epsilon)} ∣ A ϵ ( n ) ∣ ≤ e n ( H + ϵ ) である。
定理 1.5.13(情報源符号化定理(固定長)★★★)
符号化率 R R R (ビット毎記号)について次が成り立つ。
(i) R ln 2 > H ( X ) R\ln2>H(X) R ln 2 > H ( X ) なら、誤り確率が n → ∞ n\to\infty n → ∞ で 0 0 0 になる固定長の符号の列がある。
(ii) R ln 2 < H ( X ) R\ln2<H(X) R ln 2 < H ( X ) なら、どの固定長の符号の列でも、誤り確率は n → ∞ n\to\infty n → ∞ で 1 1 1 に近づく。
証明 (i) R ln 2 > H + ϵ R\ln2>H+\epsilon R ln 2 > H + ϵ となる ϵ > 0 \epsilon>0 ϵ > 0 をとる。典型集合の列にだけ番号を付けて、その番号を n R nR n R ビットで書く。個数は e n ( H + ϵ ) < 2 n R \mathrm{e}^{n(H+\epsilon)}<2^{nR} e n ( H + ϵ ) < 2 n R なので番号は足りる。誤りは X n X^n X n が典型集合に入らないときだけで、その確率は n → ∞ n\to\infty n → ∞ で 0 0 0 になる。
(ii) R ln 2 < H − 2 ϵ R\ln2<H-2\epsilon R ln 2 < H − 2 ϵ となる ϵ > 0 \epsilon>0 ϵ > 0 をとる。符号語を割り当てた列の集合を B n B_n B n (∣ B n ∣ ≤ 2 n R \lvert B_n\rvert \le2^{nR} ∣ B n ∣ ≤ 2 n R )とすると、正しく戻る確率は
Pr ( X n ∈ B n ) ≤ Pr ( X n ∈ B n ∩ A ϵ ( n ) ) + Pr ( X n ∉ A ϵ ( n ) ) ≤ 2 n R e − n ( H − ϵ ) + Pr ( X n ∉ 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)}) . Pr ( X n ∈ B n ) ≤ Pr ( X n ∈ B n ∩ A ϵ ( n ) ) + Pr ( X n ∈ / A ϵ ( n ) ) ≤ 2 n R e − n ( H − ϵ ) + Pr ( X n ∈ / A ϵ ( n ) ) .
第1項は e n ( R ln 2 − H + ϵ ) ≤ e − n ϵ \mathrm{e}^{n(R\ln2-H+\epsilon)}\le\mathrm{e}^{-n\epsilon} e n ( R l n 2 − H + ϵ ) ≤ e − n ϵ で 0 0 0 に、第2項も 0 0 0 に行く。この評価は、第1部第2章で示した「確率 1 − δ 1-\delta 1 − δ を集める集合は e n ( H − ϵ ) \mathrm{e}^{n(H-\epsilon)} e n ( H − ϵ ) 程度の大きさを要する」という命題を、符号化率の言葉で言い直したものである。
(ii) の証明が示すのは、典型集合の1つ1つの列の確率がほぼ e − n H \mathrm{e}^{-nH} e − n H にそろっているので、e n H \mathrm{e}^{nH} e n H 個より少ない列をどう選んでも、確率の合計がほとんど集まらない、ということである。固定長でも可変長でも限界が同じ H H H になるのは、確率の重みがほぼ e n H \mathrm{e}^{nH} e n H 個の列に一様に広がっているからである。可変長の側では、同じ事実を分解 (1.5.5) と D ≥ 0 D\ge0 D ≥ 0 の形で使った。
例題 1.5.5 有限の n n n で固定長の符号を作る ★★
オリジナル 1 1 1 が確率 0.1 0.1 0.1 、0 0 0 が確率 0.9 0.9 0.9 で独立に出る列を、長さ n = 100 n=100 n = 100 ごとに固定長の符号にする。
1 1 1 の個数が少ない列ほど確率が大きい。1 1 1 の個数が k k k 以下の列に番号を付け、それ以外が出たら誤りとする。誤り確率が 1 % 1\% 1% 以下になる最小の k k k を求めよ。
そのとき必要なビット数を求め、n H ( X ) / ln 2 nH(X)/\ln2 n H ( X ) / ln 2 と生の 100 100 100 ビットと比べよ。
n n n を 1000 1000 1000 、10000 10000 10000 と大きくすると、1記号あたりのビット数はどう変わるか。
解答 (1) 1 1 1 の個数 K K K は2項分布 B i n ( 100 , 0.1 ) \mathrm{Bin}(100,0.1) Bin ( 100 , 0.1 ) に従う。Pr ( K ≤ 17 ) < 0.99 \Pr(K\le17)<0.99 Pr ( K ≤ 17 ) < 0.99 、Pr ( K ≤ 18 ) = 0.9954 \Pr(K\le18)=0.9954 Pr ( K ≤ 18 ) = 0.9954 なので、k = 18 k=18 k = 18 。
(2) 番号を付ける列の数は N = ∑ j = 0 18 ( 100 j ) N=\sum_{j=0}^{18}\binom{100}{j} N = ∑ j = 0 18 ( j 100 ) で、log 2 N = 65.08 \log_2N=65.08 log 2 N = 65.08 だから、66 66 66 ビットで足りる。n H ( X ) / ln 2 = 100 × 0.469 = 46.9 nH(X)/\ln2=100\times0.469=46.9 n H ( X ) / ln 2 = 100 × 0.469 = 46.9 ビットで、生の 100 100 100 ビットよりは短いが、限界からは 19 19 19 ビットほど離れている。
(3) 同じ手順(誤り確率 1 % 1\% 1% 以下になる最小の k k k を選ぶ)で数値計算すると、n = 1000 n=1000 n = 1000 では k = 123 k=123 k = 123 で1記号あたり 0.533 0.533 0.533 ビット、n = 10000 n=10000 n = 10000 では k = 1070 k=1070 k = 1070 で 0.490 0.490 0.490 ビットとなり、H ( X ) / ln 2 = 0.469 H(X)/\ln2=0.469 H ( X ) / ln 2 = 0.469 ビットに近づく。誤り確率を 1 % 1\% 1% に固定したまま n n n を大きくすると、K K K のゆらぎ n ⋅ 0.1 ⋅ 0.9 \sqrt{n\cdot0.1\cdot0.9} n ⋅ 0.1 ⋅ 0.9 が n n n に比べて小さくなり、番号を付ける列の数の対数が n H / ln 2 nH/\ln2 n H / ln 2 に近づく。近づき方は可変長の場合(図 1.5.3 )よりずっと遅く、誤り確率 1 % 1\% 1% を守るために、平均より 2 ∼ 3 2\sim3 2 ∼ 3 標準偏差多い 1 1 1 を含む列まで番号を付ける必要がある。
分布を知らない場合
ここまでの符号はすべて情報源の分布 p p p を知っていることを前提にしている。p p p を知らずに q q q を使うと、(1.5.7) のとおり1記号あたり D ( p ∥ q ) / ln 2 D(p\,\|\,q)/\ln2 D ( p ∥ q ) / ln 2 ビットの代価がかかり、n n n を大きくしても消えることはない。データを読みながら分布を推定して符号を作り替える方法(Lempel–Ziv の方法1 1 J. Ziv and A. Lempel (1977), IEEE Transactions on Information Theory 23 , 337–343; (1978), 同 24 , 530–536. など)では、推定が正確になるにつれて1記号あたりの代価が 0 0 0 に近づくことが知られている。このような符号をユニバーサル符号 と呼ぶ。推定と符号長の関係は 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