5 Info Theory

4,917 views

Published on

Published in: Health & Medicine, Business
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
4,917
On SlideShare
0
From Embeds
0
Number of Embeds
4
Actions
Shares
0
Downloads
7
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

5 Info Theory

  1. 1. 前回の練習問題 <ul><li>通報とその発生確率を入力すれば,ハフマン符号を構成するプログラムを作成せよ </li></ul><ul><li>ブロック符号が構成できるよう,上記プログラムを改造せよ </li></ul><ul><li>適当な通報と発生確率を定め,一通報あたりの平均符号長がブロック長によりどう変化するか,プログラム実験を行え </li></ul><ul><li>回答例は省略:「優先度付きキュー」の典型的な応用例 </li></ul><ul><ul><li>「優先度付データを登録」「優先度最大データを取り出す」 </li></ul></ul><ul><ul><li>木を「データ」,確率を「優先度」とする </li></ul></ul><ul><ul><li>「木を二つ取出し,併合して一つにして再登録」を繰返す </li></ul></ul><ul><ul><li>残った木にラベル付けして完成 </li></ul></ul>
  2. 2. 前回の復習 <ul><li>シャノンの情報源符号化定理 </li></ul><ul><ul><li>一記号あたりの平均符号長は, 必ず H 1 ( S ) 以上 </li></ul></ul><ul><ul><li>下限を超えない範囲で, H 1 ( S )+1 まで縮めることが可能 </li></ul></ul><ul><li>ブロック符号化 </li></ul><ul><ul><li>通報を複数まとめてブロック化することで, 効率が向上 </li></ul></ul><ul><ul><li>効率 = 一記号あたりの平均符号長... 圧縮率 に相当 </li></ul></ul>
  3. 3. 前回の補足(1) <ul><li>ブロック化すると,どうして効率が良くなるか? </li></ul><ul><li>理想的な符号語長は実数値となる </li></ul><ul><ul><li>P(A)=0.8, P(B)=0.2 の場合,理想的符号長は... </li></ul></ul><ul><li>現実には ,符号語は記号系列 ... 符号語長は整数値しかダメ </li></ul><ul><ul><li>理想的な値と現実の値とのあいだに ギャップが存在 </li></ul></ul><ul><ul><li>ブロック長大 </li></ul></ul><ul><ul><li>⇒ ギャップが相対的に小さくなる ⇒ 最適値に近づく </li></ul></ul><ul><li>最適な平均符号長との乖離は,ある種の近似誤差によるもの </li></ul>
  4. 4. 前回の補足(2) <ul><li>ブロック符号化の運用について </li></ul><ul><li>有限長の通報系列は,末尾部分でブロック化できない場合も </li></ul><ul><ul><li>長さ10の等長ブロック化 </li></ul></ul><ul><ul><li>⇒ 25個の通報だと,5つの通報が端数となる </li></ul></ul><ul><ul><li>ランレングス符号化 </li></ul></ul><ul><ul><li>⇒ 最後のランを終端する記号がない場合も </li></ul></ul><ul><li>通常は, 運用で問題を回避 </li></ul><ul><ul><li>最終ブロックだけ別扱い </li></ul></ul><ul><ul><li>パディング(埋め草,詰物)の利用 + 通報数の伝達 </li></ul></ul>
  5. 5. 本日の講義 <ul><li>ハフマン符号以外の符号化法について考える </li></ul><ul><li>装置化が簡単で効率が良い 符号化法 </li></ul><ul><ul><li>算術符号化法 </li></ul></ul><ul><li>通報の発生確率が事前にわからない場合 の符号化法 </li></ul><ul><ul><li>Lempel-Ziv法 </li></ul></ul><ul><li>許容範囲内での 情報劣化と引き換えに,効率を稼ぐ 符号化法 </li></ul><ul><ul><li>画像や音声の符号化法について </li></ul></ul><ul><li>ある程度独立した3つの話題の紹介 </li></ul>
  6. 6. 算術符号化法 <ul><li>装置化が簡単で効率が良い 符号化法 </li></ul>
  7. 7. ハフマン符号化と装置化の容易さについて <ul><li>ハフマン符号:通報と符号語とを一対一に対応付け </li></ul><ul><li>⇒ 符号化器,復号器の内部で,対応表を記録する必要アリ </li></ul><ul><li>⇒ 効率をよくするためには,対応表も大きくなりがち </li></ul><ul><li>算術符号 ( arithmetic code ) : </li></ul><ul><li>対応表を使わず,on-the-flyで符号化・復号を行う方式 </li></ul><ul><li>⇒ よりコンパクトな実装 が可能となる </li></ul><ul><li>通報(またはブロック)を一個ずつ符号化するのではなく, </li></ul><ul><li>通報系列全体を,ひとつの符号化系列に変換 する </li></ul><ul><li> ( 「通報系列全体で1ブロック」という考え方も ... ) </li></ul>
  8. 8. 算術符号:基本的な考え方 <ul><li>記憶のない2元定常情報源: P( A ) = p , P( B ) = 1 – p </li></ul><ul><li>長さ n の通報系列の符号化を考える ⇒ 2 n 通りの通報系列 </li></ul>p = 0.7, n = 3 の場合 <ul><li>8通りの系列 w 0 ,..., w 7 </li></ul><ul><ul><li>辞書式に並んでいること </li></ul></ul><ul><li>系列発生確率 S( w i ) を求め, </li></ul><ul><li>累積 発生確率 L( w i ) を計算する </li></ul>番号 0 1 2 3 4 5 6 7 w i AAA AAB ABA ABB BAA BAB BBA BBB S( w i ) 0.343 0.147 0.147 0.063 0.147 0.063 0.063 0.027 L( w i ) 0 0.343 0.490 0.637 0.700 0.847 0.910 0.973
  9. 9. アイデア:系列と区間 <ul><li>各系列に対し,[0,1]の 部分区間を対応付け 可能 </li></ul><ul><li>系列 w j ... 区間 I j =[ L ( w j ), L ( w j +1 )) </li></ul><ul><li>系列 w j を,区間 I j 内の代表点 </li></ul><ul><li>x  I j (実数値)により表現する </li></ul><ul><li>区間と x の 対応関係 をどう計算? </li></ul><ul><li>実数値 x をどう 表現 ? </li></ul>区間の左端 区間のサイズ 番号 0 1 2 3 4 5 6 7 w i AAA AAB ABA ABB BAA BAB BBA BBB S( w i ) 0.343 0.147 0.147 0.063 0.147 0.063 0.063 0.027 L( w i ) 0 0.343 0.490 0.637 0.700 0.847 0.910 0.973 0.343 0.147 0.147 0.063 0.147 0.063 0.063 0 0.5 1.0 0.027 AAA AAB ABA ABB BAA BAB BAB BBB
  10. 10. 区間の木表現と累積確率計算 <ul><li>系列と実数値の対応付け:二方向への計算により実現 </li></ul><ul><ul><li>系列から,対応する区間を求める </li></ul></ul><ul><ul><li>実数値から,対応する系列を求める </li></ul></ul><ul><li>⇒ 区間の木構造表現 を利用して計算すれば良い </li></ul>0.343 0.147 0.147 0.063 0.147 0.063 0.063 0.027 AAA AAB ABA ABB BAA BAB BAB BBB AA AB BA AB A B 
  11. 11. 系列から,対応する区間を求める <ul><li>根節点を定義し, S (  ) = 1, L (  ) = 0 とする </li></ul><ul><li>子節点の S ( ), L ( ) の値は, 必要に応じて再帰的に計算 する </li></ul> S(  ) = 1 L(  ) = 0 S(A)=0.7 L(A) = 0 L(B) = 0.7 A B AA AB S(AB)=0.21 L(AB) = 0.49 ABA ABB S(ABB)=0.063 L(ABB) = 0.637 ABB の区間は 0.637 ~ 0.700 着目節点の L( ) 値 着目節点の 直右の L( ) 値を記憶しておく ABB の区間は? P( A ) = p ... S( w B) = S( w )(1 – p ) L( w B) = L( w ) + S( w ) p S( w A) = S( w ) p L( w A) = L( w ) w S( w ), L( w ) w A w B
  12. 12. 実数値から,対応する系列を求める <ul><li>前スライドと同じく, S( ), L( ) の値を再帰計算 </li></ul><ul><li>目標値 x に応じて,左に進むか右に進むか二者択一 </li></ul><ul><ul><li>x が L( w B) 以下 ⇒ 左の子へ </li></ul></ul><ul><ul><li>x が L( w B) より大 ⇒ 右の子へ </li></ul></ul> S(  ) = 1 L(  ) = 0 S(A)=0.7 L(A) = 0 L(B) = 0.7 A B AA AB S(AB)=0.21 L(AB) = 0.49 S(ABA)=0.147 L(ABA) = 0.49 ABA ABB L(ABB) = 0.637 0.600 に対応する系列は? 0.600 は系列 ABA に対応 対応関係の計算に, 対応表は不要
  13. 13. 実数値 x の表現について <ul><li>実数値 x の(2進数)表現が,実質的な符号語 となる </li></ul><ul><ul><li>x の表現長は,短ければ短いほど良い </li></ul></ul><ul><ul><li>該当する区間内で,表現長が最小のものを選びたい </li></ul></ul><ul><ul><ul><li>L(w j +1 ) の小数点以下  – log 2 S( w j )  ビットを x にする </li></ul></ul></ul><ul><li>平均符号長は </li></ul>= H ( S ) ハフマン符号と同程度の効率を達成可能 L( w i ) + S( w i ) L( w i +1 ) 0.aa...aaa...a + 0.00...0 bb...b 0.aa...a cc...c x = aa...a c L( w j ) + S( w j ) L( w j +1 ) 0.aa...aaa...a + 0.00...0 bb...b 0.aa...a cc...c  – log 2 S( w j )  0.aa...a aa...a 0.aa...a cc...c 0.aa...a c
  14. 14. 算術符号化について:まとめ <ul><li>算術符号: </li></ul><ul><li>大きな対応表を用いることなく,ハフマン符号並の性能を発揮 </li></ul><ul><li>計算は on-the-fly で行うことが可能であり,装置化も容易 </li></ul><ul><li>長い系列になると, 精度の高い乗算を繰り返し行う 必要アリ </li></ul><ul><li>⇒ 乗算を用いない(近似)計算法も研究されている </li></ul><ul><li>若干の 復号遅延 が発生してしまう </li></ul>
  15. 15. Lempel-Ziv法 <ul><li>通報の発生確率が事前にわからない場合 の符号化法 </li></ul>
  16. 16. 通報の発生確率について <ul><li>ここまでの議論 ... </li></ul><ul><li>通報の発生確率が,あらかじめわかる場合を想定 </li></ul><ul><li>現実世界の通報系列 ... </li></ul><ul><li>各通報の発生確率がわからないケース も多い </li></ul><ul><li>単純な解決法として,2スキャン方式がある </li></ul><ul><ul><li>1回目のスキャンで各記号の発生確率を測定 </li></ul></ul><ul><ul><li>2回目のスキャンで符号化 </li></ul></ul><ul><ul><li>⇒ 符号化遅延の発生,対応表を添付する必要性が生じる </li></ul></ul>
  17. 17. Lempel-Ziv 法 <ul><li>通報の発生確率が不明でも,効率よい符号化を実現する方式: </li></ul><ul><ul><li>LZ77 法 </li></ul></ul><ul><ul><ul><li>lha, gzip, zip, zoo 等の圧縮ツールで採用 </li></ul></ul></ul><ul><ul><li>LZ78 法 </li></ul></ul><ul><ul><ul><li>compress, arc, stuffit 等の圧縮ツールで採用 </li></ul></ul></ul><ul><ul><li>LZW 法 </li></ul></ul><ul><ul><ul><li>GIF, TIFF 等の画像フォーマットで採用 </li></ul></ul></ul><ul><li>どのような情報源に対しても効率が良い </li></ul><ul><li>⇒ ユニバーサル符号化 ( universal coding ) </li></ul>
  18. 18. LZ77方式 <ul><li>A. Lempel, J. Ziv により, 1977 年に提案された方式 </li></ul><ul><li>通報の部分系列を, 過去に出現したパターンとの最長一致 </li></ul><ul><li>により表現していく </li></ul><ul><li>アルゴリズム概要 </li></ul><ul><li>適応的にブロックの分割を行う </li></ul><ul><li>一つのブロックを, ( i , l , x ) の3項組で表現 </li></ul><ul><ul><li>「 i 文字前から始まる長さ l の系列に x を追加したもの」 </li></ul></ul>x 0 – 1 – i + l – i l –1 l 符号化の完了した系列
  19. 19. LZ77の符号化例 <ul><li>ABCBCDBDCBCDを符号化する </li></ul>記号 A B C B C D B D C B C D 状況 初出現 初出現 初出現 2文字前と同一 2文字前と同一 2文字前とは異なる 3文字前と同一 3文字前とは異なる 6文字前と同一 6文字前と同一 6文字前と同一 6文字前と同一 符号語 (0, 0, A) (0, 0, B) (0, 0, C) (2, 2, D) (3, 1, D) (6, 4, *)
  20. 20. LZ77の復号例 <ul><li>(0, 0, A), (0, 0, B), (0, 0, C), (2, 2, D), (3, 1, D), (6, 4, * ) を復号 </li></ul><ul><li>得られた符号語から,もとの通報系列を逐次構成していく </li></ul><ul><li>問題点 ... 整数値の表現をどうする? </li></ul><ul><li>大きな整数は,それなりに大きな表現長となってしまう </li></ul><ul><li>表現長を超えるようなブロックは,分割して表現 する必要あり </li></ul><ul><li>⇒ LZ78 法に比べると,若干の効率ロスがある </li></ul>
  21. 21. LZ78方式 <ul><li>A. Lempel, J. Ziv により, 1978 年に提案された方式 </li></ul><ul><li>パターンを, ( i , l , x ) の3項組ではなく, ( b , x ) の2項組で表現 </li></ul><ul><ul><li>「 b 個前のブロックに,文字 x を追加したもの」 </li></ul></ul>符号化の完了した系列 x 0 – 1 – b
  22. 22. LZ78の符号化例 <ul><li>ABCBCBCDBCDEを符号化する </li></ul>記号 A B C B C B C D B C D E 状況 初出現 初出現 初出現 2つ前のブロックと同一 1つ前のブロックと同一 1つ前のブロックと同一 符号語 (0, A) (0, B) (0, C) (2, C) (1, D) (1, E) ブロック番号 1 2 3 4 5 6
  23. 23. LZ78の復号例 <ul><li>(0, A), (0, B), (0, C), (2, C), (1, D), (1, E)を復号 </li></ul><ul><li>得られた符号語から,もとの通報系列を逐次構成していく </li></ul><ul><li>LZ77 法より,符号語がコンパクト </li></ul><ul><li>一符号語が表現するブロックサイズに,上限がない </li></ul><ul><li>⇒ LZ77 法よりも,若干優れた効率を発揮 </li></ul>
  24. 24. ユニバーサル符号化について:まとめ <ul><li>LZ法では,適応的にパターン・符号語の対応表を構成する </li></ul><ul><li>通報の発生確率がわからなくても,高い性能を発揮 </li></ul><ul><li>記憶のある情報源から発生する通報にも,自然に対応可能 </li></ul><ul><li>LZW法には, UNISYS 社が主張する特許問題 が存在した </li></ul><ul><li>⇒ 2004 年に特許期限が切れ,自由に利用可能に </li></ul>
  25. 25. 画像や音声の符号化法について <ul><li>許容範囲内での 情報劣化と引き換えに,効率を稼ぐ 符号化法 </li></ul>
  26. 26. 符号化の可逆性 <ul><li>ここまでで考えてきた符号化法 ... </li></ul><ul><li>符号化したものを復号すれば,元の情報と完全に同一の </li></ul><ul><li>通報系列が得られる </li></ul><ul><li>⇒ 可逆符号化,無歪み符号化 ( reversible, lossless coding ) </li></ul><ul><li>可逆性に関する条件を緩めれば,さらに効率が改善できるかも </li></ul><ul><li>⇒ 非可逆符号化,有歪み符号化 ( non-reversible, lossy coding ) </li></ul><ul><li>画像や音声等,最終的に人間が受容する情報の符号化を念頭 </li></ul><ul><li>本講義では,個々の符号化方式については述べない </li></ul><ul><li>(それぞれ専門の講義科目を履修のこと) </li></ul>
  27. 27. 非可逆符号化へのアプローチ <ul><li>非可逆符号化では,2つのアプローチを活用して効率を改善: </li></ul><ul><li>予測符号化 ( predictive coding ) </li></ul><ul><ul><li>通報の間には,非常に強い相関関係がある </li></ul></ul><ul><ul><li>一部の通報を 故意に割愛し,欠損部分を ,前後の通報等から 予測して復元 する </li></ul></ul><ul><li>変換符号化 ( transform coding ) </li></ul><ul><ul><li>表現法の変換により,コンパクトな表現になる場合がある </li></ul></ul><ul><ul><ul><li>離散フーリエ変換,離散コサイン変換 等 </li></ul></ul></ul>
  28. 28. 非可逆符号化と情報量 <ul><li>可逆符号: </li></ul><ul><ul><li>符号語を受け取ると,元の情報を完全に復元可能 </li></ul></ul><ul><ul><li>元の通報に関するエントロピーが 0 になる </li></ul></ul><ul><ul><li>可逆符号の符号語は,大きな情報量を担う </li></ul></ul><ul><li>非可逆符号: </li></ul><ul><ul><li>符号語を受け取っても,元の情報に関する曖昧さが残る </li></ul></ul><ul><ul><li>元の通報に関するエントロピーは 0 にならない </li></ul></ul><ul><ul><li>非可逆符号の符号語は,比較的小さな情報量を担う </li></ul></ul>
  29. 29. 情報源符号化定理ふたたび <ul><li>シャノンの情報源符号化定理...解釈次第では </li></ul><ul><li>「 H ( S ) の情報量を担う符号語は,サイズ H ( S ) 以上となる」 </li></ul><ul><li>非可逆符号についても,類似の上界・下界を導きことが可能 </li></ul><ul><li>⇒ 「有歪み符号に対する情報源符号化定理」が存在 </li></ul><ul><li>「より大きな歪みを許容できるのであれば,より高い圧縮率を </li></ul><ul><li>達成することができる」ことを数学的に説明できる </li></ul>
  30. 30. 本日のまとめ <ul><li>前回までとは異なる方向性を持つ符号化方式の紹介 </li></ul><ul><li>算術符号化 </li></ul><ul><ul><li>通報と符号語の対応表を必要としない </li></ul></ul><ul><li>LZ符号化 </li></ul><ul><ul><li>通報に関する統計的性質を必要としない </li></ul></ul><ul><li>非可逆符号化 </li></ul><ul><ul><li>情報劣化と引き換えに効率を稼ぐ </li></ul></ul>
  31. 31. 練習問題 <ul><li>ABACABADACABADを,LZ77法により符号化せよ </li></ul><ul><li>上記問題により得られた符号語系列を復号せよ </li></ul><ul><li>LZWアルゴリズムの特許に関し,どのような問題が </li></ul><ul><li>発生したか調べよ </li></ul><ul><li>非可逆符号化を実現するアルゴリズムにはどのような </li></ul><ul><li>ものがあるか調べよ </li></ul>

×