tecktom.com

授業で習った形との対応

2026年10月15日8分で読めますAI生成教科書『虎の巻』第1部 第5章 データ圧縮
目次
  1. エントロピーと平均符号長の不等式
  2. Lagrange 乗数で最適な長さを出す
  3. 統計学との対応:符号長と対数尤度
  4. 木下の層

AI 生成・木下が未勉強

相対エントロピーから情報と物理を組み立てる 第1部 第5章 §1.5.6 ★★ 教科書の「L≥HL\ge H の証明」「Lagrange 乗数による最適な長さ」「Huffman の表」を、この章の分解式と並べる

エントロピーと平均符号長の不等式

学部の情報理論の授業や教科書では、エントロピーを 22 を底にして H(X)=−∑ipilog⁡2piH(X)=-\sum_ip_i\log_2p_i ビットと定義し、平均符号長を L=∑ipiliL=\sum_ip_il_i と書くことが多い。この記法では、情報源符号化定理の1記号版は

H(X)≤L<H(X)+1(ビット),∑i2−li≤1(1.5.11)H(X)\le L<H(X)+1\qquad(\text{ビット}),\qquad \sum_i2^{-l_i}\le1\tag{1.5.11}

と書かれる。この章の記法との対応は、H教科書=H(X)/ln⁡2H_{\text{教科書}}=H(X)/\ln2、L=ℓˉL=\bar\ell、li=ℓ(xi)l_i=\ell(x_i) である。

(1.5.11) の左の不等式の証明として教科書でよく見るのは、ln⁡y≤y−1\ln y\le y-1 を使う次の計算である。qi=2−liq_i=2^{-l_i} とおくと

H−L=∑ipilog⁡22−lipi=1ln⁡2∑ipiln⁡qipi≤1ln⁡2∑ipi(qipi−1)=1ln⁡2(∑iqi−1)≤0.H-L=\sum_ip_i\log_2\frac{2^{-l_i}}{p_i}=\frac1{\ln2}\sum_ip_i\ln\frac{q_i}{p_i}\le\frac1{\ln2}\sum_ip_i\Bigl(\frac{q_i}{p_i}-1\Bigr)=\frac1{\ln2}\Bigl(\sum_iq_i-1\Bigr)\le0 .

途中の ∑ipiln⁡(qi/pi)≤∑iqi−1\sum_ip_i\ln(q_i/p_i)\le\sum_iq_i-1 は、qq の和が 11 のとき −D(p ∥ q)≤0-D(p\,\|\,q)\le0 そのもので、Gibbs の不等式と呼ばれることもある。この計算は、分解 (1.5.5) の右辺の2つの非負の項(D(p ∥ qC)D(p\,\|\,q_C) と −ln⁡K-\ln K)を、1回の不等式でまとめて捨てたものにあたる。2つを分けて書くと、捨てたものが「分布のずれ」と「木の使い残し」の2種類であることが見える。

Lagrange 乗数で最適な長さを出す

教科書のもう1つの定番は、長さが整数であるという条件を外して、∑ipili\sum_ip_il_i を ∑i2−li=1\sum_i2^{-l_i}=1 のもとで最小にする計算である。Lagrange 関数

L=∑ipili+λ(∑i2−li−1)\mathcal L=\sum_ip_il_i+\lambda\Bigl(\sum_i2^{-l_i}-1\Bigr)

を lil_i で微分して 00 とおくと pi=λln⁡2⋅2−lip_i=\lambda\ln2\cdot2^{-l_i} で、制約と ∑ipi=1\sum_ip_i=1 から λln⁡2=1\lambda\ln2=1、すなわち li∗=−log⁡2pil_i^*=-\log_2p_i を得る。そのときの値は ∑ipili∗=H\sum_ip_il_i^*=H ビットである。この章の言葉では、li∗=−log⁡2pil_i^*=-\log_2p_i は qC=pq_C=p と選ぶことで、D(p ∥ qC)=0D(p\,\|\,q_C)=0 にする選び方にあたる。長さを整数に戻すと D=0D=0 は一般に達成できず、切り上げた Shannon 符号は 11 ビット未満の代価を、Huffman 符号はその中で最小の代価を払う。

表 1.5.1 データ圧縮の教科書の書き方とこの章の書き方の対応。
教科書の書き方この章の書き方
エントロピーH(X)=−∑pilog⁡2piH(X)=-\sum p_i\log_2p_i [ビット]H(p)/ln⁡2H(p)/\ln2(HH は nat)
平均符号長L=∑piliL=\sum p_il_iℓˉ(C)=⟨ℓ(X)⟩p\bar\ell(C)=\langle \ell(X) \rangle _p
Kraft の不等式∑2−li≤1\sum2^{-l_i}\le1K(C)≤1K(C)\le1、qC=2−ℓ/Kq_C=2^{-\ell}/K
下界の証明ln⁡y≤y−1\ln y\le y-1(ln⁡2)ℓˉ=H+D(p ∥ qC)−ln⁡K(\ln2)\bar\ell=H+D(p\,\|\,q_C)-\ln K
最適な長さli∗=−log⁡2pil_i^*=-\log_2p_i(Lagrange)qC=pq_C=p で D=0D=0
Huffman 符号最小の2つをまとめる表2 の負べきの分布で D(p ∥ qC)D(p\,\|\,q_C) を最小化

統計学との対応:符号長と対数尤度

統計学の授業では、データ x1,…,xnx_1,\dots,x_n に対してモデル qθq_\theta の対数尤度 ∑kln⁡qθ(xk)\sum_k\ln q_\theta(x_k) を最大にする θ\theta を最尤推定量と呼ぶ。第1部第3章では、対数尤度の平均が −H(p^)−D(p^ ∥ qθ)-H(\hat p)-D(\hat p\,\|\,q_\theta) に等しいことから、最尤推定は D(p^ ∥ qθ)D(\hat p\,\|\,q_\theta) の最小化と同じだと示した。ここではそれを符号長の言葉で読み直す。この章の言葉では、−log⁡2qθ(x)-\log_2q_\theta(x) は分布 qθq_\theta を見込んだ符号の(整数に丸める前の)符号長なので、対数尤度を最大にすることは、データを qθq_\theta 用の符号で書いたときの全長を最小にすることと同じである。最尤推定は「手元のデータを最も短く書ける符号を選ぶ」ことと言い換えることができる。データの経験分布を p^\hat p とすると、全長は n(H(p^)+D(p^ ∥ qθ))/ln⁡2n\bigl(H(\hat p)+D(\hat p\,\|\,q_\theta)\bigr)/\ln2 ビットで、第1項は θ\theta によらないので、最も短く書ける θ\theta は D(p^ ∥ qθ)D(\hat p\,\|\,q_\theta) を最小にする θ\theta と一致する。推定と相対エントロピーの関係は、第1部第7章(第1部第7章)で Fisher 情報として、第1部第8章(第1部第8章)で大偏差として扱う。

例題 1.5.6 最尤推定は最短の符号を選ぶ ★★

オリジナル3文字 a,b,c\mathrm a,\mathrm b,\mathrm c からなる長さ 2020 の列に、a\mathrm a が 1010 回、b\mathrm b が 66 回、c\mathrm c が 44 回現れる。各文字が独立に分布 q=(qa,qb,qc)q=(q_{\mathrm a},q_{\mathrm b},q_{\mathrm c}) で出ると見込んだ符号で、この列を書くのに必要な長さ(整数に丸める前の理想的な符号長)を

ℓ(q)=−10log⁡2qa−6log⁡2qb−4log⁡2qc\ell(q)=-10\log_2q_{\mathrm a}-6\log_2q_{\mathrm b}-4\log_2q_{\mathrm c}

とする。

  1. ℓ(q)\ell(q) を最小にする qq を求め、それが qq の最尤推定量(経験分布)と一致することを確かめよ。
  2. 最小値を経験分布のエントロピーで表し、数値で求めよ。
  3. 一様の見込み u=(13,13,13)u=(\tfrac13,\tfrac13,\tfrac13)(何も見込まない符号)のときとの差を、相対エントロピーで表して数値で求めよ。
解答

(1) 経験分布を p^=(10,6,4)/20=(12,310,15)\hat p=(10,6,4)/20=(\tfrac12,\tfrac3{10},\tfrac15) とおくと、ℓ(q)=−20∑xp^(x)log⁡2q(x)\ell(q)=-20\sum_x\hat p(x)\log_2q(x) で、上で見た全長の分解のとおり

ℓ(q)=20ln⁡2(H(p^)+D(p^ ∥ q))\ell(q)=\frac{20}{\ln2}\bigl(H(\hat p)+D(\hat p\,\|\,q)\bigr)

と分かれる。第1項は qq によらず、第2項は D≥0D\ge0 で等号は q=p^q=\hat p のときに限るので、最小を与えるのは q=p^=(12,310,15)q=\hat p=(\tfrac12,\tfrac3{10},\tfrac15) である。尤度 qa10qb6qc4q_{\mathrm a}^{10}q_{\mathrm b}^{6}q_{\mathrm c}^{4} の対数は −(ln⁡2) ℓ(q)-(\ln2)\,\ell(q) なので、尤度の最大と ℓ\ell の最小は同じ qq で起こり、最尤推定量(各文字の回数 ÷20\div20)に一致する。

(2) 最小値は ℓ(p^)=20 H(p^)/ln⁡2\ell(\hat p)=20\,H(\hat p)/\ln2。H(p^)=12ln⁡2+310ln⁡103+15ln⁡5≈0.3466+0.3612+0.3219=1.0297H(\hat p)=\tfrac12\ln2+\tfrac3{10}\ln\tfrac{10}3+\tfrac15\ln5\approx0.3466+0.3612+0.3219=1.0297 nat なので、ℓ(p^)≈20×1.0297/0.6931≈29.71\ell(\hat p)\approx20\times1.0297/0.6931\approx29.71 ビットである。

(3) ℓ(u)=20log⁡23≈31.70\ell(u)=20\log_23\approx31.70 ビット。差は

ℓ(u)−ℓ(p^)=20 D(p^ ∥ u)ln⁡2=20 (ln⁡3−H(p^))ln⁡2≈1.99 ビット\ell(u)-\ell(\hat p)=\frac{20\,D(\hat p\,\|\,u)}{\ln2}=\frac{20\,\bigl(\ln3-H(\hat p)\bigr)}{\ln2}\approx1.99\ \text{ビット}

で、経験分布と見込みのずれ D(p^ ∥ u)≈0.0690D(\hat p\,\|\,u)\approx0.0690 nat が、1記号あたりの代価として全長に現れている。文字が2種類の場合は、序章の例題 1.1.6(硬貨の最尤推定)を符号長で読み直したものになる。ただし、実際に p^\hat p の符号で送るには、受け手に p^\hat p の値も伝える必要があり、そのぶんの長さが別にかかる。この勘定はこの章では扱わない。

木下の勉強ステータス

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

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

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