Today’s Paper Hao Yan, Shuai Ding and Torsten Suel

Slides:



Advertisements
Similar presentations
FxUG in Toyama # Presented by wacky. 最近 AMF 3 の Encode/Decode を実装してみました。 そこで得た知識を共有したいと思います! 30分後には … AMF の基本構造が分かっている AMF の得手不得手が分かっている BlazeDS.
Advertisements

利用者のプライバシを保護す る協調フィルタリング方式の 提案 7adrm011 木澤寛厚. 背景 商品の量が多い 見つからな い orz ネットショップ.
於 WWW論文読み会(webkai) 東京大学 岡崎直観(辻井研究室).  以下のURLに置いてあります ◦
電子書籍の検索機能の改善 木下研究室 201002713 鴫原 善寿. 背景 スマートフォンなどの携帯端末の普及と ともに電子書籍に注目が浴びた。中でも amazon の kindle など電子書籍の専用端末も 現れた。 電子書籍はデータなので本棚もいらず、 持ち運びも容易になるなど様々な恩恵を もたらした。
透過的データ圧縮 Transparent Data Compression
遺伝的アルゴリズムにおける ランドスケープによる問題のクラス分類
到着時刻と燃料消費量を同時に最適化する船速・航路計画
プログラムのパタン演習 解説.
富山大学 公開講座 2008 「QRコードを作ろう!」 ~ QRコードを作ろう! ~.
TCPコネクションの分割 によるスループットの向上
LZ圧縮回路の設計とハード・ソフト 最適分割の検討 電子情報デザイン学科 高性能計算研究室 4回生 中山 和也 2009/2/27.
極小集合被覆を列挙する 実用的高速アルゴリズム
Lexical Permutation Sorting Algorithm
近似アルゴリズム 第10章 終了時刻最小化スケジューリング
第11回 整列 ~ シェルソート,クイックソート ~
第11回 整列 ~ バケットソート,基数ソート,ヒープソート~
全体ミーティング (4/25) 村田雅之.
プライバシ協調フィルタリングにおける 利用者評価行列の次元削減
符号化のための重み付きジョイントバイラテラルフィルタを用いた 奥行き画像超解像
AllReduce アルゴリズムによる QR 分解の精度について
Reed-Solomon 符号と擬似ランダム性
時空間データからのオブジェクトベース知識発見
リンク構造を考慮したベクトル空間法によるWebグラフ分割手法に関する研究
Paper from PVLDB vol.7 (To appear in VLDB 2014)
データ構造と アルゴリズム 第二回 知能情報学部 新田直也.
PSOLA法を用いた極低ビットレート音声符号化に関する検討
2012年度 情報数理 ~ QRコードを作ろう!(1) ~.
2008年度 情報数理 ~ QRコードを作ろう!(1) ~.
日本大学 文理学部 情報システム解析学科 谷研究室 益田真太郎
岩井 儀雄 コンピュータ基礎演習  ー探索、整列ー 岩井 儀雄
第7章 データベース管理システム 7.1 データベース管理システムの概要 7.2 データベースの格納方式 7.3 問合せ処理.
システム開発実験No.7        解 説       “論理式の簡略化方法”.
秘匿積集合プロトコルを利用した プライバシ協調フィルタリングの提案
最短路問題のための LMS(Levelwise Mesh Sparsification)
ターム分布の確率モデル Zipfの法則:使用頻度の大きな語は語彙数が少なく,使用頻度の小さな語は語彙数が多い
IIR輪講復習 #5 Index compression
2010年度 情報数理 ~ QRコードを作ろう!(1) ~.
二分探索木によるサーチ.
プログラム実行履歴を用いたトランザクションファンクション抽出手法
IIR輪講復習 #4 Index construction
IIR輪講復習 #1 Boolean retrieval
IIR輪講復習 #10 XML retrieval
定兼邦彦 今井浩 東京大学理学系研究科 情報科学専攻
IIR輪講復習 #3 Dictionaries and tolerant retrieval (前半)
WWW上の効率的な ハブ探索法の提案と実装
複数の相関のある情報源に対するベイズ符号化について
Internet広域分散協調サーチロボット の研究開発
アルゴリズムとプログラミング (Algorithms and Programming)
先進的計算基盤システムシンポジウム SACSIS2007併設企画 マルチコアプログラミングコンテスト 「Cellスピードチャレンジ2007」
数独の解生成と 解に対する番号付け 理学部 情報科学科 渡辺研究室 戸神星也.
Peer-to-Peerシステムにおける動的な木構造の生成による検索の高速化
コーディングパターンの あいまい検索の提案と実装
データ構造とアルゴリズム (第5回) 静岡大学工学部 安藤和敏
Data Clustering: A Review
秘匿リストマッチングプロトコルとその応用
短い部分文字列の ミスマッチトレランスを 高速計算するアルゴリズム
構造的類似性を持つ半構造化文書における頻度分析
パターン認識 ークラスタリングとEMアルゴリズムー 担当:和田 俊和 部屋 A513
アルゴリズムとプログラミング (Algorithms and Programming)
Mondriaan Memory Protection の調査
GbEにおける TCP/IP の研究について
アルゴリズムとデータ構造1 2009年6月15日
1ーQー18 音声特徴量抽出のための音素部分空間統合法の検討
分枝カット法に基づいた線形符号の復号法に関する一考察
実験計画法 Design of Experiments (DoE)
ネット時代のセキュリティ3(暗号化) 2SK 情報機器工学.
Webページタイプによるクラスタ リングを用いた検索支援システム
アルゴリズムとデータ構造 2010年6月17日
識別子の読解を目的とした名詞辞書の作成方法の一試案
プログラミング論 バイナリーサーチ 1.
Presentation transcript:

Inverted Index Compression and Query Processing with Optimized Document Ordering 2009-07-28 SUHARA YOSHIHIKO

Today’s Paper Hao Yan, Shuai Ding and Torsten Suel Inverted Index Compression and Query Processing with Optimized Document Ordering WWW2009

背景知識

背景知識 (1/2) 転置リストにはDocIDとTFを格納 転置インデクスの構造 DocIDを差分値 (d-gap) に変換して圧縮 +位置情報など 転置インデクスの構造 term -> <DF; DocID:TF, DocID:TF, ... > e.g., “hoge” -> <5; 1:3, 3:2, 7:3> DocIDを差分値 (d-gap) に変換して圧縮 e.g., “hoge” -> <5; 1:3, 2:2, 4:3> d-gapを小さくすれば圧縮効率が向上

背景知識 (2/2) 同じような単語を含む文書に対して近いDocIDを付与すればよい => DocID reassignmentのモチベーション 既存研究 文書内容に基づくクラスタリング 計算コスト高 URLのアルファベットソート [Silvestri 07] 今のところ最良 分散インデクスにも親和性が高い 本研究では[Silvestri 07]に基づいてDocIDを付与

イントロダクション

イントロダクション 転置インデクスの圧縮の貢献 本研究では (1) インデクスサイズ削減 (2) クエリスループットの向上 DocID assignmentが最適化された際の圧縮手法の比較分析 圧縮手法毎のquery processing performanceを分析

圧縮手法の評価方法 1.圧縮率 2.デコード時間 エンコード時間はインデクス構築の際に一度かかるだけなので,あまり問題ならない

想定するインデクス構造 128個のDocID,128個のTFをブロックとする [Zhang 08]から抜粋

本研究の貢献 optimized DocID orderingにおける圧縮手法の比較(圧縮率,デコード速度) optimized DocID orderingにおけるTF圧縮の最適化 従来研究では,DocIDしか考えていなかった docID reorderingがインデクスサイズとクエリスループットに与える影響を分析 一般的なクエリ処理 (Document-at-a-Time; DAAT) を想定 デコード速度と圧縮率はトレードオフの関係のため,クエリログを解析することによって,適切なハイブリッド手法を設定する方法を提案

本論文の構成 DocIDの圧縮 圧縮率,デコード速度 TFの圧縮 混合圧縮方式 クエリスループットと圧縮効率の関係

DocIDの圧縮

インデクス圧縮手法 Var-Byte coding (var-byte) Rice coding S9 S16 PForDelta (PFD) Inetrpolative coding (IPC)

Variable-byte coding (var-byte) byte-wiseの圧縮アルゴリズム 8 bitsを以下のように解釈 1 bit: continuation bit code ends (1) or not (0) 7 bit: payload 00001100111000 = 824

Rice coding ゴロム符号 (Golomb code) の特殊形 b=2^kの制約 参考:ゴロム符号 (x – 1) / b = q … r とする q+1をunary符号化,rを接頭符号になるよう符号化 r = 0,1,2 -> 0, 10, 11 例)b=3, x=9 -> q = 2, r = 2 -> 110 11

補足:ライス符号が嬉しい理由 10 11 後半部分で符号化する,余り部分の候補数もb b=3の場合,余りの候補数もまた3個 (0,1,2) 接頭符号を生成する符号木は,以下のようになる 1 1 10 11 bを2のべき乗に設定すると,余り候補も2のべき乗個 符号木がバランスするため,log bビットのバイナリ符号で表現可

Simple9 (S9) 32ビット (1ワード) の分割方法を先頭4ビットで表現 [Anh 05] 0000 0001 0010 ・・・

Simple16 (S16) せっかく4ビットあるから,32ビットの分割方法を16通り設定 [Zhang 08] 詳細は記述されておらず 例1){6, 6, 6, 10, 10} 例2){2, 2, 2, 2, 2, 6, 6, 6}

PForDelta (PFD) 分岐予測が発生しない圧縮アルゴリズム 高速なデコードを実現するよう設計 圧縮率はそこそこ,速度は最高速

PForDeltaによるencode <1, 2, 1, 4, 3, 2, 7, 5, ...> 128個 (32の倍数) の整数を1ブロックとして圧縮 全体の90%の値が収まるビット数bを設定 bビットで表現できない値は例外 (exception) とする 例外が出現するエントリポイントには,次の例外へのオフセットを格納する <1, 2, 1, 4, 3, 2, 7, 5, ...> b=2 entry: 01 10 01 10 11 10 00 ... exception: 410 710 510 header: bの値,例外の開始位置を保持

PForDeltaによるdecode <1, 2, 1, 4, 3, 2, 7, 5> 2-phaseに分けて復号する (1) headerに格納されたbの値に基づき,数を復号 b=2 01 10 01 10 11 10 00 ... 1 2 1 2 3 3 ... (2) 例外を置換して,元の数列を復元 1 2 1 2 3 3 ... 410 710 510 exception: <1, 2, 1, 4, 3, 2, 7, 5>

例外同士が離れているため,便宜的に例外を生成 PForDeltaの問題点 次の例外までのオフセットをbビットで表現できない場合,例外でない値を例外と見なして対処する必要性 bを大きくすると,今度はエントリのサイズが大きくなってしまう <7, 2, 1, 2, 3, 2, 5, 5, ...> entry: 11 10 01 11 11 10 00 ... exception: 710 210 510 例外同士が離れているため,便宜的に例外を生成

Interpolative coding (IPC) 差分値d-gapsではなく,docIDをそのまま圧縮 分割統治法を用いた処理 圧縮率は最高レベル,処理速度に課題 例) 前後のdocIDが8と11であることがわかれば, 8 < x < 11より,x (=9) を1bitで表現可能 DocIDの最大値 = 20

Interpolative coding (IPC) binary_code (target, lo, hi) を呼び出す順番

Interpolative codingアルゴリズム (Managing Gigabytesから抜粋)

各手法の最適化

各手法の最適化 各手法を最適な手法に改良 (1) New PFD (提案手法) (2) OptPFD (提案手法) (3) GammaDiff coding (4) S16-128 coding (5) Optimized IPC

(1) NewPFD PForDeltaにおいて,例外でない値を例外として扱う問題点を改良 (1) 例外のオフセット情報を配列に保持 (2) 例外エントリには,次の例外へのオフセットではなく,例外の下位bビットを格納 (3) bビットで表現できなかった値を別の配列に保持 <1, 2, 1, 4, 3, 2, 9, 5, ...> 例外の下位ビットを保持 b=2 entry: 01 10 01 00 11 10 01 01 00012 00102 overflow bits: 任意の手法で圧縮可能 (論文ではS16を利用) 210 010 ... offset:

(2) OptPFD PForDeltaの最適なパラメータbを決定する改良 どうやって?

(3) GammaDiff ガンマ符号 GammaDiff: ガンマ符号の改良 差が負の場合どうするんだろう? 1 + floor(log x) をunary符号:後半の符号長を表現 x – 2 ^ floor(log x)をbinary符号 例)x = 9 -> 1 + floor(log x) = 4 -> 1110 001 GammaDiff: ガンマ符号の改良 前半部分を転置リストの平均差分値の符号長との差に置換 例) 転置リストの差分値の平均=2 (log2 = 1) の場合 x = 9 -> 1 + floor(log x) – log2 + 1 = 3 -> 110 001 差が負の場合どうするんだろう?

(4) S16-128 S16を,より小さい値に対応するよう改良 具体的なアサイン方法は記述されておらず

(5) Optimized IPC IPC: xを<lo, hi>の範囲においてbビットのバイナリ符号に変換 アルゴリズム b = ceil( r ) ただし r = log(hi – lo + 1) rが2のべき乗でなかった場合,無駄ビットが発生 x - lo < 2b - rの場合,b-1ビットで圧縮可能 その他の場合,x – lo + 2b – rをbビットで表現

実験結果 docID編

DocIDの差分値の分布 差分値をバイナリ表現した際のビット長の分布

DocIDの圧縮率比較 TREC GOV2 datasetからランダムに選択されたクエリに対する転置リストサイズの比較

var-byteについて Q. sortによって圧縮率の向上が見られない?おかしいんじゃねーの?? Suel先生の回答 A1. sortせずとも殆どのd-gapsが128未満 var-byteは最低でも1byte (8bit) 使用してしまうbyte-wise手法ゆえの問題 A2. インデクスサイズは下記のとおり unsorted: docID=7501MB, TF=5823MB sorted: docID=6646MB, TF=5823MB

DocID reorderingの効果 DocID reorderingによるIPC手法の比較

PFD手法の比較

TFの圧縮

TFの変換 そのままTFを圧縮するのではなく,変換を行った後に圧縮することで圧縮効率を向上 本研究で利用する変換方法 (1) Move-To-Front (MTF) (2) Most-Likely-Next (MLN)

(1) Move-To-Front (MTF) 数字をindex arrayの位置に変換し,使用したindexの値を先頭に移動 先頭ではなく,i/2や2i/3に移動というヒューリスティクスが有効 例) a list of numbers: [5, 5, 5, 3, 2, 2] index array: <1, 2, 3, 4, 5> (index: <1, 2, 3, 4, 5>) <5> (index: <5, 1, 2, 3, 4>) <5, 1> (index: <5, 1, 2, 3, 4>) <5, 1, 1> (index: <5, 1, 2, 3, 4>) <5, 1, 1, 4> (index: <3, 5, 1, 2, 4>) <5, 1, 1, 4, 1> (index: <3, 5, 1, 2, 4>)

(2) Most-Likely-Next (MLN) ある値の次に現れる値の頻度に基づいて変換 MTFに比べて圧縮率,デコード速度で上回る QxQ行列を作成 (e.q., Q=16) (i, j)成分は,値iの次に(j+1)番目の頻度で出現する値を保持 変換対象の値をひとつ前の値に対する順位で置換 Q番目より大きい値については変換せず

実験結果 TF編

TFの圧縮率比較 context sensitiveな手法 (左側) はソートの効果あり 近い値のTFがかたまることによる恩恵

TFの圧縮:PFDの比較 PFD手法の中では,圧縮率,デコード速度ともにOptPFDが優れている

TFの圧縮:圧縮単位の比較 ブロックごとの圧縮の方がよい

TFの圧縮:まとめ

実験結果 処理速度編

処理速度:秒あたりのデコード数

処理速度:まとめ

DocID sortの驚くべき効果 クエリ処理時間の比較 理由 ブーリアン検索,BM25ランキング OptPFD (no MLN for freq.) unorderedに比べて2倍の速度を達成! 理由 ディスクアクセスの削減ではない(メモリインデクスのため) デコード速度の向上でもない ordered indexでは,はるかに少ないブロック数をデコードしているため

直感的な解釈 (1/2) AND検索の際には,最短の転置リストからdocIDのintersectionを行う 最短の転置リストにdocIDがクラスタとして出現する場合,それらのdocIDのlookupは,対象の転置リストにおいて同じブロックに出現しやすくなる 一方その他のブロックには全く出現しないため,デコードする必要がなくなる

直感的な解釈 (2/2) sorted unsorted decodeの 春樹→ 必要なし 村上→ 春樹→ 村上→ docID block

その他の圧縮手法における比較 docID sortの効果を確認 OptPFDに関しては,インデクスサイズを削減してoroginalと同じ速度を実現できる

混合圧縮方式

混合圧縮方式の問題 問題1:クエリあたりの平均処理時間に対する上限値tを与えられた際に,インデクス全体が最小化され,かつ平均処理時間がtを満たすように,各転置リストに対して利用可能な圧縮手法の中から圧縮手法を選択する 問題1‘:平均クエリ処理時間の上限値t,I/O帯域 (MB/s) の上限値b,インデクスをメインメモリを利用してキャッシュするキャッシュ方針P,利用可能な圧縮手法が与えられた際に,上限値tとbを満たすように,キャッシュに必要となるメインメモリの合計が最小になるように各転置リストに対して圧縮手法を選択する. 問題1は問題1‘の特殊形

問題1を解くアプローチ 十分に大きなクエリセットを用意.各圧縮手法を用いて構築されたインデクスに対して,これらのクエリを処理 単語wに対する転置リストIwと各圧縮手法cについて,以下の値を算出 (i) cを用いたIwの圧縮サイズsc(w) (ii) クエリログを処理するための復元にかかった合計時間 tc(w) 各転置リストに最小サイズを与える圧縮手法を初期値とする 与えられた時間制約が満たされるまで,以下を繰り返す 全てのwに対して(sc’(w) – sc(w)) / (tc(w) – tc’(w))を最小化するような転置リストIwと新しい圧縮方式c’を選択 (ただしc’≠c) 言い換えれば,時間削減あたりのインデクスサイズ増加が最小の転置リストと圧縮手法を選択する

インデクスサイズ vs. クエリ処理時間

まとめ

まとめ 結論 Open question 今やろうとしていること インデクス圧縮,クエリスループット両方においてdocID reassignmentの効果を示した Open question 1. 圧縮されたインデクスの中にスキップポインタ相当のものを入れることができないか 2. archival collectionに対するreorderingと圧縮 今やろうとしていること URLのalphabetical sort以上に良いソート方法 interpolative codeのデコード高速化

参考文献 [Zhang 08] J. Zhang, X. Long and T. Suel. Performance of Compressed Inverted List Caching in Search Engines. WWW2008. 昨年のDBIR輪講で植松さんが紹介 [Silvestri 07] F. Silvestri. Sorting out the document identifier reassignment. ECIR2007. [Anh 05] V. N. Anh and A. Moat. Inverted Index Compression using Word-Aligned Binary Codes. Information Retrieval, 8(1):151-166, 2005.

ありがとうSuel先生 Suel先生