290 likes | 723 Views
前回の練習問題. 12ページの例において,3次,4次のエントロピーを求めよ.可能であれば, n 次エントロピーを計算するプログラムを書け. 以下を示せ I ( X ; Y ) = H ( X ) – H ( X | Y ) I ( X ; Y ) = I ( Y ; X ) I ( X ; Y ) = H ( X ) + H ( Y ) – H ( X , Y ) http://narayama.naist.jp/~kaji/lecture/ に解答例,プログラム掲載. 前回の補足. マルコフ情報源の(極限)エントロピー:
E N D
前回の練習問題 • 12ページの例において,3次,4次のエントロピーを求めよ.可能であれば,n 次エントロピーを計算するプログラムを書け. • 以下を示せ • I(X; Y) = H(X) – H(X | Y) • I(X; Y) = I(Y; X) • I(X; Y) = H(X) + H(Y) – H(X, Y) http://narayama.naist.jp/~kaji/lecture/ に解答例,プログラム掲載
前回の補足 マルコフ情報源の(極限)エントロピー: 各状態について,その状態を記憶のない情報源と考え, 極限エントロピー(一次エントロピー)を計算すればよい ... 厳密には「なぜこれで良いか」を考える必要がある 説明資料(証明概要)を http://narayama.naist.jp/~kaji/lecture/ に掲載しました
comments to foreign students • To help understanding this class, I try to provide English notes in the PowerPoint slide file. • Download ppt files from http://narayama.naist.jp/~kaji/lecture/ and check notes in the file.
第二部:情報をコンパクトに表現する 情報に含まれるムダを削り,情報を圧縮する 情報源から発生した通報を記録するときには... • 計算機で扱いやすい文字を使って表現しないといけない ⇒ 適切に符号化 (encode)する必要がある どんな符号化でもOK? • できるだけ正確に記録しないとダメ (⇒ 第二部 + 第三部) • できるだけ効率的に記録しないとダメ • 記録に必要となる手間,時間,データ量... を節約したい
情報源符号化 情報源符号化(source coding): 情報源から発生した通報(または通報の系列)を, 記録系や処理系で利用可能な記号系列に変換すること • 正確で手間のかからない符号化 • 一意復号可能性,瞬時復号可能性 • 効率の良い(圧縮率の高い)符号化 • ハフマン符号 • ハフマン符号の拡張,その他の符号化法 • 符号化効率の限界 • 関連する話題 本日の講義
通報 晴 曇 雨 符号語 00 10 11 情報源符号化と用語の定義 例:天気予報(通報は「晴」「曇」「雨」)の符号化 • 記録系で利用できる記号(アルファベット)は 0 または 1 符号 ≠符合 一個ずつが, それぞれ符号語 • 通報とアルファベット系列の一対一関係を考える • 符号語(codeword):通報に対応するアルファベット系列 • 00 は符号語,10 は符号語,01 は符号語でない • 符号(code):符号語の集合,上例では {00, 10, 11} • 2元符号... アルファベットが2種類の記号
符号化と復号 • 符号化(encode):通報を符号語に変換すること • 復号(decode): 符号語を通報に変換すること 注意: • 符号化の際,符号語と符号語の間には,分離記号を挟まない ○ 晴曇晴 ⇒ 001000 × 晴曇晴 ⇒ 00 10 00 • 分離記号が欲しい場合... 分離記号も,アルファベットや符号の定義に含めること • 「空白文字でも,一文字は一文字」 (空白文字など)
C1 00 10 01 11 C2 0 01 011 111 C3 0 10 11 01 C4 0 10 11 0 晴 曇 雨 雪 符号に求められる性質 情報源符号化に求められる第一条件: • 符号化した結果が,正しく一意に復号できること • 符号語を,すべて異なるものにすればOK? C4 は明らかにダメ 他はOK? • C3を使って「晴,雨,晴」を符号化すると 0110 • C3を使って「雪,曇」を符号化すると 0110 • ⇒ 両者の区別がつかない...一意には復号できない
C1 00 10 01 11 C2 0 01 011 111 C3 0 10 11 01 C4 0 10 11 0 晴 曇 雨 雪 一意復号可能性 符号が一意復号可能である (uniquely decodable): • 異なる通報系列が,同一の符号語系列に符号化されないこと C1, C2は一意復号可能 C3, C4は一意復号可能でない (特異符号,singular code) C1, C2はどちらも一意復号可能だが...C2はちょっと使いにくい
C2 0 01 011 111 晴 曇 雨 雪 0 111 111 0 晴 雪 雪 晴 01 111 111 雨 雪 雪 符号 C2の問題点 • C2で「晴,雪,雪,晴」を符号化 ⇒ 符号語系列は 01111110 • この系列を一文字ずつ送る場合を考える • 7文字目まで受け取った時点では ...復号結果として,2通りの候補が存在 0 次が... 0111111 1 次が... 7文字目 8文字目以降を受け取るまで,最初の復号結果すら確定できない ⇒ 復号器内に大きなバッファが必要,大きな復号遅延の発生
左例:瞬時復号可能でない 0 ⇒ 01 100 (AD) 0110 1 ⇒ 011 01 (CA) A B C D A B C D 01 010 011 100 01 10 11 011 右例:瞬時復号可能でない 0 ⇒ 01 11 10 0? (ACB?) 0111101 1 ⇒ 011 11 01 (DCA) 瞬時復号可能性 符号が瞬時復号可能である (immediately decodable): • 符号語系列の先読みをしなくても,復号を行えること (符号語パターンが出現すれば,すぐに復号してよい)
A B C D A B C D 01 010 011 100 01 10 11 011 瞬時復号可能性と語頭条件 • 瞬時復号可能性は,工学上,非常に重要な性質 • でも,すべての系列についてチェックするのは大変 • どんなときに,瞬時復号可能でなくなるか? ⇒ ある符号語が,他の符号語の最初の部分と一致するとき 語頭となる 符号Cが瞬時復号可能となる ⇔ Cのどの符号語も,他の符号語の語頭とならないこと (語頭条件,prefix condition)
余談:語頭条件といえば... 語頭条件の確保は,システム設計全般にわたって重要 PDAの手書き入力用文字ストローク • Graffiti 1 • すべて一筆書き • prefix condition を満たす • Graffiti 2 • 二筆文字も出現 • prefix condition を満たさない
語頭条件を満たす符号の作り方 語頭条件を満たす符号の単純な作り方: • すべての符号語を,同じ長さを持つ相違なる系列とする (等長符号,equal-length code) • 符号語の最後(最初)に特別なパターンを配置する (コンマ符号,comma code) ⇒ どちらも,取り扱いは楽だが効率が悪い • 一工夫して,必要最小限の長さを持つ符号語を選んでくる (非等長符号,unequal-length code) • 符号木を利用した構成法が便利
根 葉 符号木 a元符号の符号木(code tree): • 各節点が,最大 a個の子を持つことのできる木構造 • 根...親を持たない節点 • 葉...子を持たない節点
符号木を利用した符号の構成法 M個の符号語を持つ符号の構成手順: • 葉の数がM個であるような符号木 Tを任意に構成する • Tの各枝に,0 から a の記号をラベル(名前)付けする ただし,一つの親が同一ラベルの枝を複数持ってはならない • 根から葉までの経路を考える 経路上のラベルを順に連接したものが,一個の符号語となる
0 0 00 0 0 1 1 01 0 0 10 1 1 1 1 11 符号の構成例 符号語数が4の2元瞬時復号可能符号を構成する Step 1 Step 2 Step 3 構成された符号は {00, 01, 10, 11}
1 0 0 1 0 1 1 0 0 0 0 1 0 0 1 1 1 1 0 1 0 符号の構成例 符号語数が4の瞬時復号可能符号を構成する • 符号木の選び方,ラベルの付け方には自由度がある C1={0, 10, 110, 111} C2={0, 11, 101, 100} C3={01, 000, 1011, 1010} どのようにしても語頭条件を満たす ⇒ 瞬時復号可能な符号
1 0 0 1 0 1 1 0 0 0 0 0 1 1 1 符号語の長さと符号の効率 • C1 vs. C3...どちらも,符号語数4の瞬時復号可能な符号 • 個々の符号語が短いほうが,効率が良い(コンパクトな表現) • 4つの符号語の長さを,すべて 1 にできるか? • 4つの符号語,長さを 1, 2, 2, 3 にできるか? 瞬時復号可能な符号が構成できる条件は? C1={0, 10, 110, 111} C3={01, 000, 1011, 1010}
クラフトの不等式 C = {w1, ..., wM}, |wi| = liであるa元符号とする [定理] Cが語頭条件を満たすなら,以下の不等式が成立 :クラフトの不等式 (Kraft’s inequality) 定理の逆は必ずしも成立しないが... クラフトの不等式を満たす符号語長l1, ..., lMが与えられたとき, 語頭条件を満たし,この符号長をもつ符号を構成可能
0 0 0 1 1 1 符号語長からの符号構成 • 符号語長が1, 2, 3, 3である瞬時復号可能な符号を作りたい ⇒ 深さ 1, 2, 3, 3 に葉がくるように符号木 T を構成すれば良い C1={0, 10, 110, 111} • 符号語長が1, 2, 2, 2である瞬時復号可能な符号を作りたい • 2–1 + 2–2 + 2–2 + 2–2 = 0.5 + 0.25 + 0.25 + 0.25 = 1.25 > 1 • ⇒ 無理
確率 0.4 0.3 0.2 0.1 C1 0 10 110 111 C2 111 110 10 0 晴 曇 雨 雪 符号の効率について • ここまでの議論...取り扱い上の利点を持つ符号の構成方法 • ここからの議論...取り扱い上の利点 + 効率の良さに着目 • C1とC2,どちらが良い符号? • 「晴晴曇雨晴」を符号化してみる • C1:00101100 • C2:11111111010111 8記号 14記号 • C1のほうが,通報をコンパクトに表現可能 • コンパクトさの定量的指標...符号長の加重平均(平均符号長) • C1:0.4 ×1 +0.3 ×2 +0.2 ×3 +0.1 ×3 = 1.9 • C2:0.4 ×3 +0.3 ×3 +0.2 ×2 +0.1 ×1 = 2.6
情報源符号化の指標 良い符号の三条件: • 一意復号可能であること • 瞬時復号可能であること • 平均符号長ができるだけ短いこと • 最初2つの条件だけなら,符号木を使うだけで構成可能 • 最後の条件を満たすため,符号木の作り方に一工夫する ⇒ ハフマン符号 (Huffman code) とくに断らない限り,記憶のない定常情報源を考える
ハフマン符号 一般的な性質ではなく,符号木の構成法によって定式化: • 各通報に対して節点を準備し,その発生確率を付与する 節点はそれぞれ,大きさ1の木であると考える • 木の中で発生確率最小のものを2つ選出し,以下を行う • 2つの木の根節点を子とするような,新しい根節点を作る • 新しい根節点と古い根節点を結ぶ枝に,0, 1 をラベル付け • 新しい根節点に,2つの木の発生確率の和を与える • すべての節点がつながるまで,2 の操作を繰り返す
0.15 0.6 A 0.25 B 0.1 C 0.05 D 0.6 A 0.25 B 0.1 C 0.05 D 1.0 0.4 0.4 1 0 1 0 0.15 0.15 0 1 0.6 A 0.25 B 0.1 C 0.05 D 0.6 A 0.25 B 0.1 C 0.05 D ハフマン符号の構成例 資本金による合併劇,と考えるとわかりやすいかも...
確率 0.3 0.2 0.2 0.1 0.1 0.1 符号語 A B C D E F 確率 0.2 0.1 0.3 0.3 0.1 符号語 A B C D E 練習問題 • 等長符号の場合と平均符号長を比較すると...
確率 0.3 0.2 0.2 0.1 0.1 0.1 符号語 A B C D E F ハフマン符号構成上の自由度 ハフマン符号の構成においては, • ラベル割当の自由度 • 確率の等しい節点選択の自由度 が存在するが... ⇒ どのように選択しても,平均符号長は変わらない
本日のまとめ • 情報源符号化に関する基本概念の整理 • 一意復号可能性 • 瞬時復号可能性 • クラフトの不等式 • 符号木利用による符号構成 • ハフマン符号 • 加重平均符号長による評価 • 具体的な符号構成法
確率 0.363 0.174 0.143 0.098 0.087 0.069 0.045 0.021 A B C D E F G H 練習問題 • 右の情報源を効率よく符号化できる, 2元ハフマン符号を構成せよ • 上で構成した符号の平均符号長を 求めよ • 4元ハフマン符号の構成法を検討し, 右の情報源に適した符号を構成せよ