前回の練習問題 2元ハフマン符号を構成せよ 平均符号長を求めよ 0.363×1+0.174×3+...+0.021×5=2.660 1.000 0 1 0.637 0.359 0.278 0.185 A B C D E F G H 確率 0.363 0.174 0.143 0.098 0.087 0.069 0.045 0.021 0.135 0.066 0.363 A 0 0.174 B 100 0.143 C 110 0.098 D 1010 0.087 E 1011 0.069 F 1110 0.045 G 11110 0.021 H 11111 1 前回の練習問題 確率 4元ハフマン符号を構成せよ A 0.363 確率の小さな4つの木を併合すれば良い? B 0.174 ⇒ 最後に,節点の個数が足りなくなるかも... C 0.143 ⇒ 一回の併合で,4 – 1 = 3 個の木が消失 D 0.098 ⇒ 最後,1 個の木になって終了するには, E 0.087 最初に 3k + 1 個の節点が必要 F 0.069 G 0.045 ? H 0.021 確率 0 のダミー節点を 2 個加え,通報数を10 = 3×3 +1に 1.000 a 0.363 A a b 0.174 B b d c 0.143 C c 0.098 D da 0.320 0.087 E db 0.069 F dc 0.066 0.045 G dda 0.021 H ddb 0 * 0 * 2 本日の講義 ハフマン符号の性能と限界 ハフマン符号化の拡張 ブロック符号化と平均符号長 情報源符号化定理 情報源符号化の限界 非等長ブロックハフマン符号化 ランレングス符号化 3 平均符号長について 情報源符号化に求められる性質: 瞬時復号可能であること(自動的に一意復号可能となる) 平均符号長ができるだけ小さいこと ⇒ ハフマン符号が有力候補 一意復号可能な 符号のクラス ハフマン符号は,どれくらい 「良い」符号なのか? ⇒ 平均符号長の限界定理 瞬時復号可能な 符号のクラス ハフマン符号 4 平均符号長の限界定理 定常情報源 S から発生する通報を一個ずつ, 瞬時復号可能な符号Cにより符号化することを考える 通報は M 通り,各通報の発生確率は p1, ..., pM [定理] 任意の符号について,平均符号長は必ず L H1(S) となる ...どんなに効率的でも,平均符号長は1次エントロピー以上 平均符号長が L < H1(S) + 1となる符号を構成できる ...平均符号長が1次エントロピーに迫る符号を作ることが可能 5 シャノンの補助定理 定理の証明にあたり,補助定理(補題)をひとつ導入 (シャノンの補助定理,Shannon’s lemma) [補題] q1 + ... + qM 1 を満たす任意の正数 q1, ..., qM に対し, M M i 1 i 1 pi log 2 qi pi log 2 pi ( H1 ( S )) 等号成立は,p1 = q1, ..., pM = qM のとき,かつそのときのみ. 6 シャノンの補助定理の証明 M M i 1 i 1 pi log 2 qi pi log 2 pi 証明:不等式の左辺 – 右辺を考えると, M M M qi M pi qi pi log 2 qi pi log 2 pi pi log 2 ( log e ) pi i 1 log e 2 pi i 1 i 1 i 1 M y = – logex 1 O y=1–x M pi qi 1 (1 ) ( pi qi ) pi i 1 log e 2 i 1 log e 2 M M M 1 1 ( pi qi ) (1 qi ) log e 2 i 1 log e 2 i 1 i 1 0 qi / pi = 1 (i = 1, ..., M) のとき等号成立 7 符号長限界定理の証明(前半) Cの符号語長をl1, ..., lM とし,qi = 2–liとおく.クラフトの不等式より 2l1 2 lM q1 qM 1. li = – log2qi なので,平均符号長は M M i 1 i 1 L pi li pi log 2 qi . シャノンの補助定理を用いて, M M i 1 i 1 L pi log 2 qi pi log 2 pi H1 ( S ). 等号成立は,p1 = q1, ..., pM = qM のとき,かつそのときのみ (前半証明終了) 8 符号長限界定理の証明(後半) 以下の不等式を満たすよう,整数 li を定める. log 2 pi li log 2 pi 1. これより 2–li 2log pi =pi であり, 2 l1 2 l M M pi 1. i 1 したがって l1, ..., lM はクラフトの不等式を満足し, この符号長を持つ(瞬時に復号可能な)符号を構成可能. この符号の平均符号長は M M M M i 1 i 1 i 1 i 1 pi li pi ( log 2 pi 1) pi log 2 pi pi H1 ( S ) 1. (後半証明終了) 9 符号長限界定理とハフマン符号 [定理](再掲) 任意の符号について,平均符号長は必ず L H1(S) となる 平均符号長が L < H1(S) + 1となる符号を構成できる ハフマン符号では,平均符号長が,必ずL < H1(S) + 1となる ...実際には,もっと強い証明が可能 ハフマン符号よりも平均符号長の小さな瞬時符号は存在しない (ハフマン符号はコンパクト符号 (compact code)である) 証明は,符号木の大きさに関する帰納法による(以下略). 10 ハフマン符号とブロック化 ハフマン符号...一個の通報を,一個の符号語に変換する 平均符号長は,かならず1以上となる 2元情報源の符号化には向かない A B A C C A 通報 確率 C1 C2 A 0.8 0 1 0 10 0 11 11 0 B 0.2 1 0 1.0 1.0 平均符号長 複数の通報をまとめて符号化(ブロック符号化)すると... 通報あたりの平均符号長を1以下にできるかも A B A C C A 2元情報源の符号化にも利用可能 10 1101 01 11 ブロック符号化のイメージ 通報の系列 ABCBCBBCAA... ブロック化 ブロック化された AB CBC BB CAA... 通報の系列 等長ブロック化 非等長ブロック化 ブロック詳細化法 ランレングス法 ハフマン符号化 符号語系列 01 10 001 1101... 12 等長ブロック符号化の例(1) 確率 符号語 0 A 0.6 10 B 0.3 11 C 0.1 AA AB AC BA BB BC CA CB CC 確率 0.36 0.18 0.06 0.18 0.09 0.03 0.06 0.03 0.01 符号語 0 100 1100 101 1110 11110 1101 111110 111111 左表のとおりハフマン符号化をすると, 平均符号長は 0.6×1 + 0.3×2 + 0.1×2 = 1.4 長さ2のブロックを考える AAの発生確率 = 0.6×0.6=0.36 .... 左表のとおりハフマン符号化をすると, 平均符号長は 0.36×1 + 0.18×3 + ... + 0.01×6 = 2.67 通報一個当たりでは,2.67 / 2 = 1.335 ⇒ 少し効率が良くなった 13 等長ブロック符号化の例(2-1) 確率 符号語 0 A 0.8 1 B 0.2 AA AB BA BB 確率 符号語 0.64 0 0.16 10 0.16 110 0.04 111 平均符号長は 0.8×1 + 0. 2×1 = 1.0 長さ2のブロックを考える AAの発生確率 = 0.8×0.8=0.64 .... 平均符号長は 0.64×1 + 0.16×2 + ... + 0.04×3 = 1.56 通報一個当たりでは,1.56 / 2 = 0.78 ⇒ 2元情報源でも,効率改善 14 等長ブロック符号化の例(2-2) AAA AAB ABA ABB BAA BAB BBA BBB 確率 0.512 0.128 0.128 0.032 0.128 0.032 0.032 0.008 符号語 0 100 101 11100 110 11101 11110 11111 長さ3のブロックを考える AAAの発生確率 = 0.83=0.512 .... 平均符号長は 0.512×1 +... + 0.008×5 = 2.184 通報一個当たりでは,2.184 / 3 = 0.728 ブロック長 一通報あたり平均符号長 1 1.0 ブロック長を大きくすると, 2 0.78 一通報あたり平均符号長は 3 0.728 小さくなる(効率が良くなる) : : 15 ブロック符号の平均符号長 ブロック長を大きくすると,一通報あたり平均符号長は小さくなる ⇒ どこまで小さくなるのか? n 個単位でブロック化した通報=n 次拡大情報源Snの通報1個 ⇒ 講義前半で紹介した平均符号長の限界定理が適用できる ブロック符号の平均符号長をLnとすると,H1(Sn) Ln < H1(Sn)+1. 一通報当たりの平均符号長に換算すると... H1 ( S n ) Ln H1 ( S n ) 1 n n n n 16 シャノンの情報源符号化定理 H1 ( S n ) Ln H1 ( S n ) 1 n n n n H1(Sn) / n は,情報源 S の n 次拡大エントロピー Hn(S) n → ∞のとき, H1(Sn) / n → H(S)...情報源 S の極限エントロピー 1/n→0 [シャノンの情報源符号化定理] 情報源Sから発生する通報は,一通報あたりの平均符号長が H(S) L < H(S) + e である瞬時復号可能な符号に符号化可能 17 情報源符号化定理の意味するところ 情報源Sから発生する通報は,一通報あたりの平均符号長が H(S) L < H(S) + e である瞬時復号可能な符号に符号化可能 ブロック長を長くしてハフマン符号を使えば,効率的にはベスト どれだけ頑張っても,極限エントロピーの壁は越えられない 確率 符号語 0 A 0.8 1 B 0.2 H(S) = 0.723 ブロック長 一通報あたり平均符号長 1 1.0 2 0.78 3 0.728 : : : : 0.723 + e 18 ブロック符号化法の実用性 効率面からは,ブロック化+ハフマン符号が最良な方法 ブロック長を大きくすれば,いくらでも理論限界値に近づける 実用面から見たデメリット: 通報の発生確率を,あらかじめ知っておく必要がある (⇒ 次回講義で触れる予定) 符号の定義(通報と符号語の対応表)が巨大になる 対応表1行を記憶するのに1バイト必要だとすると... ブロック長 8...256バイト ブロック長 16...64キロバイト ブロック長 32...4ギガバイト 19 非等長ブロック符号化 ここまでのブロック符号化:符号化対象のパターンは同じ長さ ⇒ 発生確率の非常に小さなパターンにも符号語定義が必要 ⇒ 対応表の巨大化 A B AA B A B A 符号化対象のパターンが,異なる長さを持つことを許す ⇒ 非等長 (unequal-length) ブロック化.ただし 各パターンの発生確率が,ある程度均衡すること 任意の通報系列が,パターンにブロック化できること ...どのようにパターンを定義するかが鍵となる A B AA B A B A 20 パターンの定義方法について パターン定義の戦略1:ブロック詳細化(頻出パターンの細分化) 1. 長さ1のパターンを用意する 2. 発生頻度の高いパターンを細分化し,分割する 3. 所望のパターン数になるまで 2 を繰り返す 例:P(A) = 0.8, P(B) = 0.2,所望パターン数4のとき A 0.8 B 0.2 AA 0.64 AB 0.16 B 0.2 AAA AAB AB B 0.512 0.128 0.16 0.2 任意の系列を,{AAA, AAB, AB, B} にブロック化可能 21 非等長ブロック化時の平均符号長 前スライドのパターンに対し, ハフマン符号を定義(右表) パターン AAA AAB AB B 確率 符号語 0.512 0 0.128 100 0.16 101 0.2 11 n個の通報ブロック... 符号語系列の長さは 0.512n×1 + 0.128n×3 + 0.16n×3 + 0.2n×2 = 1.776n 通報系列の長さは 0.512n×3 + 0.128n×3 + 0.16n×2 + 0.2n×1 = 2.44n 一通報あたりの符号長は,1.776n / 2.44n = 0.728 ...ブロック長3(対応表8行)のときと同程度の効率 (cf. p.15) 22 パターンの定義方法について:ラン長の利用 パターン定義の戦略2:記号のランによりパターン定義 (ランレングス法) 記号のラン(run):系列中の,同一記号からなる部分系列 A B B AAAAA B AAA B 長さ1のAのラン 長さ3のAのラン 長さ0のAのラン 長さ5のAのラン 特定記号のランの長さだけ与えられれば,元の系列を復元可能 ⇒ ランの長さを符号化しよう! 23 ラン長の上限 非常に長いランが発生することも... ⇒ランの長さに上限を設け,上限以上のランは短く分割して表現 上限を3とした場合 ラン長 表現方法 0 0 1 1 2 2 3 3+0 4 3+1 5 3+1 6 3+3+0 7 3+3+1 : : ABBAAAAABAAAB を表現する: Aが1個発生し,Bが発生 Aが0個発生し,Bが発生 Aが3個以上発生 Aが2個発生し,Bが発生 Aが3個以上発生 Aが0個発生し,Bが発生 24 ランレングスハフマン符号 ランレングスハフマン符号 (run-length Huffman code) 通報系列中の特定記号のラン長を符号化したハフマン符号 ⇒ 通報の発生頻度に偏りがある場合,非常に有効 p(A) = 0.9, p(B) = 0.1 のとき ラン長 0 1 2 3以上 符号化されるパターン B AB AAB AAA 発生確率 0.1 0.09 0.081 0.729 符号語 10 110 111 0 ABBAAAAABAAAB: 1, 0, 3+, 2, 3+, 0 ⇒ 110 10 0 111 0 10 AAAABAAAAABAAB: 3+, 1, 3+, 2, 2 ⇒ 0 110 0 111 111 AAABAAAAAAAAB: 3+, 0, 3+, 3+, 2 ⇒ 0 10 0 0 111 25 符号化例 S: 記憶のない2元定常情報源,p(A) = 0.9, p(B) = 0.1 エントロピーは H(S) = –0.9log20.9 – 0.1log20.1 = 0.469 通報 確率 符号語 A 0.9 0 B 0.1 1 単純なハフマン符号化: 平均符号長は1 等長ハフマンブロック符号化 (n = 3) 通報 確率 符号語 通報 確率 符号語 AAA 0.729 0 BAA 0.081 1110 AAB 0.081 100 BAB 0.009 1011 ABA 0.081 110 BBA 0.009 11110 ABB 0.009 1010 BBB 0.009 11111 平均符号長 1.661, 一通報あたりの平均符号長 1.661 / 3 = 0.55 26 符号化例(続) ランレングスハフマン符号化(符号語数を8に設定) ラン長 確率 符号語 ラン長 確率 符号語 0 0.1 110 4 0.066 1011 1 0.09 1000 5 0.059 1110 2 0.081 1001 6 0.053 1111 3 0.073 1010 7+ 0.478 0 nブロックでは... 符号語系列 0.1n×3+...+0.478n×1=2.466n 通報系列 0.1n×1+...+0.053×7+0.478×7=5.216n (ラン長 k ⇒ k 個のAと一個のB なので通報数では k+1) 一通報あたりの平均符号長は 2.466n / 5.216n = 0.47 27 本日のまとめ 平均符号長の限界定理 シャノンの情報源符号化定理 ハフマン符号の拡張的利用法 ブロック符号化 非等長ブロック符号化 ブロック詳細化法 ランレングス法 (ブロック詳細化の特殊ケース,と考えることも可能) 28 練習問題 通報とその発生確率を入力すれば,ハフマン符号を構成する プログラムを作成せよ ブロック符号が構成できるよう,上記プログラムを改造せよ 適当な通報と発生確率を定め,一通報あたりの平均符号長が ブロック長によりどう変化するか,プログラム実験を行え 29
© Copyright 2024 ExpyDoc