1 / 31

前回の練習問題

前回の練習問題. 通報とその発生確率を入力すれば,ハフマン符号を構成するプログラムを作成せよ ブロック符号が構成できるよう,上記プログラムを改造せよ 適当な通報と発生確率を定め,一通報あたりの平均符号長がブロック長によりどう変化するか,プログラム実験を行え 回答例は省略:「優先度付きキュー」の典型的な応用例 「優先度付データを登録」「優先度最大データを取り出す」 木を「データ」,確率を「優先度」とする 「木を二つ取出し,併合して一つにして再登録」を繰返す 残った木にラベル付けして完成. 前回の復習. シャノンの情報源符号化定理

Download Presentation

前回の練習問題

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 前回の練習問題 • 通報とその発生確率を入力すれば,ハフマン符号を構成するプログラムを作成せよ • ブロック符号が構成できるよう,上記プログラムを改造せよ • 適当な通報と発生確率を定め,一通報あたりの平均符号長がブロック長によりどう変化するか,プログラム実験を行え 回答例は省略:「優先度付きキュー」の典型的な応用例 • 「優先度付データを登録」「優先度最大データを取り出す」 • 木を「データ」,確率を「優先度」とする • 「木を二つ取出し,併合して一つにして再登録」を繰返す • 残った木にラベル付けして完成

  2. 前回の復習 • シャノンの情報源符号化定理 • 一記号あたりの平均符号長は,必ずH1(S)以上 • 下限を超えない範囲で,H1(S)+1まで縮めることが可能 • ブロック符号化 • 通報を複数まとめてブロック化することで,効率が向上 • 効率 = 一記号あたりの平均符号長...圧縮率に相当

  3. 前回の補足(1-1) ブロック化すると,どうして効率が良くなるか? • 理想的な符号語長は実数値となる • P(A)=0.8, P(B)=0.2 の場合,理想的な符号語の長さは... • 現実には,符号語は記号系列... 符号語長は整数値しかダメ • 理想的な値と現実の値とのあいだにギャップが存在 • 0.322ビット ⇒ 1 ビット:効率は「悪化する」 • 2.322ビット ⇒ 1 ビット:効率は「改善する」 • 頻繁に「悪化する」,ときどき「改善する」

  4. 前回の補足(1-2) ブロック化すると,どうして効率が良くなるか? • 確率 piの通報の,平均符号長への寄与を考えると... • 理想では pi (–log pi) • 現実には pi [–log pi] ([log pi] は log piの近似正整数) • 理想と現実のギャップは | pi(log pi – [log pi]) |(下図) ブロック長 n→ 大 ⇒ 全般的に pi →小 ⇒ 理想と現実のギャップ→小 理想と現実のギャップ pi 1.0

  5. 前回の補足(2) ブロック符号化の運用について • 有限長の通報系列は,末尾部分でブロック化できない場合も • 長さ10の等長ブロック化 ⇒ 25個の通報だと,5つの通報が端数となる • ランレングス符号化 ⇒ 最後のランを終端する記号がない場合も • 通常は,運用で問題を回避 • 最終ブロックだけ別扱い • パディング(埋め草,詰物)の利用 + 通報数の伝達

  6. 本日の講義 ハフマン符号以外の符号化法について考える • 装置化が簡単で効率が良い符号化法 • 算術符号化法 • 通報の発生確率が事前にわからない場合の符号化法 • Lempel-Ziv法 • 許容範囲内での情報劣化と引き換えに,効率を稼ぐ符号化法 • 画像や音声の符号化法について ある程度独立した3つの話題の紹介

  7. 算術符号化法 • 装置化が簡単で効率が良い符号化法

  8. ハフマン符号化と装置化の容易さについて ハフマン符号:通報と符号語とを一対一に対応付け ⇒ 符号化器,復号器の内部で,対応表を記録する必要アリ ⇒ 効率をよくするためには,対応表も大きくなりがち 算術符号(arithmetic code): • 対応表を使わず,on-the-flyで符号化・復号を行う方式 ⇒ よりコンパクトな実装が可能となる • 通報(またはブロック)を一個ずつ符号化するのではなく, 通報系列全体を,ひとつの符号化系列に変換する (「通報系列全体で1ブロック」という考え方も...)

  9. 番号 0 1 2 3 4 5 6 7 wi AAA AAB ABA ABB BAA BAB BBA BBB S(wi) 0.343 0.147 0.147 0.063 0.147 0.063 0.063 0.027 L(wi) 0 0.343 0.490 0.637 0.700 0.847 0.910 0.973 算術符号:基本的な考え方 • 記憶のない2元定常情報源: P(A) = p, P(B) = 1 – p • 長さ nの通報系列の符号化を考える ⇒ 2n通りの通報系列 p = 0.7, n = 3 の場合 • 8通りの系列 w0,..., w7 • 辞書式に並んでいること • 系列発生確率 S(wi)を求め, • 累積発生確率 L(wi)を計算する ↑ 発生確率 ↑ 累積確率...この系列より前の系列の発生確率

  10. 0 0.5 1.0 0.027 0.343 0.147 0.147 0.063 0.147 0.063 0.063 AAA AAB ABA ABB BAA BAB BAB BBB 番号 0 1 2 3 4 5 6 7 wi AAA AAB ABA ABB BAA BAB BBA BBB S(wi) 0.343 0.147 0.147 0.063 0.147 0.063 0.063 0.027 L(wi) 0 0.343 0.490 0.637 0.700 0.847 0.910 0.973 アイデア:系列と区間 • 各系列に対し,[0,1]の部分区間を対応付け可能 • 系列 wj ... 区間 Ij=[L(wj), L(wj+1)) • 系列 wjを,区間 Ij内の代表点 • x Ij (実数値)により表現する • 区間と xの対応関係をどう計算? • 実数値 xをどう表現? 区間のサイズ 区間の左端

  11. A B AA AB BA AB AAA AAB ABA ABB BAA BAB BAB BBB 0.027 0.343 0.147 0.147 0.063 0.147 0.063 0.063 区間の木表現と累積確率計算 系列と実数値の対応付け:二方向への変換が必要 • [符号化] 系列から,対応する区間を求める • [復号] 実数値から,対応する系列を求める ⇒ どちらも、区間の木構造表現を利用して計算すれば良い

  12. w S(w), L(w) wA wB S(wA) = S(w)p L(wA) = L(w) S(wB) = S(w)(1 – p) L(wB) = L(w) + S(w)p 系列から,対応する区間を求める • 根節点を定義し,S() = 1, L() = 0とする • 子節点の S( ), L( ) の値は,必要に応じて再帰的に計算する P(A) = p... ABBの区間は? S() = 1 L() = 0  S(A)=0.7 L(A) = 0 A L(B) = 0.7 B AA AB S(AB)=0.21 L(AB) = 0.49 ABB の区間は 0.637~0.700 ABA ABB S(ABB)=0.063 L(ABB) = 0.637 L( ) 値 + S( ) 値 着目節点の L( ) 値

  13. 実数値から,対応する系列を求める • 前スライドと同じく,S( ), L( ) の値を再帰計算 • 目標値 xに応じて,左に進むか右に進むか二者択一 • xが L(wB)以下 ⇒ 左の子へ • xが L(wB)より大 ⇒ 右の子へ 対応関係の計算に, 対応表は不要 0.600に対応する系列は? S() = 1 L() = 0  L(B) = 0.7 S(A)=0.7 L(A) = 0 A B AA AB S(AB)=0.21 L(AB) = 0.49 ABA ABB S(ABA)=0.147 L(ABA) = 0.49 L(ABB) = 0.637 0.600は系列 ABA に対応

  14. 実数値 xの表現について • 実数値 xの(2進数)表現が,実質的な符号語となる • xの表現長は,短ければ短いほど良い • 該当する区間内で,表現長が最小のものを選びたい • L(wj+1) の小数点以下 – log2S(wj) ビットをxにする L(wi) + S(wi) L(wi+1) L(wj) + S(wj) L(wj+1) 0.aa...aaa...a + 0.00...0bb...b 0.aa...acc...c 0.aa...aaa...a + 0.00...0bb...b 0.aa...acc...c • 平均符号長は – log2S(wj)  x = aa...ac 0.aa...ac = H(S) ハフマン符号と同程度の効率を達成可能 0.aa...aaa...a 0.aa...acc...c

  15. 算術符号化について:まとめ 算術符号: • 大きな対応表を用いることなく,ハフマン符号並の性能を発揮 • 計算は on-the-fly で行うことが可能であり,装置化も容易 • 長い系列になると,精度の高い乗算を繰り返し行う必要アリ ⇒ 乗算を用いない(近似)計算法も研究されている

  16. Lempel-Ziv法 • 通報の発生確率が事前にわからない場合の符号化法

  17. 通報の発生確率について ここまでの議論... • 通報の発生確率が,あらかじめわかる場合を想定 現実世界の通報系列... • 各通報の発生確率がわからないケースも多い • 単純な解決法として,2スキャン方式がある • 1回目のスキャンで各記号の発生確率を測定 • 2回目のスキャンで符号化 ⇒ 符号化遅延の発生,対応表を添付する必要性が生じる

  18. Lempel-Ziv 法 通報の発生確率が不明でも,効率よい符号化を実現する方式: • LZ77法 • lha, gzip, zip, zoo 等の圧縮ツールで採用 • LZ78法 • compress, arc, stuffit等の圧縮ツールで採用 • LZW法 • GIF, TIFF等の画像フォーマットで採用 どのような情報源に対しても効率が良い ⇒ ユニバーサル符号化 (universal coding)

  19. x –i –i+l –1 0 l–1 l 符号化の完了した系列 LZ77方式 • A. Lempel, J. Ziv により,1977年に提案された方式 • 通報の部分系列を,過去に出現したパターンとの最長一致 により表現していく アルゴリズム概要 • 系列を先頭から動的にブロック化し、符号化する • 一つのブロックを,(i, l, x) の3項組で表現 • 「i文字前から始まる長さlの系列にxを追加したもの」

  20. 記号 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, *) LZ77の符号化例 ABCBCDBDCBCDを符号化する

  21. LZ77の復号例 (0, 0, A), (0, 0, B), (0, 0, C), (2, 2, D), (3, 1, D), (6, 4, *) を復号 • 得られた符号語から,もとの通報系列を逐次構成していく • 問題点...整数値の表現をどうする? • 大きな整数は,それなりに大きな表現長となってしまう • 表現長を超えるようなブロックは,分割して表現する必要あり • ⇒ LZ78 法に比べると,若干の効率ロスがある

  22. x –b –1 0 符号化の完了した系列 LZ78方式 • A. Lempel, J. Ziv により,1978年に提案された方式 • パターンを,(i, l, x) の3項組ではなく,(b, x) の2項組で表現 • 「b個前のブロックに,文字 xを追加したもの」

  23. LZ78の符号化例 ABCBCBCDBCDEを符号化する 記号 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

  24. LZ78の復号例 (0, A), (0, B), (0, C), (2, C), (1, D), (1, E)を復号 • 得られた符号語から,もとの通報系列を逐次構成していく • LZ77法より,符号語がコンパクト • 一符号語が表現するブロックサイズに,上限がない • ⇒ LZ77 法よりも,若干優れた効率を発揮

  25. ユニバーサル符号化について:まとめ • LZ法では,適応的にパターン・符号語の対応表を構成する • 通報の発生確率がわからなくても,高い性能を発揮 • 記憶のある情報源から発生する通報にも,自然に対応可能 • LZW法には,UNISYS社が主張する特許問題が存在した ⇒ 2004 年に特許期限が切れ,自由に利用可能に

  26. 画像や音声の符号化法について • 許容範囲内での情報劣化と引き換えに,効率を稼ぐ符号化法

  27. 符号化の可逆性 ここまでで考えてきた符号化法... 符号化したものを復号すれば,元の情報と完全に同一の 通報系列が得られる ⇒ 可逆符号化,無歪み符号化(reversible, lossless coding) 可逆性に関する条件を緩めれば,さらに効率が改善できるかも ⇒ 非可逆符号化,有歪み符号化 (non-reversible, lossy coding) • 画像や音声等,最終的に人間が受容する情報の符号化を念頭 • 本講義では,個々の符号化方式については述べない (それぞれ専門の講義科目を履修のこと)

  28. 非可逆符号化と相互情報量 「符号化」を一つの通信路と考える 可逆符号: • 符号語 Y から,Xを完全に復元(復号)可能 • 相互情報量 I(X; Y) = H(X) – 0 = H(X) 非可逆符号: • Yを受け取っても,Xに関する曖昧さが残る • 相互情報量 I(X; Y) = H(X) – H(X | Y) H(X) ...可逆符号よりも小さな相互情報量しか担っていない X? X Y 符号化

  29. 情報源符号化定理ふたたび シャノンの情報源符号化定理: 可逆符号の平均符号長は H(X) 以上となる 相互情報量 I(X; Y) の非可逆符号の平均符号長は I(X; Y) 以上 実用上は...「歪み」の概念を使うほうが有用 速度・歪み関数R(D): 歪み Dを達成するのに必要となる相互情報量の最小値 有歪みの場合の情報源符号化定理: 歪み Dを達成するには,R(D) 以上の平均符号長が必要 可逆なら H(X)=I(X; Y). より一般的に...

  30. 本日のまとめ • 前回までとは異なる方向性を持つ符号化方式の紹介 • 算術符号化 • 通報と符号語の対応表を必要としない • LZ符号化 • 通報に関する統計的性質を必要としない • 非可逆符号化 • 情報劣化と引き換えに効率を稼ぐ

  31. 練習問題 • ABACABADACABADを,LZ77法により符号化せよ • 上記問題により得られた符号語系列を復号せよ • LZWアルゴリズムの特許に関し,どのような問題が 発生したか調べよ • 非可逆符号化を実現するアルゴリズムにはどのような ものがあるか調べよ 4/22(木)は休講 / no class on Apr. 22 (THU)

More Related