comp_pfiseminar

6,024 views

Published on

2012/6/21のPFI全体セミナー, 「文字列データ圧縮ことはじめ」の内容です。データ圧縮の話とそれに纏わる歴史と最近の話を紹介しています。

0 Comments
23 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
6,024
On SlideShare
0
From Embeds
0
Number of Embeds
152
Actions
Shares
0
Downloads
63
Comments
0
Likes
23
Embeds 0
No embeds

No notes for slide

comp_pfiseminar

  1. 1. 2012/6/21  PFI全体セミナー ⽂文字列列データ圧縮ことはじめ 株式会社 Preferred Infrastructure 岡野原  ⼤大輔 1
  2. 2. アジェンダl  圧縮の基礎 l  なぜ圧縮できるのか l  モデル化 l  符号l  基本的なデータ圧縮 l  連⻑⾧長圧縮 l  RePairl  ⽂文法データ圧縮l  LZ77, LZ78l  Burrows Wheeler変換l  最近のデータ圧縮 2
  3. 3. データ圧縮と私の関係1992 データ圧縮 小5〜 nifty serve, DO++ 今の興味分野の2004 起源はデータ圧縮 (統計的)⾃自然⾔言語処理理 大3〜
 未踏 & 辻井研 M1〜 未踏 & OSS
 圧縮全⽂文索索引 定兼先生 機械学習/データマイニング 簡潔データ構造 M1〜 OSS, T-Primal
 OSS バイオインフォマティクス 2011〜 Jubatus 大学4年〜 バイオベンチャー 2011〜 次世代シーケンサ
  4. 4. 圧縮の基礎4
  5. 5. コンピュータが誕⽣生する以前からデータ圧縮は使われているl  同じ情報を伝える/保存するのに、少ないデータで表す l  ⾷食堂にて「おばちゃん、いつもの!」 l  送信者、受信者が同じ情報を共有している場合 l  時間的局所性の利利⽤用 l  モールス信号 l  短点「トン」と⻑⾧長点「ツー」から構成される可変⻑⾧長符号 l  最頻な「e」はトン、最稀な「q」はツーツートンツー l  均⼀一な符号⻑⾧長ではなく、頻度度が多い⽂文字には短い符号、頻度度が少 なく⽂文字には⻑⾧長い符号を利利⽤用することで全体の符号⻑⾧長を短くする 5
  6. 6. データ圧縮は社会を⽀支えるl  データ圧縮が無ければここまで安価+⼤大量量+正確に 画像・⾳音声・映像情報を伝えることはできなかった l  特に映像のデータ圧縮技術の進化は著しい l  FaceTimeなどTV電話が安価なインターネット網で実現可能 l  エラー訂正, 通信技術, 配信制御技術の進化もちろんすごいl  データが⼩小さい=⾼高速化 l  上位の⾼高速な記憶階層(キャッシュ, メモリ)で処理理できる l  そのまま扱うより圧縮+復復元のコストを加えても全体は⾼高速化 6
  7. 7. データ圧縮 = モデル化 + 符号化l  データ圧縮はモデル化と符号化の⼆二段階からなる l  モデル化 = データをうまく表現するモデルを⾒見見つける l  符号化 = モデルを利利⽤用して表現されたデータを符号で短く表す l  コンピュータ世界での系列列符号は⼀一般に0と1からなる⼆二値l  この⼆二つを混同してはいけない l  最適なモデルが与えられたら、それを利利⽤用して最適な符号を決め ることはできる.しかし最適なモデルは⼀一般に分からない
  8. 8. データ圧縮  と  他分野との関係l  データ圧縮を実現するにはデータを理理解する必要があり、データ 圧縮が実現できたら機械学習, ⾔言語モデルl  ⽣生成モデル l  データxを⽣生成する過程を理理解し,p(x)をうまくモデル化でき たら、それを利利⽤用し,圧縮率率率が⾼高いデータ圧縮を実現できるl  ⾔言語モデル (LM) l  与えられた⽂文字列列が⽂文法的・⽤用法的に正しいかを当てるタスク l  機械翻訳・⾳音声認識識・情報検索索(LMベース)で利利⽤用される l  ⾔言語モデルの基礎技術は後述のPPMと呼ばれるデータ圧縮と同じ 8
  9. 9. 符号l  情報を0と1からなる系列列で表すl  正整数の符号化 l  Elias符号 (75年年!):ガンマ符号、デルタ符号、ゴロム符号 l  ライス符号、 l  フィボナッチ符号l  確率率率情報が既知の場合 l  Shannon-Fano 符号、Huffman符号 l  算術符号, Range Codel  組み合わせ的データ構造 l  数え上げ符号l  その他も 9
  10. 10. Huffman符号の逸話1951年年 MITの情報理理論論のクラスにて:l  Fano先⽣生「最終試験を受けるか、課題レポート出すか           どっちか選んでください」l  Huffman「最終試験なんてうけたくないから、           課題レポートだします」l  Fano先⽣生「私はShannon先⽣生とShannon-Fano符号を開発しまし たが、最適ではありません。最適な符号を考えてレポートしてく ださい」l  Huffman「思いつかないが、Fano先⽣生が⽊木を根から葉葉に向けて作 っているから、逆に葉葉から根に向けて作ったらいいんじゃない?」 ⇒ これがラッキーなことに最適.Huffman符号誕⽣生! 10
  11. 11. 基本的なデータ圧縮11
  12. 12. 連⻑⾧長圧縮RLE: Run Length Encodingl  繰り返し⽂文字列列を、(⽂文字、繰り返し⻑⾧長)のペアで表すl  ヒャァァァァァァァアアアウウヴァアアアアアアアアイイイイ ↓ ヒ1ャ1ァ7ア3ウ2ヴ1ァ1ア8イ4l  ⽂文字が⼆二種類の場合は⽂文字は交互なので繰り返し⻑⾧長さだけでOK 0000111100011 → 4432 (例例えば⽩白⿊黒画像データなど)l  繰り返し数が少ない場合⼤大きくなってしまうので、連⻑⾧長が多い場 合は連⻑⾧長圧縮モード、そうでない場合はそのままと切切り替える [1]l  ⼤大抵は何らかの処理理(BWT, 基底変換)の後に使う場合が多い l  画像圧縮のDCT後の係数はRLEが使われる [1] “Adaptive Run-Length / Golomb-Rice Encoding of Quantized Generalized Gaussian Sources with Unknown Statistics”, H. S. Malvar DCC 06 12
  13. 13. RePairl  最頻する2⽂文字を再帰的に他の⽂文字に置換し、全てが異異なる(か 適当なところまで)繰り返し、置換ルールと置換後⽂文字列列を出⼒力力l  うらにわにわにわにわにわにわにわとりうらうらら ↓にわ  を Aに変換 うらAAAAAAAとりうらうらら             ↓AA を Bに変換 うらBBBAとりうらうらら ↓うら  を Cに変換 CBBBAとりCCら  (にわ, A) (AA, B) (うら, C)l  実⽤用的にはうまくいくので昔から使われていたが、最近はいろい ろ証明[1]が出たり、簡潔データ構造の圧縮[2]に使われている [1] “Re-pair Achieves High-order Entropy”, 13 Navarro+, DCC 08] [G. [2] “Practical Compressed Document Retrieval”, [G. Navarro+, SEA 11]
  14. 14. ⽂文法圧縮l  圧縮対象⽂文字列列のみを⽣生成するCFGルールを求めて圧縮 l  ルール集合が元の⽂文字列列より短く記述できれば圧縮可能 l  実は先程のRePairは⽂文法圧縮の⼀一種l  CFGルールの求め⽅方で様々な⼿手法が存在 l  最適なCFGルールを⾒見見つけるのはNP困難.近似解の世界で頑張る l  オンライン, ルール作業領領域のみで構築 [Maruyama+, CCP 11] …. A → ba D E D F B → pa C → ma 文法のみを保存 D → AA E → BB A A B B A A C C F → CC … b a b a p a p a b a b a m a m a 14
  15. 15. LZ法l  最も有名なデータ圧縮で最も使われているデータ圧縮 l  何らかでお世話になったはず, ZIP LHA, GIF PNG 他多数利利⽤用 , ,l  Lempel と  Ziv が 77年年, 78年年と⽴立立て続けに提案 l  77年年に提案されたのがLZ77, 78年年に提案されたのがLZ78l  モデルが未知である⽂文字列列でも圧縮できる⼿手法として提案 l  正確には⽂文字列列⽣生成源のk次エントロピーに漸近するか l  LZ77法に対する証明ができなかったのでLZ78法で証明 l  後にLZ77法でも証明されるl  その後、現実的な符号が登場 Lempel先生 Ziv先生 15
  16. 16. LZ法これだけは知っといてl  最適性の証明は⾯面⽩白いが、説明しきれないので分かる⼈人だけl  ⼊入⼒力力系列列  X = x1x2…xn を分割しフレーズ列列  Y = y1y2…ymを得る X = [x1x2x3][x4x5][x6x7x8][x9x10] y1 y2 y3 y4 l  この時、フレーズ列列のフレーズ  {yi}i=1…m が全て異異なるならば、 c=|Y|とした時、clog2 c はXの情報源のエントロピーに漸近する l  clog2c は各フレーズをそのまま格納したサイズ l  Xのk次経験エントロピーでも成り⽴立立つl  LZ78は⼊入⼒力力系列列を全て異異なるフレーズ列列に分解する⼀一⼿手法 l  LZ77のエントロピー漸近性の証明は別⼿手法l  この証明はLZ以外のデータ構造のサイズ評価にも使われる 16
  17. 17. LZ77l  データを先頭から順番に次のように符号化していく.l  現在位置から始まる記号列列が、過去に出現していれば、 l  (出現相対位置,  ⼀一致⻑⾧長, 次の不不⼀一致⽂文字)のtripleで置き換える l  していなければ空の⼀一致と次の不不⼀一致⽂文字で表す l  ⼊入⼒力力系列列を全て異異なるフレーズに分解していることに注意あかさかさかすでかささすで。あかさ[かさか]すで[かさ]さ[すで]。(*, *, あ)(*, *, か) (*, *, さ)(-2, 3,す) (*, *,で) (-5, 2,さ) (-5, 2, 。) 17
  18. 18. 実⽤用的LZ77l  前述⼿手法は理理論論的にはエントロピーに漸近するがオーバーヘッド が多いので実際には次のように処理理される場合が多いl  ⼀一致があったかどうかを記録した後に、⼀一致情報、不不⼀一致記号出⼒力力 l  LZSSがこの⽅方法を利利⽤用し、LHAやZIPなど殆どがこの⽅方法を採⽤用l  ⼀一致⽂文字列列は直近の滑滑⾛走窓中の候補だけから探す. l  探す⽅方法は、ハッシュ、Trieなど様々l  ⼀一致⻑⾧長、相対位置はElias符号で符号化 l  同じ⽂文字列列は近い場所で繰り返される、⼀一致⻑⾧長は殆ど短い l  ⼀一度度⼀一致した⽂文字列列はキャッシュしておきそれを利利⽤用 c.f. LZMAl  不不⼀一致が連続した場合は読み⾶飛ばして⾼高速化 c.f. snappy 18
  19. 19. LZ78l  読み込みながら辞書(Trie)を作り、不不⼀一致⽂文字を最後に⾜足す 123456789AB あかさかさかすでかささ あ さ あ で あ さ か か か さ 1 3 3 1 3 8 2 1 さ 2 さ 2 す 4 さ 4 6 9l  全て異異なるフレーズに分解していることに注意 l  トライの保存はフレーズ⻑⾧長がcの時、c log cであり、エントロピー 19
  20. 20. Burrows Wheeler変換  (BWT)l  ⽂文字列列に対する可逆変換で⽂文字列列を”圧縮しやすく”変換する l  BWTはその後、データ圧縮のみならず全⽂文索索引、テキストマイニ ングなど⾮非常に多く使われるようになる l  圧縮ソフト bzip2, アライメントソフト  bwal  ⼿手法も⾯面⽩白いが話すには時間が⾜足りません。その周辺の話も⾯面⽩白 いのでそちらをします 20
  21. 21. BWTのBとWの話 l  1978年年頃にWheelerが思いついたが「こんな当たり前のことは論論 ⽂文にするまでもない」と書いていなかった l  その後、Burrowsさんがこれ⾯面⽩白いので書きましょうと説得して 1984年年にDECの技術論論⽂文として公開される   l  データ圧縮の学会(DCC)では落落ちてたが、Dr. Dobbs articleで 拾拾われてそこから徐々に有名になる l  Wheelerは世界で初めてコンピュータ科学の博⼠士号をとり、その あと、B. Stroustrup (C++の作者), M. Burrowsなど数多くの優 秀な研究者を育てた l  BurrowsはCubbyなどで有名なシステム屋 l  彼らが最初に提案した圧縮⼿手法が、その後理理論論的最適と⽰示されるこのへんの話は
 21 http://people.unipmn.it/manzini/papers/foreword_bwt.pdf
  22. 22. BWTを1分で説明l  ⼊入⼒力力テキスト  S = s1s2s3…snl  各⽂文字を、それに後続する⽂文字をキーとして辞書式順序でソート l  s1 のキーは  s2s3s4…sn l  s2 のキーは  s3s3s4…snl  S = abracadabra  →  BWT(S) = ardrcaaaabbl  BWTはSの⻑⾧長さの線形時間で求めることが可能 l  接尾辞配列列経由(最速)で or 直接変換(省省スペース) l  逆変換も線形時間で構築可能l  BWT(S)はSに⽐比べて圧縮しやすい l  後続している⽂文字が似ているなら、その⽂文字も似ている 22
  23. 23. 最近のデータ圧縮l  透過的データ圧縮l  簡潔データ構造l  データ処理理向けデータ圧縮 l  ⽂文字列列マッチングや各種統計量量が元のデータより⾼高速に処理理可能l  特定データ専⾨門のデータ圧縮 l  構造付, 型付データ (=JSON ?) l  ゲノム配列列 from 次世代シーケンサ l  センサデータl  映像はまだまだ伸びる l  H264からH265(7640 x 4320サポート)へ l  中でやっているのはリアルタイムでの⾼高度度な画像予測 23
  24. 24. 最近のデータ圧縮(続)l  ビッグデータ解析向け l  MapReduceのShuffle Phaseの時のデータ量量を⼩小さくしよう l  Jubatusのmix時のモデル交換量量を⼩小さくしようl  センサデータでの圧縮 l  センサデータを集めるデバイスは安くなったが通信コストが⾼高い l  端末で圧縮、中継点で圧縮 l  端末間の冗⻑⾧長性を加味したデータ圧縮 l  c.f. Compressed Sensing 24
  25. 25. お⾦金金になる圧縮l  思いつくのを並べてみましたl  Disaster Recovery l  同じデータを遠く離離れたところでコピーをとっておく.そこで圧縮l  クラウド・ストレージ l  今後多くのデータをクラウドに置く様になった時に、クラウドに 置くコスト(通信費、維持費)を減らすことができる l  次世代シーケンサ・センサデータ・ログデータl  ビッグデータ解析向けl  特許ライセンスは厳しいか l  いまや、多くのメディアはクロスライセンス 25
  26. 26. まとめl  データ圧縮は古くて新しい l  古くから使われ続ける技術もあれば、新しいデータ向けのデータ 圧縮も次々と⽣生まれている l  いろいろな分野と関連:機械学習、データマイニング、⾃自然⾔言語 処理理、信号処理理、通信、バイオインフォマティクス、l  情報源 l  ⽂文字列列データ圧縮:DCC, CPM, SEA, SODA, ALENEX, ICALP ESA, , l  http://compression.ru/ (ロシア語だけど) l  http://mattmahoney.net/dc/ Matt Mahoneyl  私も⽂文字列列解析本をそのうち出します! :) l  データ圧縮・簡潔データ構造・全⽂文索索引・テキストマイニング 26

×