JP2018045564A - Maximum-inner product search apparatus, maximum-inner product search method, and maximum-inner product search program - Google Patents

Maximum-inner product search apparatus, maximum-inner product search method, and maximum-inner product search program Download PDF

Info

Publication number
JP2018045564A
JP2018045564A JP2016181489A JP2016181489A JP2018045564A JP 2018045564 A JP2018045564 A JP 2018045564A JP 2016181489 A JP2016181489 A JP 2016181489A JP 2016181489 A JP2016181489 A JP 2016181489A JP 2018045564 A JP2018045564 A JP 2018045564A
Authority
JP
Japan
Prior art keywords
search
vector
inner product
block
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.)
Granted
Application number
JP2016181489A
Other languages
Japanese (ja)
Other versions
JP2018045564A5 (en
JP6872333B2 (en
Inventor
大輔 岡野原
Daisuke Okanohara
大輔 岡野原
遼介 奥田
Ryosuke Okuda
遼介 奥田
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/en
Publication of JP2018045564A publication Critical patent/JP2018045564A/en
Publication of JP2018045564A5 publication Critical patent/JP2018045564A5/ja
Application granted granted Critical
Publication of JP6872333B2 publication Critical patent/JP6872333B2/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

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

Abstract

PROBLEM TO BE SOLVED: To perform a maximum-inner product search with less computational complexity.SOLUTION: A maximum-inner product search apparatus 1 comprises: a search database 10 for storing a search vector set, a quantization search vector set, and a representative vector set; a query acquisition unit 14 for acquiring a query vector; and a maximum-inner product search unit 15 which divides the elements of an acquired query vector into blocks, calculates, for each of the blocks, an inner product of the query vector for the block and the representative vector for the block in the stored representative vector set, selects, for each of the blocks, a representative block for the vector based on the calculated inner product, and searches the search vectors contained in the stored search vector set for a search vector containing a representative vector selected for each block in all the blocks, based on the stored quantization vector set.SELECTED DRAWING: Figure 1

Description

本発明は、クエリベクトルに対して内積が最大となるデータベース中のベクトルを探索する最大内積探索装置、最大内積探索方法及び最大内積探索プログラムに関する。   The present invention relates to a maximum inner product search apparatus, a maximum inner product search method, and a maximum inner product search program for searching for a vector in a database in which an inner product is maximum with respect to a query vector.

画像、音声及びセンサデータ等の分類及び検索において、最大内積探索(MIPS:Maximum Inner Product Search)は重要である。   A maximum inner product search (MIPS) is important in classification and search of images, sounds, sensor data, and the like.

MIPSとは、例えば、データベース中のベクトル{d,d,…,d}とクエリqが与えられた時に、内積<q,d>が最大となるデータベース中のベクトルを探すことである。なお、Top−K MIPSとは、上記の例でいうと、データベース中のベクトルのうち内積<q,d>が大きい順にk個のベクトルを探すことである。すなわち、MIPSとはTop−1 MIPSである。以降では、MIPSはTop−K MIPSも含めるものとする。 MIPS is, for example, by searching for a vector in the database in which the inner product <q, d i > is maximum when a vector {d 1 , d 2 ,..., D n } in the database and a query q are given. is there. Note that Top-K MIPS refers to searching for k vectors in descending order of the inner product <q, d i > among the vectors in the database in the above example. That is, MIPS is Top-1 MIPS. Hereinafter, MIPS shall also include Top-K MIPS.

分類におけるMIPSの使用例を挙げると、データベースが各クラスに対応するベクトルであり、クエリが入力データ又はニューラルネットなどで変換された特徴表現であり、MIPSは分類結果を返す。また、検索におけるMIPSの使用例を挙げると、データベースが過去のデータであり、クエリが現在のデータであり(これらのデータは元のデータの場合もあるしニューラルネット等で変換された特徴表現の場合もある)、MIPSは最も似ている検索結果を探す。   As an example of the use of MIPS in classification, the database is a vector corresponding to each class, the query is a feature expression converted by input data or a neural network, and MIPS returns a classification result. As an example of the use of MIPS in search, the database is past data, and the query is current data (these data may be original data or feature representations converted by a neural network or the like). MIPS) looks for the most similar search results.

MIPSを行う方法としては、インデックスを使わない方法、LSH(Locality Sensitive Hashing)を使う方法及びブロック量子化を使う方法が従来知られている。以下では、ベクトル長をm、データベース中のベクトルの数をnとして、各方法について簡単に説明する。   Conventionally known methods for performing MIPS include a method that does not use an index, a method that uses LSH (Locality Sensitive Hashing), and a method that uses block quantization. In the following, each method will be briefly described, where the vector length is m and the number of vectors in the database is n.

インデックスを使わない方法では、そのまま内積を全て計算する。計算量はO(nm)である。   In the method that does not use an index, all inner products are calculated as they are. The calculation amount is O (nm).

LSHを使う方法では、ベクトルを長さbのビットベクトルに変換し、ビットベクトル同士の内積(XOR演算)で近似する。一度に計算できるビット幅数をwとすると、計算量はO(nb/w)である。LSHを使う方法は、精度が低いことが知られている。   In the method using LSH, a vector is converted into a bit vector of length b and approximated by an inner product (XOR operation) of the bit vectors. If the number of bit widths that can be calculated at one time is w, the amount of calculation is O (nb / w). It is known that the method using LSH has low accuracy.

ブロック量子化を使う方法では、ベクトルをブロックに分割し、ブロック毎に量子化する。量子化する際は、クエリの情報も使い、適切なブロックを決定する。ブロック数をkとすると、計算量はO(nk)である。下記非特許文献1には、ブロック量子化を使う方法が開示されている。   In the method using block quantization, a vector is divided into blocks, and quantization is performed for each block. When quantizing, the query information is also used to determine an appropriate block. If the number of blocks is k, the amount of calculation is O (nk). Non-Patent Document 1 below discloses a method using block quantization.

Ruiqi Guo、外3名、“Quantization based Fast Inner Product Search”、[online]、Google Research、[平成28年1月14日検索]、インターネット<URL:http://arxiv.org/pdf/1509.01469v1.pdf>Ruiqi Guo, three others, “Quantization based Fast Inner Product Search”, [online], Google Research, [searched on January 14, 2016], Internet <URL: http://arxiv.org/pdf/1509.01469v1 .pdf>

上述の通り最大内積探索は重要であり、特にビッグデータ等の大量のデータが含まれるデータベースに対して最大内積探索を行う場合、計算量の少ない最大内積探索の方法が望まれる。   As described above, the maximum inner product search is important. In particular, when the maximum inner product search is performed on a database including a large amount of data such as big data, a method of maximum inner product search with a small amount of calculation is desired.

そこで、本発明は、かかる課題に鑑みて為されたものであり、計算量の少ない最大内積探索を行うことができる最大内積探索装置、最大内積探索方法及び最大内積探索プログラムを提供することを目的とする。   Accordingly, the present invention has been made in view of such problems, and an object thereof is to provide a maximum inner product search device, a maximum inner product search method, and a maximum inner product search program that can perform a maximum inner product search with a small amount of calculation. And

上記課題を解決するため、本発明の一側面に係る最大内積探索装置は、所定の要素数の検索ベクトルの集合である検索ベクトル集合と、検索ベクトル集合の各検索ベクトルについて、要素を複数のブロックに分けてブロックごとに代表ベクトルに量子化した量子化検索ベクトル集合と、ブロックごとの代表ベクトルの集合である代表ベクトル集合とを格納する検索データベースと、要素数のクエリベクトルを取得するクエリ取得部と、クエリ取得部によって取得されたクエリベクトルの要素をブロックに分け、ブロックごとに、当該ブロックのクエリベクトルと検索データベースによって格納された代表ベクトル集合の当該ブロックの代表ベクトルそれぞれとの内積を算出し、算出された内積に基づいてブロックごとに当該ブロックの代表ベクトルを選択し、検索データベースによって格納された検索ベクトル集合に含まれる検索ベクトルのうち、全てのブロックにおいて各ブロックに対して選択された代表ベクトルを含む検索ベクトルを、検索データベースによって格納された量子化検索ベクトル集合に基づいて探索する最大内積探索部と、を備える。   In order to solve the above problems, a maximum inner product search device according to an aspect of the present invention includes a search vector set that is a set of search vectors having a predetermined number of elements, and a plurality of blocks for each search vector in the search vector set. A search database that stores a quantized search vector set that is quantized into representative vectors for each block, a representative vector set that is a set of representative vectors for each block, and a query acquisition unit that acquires a query vector of the number of elements The query vector elements acquired by the query acquisition unit are divided into blocks, and for each block, the inner product of the query vector of the block and each representative vector of the block of the representative vector set stored by the search database is calculated. , Based on the calculated inner product, for each block, Quantize the search vector containing the representative vector selected for each block among the search vectors included in the search vector set stored in the search database. A maximum inner product search unit that searches based on a set of search vectors.

このような最大内積探索装置によれば、最大内積探索部により、ブロックごとに、当該ブロックのクエリベクトルと代表ベクトル集合の当該ブロックの代表ベクトルそれぞれとの内積に基づく代表ベクトルが選択され、検索ベクトル集合に含まれる検索ベクトルのうち、全てのブロックにおいて各ブロックに対して選択された代表ベクトルを含む検索ベクトルが探索される。ここで、検索ベクトル集合に含まれる検索ベクトルのうち、全てのブロックにおいて各ブロックに対して選択された代表ベクトルを含む検索ベクトルが探索される際に、例えば、Wavelet行列を利用した演算を行うことができる。Wavelet行列を利用すれば、ある範囲内で共通して出現する値を探索する演算を少ない計算量で行うことができる。つまり、検索ベクトルの全てのブロックそれぞれにおいて選択された代表ベクトルを含む検索ベクトルを少ない計算量で探索することができる。すなわち、計算量の少ない最大内積探索を行うことができる。   According to such a maximum inner product search device, the maximum inner product search unit selects, for each block, a representative vector based on the inner product of the query vector of the block and the representative vector of the block of the representative vector set. Of the search vectors included in the set, search vectors including representative vectors selected for each block in all blocks are searched. Here, when a search vector including a representative vector selected for each block is searched for among all search vectors included in the search vector set, for example, an operation using a Wavelet matrix is performed. Can do. If the Wavelet matrix is used, an operation for searching for a value that appears in common within a certain range can be performed with a small amount of calculation. That is, the search vector including the representative vector selected in each of all the search vector blocks can be searched with a small amount of calculation. That is, the maximum inner product search with a small amount of calculation can be performed.

また、本発明の一側面に係る最大内積探索装置において、検索データベースは、代表ベクトル集合に含まれるブロックごとの代表ベクトルごとに、当該代表ベクトルが含まれる検索ベクトルを識別する検索ベクトル識別情報の集合に対応するWavelet行列をさらに格納し、最大内積探索部は、検索ベクトルを探索する際に、検索データベースによって格納されたWavelet行列を利用した演算を行うこととしてもよい。このような最大内積探索装置によれば、最大内積探索部により、検索ベクトル集合に含まれる検索ベクトルのうち、全てのブロックにおいて各ブロックに対して選択された代表ベクトルを含む検索ベクトルが探索される際に、Wavelet行列を利用した演算が行われる。Wavelet行列を利用すれば、ある範囲内で共通して出現する値を探索する演算を少ない計算量で行うことができる。かかる構成を採れば、検索ベクトルの全てのブロックそれぞれにおいて選択された代表ベクトルを含む検索ベクトルを少ない計算量で探索することができる。すなわち、計算量の少ない最大内積探索を行うことができる。   In the maximum inner product search device according to one aspect of the present invention, the search database includes a set of search vector identification information for identifying a search vector including the representative vector for each representative vector for each block included in the representative vector set. The maximum inner product search unit may perform an operation using the Wavelet matrix stored in the search database when searching for the search vector. According to such a maximum inner product search device, the maximum inner product search unit searches for search vectors including representative vectors selected for each block in all the blocks among the search vectors included in the search vector set. At this time, an operation using a Wavelet matrix is performed. If the Wavelet matrix is used, an operation for searching for a value that appears in common within a certain range can be performed with a small amount of calculation. With this configuration, it is possible to search for a search vector including a representative vector selected in each of all blocks of the search vector with a small amount of calculation. That is, the maximum inner product search with a small amount of calculation can be performed.

また、本発明の一側面に係る最大内積探索装置において、最大内積探索部は、検索ベクトルを探索する際に、選択された全ての代表ベクトルそれぞれに対応するWavelet行列を取得し、取得した全てのWavelet行列に対して、共通して出現する検索ベクトル識別情報を求める演算を行うこととしてもよい。Wavelet行列を利用すれば、ある範囲内で共通して出現する値を探索する演算を少ない計算量で行うことができる。かかる構成を採れば、検索ベクトルの全てのブロックそれぞれにおいて選択された代表ベクトルを含む検索ベクトルを少ない計算量で探索することができる。すなわち、計算量の少ない最大内積探索を行うことができる。   In the maximum inner product search device according to one aspect of the present invention, the maximum inner product search unit acquires a Wavelet matrix corresponding to each of all selected representative vectors when searching for a search vector, It is also possible to perform an operation for obtaining search vector identification information that appears in common on the Wavelet matrix. If the Wavelet matrix is used, an operation for searching for a value that appears in common within a certain range can be performed with a small amount of calculation. With this configuration, it is possible to search for a search vector including a representative vector selected in each of all blocks of the search vector with a small amount of calculation. That is, the maximum inner product search with a small amount of calculation can be performed.

また、本発明の一側面に係る最大内積探索装置において、代表ベクトル集合に含まれるブロックごとの代表ベクトルごとに、当該代表ベクトルが含まれる検索ベクトルを識別する検索ベクトル識別情報の集合に対応するWavelet行列を構築するWavelet行列構築部をさらに備え、検索データベースは、Wavelet行列構築部によって構築されたWavelet行列を格納することとしてもよい。かかる構成を採れば、計算量の少ない最大内積探索を行うためのWavelet行列を確実に構築及び格納することができる。   In the maximum inner product search device according to one aspect of the present invention, for each representative vector for each block included in the representative vector set, a Wavelet corresponding to a set of search vector identification information for identifying the search vector including the representative vector. A wavelet matrix construction unit that constructs a matrix may be further provided, and the search database may store the wavelet matrix constructed by the wavelet matrix construction unit. By adopting such a configuration, it is possible to reliably construct and store a Wavelet matrix for performing a maximum inner product search with a small amount of calculation.

ところで、本発明は、上記のように最大内積探索装置の発明として記述できる他に、以下のようにそれぞれ最大内積探索方法及び最大内積探索プログラムの発明としても記述することができる。これはカテゴリが異なるだけで、実質的に同一の発明であり、同様の作用及び効果を奏する。   By the way, the present invention can be described as an invention of a maximum inner product search device as described above, and can also be described as an invention of a maximum inner product search method and a maximum inner product search program as follows. This is substantially the same invention only in different categories, and has the same operations and effects.

即ち、本発明の一側面に係る最大内積探索方法は、所定の要素数の検索ベクトルの集合である検索ベクトル集合と、検索ベクトル集合の各検索ベクトルについて、要素を複数のブロックに分けてブロックごとに代表ベクトルに量子化した量子化検索ベクトル集合と、ブロックごとの代表ベクトルの集合である代表ベクトル集合とを格納する検索データベースを備える最大内積探索装置により実行される最大内積探索方法であって、要素数のクエリベクトルを取得するクエリ取得ステップと、クエリ取得ステップにおいて取得されたクエリベクトルの要素をブロックに分け、ブロックごとに、当該ブロックのクエリベクトルと検索データベースによって格納された代表ベクトル集合の当該ブロックの代表ベクトルそれぞれとの内積を算出し、算出された内積に基づいてブロックごとに当該ブロックの代表ベクトルを選択し、検索データベースによって格納された検索ベクトル集合に含まれる検索ベクトルのうち、全てのブロックにおいて各ブロックに対して選択された代表ベクトルを含む検索ベクトルを、検索データベースによって格納された量子化検索ベクトル集合に基づいて探索する最大内積探索ステップと、を含む。   That is, the maximum inner product search method according to one aspect of the present invention includes a search vector set that is a set of search vectors having a predetermined number of elements, and each search vector of the search vector set by dividing an element into a plurality of blocks. A maximum inner product search method executed by a maximum inner product search device including a search database that stores a quantized search vector set quantized into a representative vector and a representative vector set that is a set of representative vectors for each block, A query acquisition step of acquiring a query vector of the number of elements, and the elements of the query vector acquired in the query acquisition step are divided into blocks, and for each block, the query vector of the block and the representative vector set stored by the search database Calculate the dot product with each representative vector of the block and calculate The representative vector of the block is selected for each block based on the inner product, and the representative vector selected for each block in all the blocks among the search vectors included in the search vector set stored by the search database is selected. And a maximum inner product search step of searching for a search vector including the search vector based on a set of quantized search vectors stored by the search database.

また、本発明の一側面に係る最大内積探索プログラムは、コンピュータを、所定の要素数の検索ベクトルの集合である検索ベクトル集合と、検索ベクトル集合の各検索ベクトルについて、要素を複数のブロックに分けてブロックごとに代表ベクトルに量子化した量子化検索ベクトル集合と、ブロックごとの代表ベクトルの集合である代表ベクトル集合とを格納する検索データベースと、要素数のクエリベクトルを取得するクエリ取得部と、クエリ取得部によって取得されたクエリベクトルの要素をブロックに分け、ブロックごとに、当該ブロックのクエリベクトルと検索データベースによって格納された代表ベクトル集合の当該ブロックの代表ベクトルそれぞれとの内積を算出し、算出された内積に基づいてブロックごとに当該ブロックの代表ベクトルを選択し、検索データベースによって格納された検索ベクトル集合に含まれる検索ベクトルのうち、全てのブロックにおいて各ブロックに対して選択された代表ベクトルを含む検索ベクトルを、検索データベースによって格納された量子化検索ベクトル集合に基づいて探索する最大内積探索部、として機能させる。   The maximum inner product search program according to one aspect of the present invention divides an element into a plurality of blocks for a search vector set that is a set of search vectors having a predetermined number of elements and each search vector of the search vector set. A search database that stores a quantized search vector set quantized into a representative vector for each block, a representative vector set that is a set of representative vectors for each block, a query acquisition unit that acquires a query vector of the number of elements, The elements of the query vector acquired by the query acquisition unit are divided into blocks, and for each block, the inner product of the query vector of the block and the representative vector of the block of the representative vector set stored by the search database is calculated and calculated. For each block based on the inner product Quantization stored in the search database includes search vectors including representative vectors selected for each block in the search vectors included in the search vector set stored in the search database. It functions as a maximum inner product search unit that searches based on the search vector set.

本発明によれば、計算量の少ない最大内積探索を行うことができる。   According to the present invention, it is possible to perform a maximum inner product search with a small amount of calculation.

本発明の実施形態に係る最大内積探索装置の機能ブロック図である。It is a functional block diagram of a maximum inner product search device according to an embodiment of the present invention. 本発明の実施形態に係る最大内積探索装置のハードウェア構成図である。It is a hardware block diagram of the largest inner product search apparatus which concerns on embodiment of this invention. 検索ベクトル集合の一例を示す図である。It is a figure which shows an example of a search vector set. 量子化検索ベクトル集合の一例及び代表ベクトル集合の一例を示す図である。It is a figure which shows an example of a quantization search vector set, and an example of a representative vector set. 転置ファイル集合の一例を示す図である。It is a figure which shows an example of an inverted file set. Wavelet行列の構築例を示す図である。It is a figure which shows the construction example of a Wavelet matrix. クエリベクトルの一例を示す図である。It is a figure which shows an example of a query vector. 最大内積探索の処理のうち内積を算出する処理の一例を示す図である。It is a figure which shows an example of the process which calculates an inner product among the processes of a maximum inner product search. 最大内積探索の処理のうち内積の大きい代表ベクトルを含む検索ベクトルを探索する処理の一例を示す図である。It is a figure which shows an example of the process which searches the search vector containing the representative vector with a large inner product among the processes of a maximum inner product search. 本発明の実施形態に係る最大内積探索装置で実行される検索データベース構築処理を示すフローチャートである。It is a flowchart which shows the search database construction process performed with the largest inner product search apparatus which concerns on embodiment of this invention. 本発明の実施形態に係る最大内積探索装置で実行される最大内積探索処理を示すフローチャートである。It is a flowchart which shows the maximum inner product search process performed with the maximum inner product search apparatus which concerns on embodiment of this invention. 本発明の実施形態に係る最大内積探索プログラムの構成を、記憶媒体と共に示す図である。It is a figure which shows the structure of the maximum inner product search program which concerns on embodiment of this invention with a storage medium.

以下、図面とともに最大内積探索装置、最大内積探索方法及び最大内積探索プログラムの好適な実施形態について詳細に説明する。なお、図面の説明においては同一要素には同一符号を付し、重複する説明を省略する。   Hereinafter, preferred embodiments of a maximum inner product search device, a maximum inner product search method, and a maximum inner product search program will be described in detail with reference to the drawings. In the description of the drawings, the same elements are denoted by the same reference numerals, and redundant description is omitted.

図1は、最大内積探索装置1の機能ブロック図である。図1に示す通り、最大内積探索装置1は、検索データベース10、ブロック量子化部11、転置ファイル構築部12、Wavelet行列構築部13、クエリ取得部14及び最大内積探索部15を含んで構成される。   FIG. 1 is a functional block diagram of the maximum inner product search device 1. As shown in FIG. 1, the maximum inner product search apparatus 1 includes a search database 10, a block quantization unit 11, a transposed file construction unit 12, a Wavelet matrix construction unit 13, a query acquisition unit 14, and a maximum inner product search unit 15. The

最大内積探索装置1は、CPU等のハードウェアから構成されているものである。図2は、最大内積探索装置1のハードウェア構成の一例を示す図である。図1に示される最大内積探索装置1は、物理的には、図2に示すように、一つ以上のCPU100、主記憶装置であるRAM101及びROM102、キーボードやディスプレイ等の入出力装置103、通信モジュール104、及び補助記憶装置105などを含むコンピュータシステムとして構成されている。   The maximum inner product search device 1 is configured by hardware such as a CPU. FIG. 2 is a diagram illustrating an example of a hardware configuration of the maximum inner product search device 1. As shown in FIG. 2, the maximum inner product search device 1 shown in FIG. 1 physically has one or more CPUs 100, a RAM 101 and a ROM 102 as main storage devices, an input / output device 103 such as a keyboard and a display, communication, and the like. The computer system includes a module 104, an auxiliary storage device 105, and the like.

図1に示す最大内積探索装置1の各機能ブロックの機能は、図2に示すCPU100、RAM101等のハードウェア上に所定のコンピュータソフトウェアを読み込ませることにより、CPU100の制御のもとで入出力装置103、通信モジュール104、及び補助記憶装置105を動作させるとともに、RAM101におけるデータの読み出し及び書き込みを行うことで実現される。   The function of each functional block of the maximum inner product search device 1 shown in FIG. 1 is an input / output device under the control of the CPU 100 by loading predetermined computer software on the hardware such as the CPU 100 and the RAM 101 shown in FIG. 103, the communication module 104, and the auxiliary storage device 105 are operated, and data is read and written in the RAM 101.

以下、図1に示す最大内積探索装置1の各機能ブロックについて説明する。   Hereinafter, each functional block of the maximum inner product search apparatus 1 shown in FIG. 1 will be described.

検索データベース10は、所定の要素数k(kは自然数)の検索ベクトルの集合である検索ベクトル集合を格納する。検索ベクトルとは、後述のクエリベクトルに対して類似する(内積が最大となる、又は内積が比較的大きい)ベクトルを探索する際に、探索対象となる一般的なベクトルである。図3は、検索データベース10によって格納された検索ベクトル集合の一例を示す図である。図3に示す検索ベクトル集合は、要素数が6の検索ベクトルが16個集まったものである。説明の便宜上、検索ベクトル集合に含まれる検索ベクトルそれぞれを識別するための識別情報として、各検索ベクトルにはベクトル番号が付与されているものとする。ベクトル番号は、例えば、検索ベクトル集合が配列で実装される際のインデックスに対応する。図3において、ベクトル番号が「0」の検索ベクトルは、要素として値「0.64」、「0.62」、「0.81」、「0.31」、「0.29」及び「0.85」を持っていることを示している。検索データベース10は、検索ベクトル集合を、予め格納してもよいし、最大内積探索装置1が備える検索ベクトル集合登録部(不図示)の命令に基づいて格納してもよいし、インターネット等のネットワークを介して他の装置から受信して格納してもよい。   The search database 10 stores a search vector set which is a set of search vectors having a predetermined number of elements k (k is a natural number). The search vector is a general vector to be searched when searching for a vector similar to a query vector (described later) (inner product is maximized or inner product is relatively large). FIG. 3 is a diagram illustrating an example of a search vector set stored by the search database 10. The search vector set shown in FIG. 3 is a collection of 16 search vectors having 6 elements. For convenience of explanation, it is assumed that a vector number is assigned to each search vector as identification information for identifying each search vector included in the search vector set. The vector number corresponds to, for example, an index when the search vector set is implemented as an array. In FIG. 3, the search vector having the vector number “0” has elements of values “0.64”, “0.62”, “0.81”, “0.31”, “0.29”, and “0”. .85 ". The search database 10 may store a search vector set in advance, or may store a search vector set based on a command from a search vector set registration unit (not shown) included in the maximum inner product search device 1 or a network such as the Internet. It may be received from other devices via the storage and stored.

ブロック量子化部11は、検索データベース10によって格納された検索ベクトル集合の各検索ベクトルについて、要素を複数のブロックに分けてブロックごとに代表ベクトルに量子化した量子化検索ベクトル集合を構築する。ブロック量子化部11は、代表ベクトルに量子化する際に、検索データベース10によって格納された、ブロックごとの代表ベクトルの集合である代表ベクトル集合を利用する。なお、代表ベクトル集合は、ブロック量子化部11が検索データベース10によって格納された検索ベクトル集合に基づいて構築したものであってもよい。   The block quantization unit 11 divides elements into a plurality of blocks for each search vector stored in the search database 10, and constructs a quantized search vector set that is quantized into a representative vector for each block. The block quantizing unit 11 uses a representative vector set that is a set of representative vectors for each block stored by the search database 10 when quantizing the representative vector. The representative vector set may be constructed by the block quantization unit 11 based on the search vector set stored by the search database 10.

ここで、検索ベクトルの要素を複数のブロックに分けるとは、例えば、図3に示す通り、検索ベクトルの6つの要素を、要素が2つずつの3つのブロック(b、b及びb)に分けることである。図4は、量子化検索ベクトル集合の一例及び代表ベクトル集合の一例を示す図である。図4に示す量子化検索ベクトル集合は、ブロック量子化部11が、図3に示す検索ベクトル集合の各検索ベクトルについて、要素をブロックb、b及びbに分けて、ブロックごとに代表ベクトルに量子化したものである。ここで、ブロック量子化部11は、代表ベクトルに量子化する際に、図4に示す代表ベクトル集合を用いている。 Here, to divide the elements of the search vector into a plurality of blocks, for example, as shown in FIG. 3, the six elements of the search vector are divided into three blocks (b 1 , b 2 and b 3 each having two elements). ). FIG. 4 is a diagram illustrating an example of a quantized search vector set and an example of a representative vector set. In the quantized search vector set shown in FIG. 4, the block quantization unit 11 divides the elements into blocks b 1 , b 2 and b 3 for each search vector of the search vector set shown in FIG. It is quantized into a vector. Here, the block quantization unit 11 uses the representative vector set shown in FIG. 4 when quantizing the representative vector.

図4に示す代表ベクトル集合は、ブロックb、b及びbごとの代表ベクトルの集合である。説明の便宜上、代表ベクトル集合に含まれる代表ベクトルそれぞれを識別するための識別情報として、各代表ベクトルには量子化番号が付与されているものとする。量子化番号は、例えば、代表ベクトル集合が配列で実装される際のインデックスに対応する。図4に示す代表ベクトル集合の一例では、ブロックbでは8つの代表ベクトルが含まれている。ブロックごとに任意の数の代表ベクトルが含まれていてもよく、ブロック毎に、含まれる代表ベクトルの数は異なっていてもよいし、同じであってもよい。図4に示す量子化検索ベクトル集合において、各ブロックは、同図に示す代表ベクトル集合の量子化番号が割り当てられている。例えば、量子化検索ベクトル集合のベクトル番号が「0」のレコード(「量子化検索ベクトル」と呼ぶ)のうち、ブロックbは、量子化番号が「4」である代表ベクトル「[0.80,0.09]」に量子化されていることを示す。同様に、ブロックbは、量子化番号が「7」であるブロックbの代表ベクトルに量子化され、ブロックbは、量子化番号が「4」であるブロックbの代表ベクトルに量子化されていることを示す。 The representative vector set shown in FIG. 4 is a set of representative vectors for each of the blocks b 1 , b 2, and b 3 . For convenience of explanation, it is assumed that a quantization number is assigned to each representative vector as identification information for identifying each representative vector included in the representative vector set. The quantization number corresponds to, for example, an index when the representative vector set is implemented as an array. In the example of the representative vector set shown in FIG. 4, the block b 1 includes eight representative vectors. An arbitrary number of representative vectors may be included in each block, and the number of representative vectors included in each block may be different or the same. In the quantization search vector set shown in FIG. 4, each block is assigned the quantization number of the representative vector set shown in FIG. For example, among records whose vector number of the quantized search vector set is “0” (referred to as “quantized search vector”), the block b 1 has a representative vector “[0.80” whose quantization number is “4”. , 0.09] ”. Similarly, the block b 2 is quantized to the representative vector of the block b 2 whose quantization number is “7”, and the block b 3 is quantized to the representative vector of the block b 3 whose quantization number is “4”. Indicates that

検索データベース10は、ブロック量子化部11によって構築された量子化検索ベクトル集合を格納する。また、検索データベース10は、ブロック量子化部11によって構築された代表ベクトル集合を格納する。なお、検索データベース10は、予め用意された、又はネットワークを介して他の装置から受信した量子化検索ベクトル集合及び代表ベクトル集合を格納してもよい。   The search database 10 stores the quantization search vector set constructed by the block quantization unit 11. The search database 10 stores a representative vector set constructed by the block quantization unit 11. The search database 10 may store a quantized search vector set and a representative vector set prepared in advance or received from another device via a network.

転置ファイル構築部12は、検索データベース10によって格納された量子化検索ベクトル集合のブロックごとの転置ファイルの集合である転置ファイル集合を構築する。図5は、転置ファイル集合の一例を示す図である。図5に示す転置ファイル集合は、転置ファイル構築部12により、図4に示す量子化検索ベクトル集合のブロックごとの転置ファイルの集合として構築されたものである。図5に示す転置ファイル集合は、ブロックごとに、量子化番号とベクトル番号とが対応付けられている。量子化番号は、図4に示す代表ベクトル集合の量子化番号である。ベクトル番号は、図4に示す量子化検索ベクトル集合のベクトル番号である。例えば、図5に示すブロックbの転置ファイル集合について、量子化番号が「4」に、ベクトル番号「0」、「5」、「11」及び「15」が対応付けられている。これは、量子化番号が「4」である代表ベクトルをブロックbに含む量子化検索ベクトルは、ベクトル番号が「0」、「5」、「11」及び「15」である量子化検索ベクトルであることを示している。 The transposed file construction unit 12 constructs a transposed file set that is a set of transposed files for each block of the quantized search vector set stored by the search database 10. FIG. 5 is a diagram illustrating an example of a transposed file set. The transposed file set shown in FIG. 5 is constructed as a set of transposed files for each block of the quantized search vector set shown in FIG. 4 by the transposed file construction unit 12. In the transposed file set shown in FIG. 5, a quantization number and a vector number are associated with each block. The quantization number is the quantization number of the representative vector set shown in FIG. The vector number is a vector number of the quantization search vector set shown in FIG. For example, for the transposed file set of block b 1 shown in FIG. 5, the quantization number “4” is associated with vector numbers “0”, “5”, “11”, and “15”. This is because the quantized search vector including the representative vector having the quantization number “4” in the block b 1 is the quantized search vector having the vector numbers “0”, “5”, “11”, and “15”. It is shown that.

検索データベース10は、転置ファイル構築部12によって構築された転置ファイル集合を格納する。なお、検索データベース10は、予め用意された、又はネットワークを介して他の装置から受信した転置ファイル集合を格納してもよい。   The search database 10 stores a transposed file set constructed by the transposed file construction unit 12. The search database 10 may store a set of transposed files prepared in advance or received from another device via a network.

Wavelet行列構築部13は、代表ベクトル集合に含まれるブロックごとの代表ベクトルごとに、当該代表ベクトルが含まれる検索ベクトルを識別する検索ベクトル識別情報(ベクトル番号)の集合に対応するWavelet行列(ウェーブレット行列、Wavelet Matrix)を構築する。Wavelet行列とは、計算量が定数時間のrank関数及びselect関数、並びにintersect関数等をサポートする完備辞書である。完備辞書とは、「0」と「1」とからなるビット列に対して操作を高速に行えるデータ構造である。rank関数とは、配列中の指定した範囲の「1」の数を返す関数である。select関数とは、配列中の指定した番目の1の位置を返す関数である。intersect関数は、指定された範囲内で共通して出現する値を返す関数である。intersect関数は、rank関数及びselect関数を利用した計算量の少ない演算を行うことができる。   The Wavelet matrix construction unit 13 uses, for each representative vector for each block included in the representative vector set, a Wavelet matrix (wavelet matrix) corresponding to a set of search vector identification information (vector number) for identifying a search vector including the representative vector. , Wavelet Matrix). The Wavelet matrix is a complete dictionary that supports a rank function, a select function, an intercept function, and the like with a constant calculation amount. A complete dictionary is a data structure that allows a high-speed operation on a bit string consisting of “0” and “1”. The rank function is a function that returns the number of “1” s in a specified range in the array. The select function is a function that returns the designated first position in the array. The intercept function is a function that returns a value that appears in common within a specified range. The intersect function can perform an operation with a small amount of calculation using a rank function and a select function.

Wavelet行列構築部13は、具体的には、転置ファイル構築部12により構築された転置ファイル集合に含まれる各ブロックの各レコード(量子化番号とベクトル番号とが対応付けられたレコード)のベクトル番号の配列に対して、Wavelet行列を構築する。図6は、Wavelet行列の構築例を示す図であり、具体的には、図5に示す転置ファイル集合のうち、ブロックbの量子化番号が「4」のベクトル番号の配列である「0,5,11,15」について、Wavelet行列構築部13がWavelet行列を構築する際の処理例を示した図である。 Specifically, the Wavelet matrix construction unit 13 is a vector number of each record (record in which a quantization number and a vector number are associated) of each block included in the transposed file set constructed by the transposed file construction unit 12. Construct a Wavelet matrix for FIG. 6 is a diagram illustrating a construction example of the Wavelet matrix. Specifically, in the transposed file set illustrated in FIG. 5, “0” which is an array of vector numbers whose quantization number of the block b 1 is “4”. , 5, 11, 15 "is a diagram illustrating a processing example when the Wavelet matrix construction unit 13 constructs a Wavelet matrix.

図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行列を構築する。   In FIG. 6, first, a bit string having a value indicated by each vector number is obtained. The bit string of vector number “0” is “0000”, the bit string of vector number “5” is “0101”, the bit string of vector number “11” is “1011”, and the bit string of vector number “15” is “1111”. Next, the arrays “0, 5, 11, 15” are arranged in that order from the left, and the bit values of the first digit of the bit strings of the respective values are arranged in the order from the left. Next, vector numbers with a bit value of “0” are moved to the left in that order, and vector numbers with a bit value of “1” are moved to the right in that order. In this case, since the bit value is “0011” and it is not necessary to shift it, the order is not changed, and the array “0, 5, 11, 15” is arranged as it is in the next (lower) stage. The same process is repeated thereafter. The bit values of the second digit of the bit strings of the values of the arranged arrays “0, 5, 11, 15” are arranged in this order from the left. In this case, since the bit value is “0101”, the third vector number “11” is shifted to the left by one, and the second vector number “5” is shifted to “1”. Move right one. That is, the positions of the vector numbers “5” and “11” are switched. Then, the array “0, 11, 5, 15” whose positions are changed is arranged in the next stage, and the bit values of the third digit of the bit strings of the respective values are arranged in this order from the left. In this case, since the bit value is “0101”, the third vector number “5” is moved to the left by one, and the second vector number “11” is moved to the right by one. Then, the array “0, 5, 11, 15” whose positions are changed is arranged in the next stage, and the bit values of the fourth digit of the bit strings of the respective values are arranged in this order from the left. Finally, a Wavelet matrix is constructed as a matrix in which the bit values of each digit arranged so far are matched in order from the top.

検索データベース10は、Wavelet行列構築部によって構築されたWavelet行列を格納する。なお、検索データベース10は、予め用意された、又はネットワークを介して他の装置から受信したWavelet行列を格納してもよい。   The search database 10 stores the Wavelet matrix constructed by the Wavelet matrix construction unit. The search database 10 may store a Wavelet matrix prepared in advance or received from another device via a network.

クエリ取得部14は、要素数kのクエリベクトルを取得する。すなわち、クエリ取得部14は、検索データベース10によって格納された検索ベクトル集合に含まれる各検索ベクトルと同じ要素数のクエリベクトルを取得する。クエリベクトルは、ユーザ等によって指定された一般的なベクトルであり、クエリベクトルに類似するベクトルが検索ベクトル集合から探索される。クエリ取得部14は、クエリベクトルを、入出力装置103から取得してもよいし、他の装置からネットワークを介して取得してもよいし、予め最大内積探索装置1に格納されたクエリベクトルを取得してもよい。クエリ取得部14は、取得したクエリベクトルを最大内積探索部15に出力する。図7は、クエリベクトルの一例を示す図である。図7に示すクエリベクトルは、図3に示す検索ベクトル集合に含まれる検索ベクトルの要素数と同じ6つの要素から構成される。   The query acquisition unit 14 acquires a query vector having k elements. That is, the query acquisition unit 14 acquires a query vector having the same number of elements as each search vector included in the search vector set stored by the search database 10. The query vector is a general vector designated by the user or the like, and a vector similar to the query vector is searched from the search vector set. The query acquisition unit 14 may acquire a query vector from the input / output device 103, may acquire it from another device via a network, or may use a query vector stored in the maximum inner product search device 1 in advance. You may get it. The query acquisition unit 14 outputs the acquired query vector to the maximum inner product search unit 15. FIG. 7 is a diagram illustrating an example of a query vector. The query vector shown in FIG. 7 is composed of the same six elements as the number of search vector elements included in the search vector set shown in FIG.

最大内積探索部15は、クエリ取得部14によって取得されたクエリベクトルの要素をブロックに分け、ブロックごとに、当該ブロックのクエリベクトルと検索データベース10によって格納された代表ベクトル集合の当該ブロックの代表ベクトルそれぞれとの内積を算出し、算出された内積に基づいてブロックごとに当該ブロックの代表ベクトルを選択し、検索データベース10によって格納された検索ベクトル集合に含まれる検索ベクトルのうち、全てのブロックにおいて各ブロックに対して選択された代表ベクトルを含む検索ベクトルを、検索データベース10によって格納された量子化検索ベクトル集合に基づいて探索する。また、最大内積探索部15は、検索ベクトルを探索する際に、検索データベース10によって格納されたWavelet行列を利用した演算を行う。より具体的には、最大内積探索部15は、検索ベクトルを探索する際に、選択された全ての代表ベクトルそれぞれに対応するWavelet行列を取得し、取得した全てのWavelet行列に対して、共通して出現する検索ベクトル識別情報を求める演算を行う。以下、最大内積探索部15の処理を具体的に説明する。   The maximum inner product search unit 15 divides the elements of the query vector acquired by the query acquisition unit 14 into blocks. For each block, the query vector of the block and the representative vector of the block of the representative vector set stored by the search database 10 Calculating a dot product with each of the blocks, selecting a representative vector of the block for each block based on the calculated dot product, and selecting each block in a search vector set stored in the search database 10 in all blocks. A search vector including the representative vector selected for the block is searched based on the quantized search vector set stored by the search database 10. Further, the maximum inner product search unit 15 performs an operation using a Wavelet matrix stored by the search database 10 when searching for a search vector. More specifically, when searching for a search vector, the maximum inner product search unit 15 acquires a Wavelet matrix corresponding to each of all selected representative vectors, and is common to all the acquired Wavelet matrices. The calculation for obtaining the search vector identification information appearing at the same time is performed. Hereinafter, the processing of the maximum inner product search unit 15 will be specifically described.

まず、最大内積探索部15は、クエリ取得部14から入力されたクエリベクトルの要素を、検索データベース10によって格納された量子化検索ベクトル集合と同じブロックに分ける。図7に示すクエリベクトルでは、6つの要素が、要素が2つずつの3つのブロック(b、b及びb)に分けられている。次に、最大内積探索部15は、ブロックごとに、当該ブロックのクエリベクトルと検索データベース10によって格納された代表ベクトル集合の当該ブロックの代表ベクトルそれぞれとの内積を算出する。図8は、最大内積探索の処理のうち内積を算出する処理の一例を示す図である。図8に示す通り、最大内積探索部15は、例えば、クエリベクトルのブロックbのベクトルと、代表ベクトル集合のブロックb対応する代表ベクトルそれぞれとの内積を順に算出し、同様にブロックb及びbに対しても内積を順に算出する。 First, the maximum inner product search unit 15 divides the elements of the query vector input from the query acquisition unit 14 into the same blocks as the quantized search vector set stored by the search database 10. In the query vector shown in FIG. 7, six elements are divided into three blocks (b 1 , b 2 and b 3 ) each having two elements. Next, the maximum inner product search unit 15 calculates, for each block, an inner product between the query vector of the block and each representative vector of the block of the representative vector set stored by the search database 10. FIG. 8 is a diagram illustrating an example of a process for calculating the inner product among the processes of the maximum inner product search. As illustrated in FIG. 8, the maximum inner product search unit 15 sequentially calculates inner products of, for example, the vector of the block b 1 of the query vector and each representative vector corresponding to the block b 1 of the representative vector set, and similarly the block b 1 And b 2 are also calculated in order.

次に、最大内積探索部15は、算出された内積に基づいてブロックごとに当該ブロックの代表ベクトルを選択する。図9は、最大内積探索の処理のうち内積の大きい代表ベクトルを含む検索ベクトルを探索する処理の一例を示す図である。図9において、ブロックごとに算出された内積が降順に並べられており、各内積の算出対象である代表ベクトルの量子化番号が対応付けられている。最大内積探索部15は、例えば、ブロックごとに、内積が最大の代表ベクトルを選択する。例えば、図9において、最大内積探索部15は、ブロックbから量子化番号が「4」の代表ベクトルを選択し、ブロックbから量子化番号が「1」の代表ベクトルを選択し、ブロックbから量子化番号が「5」の代表ベクトルを選択する。なお、最大内積探索部15による代表ベクトルの選択方法はこれに限るものではない。例えば、最大内積探索部15は、ブロックごとに内積が上位2位までの代表ベクトルを選択してもよいし、ブロックごとに内積が所定の順位以上の代表ベクトルを選択してもよいし、ブロックごとに所定の順位を変えるなどブロックごとに基準を変えてもよい。また、最大内積探索部15は、まず、ブロックごとに最大(1位)の内積の代表ベクトルを選択し、選択された代表ベクトルに基づいて後述の検索ベクトルの探索が失敗した(探索ができなかった)場合に、続いて、ブロックごとに2位以上の内積の代表ベクトルを選択し、選択された代表ベクトルに基づいて再度検索ベクトルの探索を行う等、検索ベクトルの探索が行えるまで繰り返し最大内積探索部15の処理を実行し、その都度、代表ベクトルの選択基準を変えてもよい。 Next, the maximum inner product search unit 15 selects a representative vector of the block for each block based on the calculated inner product. FIG. 9 is a diagram illustrating an example of processing for searching for a search vector including a representative vector having a large inner product in the maximum inner product search processing. In FIG. 9, the inner products calculated for each block are arranged in descending order, and the quantization number of the representative vector that is the calculation target of each inner product is associated. For example, the maximum inner product search unit 15 selects a representative vector having the maximum inner product for each block. For example, in FIG. 9, the maximum inner product search unit 15 selects a representative vector with a quantization number “4” from the block b 1 , selects a representative vector with a quantization number “1” from the block b 2 , and from b 3 quantization number to select a representative vector of "5". Note that the representative vector selection method by the maximum inner product search unit 15 is not limited to this. For example, the maximum inner product search unit 15 may select a representative vector whose inner product is the highest two for each block, may select a representative vector whose inner product is a predetermined rank or more for each block, The reference may be changed for each block, such as changing the predetermined order every time. In addition, the maximum inner product search unit 15 first selects a representative vector of the maximum (first rank) inner product for each block, and a search vector to be described later fails based on the selected representative vector (cannot be searched). In the case, the maximum inner product is repeated until the search vector can be searched, such as selecting the representative vector of the inner product of the second or higher rank for each block and searching the search vector again based on the selected representative vector. The processing of the search unit 15 may be executed, and the selection criterion for the representative vector may be changed each time.

次に最大内積探索部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」の検索ベクトルを、クエリベクトルに類似するベクトルとして探索する。 Next, the maximum inner product search unit 15 selects, from the search vectors included in the search vector set stored by the search database 10, search vectors including representative vectors selected for each block in all blocks. Search based on the set of quantized search vectors stored by. In the example case shown in FIG. 9, the quantization number selected from the block b 1 comprises a block b 1 search vector representative vectors of "4", which is selected from the block b 2 quantization number is "1" It includes a representative vector in the block b 2 search vectors, the maximum inner product searching portion 15 searches the vector containing the block b 3 of the search vectors representative vectors selected from block b 3 quantization number "5" is searched. At this time, the maximum inner product search unit 15 may use, for example, a transposed file set stored by the search database 10. For example, referring to the example of FIG. 9, the maximum inner product search unit 15 uses the transposed file set, so that the representative vector selected from the block b 1 with the quantization number “4” has the vector number “0”, It is determined that the search vectors “5”, “11”, and “15” are included, and the representative vector selected from the block b 2 with the quantization number “1” has the vector numbers “2” and “5”. , “6” and “11” are included in the search vector, and the representative vector having the quantization number “5” selected from the block b 3 has the vector numbers “1”, “5”, “11”. "And" 15 "can be determined to be included in the search vector. Then, the maximum inner product search unit 15 can determine “5” and “11” as vector numbers that appear in common in each block. That is, the maximum inner product search unit 15 searches the search vectors having the vector numbers “5” and “11” as vectors similar to the query vector.

最大内積探索部15は、各ブロックに共通して現れるベクトル番号を求める際に、選択された全ての代表ベクトルそれぞれに対応するWavelet行列を検索データベース10によって格納されたWavelet行列から取得し、取得した全てのWavelet行列に対して、共通して出現するベクトル番号を求める演算を行ってもよい。上述した通り、Wavelet行列のintersect関数を利用することで、各ブロックに共通して現れるベクトル番号を計算量の少ない演算によって求めることができる。   The maximum inner product search unit 15 obtains a Wavelet matrix corresponding to each of all selected representative vectors from the Wavelet matrix stored by the search database 10 when obtaining a vector number that appears in common in each block. You may perform the calculation which calculates | requires the vector number which appears in common with respect to all the Wavelet matrices. As described above, by using the intercept function of the Wavelet matrix, a vector number that appears in common in each block can be obtained by an operation with a small amount of calculation.

最大内積探索部15は、探索した検索ベクトル又は検索ベクトル識別情報を、入出力装置103(例えばディスプレイ)に出力(表示)してもよいし、ネットワークを介して他の装置に出力してもよい。   The maximum inner product search unit 15 may output (display) the searched search vector or search vector identification information to the input / output device 103 (for example, a display), or may output it to other devices via a network. .

続いて、図10及び図11に示すフローチャートを用いて、それぞれ最大内積探索装置1における検索データベース構築処理及び最大内積探索方法の処理について説明する。   Next, a search database construction process and a maximum inner product search method process in the maximum inner product search device 1 will be described using the flowcharts shown in FIGS. 10 and 11.

図10において、まず、ブロック量子化部11により、検索データベース10によって予め格納された検索ベクトル集合に対してブロック量子化が行われ、量子化検索ベクトル集合及び代表ベクトル集合が構築される(ステップS1)。次に、転置ファイル構築部12により、S1にて構築された代表ベクトル集合の転置ファイルが構築される(ステップS2)。次に、Wavelet行列構築部13により、S2にて構築された転置ファイルに対してWavelet行列が構築される(ステップS3)。   In FIG. 10, first, block quantization is performed on the search vector set stored in advance by the search database 10 by the block quantization unit 11, and a quantized search vector set and a representative vector set are constructed (step S1). ). Next, the transposed file construction unit 12 constructs a transposed file of the representative vector set constructed in S1 (step S2). Next, the Wavelet matrix construction unit 13 constructs a Wavelet matrix for the transposed file constructed in S2 (step S3).

図11において、まず、クエリ取得部14により、クエリベクトルが取得される(ステップS10、クエリ取得ステップ)。次に、最大内積探索部15により、S10にて取得されたクエリベクトルと検索データベース10によって格納された情報に基づいて、クエリベクトルに類似する検索ベクトルが探索される(ステップS11、最大内積探索ステップ)。   In FIG. 11, first, a query vector is acquired by the query acquisition unit 14 (step S10, query acquisition step). Next, the maximum inner product search unit 15 searches for a search vector similar to the query vector based on the query vector acquired in S10 and the information stored in the search database 10 (step S11, maximum inner product search step). ).

引き続いて、上述した一連の最大内積探索装置1による処理をコンピュータに実行させるための最大内積探索プログラム2を説明する。図12に示すように、最大内積探索プログラム2は、コンピュータに挿入されてアクセスされる、あるいはコンピュータが備える記憶媒体30に形成されたプログラム格納領域31内に格納される。より具体的には、最大内積探索プログラム2は、最大内積探索装置1が備える記憶媒体30に形成されたプログラム格納領域31内に格納される。   Subsequently, a maximum inner product search program 2 for causing a computer to execute the above-described series of processes for the maximum inner product search device 1 will be described. As shown in FIG. 12, the maximum inner product search program 2 is inserted into a computer and accessed, or stored in a program storage area 31 formed in a storage medium 30 provided in the computer. More specifically, the maximum inner product search program 2 is stored in a program storage area 31 formed in the storage medium 30 provided in the maximum inner product search device 1.

最大内積探索プログラム2は、検索データベースモジュール20と、ブロック量子化モジュール21と、転置ファイル構築モジュール22と、Wavelet行列構築モジュール23と、クエリ取得モジュール24と、最大内積探索モジュール25とを備えて構成される。検索データベースモジュール20と、ブロック量子化モジュール21と、転置ファイル構築モジュール22と、Wavelet行列構築モジュール23と、クエリ取得モジュール24と、最大内積探索モジュール25とを実行させることにより実現される機能は、上述した最大内積探索装置1の検索データベース10と、ブロック量子化部11と、転置ファイル構築部12と、Wavelet行列構築部13と、クエリ取得部14と、最大内積探索部15との機能とそれぞれ同様である。   The maximum inner product search program 2 includes a search database module 20, a block quantization module 21, a transposed file construction module 22, a Wavelet matrix construction module 23, a query acquisition module 24, and a maximum inner product search module 25. Is done. Functions realized by executing the search database module 20, the block quantization module 21, the transposed file construction module 22, the Wavelet matrix construction module 23, the query acquisition module 24, and the maximum inner product search module 25 are as follows. Functions of the search database 10, the block quantization unit 11, the transposed file construction unit 12, the Wavelet matrix construction unit 13, the query acquisition unit 14, and the maximum inner product search unit 15 of the maximum inner product search device 1 described above, respectively. It is the same.

なお、最大内積探索プログラム2は、その一部若しくは全部が、通信回線等の伝送媒体を介して伝送され、他の機器により受信されて記憶(インストールを含む)される構成としてもよい。また、最大内積探索プログラム2の各モジュールは、1つのコンピュータでなく、複数のコンピュータのいずれかにインストールされてもよい。その場合、当該複数のコンピュータによるコンピュータシステムよって上述した一連の最大内積探索プログラム2の処理が行われる。   Note that a part or all of the maximum inner product search program 2 may be transmitted via a transmission medium such as a communication line, received by another device, and stored (including installation). In addition, each module of the maximum inner product search program 2 may be installed not in one computer but in any of a plurality of computers. In that case, the above-described series of maximum inner product search program 2 is processed by the computer system of the plurality of computers.

次に、本実施形態のように構成された最大内積探索装置1の作用効果について説明する。   Next, the effect of the maximum inner product search device 1 configured as in the present embodiment will be described.

本実施形態の最大内積探索装置1によれば、最大内積探索部15により、ブロックごとに、当該ブロックのクエリベクトルと代表ベクトル集合の当該ブロックの代表ベクトルそれぞれとの内積に基づく代表ベクトルが選択され、検索ベクトル集合に含まれる検索ベクトルのうち、全てのブロックにおいて各ブロックに対して選択された代表ベクトルを含む検索ベクトルが探索される。ここで、検索ベクトル集合に含まれる検索ベクトルのうち、全てのブロックにおいて各ブロックに対して選択された代表ベクトルを含む検索ベクトルが探索される際に、例えば、Wavelet行列を利用した演算を行うことができる。Wavelet行列を利用すれば、ある範囲内で共通して出現する値を探索する演算を少ない計算量で行うことができる。つまり、検索ベクトルの全てのブロックそれぞれにおいて選択された代表ベクトルを含む検索ベクトルを少ない計算量で探索することができる。すなわち、計算量の少ない最大内積探索を行うことができる。   According to the maximum inner product search device 1 of the present embodiment, the maximum inner product search unit 15 selects, for each block, a representative vector based on the inner product of the query vector of the block and each representative vector of the block of the representative vector set. Among the search vectors included in the search vector set, search vectors including representative vectors selected for each block in all blocks are searched. Here, when a search vector including a representative vector selected for each block is searched for among all search vectors included in the search vector set, for example, an operation using a Wavelet matrix is performed. Can do. If the Wavelet matrix is used, an operation for searching for a value that appears in common within a certain range can be performed with a small amount of calculation. That is, the search vector including the representative vector selected in each of all the search vector blocks can be searched with a small amount of calculation. That is, the maximum inner product search with a small amount of calculation can be performed.

また、本実施形態の最大内積探索装置1によれば、最大内積探索部15により、検索ベクトル集合に含まれる検索ベクトルのうち、全てのブロックにおいて各ブロックに対して選択された代表ベクトルを含む検索ベクトルが探索される際に、Wavelet行列を利用した演算が行われる。本実施形態のようにWavelet行列を利用すれば、ある範囲内で共通して出現する値を探索する演算を少ない計算量で行うことができる。かかる構成を採れば、検索ベクトルの全てのブロックそれぞれにおいて選択された代表ベクトルを含む検索ベクトルを少ない計算量で探索することができる。すなわち、計算量の少ない最大内積探索を行うことができる。また、検索ベクトルの全てのブロックそれぞれにおいて選択された代表ベクトルを含む検索ベクトルを少ない計算量で探索することができる。すなわち、計算量の少ない最大内積探索を行うことができる。   Further, according to the maximum inner product search device 1 of the present embodiment, a search including a representative vector selected for each block in all the blocks among the search vectors included in the search vector set by the maximum inner product search unit 15. When a vector is searched, an operation using a Wavelet matrix is performed. If a Wavelet matrix is used as in this embodiment, an operation for searching for values that appear in common within a certain range can be performed with a small amount of calculation. With this configuration, it is possible to search for a search vector including a representative vector selected in each of all blocks of the search vector with a small amount of calculation. That is, the maximum inner product search with a small amount of calculation can be performed. In addition, a search vector including a representative vector selected in each of all the search vector blocks can be searched with a small amount of calculation. That is, the maximum inner product search with a small amount of calculation can be performed.

また、本実施形態の最大内積探索装置1によれば、Wavelet行列構築部13を備えることで、計算量の少ない最大内積探索を行うためのWavelet行列を確実に構築及び格納することができる。   In addition, according to the maximum inner product search device 1 of the present embodiment, the Wavelet matrix construction unit 13 is provided, so that a Wavelet matrix for performing a maximum inner product search with a small amount of calculation can be reliably constructed and stored.

本実施形態の最大内積探索装置1は、内積の問題を、最頻の問題に変換し、Wavelet行列を用いて処理を行うことで、計算量の少ない最大内積探索を行うことができる。最大内積探索装置1は、画像、音声及びセンサデータの分類及び検索において利用することができる。データの数をn、次元数をm、ブロック数をs、量子化数をkとすると、全てのデータを調べる手法の計算量はO(nm)となる。一方、本実施形態の最大内積探索装置1では、計算量はO(ns/k)であり、通常k>>sであるため、最大内積探索装置1により、計算量の少ない、高速な探索を行うことができる。   The maximum inner product search device 1 according to the present embodiment can perform a maximum inner product search with a small amount of calculation by converting the inner product problem into a most frequent problem and performing processing using the Wavelet matrix. The maximum inner product search device 1 can be used in classification and search of images, sounds, and sensor data. When the number of data is n, the number of dimensions is m, the number of blocks is s, and the number of quantization is k, the calculation amount of the method for examining all data is O (nm). On the other hand, in the maximum inner product search apparatus 1 of the present embodiment, the amount of calculation is O (ns / k), and normally k >> s. Therefore, the maximum inner product search apparatus 1 performs a high-speed search with a small amount of calculation. It can be carried out.

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…補助記憶装置。
DESCRIPTION OF SYMBOLS 1 ... Maximum inner product search apparatus, 2 ... Maximum inner product search program, 10 ... Search database, 11 ... Block quantization part, 12 ... Transposition file construction part, 13 ... Wavelet matrix construction part, 14 ... Query acquisition part, 15 ... Maximum inner product Search unit, 20 ... search database module, 21 ... block quantization module, 22 ... transposed file construction module, 23 ... Wavelet matrix construction module, 24 ... query acquisition module, 25 ... maximum inner product search module, 30 ... storage medium, 31 ... Program storage area, 100 ... CPU, 101 ... RAM, 102 ... ROM, 103 ... input / output device, 104 ... communication module, 105 ... auxiliary storage device.

Claims (6)

所定の要素数の検索ベクトルの集合である検索ベクトル集合と、検索ベクトル集合の各検索ベクトルについて、要素を複数のブロックに分けて前記ブロックごとに代表ベクトルに量子化した量子化検索ベクトル集合と、前記ブロックごとの代表ベクトルの集合である代表ベクトル集合とを格納する検索データベースと、
前記要素数のクエリベクトルを取得するクエリ取得部と、
前記クエリ取得部によって取得されたクエリベクトルの要素を前記ブロックに分け、前記ブロックごとに、当該ブロックのクエリベクトルと前記検索データベースによって格納された代表ベクトル集合の当該ブロックの代表ベクトルそれぞれとの内積を算出し、算出された内積に基づいて前記ブロックごとに当該ブロックの代表ベクトルを選択し、前記検索データベースによって格納された検索ベクトル集合に含まれる検索ベクトルのうち、全ての前記ブロックにおいて各前記ブロックに対して選択された代表ベクトルを含む検索ベクトルを、前記検索データベースによって格納された量子化検索ベクトル集合に基づいて探索する最大内積探索部と、
を備える最大内積探索装置。
A search vector set that is a set of search vectors of a predetermined number of elements, and for each search vector of the search vector set, a quantized search vector set in which elements are divided into a plurality of blocks and quantized into representative vectors for each block; A search database that stores a representative vector set that is a set of representative vectors for each block;
A query acquisition unit for acquiring a query vector of the number of elements;
The elements of the query vector acquired by the query acquisition unit are divided into the blocks, and for each block, the inner product of the query vector of the block and the representative vector of the block of the representative vector set stored by the search database is obtained. Calculating a representative vector of the block for each block based on the calculated inner product, and out of the search vectors included in the search vector set stored by the search database, all the blocks are assigned to each block. A maximum inner product search unit for searching a search vector including a representative vector selected for the search based on a set of quantized search vectors stored in the search database;
A maximum inner product search device.
前記検索データベースは、代表ベクトル集合に含まれる前記ブロックごとの代表ベクトルごとに、当該代表ベクトルが含まれる検索ベクトルを識別する検索ベクトル識別情報の集合に対応するWavelet行列をさらに格納し、
前記最大内積探索部は、検索ベクトルを探索する際に、前記検索データベースによって格納されたWavelet行列を利用した演算を行う、
請求項1に記載の最大内積探索装置。
The search database further stores, for each representative vector for each block included in the representative vector set, a Wavelet matrix corresponding to a set of search vector identification information for identifying a search vector including the representative vector,
The maximum inner product search unit performs an operation using a Wavelet matrix stored in the search database when searching for a search vector.
The maximum inner product search device according to claim 1.
前記最大内積探索部は、検索ベクトルを探索する際に、選択された全ての代表ベクトルそれぞれに対応するWavelet行列を取得し、取得した全てのWavelet行列に対して、共通して出現する検索ベクトル識別情報を求める演算を行う、
請求項2に記載の最大内積探索装置。
When searching for a search vector, the maximum inner product search unit acquires a Wavelet matrix corresponding to each of all selected representative vectors, and a search vector identification that appears in common for all of the acquired Wavelet matrices Perform operations to obtain information,
The maximum inner product search device according to claim 2.
代表ベクトル集合に含まれる前記ブロックごとの代表ベクトルごとに、当該代表ベクトルが含まれる検索ベクトルを識別する検索ベクトル識別情報の集合に対応するWavelet行列を構築するWavelet行列構築部をさらに備え、
前記検索データベースは、前記Wavelet行列構築部によって構築されたWavelet行列を格納する、
請求項2又は3に記載の最大内積探索装置。
A wavelet matrix constructing unit that constructs a wavelet matrix corresponding to a set of search vector identification information for identifying a search vector including the representative vector for each representative vector included in the representative vector set;
The search database stores the Wavelet matrix constructed by the Wavelet matrix construction unit.
The maximum inner product search device according to claim 2 or 3.
所定の要素数の検索ベクトルの集合である検索ベクトル集合と、検索ベクトル集合の各検索ベクトルについて、要素を複数のブロックに分けて前記ブロックごとに代表ベクトルに量子化した量子化検索ベクトル集合と、前記ブロックごとの代表ベクトルの集合である代表ベクトル集合とを格納する検索データベースを備える最大内積探索装置により実行される最大内積探索方法であって、
前記要素数のクエリベクトルを取得するクエリ取得ステップと、
前記クエリ取得ステップにおいて取得されたクエリベクトルの要素を前記ブロックに分け、前記ブロックごとに、当該ブロックのクエリベクトルと前記検索データベースによって格納された代表ベクトル集合の当該ブロックの代表ベクトルそれぞれとの内積を算出し、算出された内積に基づいて前記ブロックごとに当該ブロックの代表ベクトルを選択し、前記検索データベースによって格納された検索ベクトル集合に含まれる検索ベクトルのうち、全ての前記ブロックにおいて各前記ブロックに対して選択された代表ベクトルを含む検索ベクトルを、前記検索データベースによって格納された量子化検索ベクトル集合に基づいて探索する最大内積探索ステップと、
を含む最大内積探索方法。
A search vector set that is a set of search vectors of a predetermined number of elements, and for each search vector of the search vector set, a quantized search vector set in which elements are divided into a plurality of blocks and quantized into representative vectors for each block; A maximum inner product search method executed by a maximum inner product search device including a search database that stores a representative vector set that is a set of representative vectors for each block,
A query acquisition step of acquiring a query vector of the number of elements;
The element of the query vector acquired in the query acquisition step is divided into the blocks, and for each block, the inner product of the query vector of the block and the representative vector of the block of the representative vector set stored by the search database is obtained. Calculating a representative vector of the block for each block based on the calculated inner product, and out of the search vectors included in the search vector set stored by the search database, all the blocks are assigned to each block. A maximum inner product search step for searching a search vector including a representative vector selected for the search based on a set of quantized search vectors stored by the search database;
Maximum inner product search method including
コンピュータを、
所定の要素数の検索ベクトルの集合である検索ベクトル集合と、検索ベクトル集合の各検索ベクトルについて、要素を複数のブロックに分けて前記ブロックごとに代表ベクトルに量子化した量子化検索ベクトル集合と、前記ブロックごとの代表ベクトルの集合である代表ベクトル集合とを格納する検索データベースと、
前記要素数のクエリベクトルを取得するクエリ取得部と、
前記クエリ取得部によって取得されたクエリベクトルの要素を前記ブロックに分け、前記ブロックごとに、当該ブロックのクエリベクトルと前記検索データベースによって格納された代表ベクトル集合の当該ブロックの代表ベクトルそれぞれとの内積を算出し、算出された内積に基づいて前記ブロックごとに当該ブロックの代表ベクトルを選択し、前記検索データベースによって格納された検索ベクトル集合に含まれる検索ベクトルのうち、全ての前記ブロックにおいて各前記ブロックに対して選択された代表ベクトルを含む検索ベクトルを、前記検索データベースによって格納された量子化検索ベクトル集合に基づいて探索する最大内積探索部、
として機能させる最大内積探索プログラム。
Computer
A search vector set that is a set of search vectors of a predetermined number of elements, and for each search vector of the search vector set, a quantized search vector set in which elements are divided into a plurality of blocks and quantized into representative vectors for each block; A search database that stores a representative vector set that is a set of representative vectors for each block;
A query acquisition unit for acquiring a query vector of the number of elements;
The elements of the query vector acquired by the query acquisition unit are divided into the blocks, and for each block, the inner product of the query vector of the block and the representative vector of the block of the representative vector set stored by the search database is obtained. Calculating a representative vector of the block for each block based on the calculated inner product, and out of the search vectors included in the search vector set stored by the search database, all the blocks are assigned to each block. A maximum inner product search unit for searching a search vector including a representative vector selected for the search based on a set of quantized search vectors stored by the search database;
Maximum inner product search program that functions as
JP2016181489A 2016-09-16 2016-09-16 Maximum inner product search device, maximum inner product search method and maximum inner product search program Active JP6872333B2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2016181489A JP6872333B2 (en) 2016-09-16 2016-09-16 Maximum inner product search device, maximum inner product search method and maximum inner product search program

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2016181489A JP6872333B2 (en) 2016-09-16 2016-09-16 Maximum inner product search device, maximum inner product search method and maximum inner product search program

Publications (3)

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

Family

ID=61695008

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016181489A Active JP6872333B2 (en) 2016-09-16 2016-09-16 Maximum inner product search device, maximum inner product search method and maximum inner product search program

Country Status (1)

Country Link
JP (1) JP6872333B2 (en)

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000004164A (en) * 1998-04-17 2000-01-07 Tadahiro Omi Device and method for vector quantization and recording medium
JP2006235877A (en) * 2005-02-23 2006-09-07 Nippon Telegr & Teleph Corp <Ntt> Advertising rate setting system and advertising rate setting program
JP2006525603A (en) * 2003-05-02 2006-11-09 オーバーチュア サービシズ インコーポレイテッド Detect inappropriate search queries submitted to wide area network search engines
JP2012048718A (en) * 2010-08-25 2012-03-08 Nhn Corp Online advertisement charging system, method thereof and computer readable recording medium
JP2012088803A (en) * 2010-10-15 2012-05-10 Univ Of Aizu Malignant web code determination system, malignant web code determination method, and program for malignant web code determination
JP2013050502A (en) * 2011-08-30 2013-03-14 Seiko Epson Corp Advertisement display control device, advertisement display control method, and program
WO2016043121A1 (en) * 2014-09-19 2016-03-24 Necソリューションイノベータ株式会社 Information processing device, information processing method, and computer-readable storage medium

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000004164A (en) * 1998-04-17 2000-01-07 Tadahiro Omi Device and method for vector quantization and recording medium
JP2006525603A (en) * 2003-05-02 2006-11-09 オーバーチュア サービシズ インコーポレイテッド Detect inappropriate search queries submitted to wide area network search engines
JP2006235877A (en) * 2005-02-23 2006-09-07 Nippon Telegr & Teleph Corp <Ntt> Advertising rate setting system and advertising rate setting program
JP2012048718A (en) * 2010-08-25 2012-03-08 Nhn Corp Online advertisement charging system, method thereof and computer readable recording medium
JP2012088803A (en) * 2010-10-15 2012-05-10 Univ Of Aizu Malignant web code determination system, malignant web code determination method, and program for malignant web code determination
JP2013050502A (en) * 2011-08-30 2013-03-14 Seiko Epson Corp Advertisement display control device, advertisement display control method, and program
WO2016043121A1 (en) * 2014-09-19 2016-03-24 Necソリューションイノベータ株式会社 Information processing device, information processing method, and computer-readable storage medium

Also Published As

Publication number Publication date
JP6872333B2 (en) 2021-05-19

Similar Documents

Publication Publication Date Title
KR102411921B1 (en) A method for calculating relevance, an apparatus for calculating relevance, a data query apparatus, and a non-transitory computer-readable storage medium
KR102449191B1 (en) Method and apparatus for supporting machine learning algorithms and data pattern matching in ethernet solid state drive
Chaudhuri et al. CMIR-NET: A deep learning based model for cross-modal retrieval in remote sensing
JP6265921B2 (en) Method, apparatus and product for semantic processing of text
KR102371167B1 (en) Methods and systems for mapping data items to sparse distributed representations
CN110023924A (en) Device and method for semantic search
WO2021064907A1 (en) Sentence generation device, sentence generation learning device, sentence generation method, sentence generation learning method, and program
KR101435010B1 (en) Method for learning of sequential binary code using features and apparatus for the same
JP7483320B2 (en) Automated Search Dictionary and User Interface
EP3278238A1 (en) Fast orthogonal projection
Lian et al. Product quantized collaborative filtering
JP2019023612A (en) System and method for signal analysis
Le et al. Efficient retrieval of matrix factorization-based top-k recommendations: A survey of recent approaches
CN110442749B (en) Video frame processing method and device
CN117171393A (en) Multi-mode retrieval-oriented self-adaptive semi-pairing inquiry hash method
Jain et al. Approximate search with quantized sparse representations
EP3655862B1 (en) Multiscale quantization for fast similarity search
CN112905809B (en) Knowledge graph learning method and system
CN113918807A (en) Data recommendation method and device, computing equipment and computer-readable storage medium
De Vries et al. Parallel streaming signature em-tree: A clustering algorithm for web scale applications
JP6872333B2 (en) Maximum inner product search device, maximum inner product search method and maximum inner product search program
Yang et al. Isometric hashing for image retrieval
KR102062139B1 (en) Method and Apparatus for Processing Data Based on Intelligent Data Structure
Guo et al. New loss functions for fast maximum inner product search
Pronobis et al. Sharing hash codes for multiple purposes

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