JP6872333B2 - 最大内積探索装置、最大内積探索方法及び最大内積探索プログラム - Google Patents

最大内積探索装置、最大内積探索方法及び最大内積探索プログラム Download PDF

Info

Publication number
JP6872333B2
JP6872333B2 JP2016181489A JP2016181489A JP6872333B2 JP 6872333 B2 JP6872333 B2 JP 6872333B2 JP 2016181489 A JP2016181489 A JP 2016181489A JP 2016181489 A JP2016181489 A JP 2016181489A JP 6872333 B2 JP6872333 B2 JP 6872333B2
Authority
JP
Japan
Prior art keywords
search
vector
inner product
maximum inner
representative
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2016181489A
Other languages
English (en)
Other versions
JP2018045564A (ja
JP2018045564A5 (ja
Inventor
大輔 岡野原
大輔 岡野原
遼介 奥田
遼介 奥田
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Preferred Networks Inc
Original Assignee
Preferred Networks Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Preferred Networks Inc filed Critical Preferred Networks Inc
Priority to JP2016181489A priority Critical patent/JP6872333B2/ja
Publication of JP2018045564A publication Critical patent/JP2018045564A/ja
Publication of JP2018045564A5 publication Critical patent/JP2018045564A5/ja
Application granted granted Critical
Publication of JP6872333B2 publication Critical patent/JP6872333B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

本発明は、クエリベクトルに対して内積が最大となるデータベース中のベクトルを探索する最大内積探索装置、最大内積探索方法及び最大内積探索プログラムに関する。
画像、音声及びセンサデータ等の分類及び検索において、最大内積探索(MIPS:Maximum Inner Product Search)は重要である。
MIPSとは、例えば、データベース中のベクトル{d,d,…,d}とクエリqが与えられた時に、内積<q,d>が最大となるデータベース中のベクトルを探すことである。なお、Top−K MIPSとは、上記の例でいうと、データベース中のベクトルのうち内積<q,d>が大きい順にk個のベクトルを探すことである。すなわち、MIPSとはTop−1 MIPSである。以降では、MIPSはTop−K MIPSも含めるものとする。
分類におけるMIPSの使用例を挙げると、データベースが各クラスに対応するベクトルであり、クエリが入力データ又はニューラルネットなどで変換された特徴表現であり、MIPSは分類結果を返す。また、検索におけるMIPSの使用例を挙げると、データベースが過去のデータであり、クエリが現在のデータであり(これらのデータは元のデータの場合もあるしニューラルネット等で変換された特徴表現の場合もある)、MIPSは最も似ている検索結果を探す。
MIPSを行う方法としては、インデックスを使わない方法、LSH(Locality Sensitive Hashing)を使う方法及びブロック量子化を使う方法が従来知られている。以下では、ベクトル長をm、データベース中のベクトルの数をnとして、各方法について簡単に説明する。
インデックスを使わない方法では、そのまま内積を全て計算する。計算量はO(nm)である。
LSHを使う方法では、ベクトルを長さbのビットベクトルに変換し、ビットベクトル同士の内積(XOR演算)で近似する。一度に計算できるビット幅数をwとすると、計算量はO(nb/w)である。LSHを使う方法は、精度が低いことが知られている。
ブロック量子化を使う方法では、ベクトルをブロックに分割し、ブロック毎に量子化する。量子化する際は、クエリの情報も使い、適切なブロックを決定する。ブロック数をkとすると、計算量はO(nk)である。下記非特許文献1には、ブロック量子化を使う方法が開示されている。
Ruiqi Guo、外3名、"Quantization based Fast Inner Product Search"、[online]、Google Research、[平成28年1月14日検索]、インターネット<URL:http://arxiv.org/pdf/1509.01469v1.pdf>
上述の通り最大内積探索は重要であり、特にビッグデータ等の大量のデータが含まれるデータベースに対して最大内積探索を行う場合、計算量の少ない最大内積探索の方法が望まれる。
そこで、本発明は、かかる課題に鑑みて為されたものであり、計算量の少ない最大内積探索を行うことができる最大内積探索装置、最大内積探索方法及び最大内積探索プログラムを提供することを目的とする。
上記課題を解決するため、本発明の一側面に係る最大内積探索装置は、所定の要素数の検索ベクトルの集合である検索ベクトル集合と、検索ベクトル集合の各検索ベクトルについて、要素を複数のブロックに分けてブロックごとに代表ベクトルに量子化した量子化検索ベクトル集合と、ブロックごとの代表ベクトルの集合である代表ベクトル集合とを格納する検索データベースと、要素数のクエリベクトルを取得するクエリ取得部と、クエリ取得部によって取得されたクエリベクトルの要素をブロックに分け、ブロックごとに、当該ブロックのクエリベクトルと検索データベースによって格納された代表ベクトル集合の当該ブロックの代表ベクトルそれぞれとの内積を算出し、算出された内積に基づいてブロックごとに当該ブロックの代表ベクトルを選択し、検索データベースによって格納された検索ベクトル集合に含まれる検索ベクトルのうち、全てのブロックにおいて各ブロックに対して選択された代表ベクトルを含む検索ベクトルを、検索データベースによって格納された量子化検索ベクトル集合に基づいて探索する最大内積探索部と、を備える。
このような最大内積探索装置によれば、最大内積探索部により、ブロックごとに、当該ブロックのクエリベクトルと代表ベクトル集合の当該ブロックの代表ベクトルそれぞれとの内積に基づく代表ベクトルが選択され、検索ベクトル集合に含まれる検索ベクトルのうち、全てのブロックにおいて各ブロックに対して選択された代表ベクトルを含む検索ベクトルが探索される。ここで、検索ベクトル集合に含まれる検索ベクトルのうち、全てのブロックにおいて各ブロックに対して選択された代表ベクトルを含む検索ベクトルが探索される際に、例えば、Wavelet行列を利用した演算を行うことができる。Wavelet行列を利用すれば、ある範囲内で共通して出現する値を探索する演算を少ない計算量で行うことができる。つまり、検索ベクトルの全てのブロックそれぞれにおいて選択された代表ベクトルを含む検索ベクトルを少ない計算量で探索することができる。すなわち、計算量の少ない最大内積探索を行うことができる。
また、本発明の一側面に係る最大内積探索装置において、検索データベースは、代表ベクトル集合に含まれるブロックごとの代表ベクトルごとに、当該代表ベクトルが含まれる検索ベクトルを識別する検索ベクトル識別情報の集合に対応するWavelet行列をさらに格納し、最大内積探索部は、検索ベクトルを探索する際に、検索データベースによって格納されたWavelet行列を利用した演算を行うこととしてもよい。このような最大内積探索装置によれば、最大内積探索部により、検索ベクトル集合に含まれる検索ベクトルのうち、全てのブロックにおいて各ブロックに対して選択された代表ベクトルを含む検索ベクトルが探索される際に、Wavelet行列を利用した演算が行われる。Wavelet行列を利用すれば、ある範囲内で共通して出現する値を探索する演算を少ない計算量で行うことができる。かかる構成を採れば、検索ベクトルの全てのブロックそれぞれにおいて選択された代表ベクトルを含む検索ベクトルを少ない計算量で探索することができる。すなわち、計算量の少ない最大内積探索を行うことができる。
また、本発明の一側面に係る最大内積探索装置において、最大内積探索部は、検索ベクトルを探索する際に、選択された全ての代表ベクトルそれぞれに対応するWavelet行列を取得し、取得した全てのWavelet行列に対して、共通して出現する検索ベクトル識別情報を求める演算を行うこととしてもよい。Wavelet行列を利用すれば、ある範囲内で共通して出現する値を探索する演算を少ない計算量で行うことができる。かかる構成を採れば、検索ベクトルの全てのブロックそれぞれにおいて選択された代表ベクトルを含む検索ベクトルを少ない計算量で探索することができる。すなわち、計算量の少ない最大内積探索を行うことができる。
また、本発明の一側面に係る最大内積探索装置において、代表ベクトル集合に含まれるブロックごとの代表ベクトルごとに、当該代表ベクトルが含まれる検索ベクトルを識別する検索ベクトル識別情報の集合に対応するWavelet行列を構築するWavelet行列構築部をさらに備え、検索データベースは、Wavelet行列構築部によって構築されたWavelet行列を格納することとしてもよい。かかる構成を採れば、計算量の少ない最大内積探索を行うためのWavelet行列を確実に構築及び格納することができる。
ところで、本発明は、上記のように最大内積探索装置の発明として記述できる他に、以下のようにそれぞれ最大内積探索方法及び最大内積探索プログラムの発明としても記述することができる。これはカテゴリが異なるだけで、実質的に同一の発明であり、同様の作用及び効果を奏する。
即ち、本発明の一側面に係る最大内積探索方法は、所定の要素数の検索ベクトルの集合である検索ベクトル集合と、検索ベクトル集合の各検索ベクトルについて、要素を複数のブロックに分けてブロックごとに代表ベクトルに量子化した量子化検索ベクトル集合と、ブロックごとの代表ベクトルの集合である代表ベクトル集合とを格納する検索データベースを備える最大内積探索装置により実行される最大内積探索方法であって、要素数のクエリベクトルを取得するクエリ取得ステップと、クエリ取得ステップにおいて取得されたクエリベクトルの要素をブロックに分け、ブロックごとに、当該ブロックのクエリベクトルと検索データベースによって格納された代表ベクトル集合の当該ブロックの代表ベクトルそれぞれとの内積を算出し、算出された内積に基づいてブロックごとに当該ブロックの代表ベクトルを選択し、検索データベースによって格納された検索ベクトル集合に含まれる検索ベクトルのうち、全てのブロックにおいて各ブロックに対して選択された代表ベクトルを含む検索ベクトルを、検索データベースによって格納された量子化検索ベクトル集合に基づいて探索する最大内積探索ステップと、を含む。
また、本発明の一側面に係る最大内積探索プログラムは、コンピュータを、所定の要素数の検索ベクトルの集合である検索ベクトル集合と、検索ベクトル集合の各検索ベクトルについて、要素を複数のブロックに分けてブロックごとに代表ベクトルに量子化した量子化検索ベクトル集合と、ブロックごとの代表ベクトルの集合である代表ベクトル集合とを格納する検索データベースと、要素数のクエリベクトルを取得するクエリ取得部と、クエリ取得部によって取得されたクエリベクトルの要素をブロックに分け、ブロックごとに、当該ブロックのクエリベクトルと検索データベースによって格納された代表ベクトル集合の当該ブロックの代表ベクトルそれぞれとの内積を算出し、算出された内積に基づいてブロックごとに当該ブロックの代表ベクトルを選択し、検索データベースによって格納された検索ベクトル集合に含まれる検索ベクトルのうち、全てのブロックにおいて各ブロックに対して選択された代表ベクトルを含む検索ベクトルを、検索データベースによって格納された量子化検索ベクトル集合に基づいて探索する最大内積探索部、として機能させる。
本発明によれば、計算量の少ない最大内積探索を行うことができる。
本発明の実施形態に係る最大内積探索装置の機能ブロック図である。 本発明の実施形態に係る最大内積探索装置のハードウェア構成図である。 検索ベクトル集合の一例を示す図である。 量子化検索ベクトル集合の一例及び代表ベクトル集合の一例を示す図である。 転置ファイル集合の一例を示す図である。 Wavelet行列の構築例を示す図である。 クエリベクトルの一例を示す図である。 最大内積探索の処理のうち内積を算出する処理の一例を示す図である。 最大内積探索の処理のうち内積の大きい代表ベクトルを含む検索ベクトルを探索する処理の一例を示す図である。 本発明の実施形態に係る最大内積探索装置で実行される検索データベース構築処理を示すフローチャートである。 本発明の実施形態に係る最大内積探索装置で実行される最大内積探索処理を示すフローチャートである。 本発明の実施形態に係る最大内積探索プログラムの構成を、記憶媒体と共に示す図である。
以下、図面とともに最大内積探索装置、最大内積探索方法及び最大内積探索プログラムの好適な実施形態について詳細に説明する。なお、図面の説明においては同一要素には同一符号を付し、重複する説明を省略する。
図1は、最大内積探索装置1の機能ブロック図である。図1に示す通り、最大内積探索装置1は、検索データベース10、ブロック量子化部11、転置ファイル構築部12、Wavelet行列構築部13、クエリ取得部14及び最大内積探索部15を含んで構成される。
最大内積探索装置1は、CPU等のハードウェアから構成されているものである。図2は、最大内積探索装置1のハードウェア構成の一例を示す図である。図1に示される最大内積探索装置1は、物理的には、図2に示すように、一つ以上のCPU100、主記憶装置であるRAM101及びROM102、キーボードやディスプレイ等の入出力装置103、通信モジュール104、及び補助記憶装置105などを含むコンピュータシステムとして構成されている。
図1に示す最大内積探索装置1の各機能ブロックの機能は、図2に示すCPU100、RAM101等のハードウェア上に所定のコンピュータソフトウェアを読み込ませることにより、CPU100の制御のもとで入出力装置103、通信モジュール104、及び補助記憶装置105を動作させるとともに、RAM101におけるデータの読み出し及び書き込みを行うことで実現される。
以下、図1に示す最大内積探索装置1の各機能ブロックについて説明する。
検索データベース10は、所定の要素数k(kは自然数)の検索ベクトルの集合である検索ベクトル集合を格納する。検索ベクトルとは、後述のクエリベクトルに対して類似する(内積が最大となる、又は内積が比較的大きい)ベクトルを探索する際に、探索対象となる一般的なベクトルである。図3は、検索データベース10によって格納された検索ベクトル集合の一例を示す図である。図3に示す検索ベクトル集合は、要素数が6の検索ベクトルが16個集まったものである。説明の便宜上、検索ベクトル集合に含まれる検索ベクトルそれぞれを識別するための識別情報として、各検索ベクトルにはベクトル番号が付与されているものとする。ベクトル番号は、例えば、検索ベクトル集合が配列で実装される際のインデックスに対応する。図3において、ベクトル番号が「0」の検索ベクトルは、要素として値「0.64」、「0.62」、「0.81」、「0.31」、「0.29」及び「0.85」を持っていることを示している。検索データベース10は、検索ベクトル集合を、予め格納してもよいし、最大内積探索装置1が備える検索ベクトル集合登録部(不図示)の命令に基づいて格納してもよいし、インターネット等のネットワークを介して他の装置から受信して格納してもよい。
ブロック量子化部11は、検索データベース10によって格納された検索ベクトル集合の各検索ベクトルについて、要素を複数のブロックに分けてブロックごとに代表ベクトルに量子化した量子化検索ベクトル集合を構築する。ブロック量子化部11は、代表ベクトルに量子化する際に、検索データベース10によって格納された、ブロックごとの代表ベクトルの集合である代表ベクトル集合を利用する。なお、代表ベクトル集合は、ブロック量子化部11が検索データベース10によって格納された検索ベクトル集合に基づいて構築したものであってもよい。
ここで、検索ベクトルの要素を複数のブロックに分けるとは、例えば、図3に示す通り、検索ベクトルの6つの要素を、要素が2つずつの3つのブロック(b、b及びb)に分けることである。図4は、量子化検索ベクトル集合の一例及び代表ベクトル集合の一例を示す図である。図4に示す量子化検索ベクトル集合は、ブロック量子化部11が、図3に示す検索ベクトル集合の各検索ベクトルについて、要素をブロックb、b及びbに分けて、ブロックごとに代表ベクトルに量子化したものである。ここで、ブロック量子化部11は、代表ベクトルに量子化する際に、図4に示す代表ベクトル集合を用いている。
図4に示す代表ベクトル集合は、ブロックb、b及びbごとの代表ベクトルの集合である。説明の便宜上、代表ベクトル集合に含まれる代表ベクトルそれぞれを識別するための識別情報として、各代表ベクトルには量子化番号が付与されているものとする。量子化番号は、例えば、代表ベクトル集合が配列で実装される際のインデックスに対応する。図4に示す代表ベクトル集合の一例では、ブロックbでは8つの代表ベクトルが含まれている。ブロックごとに任意の数の代表ベクトルが含まれていてもよく、ブロック毎に、含まれる代表ベクトルの数は異なっていてもよいし、同じであってもよい。図4に示す量子化検索ベクトル集合において、各ブロックは、同図に示す代表ベクトル集合の量子化番号が割り当てられている。例えば、量子化検索ベクトル集合のベクトル番号が「0」のレコード(「量子化検索ベクトル」と呼ぶ)のうち、ブロックbは、量子化番号が「4」である代表ベクトル「[0.80,0.09]」に量子化されていることを示す。同様に、ブロックbは、量子化番号が「7」であるブロックbの代表ベクトルに量子化され、ブロックbは、量子化番号が「4」であるブロックbの代表ベクトルに量子化されていることを示す。
検索データベース10は、ブロック量子化部11によって構築された量子化検索ベクトル集合を格納する。また、検索データベース10は、ブロック量子化部11によって構築された代表ベクトル集合を格納する。なお、検索データベース10は、予め用意された、又はネットワークを介して他の装置から受信した量子化検索ベクトル集合及び代表ベクトル集合を格納してもよい。
転置ファイル構築部12は、検索データベース10によって格納された量子化検索ベクトル集合のブロックごとの転置ファイルの集合である転置ファイル集合を構築する。図5は、転置ファイル集合の一例を示す図である。図5に示す転置ファイル集合は、転置ファイル構築部12により、図4に示す量子化検索ベクトル集合のブロックごとの転置ファイルの集合として構築されたものである。図5に示す転置ファイル集合は、ブロックごとに、量子化番号とベクトル番号とが対応付けられている。量子化番号は、図4に示す代表ベクトル集合の量子化番号である。ベクトル番号は、図4に示す量子化検索ベクトル集合のベクトル番号である。例えば、図5に示すブロックbの転置ファイル集合について、量子化番号が「4」に、ベクトル番号「0」、「5」、「11」及び「15」が対応付けられている。これは、量子化番号が「4」である代表ベクトルをブロックbに含む量子化検索ベクトルは、ベクトル番号が「0」、「5」、「11」及び「15」である量子化検索ベクトルであることを示している。
検索データベース10は、転置ファイル構築部12によって構築された転置ファイル集合を格納する。なお、検索データベース10は、予め用意された、又はネットワークを介して他の装置から受信した転置ファイル集合を格納してもよい。
Wavelet行列構築部13は、代表ベクトル集合に含まれるブロックごとの代表ベクトルごとに、当該代表ベクトルが含まれる検索ベクトルを識別する検索ベクトル識別情報(ベクトル番号)の集合に対応するWavelet行列(ウェーブレット行列、Wavelet Matrix)を構築する。Wavelet行列とは、計算量が定数時間のrank関数及びselect関数、並びにintersect関数等をサポートする完備辞書である。完備辞書とは、「0」と「1」とからなるビット列に対して操作を高速に行えるデータ構造である。rank関数とは、配列中の指定した範囲の「1」の数を返す関数である。select関数とは、配列中の指定した番目の1の位置を返す関数である。intersect関数は、指定された範囲内で共通して出現する値を返す関数である。intersect関数は、rank関数及びselect関数を利用した計算量の少ない演算を行うことができる。
Wavelet行列構築部13は、具体的には、転置ファイル構築部12により構築された転置ファイル集合に含まれる各ブロックの各レコード(量子化番号とベクトル番号とが対応付けられたレコード)のベクトル番号の配列に対して、Wavelet行列を構築する。図6は、Wavelet行列の構築例を示す図であり、具体的には、図5に示す転置ファイル集合のうち、ブロックbの量子化番号が「4」のベクトル番号の配列である「0,5,11,15」について、Wavelet行列構築部13がWavelet行列を構築する際の処理例を示した図である。
図6において、まず、各ベクトル番号が示す値のビット列を求める。ベクトル番号「0」のビット列は「0000」であり、ベクトル番号「5」のビット列は「0101」であり、ベクトル番号「11」のビット列は「1011」であり、ベクトル番号「15」のビット列は「1111」である。次に、配列「0,5,11,15」をその順で左から並べ、それぞれの値のビット列の1桁目のビット値を当該順で左から並べる。次に、ビット値が「0」のベクトル番号を当該順で左側に寄せ、ビット値が「1」のベクトル番号を当該順で右側に寄せる。この場合は、ビット値が「0011」であり、寄せる必要はないため、順番は変わらず、そのまま次(下)の段に配列「0,5,11,15」を並べる。以下は同様の処理を繰り返す。並べられた配列「0,5,11,15」のそれぞれの値のビット列の2桁目のビット値を当該順で左から並べる。そして同様に寄せを行うが、今回の場合は、ビット値が「0101」であるため、3つ目のベクトル番号「11」を1つ左に寄せ、2つ目のベクトル番号「5」を1つ右に寄せる。すなわち、ベクトル番号「5」と「11」との位置を入れ替える。そして、次の段に位置が入れ替えられた配列「0,11,5,15」を並べ、それぞれの値のビット列の3桁目のビット値を当該順で左から並べる。今回の場合は、ビット値が「0101」であるため、3つ目のベクトル番号「5」を1つ左に寄せ、2つ目のベクトル番号「11」を1つ右に寄せる。そして、次の段に位置が入れ替えられた配列「0,5,11,15」を並べ、それぞれの値のビット列の4桁目のビット値を当該順で左から並べる。最後に、これまで並べられた各桁のビット値をその順で上の段から順に合わせた行列としてWavelet行列を構築する。
検索データベース10は、Wavelet行列構築部によって構築されたWavelet行列を格納する。なお、検索データベース10は、予め用意された、又はネットワークを介して他の装置から受信したWavelet行列を格納してもよい。
クエリ取得部14は、要素数kのクエリベクトルを取得する。すなわち、クエリ取得部14は、検索データベース10によって格納された検索ベクトル集合に含まれる各検索ベクトルと同じ要素数のクエリベクトルを取得する。クエリベクトルは、ユーザ等によって指定された一般的なベクトルであり、クエリベクトルに類似するベクトルが検索ベクトル集合から探索される。クエリ取得部14は、クエリベクトルを、入出力装置103から取得してもよいし、他の装置からネットワークを介して取得してもよいし、予め最大内積探索装置1に格納されたクエリベクトルを取得してもよい。クエリ取得部14は、取得したクエリベクトルを最大内積探索部15に出力する。図7は、クエリベクトルの一例を示す図である。図7に示すクエリベクトルは、図3に示す検索ベクトル集合に含まれる検索ベクトルの要素数と同じ6つの要素から構成される。
最大内積探索部15は、クエリ取得部14によって取得されたクエリベクトルの要素をブロックに分け、ブロックごとに、当該ブロックのクエリベクトルと検索データベース10によって格納された代表ベクトル集合の当該ブロックの代表ベクトルそれぞれとの内積を算出し、算出された内積に基づいてブロックごとに当該ブロックの代表ベクトルを選択し、検索データベース10によって格納された検索ベクトル集合に含まれる検索ベクトルのうち、全てのブロックにおいて各ブロックに対して選択された代表ベクトルを含む検索ベクトルを、検索データベース10によって格納された量子化検索ベクトル集合に基づいて探索する。また、最大内積探索部15は、検索ベクトルを探索する際に、検索データベース10によって格納されたWavelet行列を利用した演算を行う。より具体的には、最大内積探索部15は、検索ベクトルを探索する際に、選択された全ての代表ベクトルそれぞれに対応するWavelet行列を取得し、取得した全てのWavelet行列に対して、共通して出現する検索ベクトル識別情報を求める演算を行う。以下、最大内積探索部15の処理を具体的に説明する。
まず、最大内積探索部15は、クエリ取得部14から入力されたクエリベクトルの要素を、検索データベース10によって格納された量子化検索ベクトル集合と同じブロックに分ける。図7に示すクエリベクトルでは、6つの要素が、要素が2つずつの3つのブロック(b、b及びb)に分けられている。次に、最大内積探索部15は、ブロックごとに、当該ブロックのクエリベクトルと検索データベース10によって格納された代表ベクトル集合の当該ブロックの代表ベクトルそれぞれとの内積を算出する。図8は、最大内積探索の処理のうち内積を算出する処理の一例を示す図である。図8に示す通り、最大内積探索部15は、例えば、クエリベクトルのブロックbのベクトルと、代表ベクトル集合のブロックb対応する代表ベクトルそれぞれとの内積を順に算出し、同様にブロックb及びbに対しても内積を順に算出する。
次に、最大内積探索部15は、算出された内積に基づいてブロックごとに当該ブロックの代表ベクトルを選択する。図9は、最大内積探索の処理のうち内積の大きい代表ベクトルを含む検索ベクトルを探索する処理の一例を示す図である。図9において、ブロックごとに算出された内積が降順に並べられており、各内積の算出対象である代表ベクトルの量子化番号が対応付けられている。最大内積探索部15は、例えば、ブロックごとに、内積が最大の代表ベクトルを選択する。例えば、図9において、最大内積探索部15は、ブロックbから量子化番号が「4」の代表ベクトルを選択し、ブロックbから量子化番号が「1」の代表ベクトルを選択し、ブロックbから量子化番号が「5」の代表ベクトルを選択する。なお、最大内積探索部15による代表ベクトルの選択方法はこれに限るものではない。例えば、最大内積探索部15は、ブロックごとに内積が上位2位までの代表ベクトルを選択してもよいし、ブロックごとに内積が所定の順位以上の代表ベクトルを選択してもよいし、ブロックごとに所定の順位を変えるなどブロックごとに基準を変えてもよい。また、最大内積探索部15は、まず、ブロックごとに最大(1位)の内積の代表ベクトルを選択し、選択された代表ベクトルに基づいて後述の検索ベクトルの探索が失敗した(探索ができなかった)場合に、続いて、ブロックごとに2位以上の内積の代表ベクトルを選択し、選択された代表ベクトルに基づいて再度検索ベクトルの探索を行う等、検索ベクトルの探索が行えるまで繰り返し最大内積探索部15の処理を実行し、その都度、代表ベクトルの選択基準を変えてもよい。
次に最大内積探索部15は、検索データベース10によって格納された検索ベクトル集合に含まれる検索ベクトルのうち、全てのブロックにおいて各ブロックに対して選択された代表ベクトルを含む検索ベクトルを、検索データベース10によって格納された量子化検索ベクトル集合に基づいて探索する。図9の例で説明すると、ブロックbから選択された量子化番号が「4」の代表ベクトルを検索ベクトルのブロックbに含み、ブロックbから選択された量子化番号が「1」の代表ベクトルを検索ベクトルのブロックbに含み、ブロックbから選択された量子化番号が「5」の代表ベクトルを検索ベクトルのブロックbに含む検索ベクトルを最大内積探索部15は探索する。その際、最大内積探索部15は、例えば、検索データベース10によって格納された転置ファイル集合を利用してもよい。例えば、図9の例で説明すると、最大内積探索部15は転置ファイル集合を利用することで、ブロックbから選択された量子化番号が「4」の代表ベクトルはベクトル番号が「0」、「5」、「11」及び「15」の検索ベクトルに含まれることを判定し、ブロックbから選択された量子化番号が「1」の代表ベクトルはベクトル番号が「2」、「5」、「6」及び「11」の検索ベクトルに含まれることを判定し、ブロックbから選択された量子化番号が「5」の代表ベクトルはベクトル番号が「1」、「5」、「11」及び「15」の検索ベクトルに含まれることを判定することができる。そして、最大内積探索部15は、各ブロックに共通して現れるベクトル番号として、「5」及び「11」を判定することができる。すなわち、最大内積探索部15は、ベクトル番号が「5」及び「11」の検索ベクトルを、クエリベクトルに類似するベクトルとして探索する。
最大内積探索部15は、各ブロックに共通して現れるベクトル番号を求める際に、選択された全ての代表ベクトルそれぞれに対応するWavelet行列を検索データベース10によって格納されたWavelet行列から取得し、取得した全てのWavelet行列に対して、共通して出現するベクトル番号を求める演算を行ってもよい。上述した通り、Wavelet行列のintersect関数を利用することで、各ブロックに共通して現れるベクトル番号を計算量の少ない演算によって求めることができる。
最大内積探索部15は、探索した検索ベクトル又は検索ベクトル識別情報を、入出力装置103(例えばディスプレイ)に出力(表示)してもよいし、ネットワークを介して他の装置に出力してもよい。
続いて、図10及び図11に示すフローチャートを用いて、それぞれ最大内積探索装置1における検索データベース構築処理及び最大内積探索方法の処理について説明する。
図10において、まず、ブロック量子化部11により、検索データベース10によって予め格納された検索ベクトル集合に対してブロック量子化が行われ、量子化検索ベクトル集合及び代表ベクトル集合が構築される(ステップS1)。次に、転置ファイル構築部12により、S1にて構築された代表ベクトル集合の転置ファイルが構築される(ステップS2)。次に、Wavelet行列構築部13により、S2にて構築された転置ファイルに対してWavelet行列が構築される(ステップS3)。
図11において、まず、クエリ取得部14により、クエリベクトルが取得される(ステップS10、クエリ取得ステップ)。次に、最大内積探索部15により、S10にて取得されたクエリベクトルと検索データベース10によって格納された情報に基づいて、クエリベクトルに類似する検索ベクトルが探索される(ステップS11、最大内積探索ステップ)。
引き続いて、上述した一連の最大内積探索装置1による処理をコンピュータに実行させるための最大内積探索プログラム2を説明する。図12に示すように、最大内積探索プログラム2は、コンピュータに挿入されてアクセスされる、あるいはコンピュータが備える記憶媒体30に形成されたプログラム格納領域31内に格納される。より具体的には、最大内積探索プログラム2は、最大内積探索装置1が備える記憶媒体30に形成されたプログラム格納領域31内に格納される。
最大内積探索プログラム2は、検索データベースモジュール20と、ブロック量子化モジュール21と、転置ファイル構築モジュール22と、Wavelet行列構築モジュール23と、クエリ取得モジュール24と、最大内積探索モジュール25とを備えて構成される。検索データベースモジュール20と、ブロック量子化モジュール21と、転置ファイル構築モジュール22と、Wavelet行列構築モジュール23と、クエリ取得モジュール24と、最大内積探索モジュール25とを実行させることにより実現される機能は、上述した最大内積探索装置1の検索データベース10と、ブロック量子化部11と、転置ファイル構築部12と、Wavelet行列構築部13と、クエリ取得部14と、最大内積探索部15との機能とそれぞれ同様である。
なお、最大内積探索プログラム2は、その一部若しくは全部が、通信回線等の伝送媒体を介して伝送され、他の機器により受信されて記憶(インストールを含む)される構成としてもよい。また、最大内積探索プログラム2の各モジュールは、1つのコンピュータでなく、複数のコンピュータのいずれかにインストールされてもよい。その場合、当該複数のコンピュータによるコンピュータシステムよって上述した一連の最大内積探索プログラム2の処理が行われる。
次に、本実施形態のように構成された最大内積探索装置1の作用効果について説明する。
本実施形態の最大内積探索装置1によれば、最大内積探索部15により、ブロックごとに、当該ブロックのクエリベクトルと代表ベクトル集合の当該ブロックの代表ベクトルそれぞれとの内積に基づく代表ベクトルが選択され、検索ベクトル集合に含まれる検索ベクトルのうち、全てのブロックにおいて各ブロックに対して選択された代表ベクトルを含む検索ベクトルが探索される。ここで、検索ベクトル集合に含まれる検索ベクトルのうち、全てのブロックにおいて各ブロックに対して選択された代表ベクトルを含む検索ベクトルが探索される際に、例えば、Wavelet行列を利用した演算を行うことができる。Wavelet行列を利用すれば、ある範囲内で共通して出現する値を探索する演算を少ない計算量で行うことができる。つまり、検索ベクトルの全てのブロックそれぞれにおいて選択された代表ベクトルを含む検索ベクトルを少ない計算量で探索することができる。すなわち、計算量の少ない最大内積探索を行うことができる。
また、本実施形態の最大内積探索装置1によれば、最大内積探索部15により、検索ベクトル集合に含まれる検索ベクトルのうち、全てのブロックにおいて各ブロックに対して選択された代表ベクトルを含む検索ベクトルが探索される際に、Wavelet行列を利用した演算が行われる。本実施形態のようにWavelet行列を利用すれば、ある範囲内で共通して出現する値を探索する演算を少ない計算量で行うことができる。かかる構成を採れば、検索ベクトルの全てのブロックそれぞれにおいて選択された代表ベクトルを含む検索ベクトルを少ない計算量で探索することができる。すなわち、計算量の少ない最大内積探索を行うことができる。また、検索ベクトルの全てのブロックそれぞれにおいて選択された代表ベクトルを含む検索ベクトルを少ない計算量で探索することができる。すなわち、計算量の少ない最大内積探索を行うことができる。
また、本実施形態の最大内積探索装置1によれば、Wavelet行列構築部13を備えることで、計算量の少ない最大内積探索を行うためのWavelet行列を確実に構築及び格納することができる。
本実施形態の最大内積探索装置1は、内積の問題を、最頻の問題に変換し、Wavelet行列を用いて処理を行うことで、計算量の少ない最大内積探索を行うことができる。最大内積探索装置1は、画像、音声及びセンサデータの分類及び検索において利用することができる。データの数をn、次元数をm、ブロック数をs、量子化数をkとすると、全てのデータを調べる手法の計算量はO(nm)となる。一方、本実施形態の最大内積探索装置1では、計算量はO(ns/k)であり、通常k>>sであるため、最大内積探索装置1により、計算量の少ない、高速な探索を行うことができる。
1…最大内積探索装置、2…最大内積探索プログラム、10…検索データベース、11…ブロック量子化部、12…転置ファイル構築部、13…Wavelet行列構築部、14…クエリ取得部、15…最大内積探索部、20…検索データベースモジュール、21…ブロック量子化モジュール、22…転置ファイル構築モジュール、23…Wavelet行列構築モジュール、24…クエリ取得モジュール、25…最大内積探索モジュール、30…記憶媒体、31…プログラム格納領域、100…CPU、101…RAM、102…ROM、103…入出力装置、104…通信モジュール、105…補助記憶装置。

Claims (8)

  1. 所定の要素数の検索ベクトルの集合と、前記検索ベクトル複数のブロック量子化に用いられる前記ブロックごとの代表ベクトルの集合とを格納する検索データベースと、
    前記要素数のクエリベクトルを取得するクエリ取得部と、
    記ブロックごとに、前記ブロックの前記クエリベクトルと前記ブロックの前記代表ベクトルそれぞれとの内積が少なくとも最大になる前記代表ベクトルを選択し、選択された前記代表ベクトルに共通して対応する検索ベクトルを前記検索ベクトル集合から探索する最大内積探索部と、
    を備える最大内積探索装置。
  2. 前記検索データベースは、前記代表ベクトルごとに、前記代表ベクトルに対応する前記検索ベクトル識別情報に関する行列情報を格納し、
    前記最大内積探索部は、前記行列情報に基づいて、前記検索ベクトルを探索する、
    請求項1に記載の最大内積探索装置。
  3. 前記最大内積探索部は、選択された前記代表ベクトルそれぞれの前記行列情報を用いて前記共通して対応する検索ベクトル識別情報を求める、
    請求項に記載の最大内積探索装置。
  4. 前記行列情報はWavelet行列である、
    請求項2又は3に記載の最大内積探索装置。
  5. 前記最大内積探索部は、配列中の指定した範囲の「1」の数を返す関数、配列中の指定した番目の「1」の位置を返す関数、又は、指定された範囲内で共通して出現する値を返す関数の少なくとも1つを利用した演算を用いて、前記検索ベクトルを探索する
    請求項1〜4のいずれか1項に記載の最大内積探索装置。
  6. 前記最大内積探索部は、前記ブロックごとに選択された前記内積が最大になる前記代表ベクトルに共通して対応する前記検索ベクトルが存在しない場合、前記内積が最大及び2番目に大きい前記代表ベクトルに共通して対応する検索ベクトルを探索する、
    請求項1〜5のいずれか1項に記載の最大内積探索装置。
  7. 所定の要素数の検索ベクトルの集合と、前記検索ベクトル複数のブロック量子化に用いられる前記ブロックごとの代表ベクトルの集合とを格納する検索データベースを備える最大内積探索装置により実行される最大内積探索方法であって、
    前記要素数のクエリベクトルを取得するクエリ取得ステップと、
    記ブロックごとに、前記ブロックの前記クエリベクトルと前記ブロックの前記代表ベクトルそれぞれとの内積が少なくとも最大になる前記代表ベクトルを選択し、選択された前記代表ベクトルに共通して対応する検索ベクトルを前記検索ベクトル集合から探索する最大内積探索ステップと、
    を含む最大内積探索方法。
  8. 少なくとも1台のコンピュータを、
    所定の要素数の検索ベクトルの集合と、前記検索ベクトル複数のブロック量子化に用いられる前記ブロックごとの代表ベクトルの集合とを格納する検索データベースと、
    前記要素数のクエリベクトルを取得するクエリ取得部と、
    記ブロックごとに、前記ブロックの前記クエリベクトルと前記ブロックの前記代表ベクトルそれぞれとの内積が少なくとも最大になる前記代表ベクトルを選択し、選択された前記代表ベクトルに共通して対応する検索ベクトルを前記検索ベクトル集合から探索する最大内積探索部、
    として機能させる最大内積探索プログラム。
JP2016181489A 2016-09-16 2016-09-16 最大内積探索装置、最大内積探索方法及び最大内積探索プログラム Active JP6872333B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2016181489A JP6872333B2 (ja) 2016-09-16 2016-09-16 最大内積探索装置、最大内積探索方法及び最大内積探索プログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2016181489A JP6872333B2 (ja) 2016-09-16 2016-09-16 最大内積探索装置、最大内積探索方法及び最大内積探索プログラム

Publications (3)

Publication Number Publication Date
JP2018045564A JP2018045564A (ja) 2018-03-22
JP2018045564A5 JP2018045564A5 (ja) 2019-10-24
JP6872333B2 true JP6872333B2 (ja) 2021-05-19

Family

ID=61695008

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016181489A Active JP6872333B2 (ja) 2016-09-16 2016-09-16 最大内積探索装置、最大内積探索方法及び最大内積探索プログラム

Country Status (1)

Country Link
JP (1) JP6872333B2 (ja)

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3676577B2 (ja) * 1998-04-17 2005-07-27 忠弘 大見 ベクトル量子化装置および方法、記録媒体
US8166014B2 (en) * 2003-05-02 2012-04-24 Yahoo! Inc. Detection of improper search queries in a wide area network search engine
JP2006235877A (ja) * 2005-02-23 2006-09-07 Nippon Telegr & Teleph Corp <Ntt> 広告料金設定システムおよび広告料金設定プログラム
KR101586335B1 (ko) * 2010-08-25 2016-02-03 네이버 주식회사 온라인 광고 과금 시스템, 방법 및 컴퓨터 판독 가능한 기록 매체
JP2012088803A (ja) * 2010-10-15 2012-05-10 Univ Of Aizu 悪性ウェブコード判別システム、悪性ウェブコード判別方法および悪性ウェブコード判別用プログラム
JP2013050502A (ja) * 2011-08-30 2013-03-14 Seiko Epson Corp 広告表示制御装置、広告表示制御方法、およびプログラム
JP6418658B2 (ja) * 2014-09-19 2018-11-07 Necソリューションイノベータ株式会社 情報処理装置、情報処理方法、及びプログラム

Also Published As

Publication number Publication date
JP2018045564A (ja) 2018-03-22

Similar Documents

Publication Publication Date Title
KR102411921B1 (ko) 관련성을 계산하는 방법, 관련성을 계산하기 위한 장치, 데이터 쿼리 장치, 및 비-일시적 컴퓨터-판독가능 저장 매체
KR102449191B1 (ko) 이더넷 솔리드 스테이트 드라이브에서 데이터 패턴 매칭 및 기계 학습 알고리즘들을 지원하는 장치 및 방법
Chaudhuri et al. CMIR-NET: A deep learning based model for cross-modal retrieval in remote sensing
KR102371167B1 (ko) 데이터 아이템을 성긴 분포 표현으로 매핑하는 방법 및 시스템
KR20160144384A (ko) 딥 러닝 모델을 이용한 상황 의존 검색 기법
US11216459B2 (en) Multi-layer semantic search
CN110023924A (zh) 用于语义搜索的设备和方法
Guan et al. Efficient BOF generation and compression for on-device mobile visual location recognition
JP6167767B2 (ja) インデックス生成装置及び検索装置
US11232153B2 (en) Providing query recommendations
JP7483320B2 (ja) 自動検索辞書およびユーザインターフェイス
US11874866B2 (en) Multiscale quantization for fast similarity search
JP2016018286A (ja) 行動タイプ判定装置、行動タイプ判定方法及び行動タイプ判定プログラム
Lian et al. Product quantized collaborative filtering
CN111373386A (zh) 相似度指标值计算装置、相似检索装置及相似度指标值计算用程序
Le et al. Efficient retrieval of matrix factorization-based top-k recommendations: A survey of recent approaches
CN112905809B (zh) 知识图谱学习方法和系统
KR20140077409A (ko) 다수의 특징을 이용한 순차적 바이너리 코드 학습 방법 및 학습 장치
JP6872333B2 (ja) 最大内積探索装置、最大内積探索方法及び最大内積探索プログラム
Tang et al. CaseGNN: Graph Neural Networks for Legal Case Retrieval with Text-Attributed Graphs
Fu et al. Binary code reranking method with weighted hamming distance
Kumar et al. A comparative analysis on various extreme multi-label classification algorithms
KR20190136292A (ko) 지능형 자료구조 기반의 데이터 처리 방법 및 그를 위한 장치
Pronobis et al. Sharing hash codes for multiple purposes
JP6577922B2 (ja) 検索装置、方法、及びプログラム

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190912

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20190912

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20200728

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20200929

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20201127

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210309

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20210323

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20210419

R150 Certificate of patent or registration of utility model

Ref document number: 6872333

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313111

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250