tecktom.com

比べる2つの分布:情報源の pp と符号の qCq_C

2026年10月15日9分で読めますAI生成教科書『虎の巻』第1部 第5章 データ圧縮
目次
  1. 情報源と符号
  2. 符号が見込んでいる分布
  3. 木下の層

AI 生成・木下が未勉強

相対エントロピーから情報と物理を組み立てる 第1部 第5章 §1.5.1 ★★★ 符号を定義し、符号語の長さから分布 qCq_C を作る。符号が「どの記号が出やすいか」の見込みを持っていることを式にする

手元に記号の列があり、それを 00 と 11 の列に直して保存したい。記号ごとに 00 と 11 の列(符号語)を1つずつ割り当てるとき、よく出る記号に短い符号語を、まれな記号に長い符号語を割り当てれば、列全体は短くなる。どこまで短くできるか、というのがこの章の問いである。答えは「1記号あたり平均で H(X)/ln⁡2H(X)/\ln 2 ビットまで、それより短くはできない」で、Shannon がこれを示した1C. E. Shannon (1948), Bell System Technical Journal 27, 379–423, 623–656.下の脚注へ。この章では、この答えを相対エントロピーの非負性からそのまま出す。

鍵になるのは、符号語の長さ ℓ(x)\ell(x) の並びを確率分布 qC(x)∝2−ℓ(x)q_C(x)\propto 2^{-\ell(x)} に読み替えることである。長さ ℓ\ell の符号語を記号 xx に割り当てることは、「xx の確率はおよそ 2−ℓ2^{-\ell} だ」と見込むことと同じになる。そう読み替えると、平均の符号長は

(ln⁡2)×(平均の符号長)=H(p)+D(p ∥ qC)−ln⁡K(C)(\ln 2)\times(\text{平均の符号長})=H(p)+D(p\,\|\,q_C)-\ln K(C)

と3つの項に分かれる(K(C)≤1K(C)\le1 は後で定義する Kraft 和)。第1項は情報源だけで決まり、第2項と第3項はどちらも 00 以上なので、平均の符号長は H(p)/ln⁡2H(p)/\ln2 ビットを下回ることはない。第2項は、符号が見込んだ分布 qCq_C と本当の分布 pp のずれの代価である。この分解によって、相対エントロピー D(p ∥ q)D(p\,\|\,q) は「分布を取り違えて符号を作ると、1記号あたり D/ln⁡2D/\ln2 ビット余分にかかる」という操作的な意味を持つ。

この章の型は第1部の他の章と同じで、比べる2つの分布(情報源の pp と符号の qCq_C。1.5.1節)、qCq_C が確率分布になる理由(Kraft–McMillan の不等式。1.5.2節)、当てる性質(DD の非負性。1.5.3節)、出てくるもの(最適な符号を作る Huffman の方法と、ブロックにして限界 HH に近づく情報源符号化定理。1.5.4節・1.5.5節)の順に進み、最後に情報理論の授業での書き方と並べる(1.5.6節)。

この章では、符号の長さを数える都合で符号長をビットで測る。エントロピー HH と相対エントロピー DD はこの巻の流儀どおり自然対数(nat)で書くので、ビットに直した値は H(X)/ln⁡2H(X)/\ln2、D(p ∥ q)/ln⁡2D(p\,\|\,q)/\ln2 の形で現れる。log⁡2\log_2 は2を底とする対数である。

情報源と符号

情報源とは、有限集合 X\mathcal X に値をとる確率変数 XX のことで、その分布を p(x)p(x) と書く。X\mathcal X の元を記号と呼ぶ。同じ分布に従う独立な記号が次々に出てくる情報源を無記憶情報源と呼び、この章ではこれだけを扱う。00 と 11 を有限個並べた列(空の列も含む)の全体を {0,1}∗\{0,1\}^* と書く。

定義 1.5.1(符号と符号長)

写像 C:X→{0,1}∗C:\mathcal X\to\{0,1\}^* を(2元の)符号、C(x)C(x) を記号 xx の符号語、その長さを ℓ(x)\ell(x) と書く。記号の列 x1x2⋯xnx_1x_2\cdots x_n は、符号語をつないだ C(x1)C(x2)⋯C(xn)C(x_1)C(x_2)\cdots C(x_n) に直す(これを符号の拡大と呼ぶ)。分布 pp のもとでの平均符号長を

ℓˉ(C)=∑x∈Xp(x) ℓ(x)=⟨ℓ(X)⟩p(1.5.1)\bar\ell(C)=\sum_{x\in\mathcal X}p(x)\,\ell(x)=\langle \ell(X) \rangle _p\tag{1.5.1}

と定める。単位はビットである。

符号が使い物になるためには、受け取った 00 と 11 の列から元の記号の列がただ1通りに戻らなければならない。この要求には強さの違う2つの段階がある。

定義 1.5.2(一意に復号できる符号・語頭符号)

拡大した写像 x1⋯xn↦C(x1)⋯C(xn)x_1\cdots x_n\mapsto C(x_1)\cdots C(x_n) が、あらゆる長さ nn の記号列の全体の上で単射になるとき、CC は一意に復号できるという。どの符号語も、ほかの符号語の頭の部分(語頭)になっていないとき、CC を語頭符号(prefix code)と呼ぶ。

語頭符号は一意に復号することができる。受け取った列を頭から読み、符号語の1つと一致した時点で、その記号だと決めてよい。一致した符号語より長い符号語がその頭から始まることはないので、この判断は後の記号を見ても覆らない。この性質から、語頭符号は瞬時符号とも呼ばれる。たとえば X={a,b,c,d}\mathcal X=\{a,b,c,d\} に

C(a)=0,C(b)=10,C(c)=110,C(d)=111(1.5.2)C(a)=0,\quad C(b)=10,\quad C(c)=110,\quad C(d)=111\tag{1.5.2}

を割り当てると語頭符号になり、01101001110110100111 は頭から 0∣110∣10∣0∣1110|110|10|0|111 と区切れて acbadacbad に戻る。

語頭符号は、根から 00 と 11 の枝が出る2分木の葉と1対1に対応する(図 1.5.1)。根から葉までの枝のラベルを読んだものが符号語で、符号語の長さは葉の深さである。どの符号語もほかの符号語の語頭にならないことは、符号語に当てた節点がすべて葉で、どの符号語の節点もほかの符号語の節点の祖先にならないことと同じである。

図

図 1.5.1 語頭符号 (1.5.2) の符号の木(左)。符号語は根から葉までの枝のラベルで、長さは葉の深さ。右は各符号語 c1c2⋯cℓc_1c_2\cdots c_\ell を2進小数 0.c1c2⋯cℓ0.c_1c_2\cdots c_\ell から始まる長さ 2−ℓ2^{-\ell} の区間に対応させた図。語頭符号ではこれらの区間が重ならない(1.5.2節)。

符号が見込んでいる分布

符号語の長さの並び ℓ(x)\ell(x) から、次の量を作る。

定義 1.5.3(Kraft 和と符号の分布)

符号 CC の Kraft 和を K(C)=∑x∈X2−ℓ(x)K(C)=\sum_{x\in\mathcal X}2^{-\ell(x)} と定め、

qC(x)=2−ℓ(x)K(C)(1.5.3)q_C(x)=\frac{2^{-\ell(x)}}{K(C)}\tag{1.5.3}

を符号 CC が見込んでいる分布と呼ぶ。K(C)=1K(C)=1 の符号を完全な符号と呼ぶ。

qCq_C は和が 11 の正の数の並びなので、それだけで確率分布である。1.5.2節では、一意に復号できる符号なら必ず K(C)≤1K(C)\le1 となることを示す。したがって 2−ℓ(x)2^{-\ell(x)} そのものが、和が 11 以下の「確率の割り振り」になっている。

この読み替えには次の中身がある。語頭符号の符号の木の根から、各分かれ道で 00 と 11 を確率 12\tfrac12 ずつで選んで降りていくと、深さ ℓ\ell の葉に着く確率は 2−ℓ2^{-\ell} である。完全な符号の木では、どの分かれ道の先にも葉があるので、この降り方は必ずどこかの葉に着き、着く確率がちょうど qC(x)=2−ℓ(x)q_C(x)=2^{-\ell(x)} になる。逆に言えば、符号の受け手が受け取る 00 と 11 が公平な硬貨の列のように見えるのは、記号が qCq_C どおりに出てくるときである。符号を設計する人は、短い符号語を当てた記号ほど出やすいと見込んでいて、その見込みを確率分布の形で書いたものが qCq_C である。こうして、この章で比べる2つの分布がそろう。1つは情報源が実際に従う分布 pp、もう1つは符号が見込んでいる分布 qCq_C である。

長さ ℓ\ell の符号語は確率 2−ℓ2^{-\ell} の見込み

符号語の長さを1ビット延ばすと、見込みの確率は半分になる。長さ 11 の符号語を当てた記号は「半分の確率で出る」と見込まれ、長さ 1010 の符号語を当てた記号は「約千回に1回」と見込まれている。符号語の長さを決めることと、確率を見積もることは、ℓ=−log⁡2q\ell=-\log_2 q という換算で同じ作業になる。

例題 1.5.1 語頭符号でないが一意に復号できる符号 ★

オリジナルX={a,b,c}\mathcal X=\{a,b,c\} に C(a)=0C(a)=0、C(b)=01C(b)=01、C(c)=11C(c)=11 を割り当てる。

  1. この符号が語頭符号でないことを確かめよ。
  2. 受け取った列が「00 の後に 11 が mm 個続く」形 01m01^m のとき、最初の記号は mm の偶奇で決まることを示せ。
  3. この符号が一意に復号できることを示せ。また、瞬時に(その時点までの列だけで)最初の記号を決められないことを説明せよ。
解答

(1) C(a)=0C(a)=0 は C(b)=01C(b)=01 の語頭になっているので、語頭符号ではない。

(2) 11 で始まる符号語は 1111 だけなので、00 の後に続く 11 の連なりは、最初の記号が aa なら 1111 の繰り返しで偶数個、bb なら 0101 の 11 が1個と 1111 の繰り返しで奇数個になる。したがって mm が偶数なら 0∣11∣⋯∣11=a c⋯c0|11|\cdots|11=a\,c\cdots c、奇数なら 01∣11∣⋯∣11=b c⋯c01|11|\cdots|11=b\,c\cdots c と、どちらもただ1通りに読める。

(3) すべての符号語を逆さに読むと 0, 10, 110,\ 10,\ 11 になり、これは語頭符号である。受け取った列を後ろから読めば、逆さの語頭符号として瞬時に区切れるので、記号列はただ1通りに戻る。したがって一意に復号することができる。一方、頭から読む場合は、(2) のとおり、00 の後に続く 11 を最後まで数えないと最初の記号が aa か bb か決まらない。11 の連なりはいくらでも長くなりうるので、待つべき長さに上限がない。このため、一意に復号できても瞬時符号ではない。

1 C. E. Shannon (1948), Bell System Technical Journal 27, 379–423, 623–656.

木下の勉強ステータス

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

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

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