(57)【要約】【課題】近傍検索における効率的な検索を可能にするセントロイド情報を生成する。【解決手段】本願に係る生成装置は、取得部と、生成部とを有する。取得部は、近傍検索における検索対象の各々に対応する複数のベクトル情報を取得する。生成部は、取得部により取得された複数のベクトル情報に基づいて、ベクトル量子化において各ベクトル情報の各々が距離に応じて対応付けられる複数のセントロイド情報であって、各セントロイド情報に対応付けられるベクトル情報の数の差が所定値以内になるように複数のセントロイド情報を生成する。【選択図】図３
2018101225.tif 000002
【特許請求の範囲】
【請求項１】
近傍検索における検索対象の各々に対応する複数のベクトル情報を取得する取得部と、
前記取得部により取得された複数のベクトル情報に基づいて、ベクトル量子化において各ベクトル情報の各々が距離に応じて対応付けられる複数のセントロイド情報であって、各セントロイド情報に対応付けられるベクトル情報の数の差が所定値以内になるように複数のセントロイド情報を生成する生成部と、
を備えることを特徴とする生成装置。
【請求項２】
前記生成部は、
前記複数のベクトル情報から所定の条件に基づいてベクトル情報をセントロイド情報として選択することにより、複数のセントロイド情報を生成する
ことを特徴とする請求項１に記載の生成装置。
【請求項３】
前記生成部は、
前記複数のベクトル情報から、ランダムサンプリングにより選択されたベクトル情報をセントロイド情報として選択することにより、複数のセントロイド情報を生成する
ことを特徴とする請求項１または請求項２に記載の生成装置。
【請求項４】
前記取得部は、
前記複数のベクトル情報を異なるタイミングで取得し、
前記生成部は、
前記取得部がベクトル情報を取得した時点において、セントロイド情報の数が所定の閾値未満である場合、当該ベクトル情報をセントロイド情報として選択することにより、複数のセントロイド情報を生成する
ことを特徴とする請求項１〜３のいずれか１項に記載の生成装置。
【請求項５】
前記生成部は、
所定の検索要求に対して、セントロイド情報の特定に用いる第１インデックス情報を生成する
ことを特徴とする請求項１〜４のいずれか１項に記載の生成装置。
【請求項６】
前記生成部は、
高次元ベクトルを検索する検索インデックスを第１インデックス情報として生成する
ことを特徴とする請求項５に記載の生成装置。
【請求項７】
前記生成部は、
複数のセントロイド情報に関する木構造型のインデックス、または、グラフ構造型のインデックスを第１インデックス情報として生成する
ことを特徴とする請求項５または請求項６に記載の生成装置。
【請求項８】
前記生成部は、
各セントロイド情報と、当該各セントロイド情報に対応付けられたベクトル情報とを示す第２インデックス情報を生成する
ことを特徴とする請求項１〜７のいずれか１項に記載の生成装置。
【請求項９】
前記生成部は、
各セントロイド情報に対応付けられたベクトル情報を特定する転置インデックスを第２インデックス情報として生成する
ことを特徴とする請求項８に記載の生成装置。
【請求項１０】
前記生成部は、
各ベクトル情報を分割した各部分ベクトルを量子化するベクトル量子化に基づいて、各セントロイド情報に対応付けられるベクトル情報の数の差が所定値以内になるように複数のセントロイド情報を生成する
ことを特徴とする請求項１〜９のいずれか１項に記載の生成装置。
【請求項１１】
前記生成部は、
各セントロイド情報に対応する領域に含まれるベクトル情報に基づいて、当該領域が分割された複数の部分領域に対応する部分セントロイド情報を生成する
ことを特徴とする請求項１〜１０のいずれか１項に記載の生成装置。
【請求項１２】
前記生成部は、
各セントロイド情報に対応する領域に含まれるベクトル情報に関する残差ベクトル情報に基づいて、当該領域が分割された複数の部分領域に対応する部分セントロイド情報を生成する
ことを特徴とする請求項１〜１１のいずれか１項に記載の生成装置。
【請求項１３】
前記生成部は、
各セントロイド情報と、当該各セントロイド情報に対応する領域に含まれるベクトル情報により生成される残差ベクトル情報に基づいて、当該領域が分割された複数の部分領域に対応する部分セントロイド情報を生成する
ことを特徴とする請求項１〜１２のいずれか１項に記載の生成装置。
【請求項１４】
前記生成部は、
各部分領域の部分セントロイド情報と、当該各部分領域内に含まれるベクトル情報とを対応付けた対応付情報を生成する
ことを特徴とする請求項１１〜１３のいずれか１項に記載の生成装置。
【請求項１５】
前記生成部は、
各セントロイド情報と、当該各セントロイド情報の各部分領域内に対応する各部分セントロイド情報とにより生成される残差ベクトル情報に基づいて、前記対応付情報を生成する
ことを特徴とする請求項１４に記載の生成装置。
【請求項１６】
コンピュータが実行する生成方法であって、
近傍検索における検索対象の各々に対応する複数のベクトル情報を取得する取得工程と、
前記取得工程により取得された複数のベクトル情報に基づいて、ベクトル量子化において各ベクトル情報の各々が距離に応じて対応付けられる複数のセントロイド情報であって、各セントロイド情報に対応付けられるベクトル情報の数の差が所定値以内になるように複数のセントロイド情報を生成する生成工程と、
を含むことを特徴とする生成方法。
【請求項１７】
近傍検索における検索対象の各々に対応する複数のベクトル情報を取得する取得手順と、
前記取得手順により取得された複数のベクトル情報に基づいて、ベクトル量子化において各ベクトル情報の各々が距離に応じて対応付けられる複数のセントロイド情報であって、各セントロイド情報に対応付けられるベクトル情報の数の差が所定値以内になるように複数のセントロイド情報を生成する生成手順と、
をコンピュータに実行させることを特徴とする生成プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、生成装置、生成方法、及び生成プログラムに関する。
【背景技術】
【０００２】
従来、ベクトル量子化によるベクトルデータの検索に関する技術が提供されている。例えば、ベクトルをコードブックにより量子化する技術が提供されている。また、このような技術は、例えば画像検索等に用いられる。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１３−１７５１８１号公報
【０００４】
【非特許文献１】Equal  frequency  binning、IBM、[online]、[平成28年12月8日検索]、インターネット<URL：http://www.ibm.com/support/knowledgecenter/SSWLVY_1.0.0/com.ibm.spss.analyticcatalyst.help/analytic_catalyst/equal_frequency_binning.html>
【非特許文献２】岩崎雅二郎  "木構造型インデックスを利用した近似k最近傍グラフによる近傍検索",  情報処理学会論文誌,  2011/2,  Vol.  52,  No.  2.  pp.817-828.
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、上記の従来技術では、近傍検索における効率的な検索を可能にするセントロイド情報を生成することが難しい場合がある。例えば、ベクトルをコードブックにより量子化するだけでは、セントロイドの個数が増大した場合にセントロイドの検索に要する処理時間も増大し、検索の処理時間を抑制することが難しい。このような場合、クエリに対する検索を効率的に行うことが難しい場合がある。
【０００６】
本願は、上記に鑑みてなされたものであって、近傍検索における効率的な検索を可能にするセントロイド情報を生成する生成装置、生成方法、及び生成プログラムを提供することを目的とする。
【課題を解決するための手段】
【０００７】
本願に係る生成装置は、近傍検索における検索対象の各々に対応する複数のベクトル情報を取得する取得部と、前記取得部により取得された複数のベクトル情報に基づいて、ベクトル量子化において各ベクトル情報の各々が距離に応じて対応付けられる複数のセントロイド情報であって、各セントロイド情報に対応付けられるベクトル情報の数の差が所定値以内になるように複数のセントロイド情報を生成する生成部と、を備えたことを特徴とする。
【発明の効果】
【０００８】
実施形態の一態様によれば、近傍検索における効率的な検索を可能にするセントロイド情報を生成することができるという効果を奏する。
【図面の簡単な説明】
【０００９】
【図１】図１は、実施形態に係る生成処理の一例を示す図である。
【図２】図２は、実施形態に係る生成システムの構成例を示す図である。
【図３】図３は、実施形態に係る生成装置の構成例を示す図である。
【図４】図４は、実施形態に係るセントロイド情報記憶部の一例を示す図である。
【図５】図５は、実施形態に係る第２インデックス情報記憶部の一例を示す図である。
【図６】図６は、実施形態に係る生成処理の一例を示すフローチャートである。
【図７】図７は、実施形態に係るクエリに対応する情報の提供の一例を示す図である。
【図８】図８は、実施形態に係る第２インデックス情報の生成処理の一例を示す図である。
【図９】図９は、実施形態に係る第２インデックス情報の利用の一例を示す図である。
【図１０】図１０は、実施形態に係るベクトルの分割の一例を示す図である。
【図１１】図１１は、実施形態に係る第１インデックス情報の概念図を示す図である。
【図１２】図１２は、生成装置の機能を実現するコンピュータの一例を示すハードウェア構成図である。
【発明を実施するための形態】
【００１０】
以下に、本願に係る生成装置、生成方法、及び生成プログラムを実施するための形態（以下、「実施形態」と呼ぶ）について図面を参照しつつ詳細に説明する。なお、この実施形態により本願に係る生成装置、生成方法、及び生成プログラムが限定されるものではない。また、以下の各実施形態において同一の部位には同一の符号を付し、重複する説明は省略される。
【００１１】
（実施形態）
〔１．生成処理〕
図１を用いて、実施形態に係る生成処理の一例について説明する。図１は、実施形態に係る生成処理の一例を示す図である。図１では、生成装置１００（図３参照）が与えられた複数のベクトル情報について、セントロイド情報を生成する場合を示す。なお、対象とする情報は、ベクトルとして表現可能であれば、どのような情報であってもよい。なお、以下では、画像情報を対象としたベクトル情報について説明するが、ベクトル情報の対象は、動画情報や音声情報等の他の対象であってもよい。
【００１２】
図１の例では、数百万〜数億単位の画像情報に対応するベクトル情報を対象にするが、図面においてはその一部のみを図示する。なお、図１の例では、ベクトルからセントロイドを選択し、セントロイド情報を生成する場合を示す。また、以下では、画像情報に対応するベクトルデータ自体を示す場合、「ベクトルデータ」と記載し、画像情報に対応する各ベクトルデータを識別する情報を示す場合、「ベクトル識別情報」と記載する。すなわち、ここでいう、ベクトルデータは、Ｎ次元の高次元ベクトルを意味し、ベクトル識別情報は、ベクトルＩＤ等の各ベクトルを識別する情報を意味する。例えば、図１に示す例において、ベクトル識別情報Ｖ１１と記載した場合、ベクトルＩＤ「Ｖ１１」を意味する。また、ベクトルデータであるかベクトル識別情報であるかを特に区別せずに説明する場合は「ベクトル」や「ベクトル情報」と記載する。
【００１３】
また、以下では、「ベクトルＶ＊（＊は任意の数値）」と記載した場合、そのベクトルはベクトルＩＤ「Ｖ＊」により識別されるベクトルであることを示す。例えば、「ベクトルＶ１」と記載した場合、そのベクトルはベクトルＩＤ「Ｖ１」により識別されるベクトルである。また、「セントロイドＶ＊（＊は任意の数値）」と記載した場合、そのセントロイドはセントロイドＩＤ「Ｖ＊」により識別されるセントロイドであることを示す。例えば、「セントロイドＶ６」と記載した場合、そのセントロイドはセントロイドＩＤ「Ｖ６」により識別されるセントロイド（ベクトル）である。
【００１４】
まず、図１に示すように、生成装置１００は、画像情報に各々対応するベクトル情報を取得する（ステップＳ１１）。図１の例では、生成装置１００は、空間情報ＧＲ１１等に示すようにベクトル識別情報Ｖ１〜Ｖ１１００等により各々識別される複数のベクトル情報を取得する。例えば、生成装置１００は、ベクトル識別情報Ｖ１〜Ｖ１１００等を含む多数のベクトル情報を取得する。
【００１５】
図１に示す例においては、取得した各ベクトル情報を「○」にベクトル識別情報を付すことにより表現する。例えば、ベクトルＩＤ「Ｖ１１１」により識別されるベクトルは、空間情報ＧＲ１１中の左上の「○」点として表現する。例えば、図１に示す例において、各ベクトルデータは、Ｎ次元の実数値ベクトルである。
【００１６】
なお、図１中の空間情報ＧＲ１１や空間情報ＧＲ１２は、ユークリッド空間であってもよい。また、図１に示す空間情報ＧＲ１１、ＧＲ１２は、各ベクトル間の距離等の説明のための概念的な図である。多次元空間となる。なお、例えば、図１に示す空間情報ＧＲ１１は、平面上に図示するため２次元の態様にて図示されるが、例えば１００次元や１０００次元等の多次元空間であるものとする。
【００１７】
本実施形態においては、空間情報ＧＲ１１、ＧＲ１２における各ベクトルの距離を対応する各画像間の類似度とする。ここで、図１に示す例においては、空間情報ＧＲ１１、ＧＲ１２における各ベクトル間の距離が小さい画像同士の類似度が高く、空間情報ＧＲ１１、ＧＲ１２における各ベクトル間の距離が大きい画像同士の類似度が低い。例えば、図１中の空間情報ＧＲ１１、ＧＲ１２において、ベクトルＩＤ「Ｖ６」により識別されるベクトル情報と、ベクトルＩＤ「Ｖ３４」により識別されるベクトル情報とは近接している、すなわち距離が小さい。そのため、ベクトルＩＤ「Ｖ６」により識別されるベクトル情報に対応する画像と、ベクトルＩＤ「Ｖ３４」により識別されるベクトル情報に対応する画像とは類似度が高いことを示す。また、例えば、図１中の空間情報ＧＲ１１、ＧＲ１２において、ベクトルＩＤ「Ｖ６」により識別されるベクトル情報と、ベクトルＩＤ「Ｖ１１１」により識別されるベクトル情報とは遠隔にある、すなわち距離が大きい。そのため、ベクトルＩＤ「Ｖ６」により識別されるベクトル情報に対応する画像と、ベクトルＩＤ「Ｖ１１１」により識別されるベクトル情報に対応する画像とは類似度が低いことを示す。
【００１８】
その後、生成装置１００は、セントロイド情報を生成する（ステップＳ１２）。図１の例では、生成装置１００は、ベクトル識別情報Ｖ１〜Ｖ１１００等により各々識別される複数のベクトルから、セントロイドとするベクトルを選択することによりセントロイド情報を生成する。なお、以下では、セントロイドとして選択されたベクトルを「セントロイド」と記載する場合がある。
【００１９】
ここで、図１の例では、生成装置１００は、セントロイドとして選択されたベクトルとの間の位置に応じて、各ベクトルをセントロイドのいずれかに対応付ける。例えば、生成装置１００は、セントロイドとして選択されたベクトル以外の各ベクトルを各セントロイド間の距離に応じて、クラスタリングする。例えば、生成装置１００は、各ベクトルを最も距離が近接するセントロイドに対応するクラスタに分類する。
【００２０】
概念的には、生成装置１００は、例えば、図１中の空間情報ＧＲ１２に示すように、各セントロイドを母点とし、母点から他の点がいずれの母点に近いかによって領域を分割する。図１中の例では、生成装置１００は、境界ＬＮにより空間情報ＧＲ１２を領域ＡＲ１〜ＡＲ１１のように分割する。例えば、図１中の空間情報ＧＲ１２における領域ＡＲ１には、ベクトル識別情報Ｖ１により識別されるベクトル（セントロイド）やベクトル識別情報Ｖ４、Ｖ２５、Ｖ３２、Ｖ４１、Ｖ８７の各々により識別されるベクトル等が含まれる。図１の例では、ベクトル識別情報Ｖ４、Ｖ２５、Ｖ３２、Ｖ４１、Ｖ８７の各々により識別されるベクトルは、ベクトル識別情報Ｖ１により識別されるセントロイドに最も近接していることを示す。例えば、ベクトル識別情報Ｖ４、Ｖ２５、Ｖ３２、Ｖ４１、Ｖ８７の各々により識別されるベクトルに対応する画像は、各セントロイドのうち、ベクトル識別情報Ｖ１により識別されるセントロイドに対応する画像に類似していることを示す。この場合、生成装置１００は、セントロイドＩＤとしてのベクトル識別情報Ｖ１により識別されるセントロイドにベクトル識別情報Ｖ４、Ｖ２５、Ｖ３２、Ｖ４１、Ｖ８７を対応付ける。
【００２１】
ここで、生成装置１００は、各セントロイドに対応付けられるベクトルの数の差が所定値以内になるような複数のセントロイド情報を生成する。例えば、生成装置１００は、各セントロイドに対応付けられるベクトルの数が均等になるような複数のセントロイド情報を生成する。以下では、この点を説明するために、空間情報ＧＲ１１、ＧＲ１２に含まれるベクトルの数は少数の１１００個であり、生成するセントロイドは１１個であるものとする。なお、上述したように、ベクトルの数は数億単位であってもよい。また、セントロイドの個数は、ベクトルの数に基づいて選択（決定）されてもよいし、所定の設定値に基づいて選択（決定）されてもよい。
【００２２】
例えば、生成装置１００は、ランダムサンプリングを行うことによりベクトル識別情報の数の差が所定値以内になるような複数のセントロイド情報を生成する。例えば、生成装置１００は、ランダムサンプリングを行ってセントロイドを選択し、選択されたセントロイドに基づいて各ベクトルをクラスタリングすることにより、各セントロイドに対応付けられるベクトルの数の差が所定値以内になるような複数のセントロイド情報を生成する。上記のように、空間情報ＧＲ１２に含まれるベクトルの数が１１００個であり、生成するセントロイドは１１個である場合、各セントロイドに対応付けられるベクトルの数が９９個になるように、複数のセントロイド情報を生成する。
【００２３】
例えば、生成装置１００は、所定の回数ランダムサンプリングを行い、各クラスタに含まれるベクトルの数の差が最も小さくベクトルがクラスタリングされるセントロイドの組合せに基づいて、複数のセントロイド情報を生成する。例えば、生成装置１００は、所定の回数ランダムサンプリングを行い、最も均等にベクトルがクラスタリングされるセントロイドの組合せに基づいて、複数のセントロイド情報を生成する。また、例えば、生成装置１００は、最も均等にベクトルがクラスタリングされるセントロイドの組合せのうち、平均値からの乖離が大きいセントロイドを近接する他のベクトルに変更することにより、各セントロイドに対応付けられるベクトルの数が均等になるような複数のセントロイド情報を生成してもよい。また、例えば、生成装置１００は、各クラスタに含まれるベクトルの数の差が所定値（例えば、５や１０等）以下になった場合、ランダムサンプリングを終了し、そのセントロイドの組合せに基づいて、複数のセントロイド情報を生成してもよい。例えば、生成装置１００は、最多のベクトルが含まれるクラスタと最少のベクトルが含まれるクラスタとの差が所定値（例えば、１や５０等）以下になった場合、ランダムサンプリングを終了し、そのセントロイドの組合せに基づいて、複数のセントロイド情報を生成してもよい。また、例えば、生成装置１００は、各クラスタに含まれるベクトルの数の差が「０」、すなわち各クラスタに含まれるベクトルの数が同一になった場合、ランダムサンプリングを終了し、そのセントロイドの組合せに基づいて、複数のセントロイド情報を生成してもよい。
【００２４】
なお、上記は一例であり、生成装置１００は、各セントロイドに対応付けられるベクトルの数の差が所定値以内になるように複数のセントロイド情報を生成可能であれば、どのような情報や技術を用いてセントロイド情報を生成してもよい。例えば、生成装置１００は、種々の従来技術等を適宜用いたり組み合わせたりして、各セントロイドに対応付けられるベクトルの数が均等になるような複数のセントロイド情報を生成してもよい。例えば、生成装置１００は、非特許文献１に開示されるようなEqual  frequency  binningの技術を用いて、各セントロイドに対応付けられるベクトルの数が均等になるような複数のセントロイド情報を生成してもよい。
【００２５】
図１の例では、生成装置１００は、図１中の空間情報ＧＲ１２に示すように、ベクトル識別情報Ｖ１、Ｖ２、Ｖ５、Ｖ６、Ｖ１０、Ｖ１１、Ｖ３６、Ｖ７９、Ｖ８６、Ｖ９５、Ｖ１１１をセントロイドとするセントロイド情報を生成する。図１中では、各セントロイドに対応する領域ＡＲ１〜ＡＲ１１の各々に５個のベクトルを図示するが、領域ＡＲ１〜ＡＲ１１の各々には９９個のベクトルが位置するものとする。このように、生成装置１００は、セントロイドとなるベクトル識別情報Ｖ１、Ｖ２、Ｖ５、Ｖ６、Ｖ１０、Ｖ１１、Ｖ３６、Ｖ７９、Ｖ８６、Ｖ９５、Ｖ１１１の各々に対応付けられるベクトルが均等になるように複数のセントロイド情報を生成してもよい。例えば、セントロイドに割り当てられたベクトル数が多い場合には近傍ではないベクトルが結果となり、少ない場合には近傍が検索できなくなる。したがって、適切なベクトル数が均等であると性能が向上する。特にk最近傍検索の場合は検索結果数が一定なので、均等にする効果が高い。
【００２６】
例えば、生成装置１００は、セントロイド情報記憶部１２２に示すような複数のセントロイド情報を生成する。例えば、生成装置１００は、空間情報ＧＲ１２中の領域ＡＲ１に対応するセントロイドを識別するベクトル識別情報Ｖ１をセントロイドＩＤとし、ベクトル識別情報Ｖ１により識別されるベクトル情報をセントロイド情報としてセントロイド情報記憶部１２２に格納する。具体的には、生成装置１００は、空間情報ＧＲ１２中の領域ＡＲ１に対応するセントロイドを識別するベクトル識別情報Ｖ１をセントロイドＩＤとし、ベクトル識別情報Ｖ１により識別されるベクトル情報とを組み合わせたセントロイド情報を生成し、セントロイド情報記憶部１２２に格納する。例えば、生成装置１００は、ベクトル識別情報Ｖ１により識別されるベクトル（ベクトルＶ１）のベクトルデータ「１０，２４，５４，２・・・」をセントロイド情報記憶部１２２に格納する。
【００２７】
例えば、生成装置１００は、空間情報ＧＲ１２中の領域ＡＲ６に対応するセントロイドを識別するベクトル識別情報Ｖ６をセントロイドＩＤとし、ベクトル識別情報Ｖ６により識別されるベクトル情報をセントロイド情報としてセントロイド情報記憶部１２２に格納する。具体的には、生成装置１００は、セントロイドＩＤ「Ｖ６」と、ベクトル識別情報Ｖ６により識別されるベクトルデータであって、「３２，１，１２０，３１・・・」となるＮ次元のベクトル情報とを組み合わせたセントロイド情報を生成し、セントロイド情報記憶部１２２に格納する。
【００２８】
そして、生成装置１００は、各セントロイドに対応付けられたベクトルに基づいて第２インデックス情報を生成する（ステップＳ１３）。例えば、生成装置１００は、各セントロイドに対応する領域ＡＲ１〜ＡＲ１１の各々に含まれるベクトルを識別する情報をセントロイドＩＤに対応付けた第２インデックス情報を生成する。例えば、生成装置１００は、セントロイドＩＤ「Ｖ１」に対応付けてベクトル識別情報Ｖ４、Ｖ２５、Ｖ３２、Ｖ４１、Ｖ８７を第２インデックス情報記憶部１２３に格納する。このように、生成装置１００は、セントロイドにベクトルを識別する情報が対応付けられた、いわゆる転置インデックス情報を生成することにより、セントロイドが特定された場合に類似するベクトルの検索を高速化することができる。なお、類似するベクトルの検索時には近傍の複数のセントロイドを特定しても良い。
【００２９】
上述したように、生成装置１００は、各セントロイドに対応付けられるベクトルの数の差が所定値以内になるように複数のセントロイドを生成し、各セントロイドに対応付けられるベクトルの数が均等になるような複数のセントロイドを生成することにより、近傍検索における効率的な検索を可能にするセントロイド情報を生成することができる。例えば、生成装置１００が生成したセントロイド情報により、クエリに対応するセントロイドを特定することができるため、そのセントロイドに対応付けられたベクトルを検索結果とすることにより、近傍検索における効率的な検索を可能にすることができる。また、生成装置１００は、上述した処理以外にも他の情報の生成処理を行ったり、生成した情報を用いてクエリに対する情報提供を行なったりするが、それらの点についての詳細は後述する。
【００３０】
また、上述したように、生成装置１００は、全ベクトルデータのうち、セントロイドとなるもののベクトルデータのみをセントロイド情報記憶部１２２等の記憶部１２０（図３参照）に格納し、他のベクトルデータについては記憶部１２０に格納しない。言い換えると、生成装置１００は、セントロイド以外のベクトルについてはベクトル識別情報のみを第２インデックス情報記憶部１２３に格納する。これにより、生成装置１００は、格納するベクトル情報のデータ量を抑制しつつ、近傍検索における効率的な検索を可能にするセントロイド情報を生成することができる。
【００３１】
〔１−１．第１インデックス〕
また、生成装置１００は、クエリを取得した際に対応するセントロイドを特定するために用いる第１インデックス情報を生成する。例えば、生成装置１００は、高次元ベクトルを検索する検索インデックスを第１インデックス情報として生成する。ここでいう高次元ベクトルとは、例えば、数百次元から数千次元のベクトルであってもよいし、それ以上の次元のベクトルであってもよい。
【００３２】
また、例えば、生成装置１００は、非特許文献２に記載されるようなグラフ型の検索インデックスに関する情報を第１インデックス情報として生成してもよい。また、例えば、生成装置１００は、ツリー構造（木構造）に関する検索インデックスを第１インデックス情報として生成してもよい。例えば、生成装置１００は、ｋｄ木（k-dimensional  tree）に関する検索インデックスを第１インデックス情報として生成してもよい。例えば、生成装置１００は、ＶＰ木（vantage-point  tree）に関する検索インデックスを第１インデックス情報として生成してもよい。このように、生成装置１００は、複数のセントロイド情報に関する木構造型のインデックス、グラフ構造型のインデックスを第１インデックス情報として生成してもよい。また、例えば、生成装置１００は、転置インデックスを第１インデックス情報として生成してもよい。
【００３３】
また、例えば、生成装置１００は、図１１に示すような、その他の木構造を有する第１インデックス情報ＳＴ１１として生成してもよい。図１１は、実施形態に係る第１インデックス情報の概念図を示す図である。例えば、生成装置１００は、図１１に概念的に示すような第１インデックス情報を第１インデックス情報記憶部１２１に記憶してもよい。また、例えば、生成装置１００は、高次元データを検索できるハッシュ型などその他のインデックスを第１インデックス情報として用いてもよい。例えば、生成装置１００は、高次元データを検索できるハッシュ型などその他のインデックスを第１インデックス情報として第１インデックス情報記憶部１２１に記憶してもよい。
【００３４】
図１１中の第１インデックス情報ＳＴ１１は、ルートＲＴ１やノードＮＤ１、ＮＤ２やセントロイドＣＮ１、ＣＮ２等を含む。図１の例では、例えば、セントロイドＣＮ１、ＣＮ２は、ベクトルＶ３６やベクトルＶ１１１であってもよい。また、図１１中には、第１インデックス情報ＳＴ１１以外の情報である検索クエリＱＥ１１が図示されており、例えば、生成装置１００は、第１インデックス情報ＳＴ１１を用いて、検索クエリＱＥ１１に最も近いセントロイドを特定する。例えば、生成装置１００は、第１インデックス情報ＳＴ１１を上から下（例えばルートＲＴ１からセントロイド）へ辿ることにより、検索クエリＱＥ１１の近傍候補となるセントロイドを特定してもよい。
【００３５】
なお、上述したような複数のセントロイド情報に関する木構造やグラフ型の検索インデックスは一例であり、生成装置１００は、クエリに対応するセントロイド情報を高速に特定することが可能であれば、どのようなデータ構造の第１インデックス情報を生成してもよい。例えば、生成装置１００は、クエリに対応するセントロイド情報を高速に特定することが可能であれば、バイナリ空間分割に関する技術等の種々の従来技術を適宜用いて、第１インデックス情報を生成してもよい。例えば、生成装置１００は、高次元ベクトルの検索に対応可能なインデックスであれば、どのようなデータ構造の第１インデックス情報を生成してもよい。
【００３６】
〔１−２．動的な生成〕
なお、上述した例では、ベクトル情報を取得する場合を示したが、生成装置１００は、ベクトル情報を順次取得する場合であっても上述したような処理を行ってもよい。例えば、生成装置１００は、ベクトル情報を取得した時点において、セントロイド情報の数が所定の閾値未満である場合、当該ベクトル情報をセントロイド情報として選択することにより、複数のセントロイド情報を生成する。このような処理により、生成装置１００は、近傍検索における効率的な検索を可能にするセントロイド情報を生成することができる。
【００３７】
例えば、生成装置１００は、上述したようにセントロイドが所定の閾値に達するまで取得したベクトルを順次セントロイドとすることにより、ランダムサンプリングと同様のセントロイドの選択を行うことができる。例えば、多くの応用形態においては入力データ順が無作為である場合が多く、結果的にランダムサンプリングと同様になる場合が多いからである。例えば、生成装置１００は、セントロイドの数を１０万と設定した場合、全ベクトル数が１０万に達するまで、追加されるベクトルを順次セントロイドとする。この場合、生成装置１００は、ベクトル数が１０万に達するまで、追加されたベクトルが全てセントロイドとされるため、クエリを取得した場合、上述した第１インデックス情報に基づいてセントロイド（ベクトル）を特定することができる。また、生成装置１００は、ベクトル数が１０万を超えた場合、追加されたベクトルをセントロイドのいずれかに対応付けるため、クエリを取得した場合、セントロイドが特定された後、上述した第２インデックス情報に基づいてベクトルを特定することができる。
【００３８】
〔２．生成システムの構成〕
図２に示すように、生成システム１は、端末装置１０と、情報提供装置５０と、生成装置１００とが含まれる。端末装置１０と、情報提供装置５０と、生成装置１００とは所定のネットワークＮを介して、有線または無線により通信可能に接続される。図２は、実施形態に係る生成システムの構成例を示す図である。なお、図２に示した生成システム１には、複数台の端末装置１０や、複数台の情報提供装置５０や、複数台の生成装置１００が含まれてもよい。
【００３９】
端末装置１０は、ユーザによって利用される情報処理装置である。端末装置１０は、ユーザによる種々の操作を受け付ける。なお、以下では、端末装置１０をユーザと表記する場合がある。すなわち、以下では、ユーザを端末装置１０と読み替えることもできる。なお、上述した端末装置１０は、例えば、スマートフォンや、タブレット型端末や、ノート型ＰＣ（Personal  Computer）や、デスクトップＰＣや、携帯電話機や、ＰＤＡ（Personal  Digital  Assistant）等により実現される。図７に示す例においては、端末装置１０がノート型ＰＣである場合を示す。
【００４０】
情報提供装置５０は、ユーザ等に種々の情報提供を行うための情報が格納された情報処理装置である。例えば、情報提供装置５０は、ウェブサーバ等の種々の外部装置から収集した文字情報等に基づくベクトル識別情報が格納される。例えば、情報提供装置５０は、ユーザ等に画像検索サービスを提供する情報処理装置である。例えば、情報提供装置５０は、画像検索サービスを提供するための各情報が格納される。例えば、情報提供装置５０は、画像検索サービスの対象となる画像に対応するベクトル情報を生成装置１００に提供する。また、情報提供装置５０は、クエリを生成装置１００に送信することにより、生成装置１００からクエリに対応する画像を示すベクトル識別情報等を受信する。
【００４１】
生成装置１００は、複数のベクトル情報に基づいて、ベクトル量子化において各ベクトル情報の各々が距離に応じて対応付けられる複数のセントロイド情報であって、各セントロイド情報に対応付けられるベクトル情報の数の差が所定値以内になるように複数のセントロイド情報を生成する。例えば、生成装置１００は、各セントロイド情報に対応付けられるベクトル情報の数が均等になるように複数のセントロイド情報を生成する。また、本実施形態において生成装置１００は、クエリを取得した場合、生成した情報に基づいて、クエリに対応するベクトル識別情報を提供する。なお、生成装置１００は、情報提供装置５０等の種々の外部装置から収集したベクトル情報に基づいてセントロイド情報を生成してもよい。
【００４２】
〔３．生成装置の構成〕
次に、図３を用いて、実施形態に係る生成装置１００の構成について説明する。図３は、実施形態に係る生成装置１００の構成例を示す図である。図３に示すように、生成装置１００は、通信部１１０と、記憶部１２０と、制御部１３０とを有する。なお、生成装置１００は、生成装置１００の管理者等から各種操作を受け付ける入力部（例えば、キーボードやマウス等）や、各種情報を表示するための表示部（例えば、液晶ディスプレイ等）を有してもよい。
【００４３】
（通信部１１０）
通信部１１０は、例えば、ＮＩＣ（Network  Interface  Card）等によって実現される。そして、通信部１１０は、ネットワーク（例えば図２中のネットワークＮ）と有線または無線で接続され、端末装置１０との間で情報の送受信を行う。
【００４４】
（記憶部１２０）
記憶部１２０は、例えば、ＲＡＭ（Random  Access  Memory）、フラッシュメモリ（Flash  Memory）等の半導体メモリ素子、または、ハードディスク、光ディスク等の記憶装置によって実現される。実施形態に係る記憶部１２０は、図３に示すように、第１インデックス情報記憶部１２１と、セントロイド情報記憶部１２２と、第２インデックス情報記憶部１２３とを有する。なお、図示を省略するが、第１インデックス情報記憶部１２１には、上述した第１インデックスに関する各種情報が記憶される。
【００４５】
（セントロイド情報記憶部１２２）
実施形態に係るセントロイド情報記憶部１２２は、セントロイドに関する各種情報を記憶する。例えば、セントロイド情報記憶部１２２は、セントロイドＩＤやベクトルデータを記憶する。図４は、実施形態に係るセントロイド情報記憶部の一例を示す図である。図４に示すセントロイド情報記憶部１２２は、「セントロイドＩＤ」、「ベクトルデータ」といった項目が含まれる。
【００４６】
「セントロイドＩＤ」は、セントロイドを識別するための識別情報を示す。また、「ベクトルデータ」は、セントロイドＩＤにより識別されるセントロイド（ベクトル）に対応するベクトルデータを示す。
【００４７】
例えば、図４に示す例においては、セントロイド情報記憶部１２２には、セントロイドＩＤ「Ｖ１」により識別されるセントロイド（ベクトル）に対応するベクトルデータは、「１０，２４，５４，２・・・」のＮ次元ベクトルであることを示す。
【００４８】
また、例えば、図４に示す例においては、セントロイド情報記憶部１２２には、セントロイドＩＤ「Ｖ６」により識別されるセントロイド（ベクトル）に対応するベクトルデータは、「３２，１，１２０，３１・・・」のＮ次元ベクトルであることを示す。
【００４９】
なお、セントロイド情報記憶部１２２は、上記に限らず、目的に応じて種々の情報を記憶してもよい。
【００５０】
（第２インデックス情報記憶部１２３）
実施形態に係る第２インデックス情報記憶部１２３は、セントロイド情報記憶部１２２に記憶された各セントロイドに対応付けられたベクトルを識別する各種情報を記憶する。図５は、実施形態に係る第２インデックス情報記憶部の一例を示す図である。図５の例では、第２インデックス情報記憶部１２３は、「セントロイドＩＤ」、「ベクトルＩＤ」といった項目が含まれる。
【００５１】
「セントロイドＩＤ」は、セントロイドを識別するための識別情報を示す。また、「ベクトルＩＤ」は、セントロイドＩＤにより識別されるセントロイド（ベクトル）に対応付けられたベクトルを示す。
【００５２】
例えば、図４に示す例においては、第２インデックス情報記憶部１２３には、セントロイドＩＤ「Ｖ１」により識別されるセントロイド（ベクトル）に対応付けられたベクトルは、ベクトル識別情報Ｖ４、Ｖ２５、Ｖ３２、Ｖ４１、Ｖ８７等により各々識別されるベクトルであることを示す。
【００５３】
また、例えば、図４に示す例においては、第２インデックス情報記憶部１２３には、セントロイドＩＤ「Ｖ６」により識別されるセントロイド（ベクトル）に対応付けられたベクトルは、ベクトル識別情報Ｖ９、Ｖ１２、Ｖ３４、Ｖ５４、Ｖ８５等により各々識別されるベクトルであることを示す。
【００５４】
なお、第２インデックス情報記憶部１２３は、上記に限らず、目的に応じて種々の情報を記憶してもよい。
【００５５】
（制御部１３０）
図３の説明に戻って、制御部１３０は、コントローラ（controller）であり、例えば、ＣＰＵ（Central  Processing  Unit）やＭＰＵ（Micro  Processing  Unit）等によって、生成装置１００内部の記憶装置に記憶されている各種プログラム（生成プログラムの一例に相当）がＲＡＭを作業領域として実行されることにより実現される。また、制御部１３０は、コントローラであり、例えば、ＡＳＩＣ（Application  Specific  Integrated  Circuit）やＦＰＧＡ（Field  Programmable  Gate  Array）等の集積回路により実現される。
【００５６】
図３に示すように、制御部１３０は、取得部１３１と、生成部１３２と、抽出部１３３と、提供部１３４とを有し、以下に説明する情報処理の機能や作用を実現または実行する。なお、制御部１３０の内部構成は、図３に示した構成に限られず、後述する情報処理を行う構成であれば他の構成であってもよい。
【００５７】
（取得部１３１）
取得部１３１は、各種情報を取得する。例えば、取得部１３１は、セントロイド情報記憶部１２２、第２インデックス情報記憶部１２３等から各種情報を取得する。また、取得部１３１は、各種情報を外部の情報処理装置から取得する。
【００５８】
例えば、取得部１３１は、検索対象の各々に対応する複数のベクトル識別情報を取得する。例えば、取得部１３１は、情報提供装置５０から各ベクトル識別情報に関する情報を取得してもよい。例えば、取得部１３１は、複数のベクトル識別情報を異なるタイミングで取得してもよい。例えば、取得部１３１は、画像情報が検索対象として追加されたタイミングで、その画像情報に対応するベクトル識別情報を取得してもよい。
【００５９】
例えば、取得部１３１は、検索クエリに関する情報を取得する。例えば、取得部１３１は、画像検索に関する検索クエリを取得する。図７の例では、取得部１３１は、ユーザＵ１が利用する端末装置１０からクエリを受け付けた情報提供装置５０からクエリを取得する。
【００６０】
図１の例では、取得部１３１は、画像情報に各々対応するベクトル情報を取得する。図１の例では、取得部１３１は、空間情報ＧＲ１１等に示すようにベクトル識別情報Ｖ１〜Ｖ１１００等により各々識別される複数のベクトル情報を取得する。例えば、取得部１３１は、ベクトル識別情報Ｖ１〜Ｖ１１００等を含む多数のベクトル情報を取得する。
【００６１】
（生成部１３２）
生成部１３２は、各種情報を生成する。例えば、生成部１３２は、複数のベクトル情報に基づいて、ベクトル量子化において各ベクトル情報の各々が距離に応じて対応付けられる複数のセントロイド情報であって、各セントロイド情報に対応付けられるベクトル情報の数が均等になるように複数のセントロイド情報を生成する。例えば、生成部１３２は、複数のベクトル情報から所定の条件に基づいてベクトル情報をセントロイド情報として選択することにより、複数のセントロイド情報を生成する。例えば、生成部１３２は、複数のベクトル情報から、ランダムサンプリングにより選択されたベクトル情報をセントロイド情報として選択することにより、複数のセントロイド情報を生成する。
【００６２】
例えば、生成部１３２は、取得部１３１がベクトル情報を取得した時点において、セントロイド情報の数が所定の閾値未満である場合、当該ベクトル情報をセントロイド情報として選択することにより、複数のセントロイド情報を生成する。例えば、生成部１３２は、ベクトル情報を取得した時点において、セントロイド情報の数が所定の閾値未満である場合、当該ベクトル情報をセントロイド情報として選択することにより、複数のセントロイド情報を生成する。
【００６３】
例えば、生成部１３２は、所定の検索要求に対して、セントロイド情報の特定に用いる第１インデックス情報を生成する。例えば、生成部１３２は、高次元ベクトルを検索する検索インデックスを第１インデックス情報として生成する。例えば、生成部１３２は、複数のセントロイド情報に関する木構造型のインデックス、または、グラフ構造型のインデックスを第１インデックス情報として生成する。
【００６４】
例えば、生成部１３２は、各セントロイド情報と、当該各セントロイド情報に対応付けられたベクトル情報とを示す第２インデックス情報を生成する。例えば、生成部１３２は、各セントロイド情報に対応付けられたベクトル情報を特定する転置インデックスを第２インデックス情報として生成する。
【００６５】
例えば、生成部１３２は、各ベクトル情報を分割した各部分ベクトルを量子化するベクトル量子化に基づいて、各セントロイド情報に対応付けられるベクトル情報の数が均等になるように複数のセントロイド情報を生成する。例えば、生成部１３２は、各セントロイド情報に対応する領域に含まれるベクトル情報に基づいて、当該領域が分割された複数の部分領域に対応する部分セントロイド情報を生成する。例えば、生成部１３２は、各セントロイド情報に対応する領域に含まれるベクトル情報に関する残差ベクトル情報に基づいて、当該領域が分割された複数の部分領域に対応する部分セントロイド情報を生成する。例えば、生成部１３２は、各セントロイド情報と、当該各セントロイド情報に対応する領域に含まれるベクトル情報により生成される残差ベクトル情報に基づいて、当該領域が分割された複数の部分領域に対応する部分セントロイド情報を生成する。例えば、生成部１３２は、各部分領域の部分セントロイド情報と、当該各部分領域内に含まれるベクトル情報とを対応付けた対応付情報を生成する。例えば、生成部１３２は、各セントロイド情報と、当該各セントロイド情報の各部分領域内に対応する各部分セントロイド情報とにより生成される残差ベクトル情報に基づいて、対応付情報を生成する。
【００６６】
図１の例では、生成部１３２は、所定の回数ランダムサンプリングを行い、最も均等にベクトルがクラスタリングされるセントロイドの組合せに基づいて、複数のセントロイド情報を生成する。また、例えば、生成部１３２は、最も均等にベクトルがクラスタリングされるセントロイドの組合せのうち、平均値からのかい離が大きいセントロイドを近接する他のベクトルに変更することにより、各セントロイドに対応付けられるベクトルの数が均等になるような複数のセントロイド情報を生成してもよい。
【００６７】
図１の例では、生成部１３２は、図１中の空間情報ＧＲ１２に示すように、ベクトル識別情報Ｖ１、Ｖ２、Ｖ５、Ｖ６、Ｖ１０、Ｖ１１、Ｖ３６、Ｖ７９、Ｖ８６、Ｖ９５、Ｖ１１１をセントロイドとするセントロイド情報を生成する。例えば、生成部１３２は、セントロイド情報記憶部１２２に示すような複数のセントロイド情報を生成する。
【００６８】
図１の例では、生成部１３２は、各セントロイドに対応付けられたベクトルに基づいて第２インデックス情報を生成する。例えば、生成部１３２は、各セントロイドに対応する領域ＡＲ１〜ＡＲ１１の各々に含まれるベクトルを識別する情報をセントロイドＩＤに対応付けた第２インデックス情報を生成する。また、生成部１３２は、クエリを取得した際に対応するセントロイドを特定するために用いる第１インデックス情報を生成する。
【００６９】
（抽出部１３３）
抽出部１３３は、各種情報を選択する。例えば、抽出部１３３は、ベクトル識別情報を選択する。例えば、抽出部１３３は、取得部１３１により取得されたクエリに基づいてセントロイド情報を選択する。
【００７０】
図７の例では、抽出部１３３は、クエリ情報ＱＥ２１を用いてセントロイドを抽出する。例えば、抽出部１３３は、第１インデックス情報記憶部１２１に記憶された第１インデックス情報に基づいて、クエリ情報ＱＥ２１に対応するセントロイドを特定し、抽出する。例えば、抽出部１３３は、種々の従来技術を適宜用いて、クエリ情報ＱＥ２１における特徴領域を特定し、特徴領域における特徴量を局所特徴量として算出する。例えば、抽出部１３３は、種々の従来技術を適宜用いて、クエリ情報ＱＥ２１における局所特徴量を抽出する。
【００７１】
図７の例では、抽出部１３３は、セントロイド情報記憶部１２２からセントロイドＩＤ「Ｖ６」により識別されるセントロイド情報を抽出する。例えば、抽出部１３３は、空間情報ＧＲ１２において、クエリ情報ＱＥ２１がセントロイドのうち、セントロイドＩＤ「Ｖ６」により識別されるセントロイドと最も近いため、セントロイドＩＤ「Ｖ６」により識別されるセントロイド情報を抽出する。例えば、抽出部１３３は、セントロイド情報に基づいて、ベクトルを抽出する。例えば、抽出部１３３は、セントロイド情報に基づいて、クエリ情報ＱＥ２１に類似するベクトルを抽出する。例えば、抽出部１３３は、セントロイド情報に基づいて第２インデックス情報記憶部１２３からベクトルを抽出する。
【００７２】
図７の例では、抽出部１３３は、第２インデックス情報記憶部１２３にセントロイドＩＤ「Ｖ６」により識別されるセントロイド（ベクトル）に対応付けられて記憶されたベクトル識別情報Ｖ９、Ｖ１２、Ｖ３４、Ｖ５４、Ｖ８５等を抽出する。
【００７３】
（提供部１３４）
提供部１３４は、各種情報を提供する。例えば、提供部１３４は、端末装置１０や情報提供装置５０に各種情報を提供する。例えば、提供部１３４は、クエリに対応するベクトル識別情報を検索結果として提供する。例えば、提供部１３４は、抽出部１３３により選択されたベクトル識別情報を情報提供装置５０へ提供する。図７の例では、提供部１３４は、抽出部１３３により選択されたベクトル識別情報をクエリに対応するベクトルを示す情報として情報提供装置５０に提供する。図７の例では、提供部１３４は、ベクトル識別情報Ｖ６、Ｖ９、Ｖ１２、Ｖ３４、Ｖ５４、Ｖ８５等をクエリに対応するベクトルを示す情報として情報提供装置５０に提供する。
【００７４】
図７の例では、提供部１３４は、抽出部１３３により抽出されたベクトルを識別する情報を情報提供装置５０に提供する。例えば、提供部１３４は、セントロイドとして抽出されたベクトル識別情報Ｖ６を含むベクトル識別情報Ｖ６、Ｖ９、Ｖ１２、Ｖ３４、Ｖ５４、Ｖ８５の６つのベクトル識別情報を情報提供装置５０に提供する。
【００７５】
〔４．生成処理のフロー〕
次に、図６を用いて、実施形態に係る生成システム１による生成処理の手順について説明する。図６は、実施形態に係る生成処理の一例を示すフローチャートである。
【００７６】
図６に示すように、生成装置１００は、ベクトル情報を取得する（ステップＳ１０１）。図１の例では、生成装置１００は、空間情報ＧＲ１１等に示すようにベクトル識別情報Ｖ１〜Ｖ１１００等の複数のベクトル情報を取得する。
【００７７】
その後、生成装置１００は、各セントロイド情報に対応付けられるベクトル情報の数が均等になるように複数のセントロイド情報を生成する（ステップＳ１０２）。例えば、生成装置１００は、ランダムサンプリングを行うことによりベクトル情報の数が均等になるように複数のセントロイド情報を生成する。図１の例では、生成装置１００は、空間情報ＧＲ１２に示すように、ベクトル識別情報Ｖ１、Ｖ２、Ｖ５、Ｖ６、Ｖ１０、Ｖ１１、Ｖ３６、Ｖ７９、Ｖ８６、Ｖ９５、Ｖ１１１をセントロイドとするセントロイド情報を生成する。
【００７８】
〔５．情報の提供について〕
次に、図７を用いて、実施形態に係る生成システム１による情報提供について説明する。図７は、実施形態に係るクエリに対応する情報の提供の一例を示す図である。図７の例では、情報提供装置５０が端末装置１０から取得したクエリに応じて、端末装置１０に検索結果を提供する場合を示す。具体的には、情報提供装置５０が生成装置１００から取得したベクトル識別情報に基づいてユーザに検索結果として画像情報を提供する場合を示す。図７の例では、情報提供装置５０がｋ最近傍検索による画像検索サービスを提供する場合を一例として説明する。例えば、ｋ最近傍検索では、検索クエリからの距離が近い方からｋ個のベクトルを検索（抽出）する。なお、以下では説明を簡単にするために、「ｋ」が「６」である場合を示す。
【００７９】
まず、情報提供装置５０は、ユーザＵ１が利用する端末装置１０からクエリを取得する（ステップＳ２１）。図７の例では、情報提供装置５０は、端末装置１０からクエリ情報ＱＥ２１を取得する。例えば、情報提供装置５０は、端末装置１０から画像情報をクエリ情報ＱＥ２１として取得する。
【００８０】
そして、情報提供装置５０は、生成装置１００にクエリを送信する（ステップＳ２２）。図７の例では、情報提供装置５０は、端末装置１０から取得したクエリ情報ＱＥ２１を生成装置１００に送信する。そして、生成装置１００は、画像情報をクエリ情報ＱＥ２１として取得する。
【００８１】
その後、生成装置１００は、クエリ情報ＱＥ２１を用いてセントロイドを抽出する（ステップＳ２３）。例えば、生成装置１００は、第１インデックス情報記憶部１２１に記憶された第１インデックス情報に基づいて、クエリ情報ＱＥ２１に対応するセントロイドを特定し、抽出する。
【００８２】
例えば、生成装置１００は、種々の従来技術を適宜用いて、クエリ情報ＱＥ２１における特徴領域を特定し、特徴領域における特徴量を局所特徴量として算出する。例えば、生成装置１００は、種々の従来技術を適宜用いて、クエリ情報ＱＥ２１における局所特徴量を抽出する。
【００８３】
また、例えば、生成装置１００は、クエリ情報ＱＥ２１からＢｏＦに関する情報を生成する。そして、生成装置１００は、第１インデックス情報記憶部１２１に記憶された第１インデックス情報に基づいて、クエリ情報ＱＥ２１のＢｏＦに関する情報と類似するＢｏＦを検索することにより、セントロイドを特定する。
【００８４】
例えば、生成装置１００は、クエリ情報ＱＥ２１のＢｏＦに関する情報に最も近いＢｏＦ表現を、第１インデックス情報記憶部１２１に記憶された第１インデックス情報を用いて検索する。なお、生成装置１００は、クエリ情報ＱＥ２１のＢｏＦに関する情報と、検索で抽出されたセントロイドのＢｏＦに関する情報との距離が所定の閾値以上であった場合、クエリ情報ＱＥ２１に対応するベクトル情報はないと判定してもよい。なお、生成装置１００は、セントロイドの抽出を、特許文献２に記載されるような種々の従来技術を適宜用いて行ってもよい。例えば、生成装置１００は、特許文献２に記載される処理により、特徴点座標の照合を行うことにより、クエリ情報ＱＥ２１と、抽出したセントロイドに対応する画像との類似性の確信度を検証してもよい。
【００８５】
図７の例では、生成装置１００は、セントロイド情報記憶部１２２からセントロイドＩＤ「Ｖ６」により識別されるセントロイド情報を抽出する。例えば、生成装置１００は、空間情報ＧＲ１２において、クエリ情報ＱＥ２１がセントロイドのうち、セントロイドＩＤ「Ｖ６」により識別されるセントロイドと最も近いため、セントロイドＩＤ「Ｖ６」により識別されるセントロイド情報を抽出する。
【００８６】
そして、生成装置１００は、セントロイド情報に基づいて、ベクトルを抽出する（ステップＳ２４）。例えば、生成装置１００は、セントロイド情報に基づいて、クエリ情報ＱＥ２１に類似するベクトルを抽出する。例えば、生成装置１００は、セントロイド情報に基づいて第２インデックス情報記憶部１２３からベクトルを抽出する。
【００８７】
図７の例では、生成装置１００は、第２インデックス情報記憶部１２３にセントロイドＩＤ「Ｖ６」により識別されるセントロイド（ベクトル）に対応付けられて記憶されたベクトル識別情報Ｖ９、Ｖ１２、Ｖ３４、Ｖ５４、Ｖ８５等を抽出する。なお、図７では、説明を簡単にするために、ベクトル識別情報Ｖ９、Ｖ１２、Ｖ３４、Ｖ５４、Ｖ８５の５つが抽出されるものとする。
【００８８】
その後、生成装置１００は、抽出したベクトルを識別する情報を情報提供装置５０に提供する（ステップＳ２５）。図７の例では、生成装置１００は、セントロイドとして抽出したベクトル識別情報Ｖ６を含むベクトル識別情報Ｖ６、Ｖ９、Ｖ１２、Ｖ３４、Ｖ５４、Ｖ８５の６つのベクトル識別情報を情報提供装置５０に提供する。
【００８９】
生成装置１００からベクトルを識別する情報を受信した情報提供装置５０は、受信したベクトルを識別する情報に対応付けられた画像情報を端末装置１０に提供する（ステップＳ２６）。例えば、情報提供装置５０は、生成装置１００から受信したベクトルを識別する情報に対応付けられた画像情報をクエリ情報ＱＥ２１に対応する検索結果として端末装置１０に提供する。図７の例では、生成装置１００からベクトル識別情報Ｖ６、Ｖ９、Ｖ１２、Ｖ３４、Ｖ５４、Ｖ８５を受信した情報提供装置５０は、ベクトル識別情報Ｖ６、Ｖ９、Ｖ１２、Ｖ３４、Ｖ５４、Ｖ８５の各々に対応する画像情報を端末装置１０に提供する。例えば、情報提供装置５０は、ベクトル識別情報Ｖ６、Ｖ９、Ｖ１２、Ｖ３４、Ｖ５４、Ｖ８５の各々に対応する画像情報とクエリ情報ＱＥ２１との類似度を算出し、類似度に応じた順序で並んだ画像情報を端末装置１０に提供してもよい。
【００９０】
〔６．第２インデックスの生成について〕
上述した例では、説明を簡単にするために、空間情報ＧＲ１２を領域ＡＲ１〜ＡＲ１１に分割するまでを一例として示したが、各領域ＡＲ１〜ＡＲ１１はさらに部分領域に分割されてもよい。この点について図８を用いて以下説明する。図８は、実施形態に係る第２インデックス情報の生成処理の一例を示す図である。
【００９１】
例えば、図８中の空間情報ＧＲ１２は、図７中の空間情報ＧＲ１２に対応し、クエリ情報ＱＥ２１と領域ＡＲ４に含まれるベクトル識別情報Ｖ６、Ｖ９、Ｖ１２、Ｖ３４、Ｖ５４、Ｖ８５に対応する各ベクトルとの関係を示す。このように、図８中の空間情報ＧＲ１２に示すように、クエリ情報ＱＥ２１とベクトル識別情報Ｖ６、Ｖ９、Ｖ１２、Ｖ３４、Ｖ５４、Ｖ８５に対応する各ベクトルとの距離は異なるが、生成装置１００には、ベクトル識別情報Ｖ９、Ｖ１２、Ｖ３４、Ｖ５４、Ｖ８５に対応するベクトルデータを格納しない。この場合、例えば、クエリ情報ＱＥ２１と各ベクトルとの距離は、クエリ情報ＱＥ２１と領域ＡＲ４のセントロイドであるベクトル識別情報Ｖ６に対応するベクトルとの距離とみなされることとなる。言い換えると、ベクトル識別情報Ｖ９、Ｖ１２、Ｖ３４、Ｖ５４、Ｖ８５に対応するベクトルデータは、ベクトル識別情報Ｖ６に対応するベクトルデータに量子化される。このような場合、例えば、各領域ＡＲ１〜ＡＲ１１に含まれるベクトルは同一距離とみなされるのでベクトルの数が多くなった場合、検索結果として該当するデータが多くなる。
【００９２】
そこで、生成装置１００は、生成処理において、各領域ＡＲ１〜ＡＲ１１をさらに部分領域に分割してもよい。以下では、領域ＡＲ４をさらに部分領域に分割する場合を示す。例えば、生成装置１００は、各セントロイド情報に対応する領域に含まれるベクトル情報に関する残差ベクトル情報に基づいて、当該領域が分割された複数の部分領域に対応する部分セントロイド情報を生成してもよい。以下では、生成装置１００は、各セントロイド情報と、当該各セントロイド情報に対応する領域に含まれるベクトル情報により生成される残差ベクトル情報に基づいて、当該領域が分割された複数の部分領域に対応する部分セントロイド情報を生成する場合を示す。
【００９３】
例えば、生成装置１００は、領域ＡＲ４に含まれるベクトルの数に基づいて部分空間の数を決定してもよいし、所定の設定値に基づいて部分空間の数を決定してもよい。図８の例では、生成装置１００は、領域ＡＲ４を９個の部分領域ＡＲ４１〜ＡＲ４９に分割する場合を示す。例えば、生成装置１００は、各領域ＡＲ４１〜ＡＲ４９に含まれるベクトルの数が均等になるように各部分領域ＡＲ４１〜ＡＲ４９の範囲を決定してもよい。また、例えば、生成装置１００は、クラスタリングに関する種々の従来技術を適宜用いて、各部分領域ＡＲ４１〜ＡＲ４９の範囲を決定してもよい。
【００９４】
図８の例では、生成装置１００は、各部分領域ＡＲ４１〜ＡＲ４９に含まれるベクトルとセントロイドから残差ベクトルを算出し、その残差ベクトルから部分領域のセントロイドを生成する。この場合、複数の領域があっても個別のセントロイド集合があるわけではなく、共通でかつ単一のセントロイド集合を構成する。ただし、生成装置１００は、複数の領域の各々について個別にセントロイド集合を生成してもよい。例えば、生成装置１００は、セントロイドの総数が所定の閾値以下である場合、複数の領域の各々について個別のセントロイド集合を生成してもよい。なお、部分領域のセントロイドは残差ベクトルではなく、元のベクトルでも良い。例えば、生成装置１００は、元のベクトルの分散が所定の閾値以下である場合、元のベクトルを部分領域のセントロイドとしてもよい。例えば、生成装置１００は、ベクトル識別情報Ｖ３４により識別されるベクトルを含む部分領域ＡＲ４１に含まれるベクトルに基づいて、セントロイドＣＮ６１を生成する。また、例えば、生成装置１００は、ベクトル識別情報Ｖ９により識別されるベクトルを含む部分領域ＡＲ４２に含まれるベクトルに基づいて、セントロイドＣＮ６２を生成する。なお、生成装置１００は、各セントロイド情報に対応する領域に含まれるベクトル情報に基づいて、当該領域が分割された複数の部分領域に対応する部分セントロイド情報を生成してもよい。
【００９５】
例えば、生成装置１００は、一の領域のセントロイドと、各部分領域のセントロイドとの残差ベクトルに関する情報を記憶する。図８の例では、生成装置１００は、部分セントロイド情報ＬＴ１に示すように、領域ＡＲ４のセントロイドＶ６と、その部分領域ＡＲ４１のセントロイドＣＮ６１との残差ベクトルに関する情報や領域ＡＲ４のセントロイドＶ６と、その部分領域ＡＲ４８のセントロイドＣＮ６８との残差ベクトルに関する情報等が記憶される。なお、生成装置１００は、部分セントロイド情報ＬＴ１を記憶部１２０に記憶してもよい。
【００９６】
また、生成装置１００は、各ベクトルに対応付けてそのベクトルが属する部分領域のセントロイド情報を記憶してもよい。図８の例では、生成装置１００は、第２インデックス情報記憶部１２３Ａに示すように、セントロイドＶ６に対応付けて記憶されたベクトルＶ９にセントロイドＣＮ６２を対応付けて記憶してもよい。なお、生成装置１００は、第２インデックス情報記憶部１２３Ａを記憶部１２０に含んでもよい。具体的には、生成装置１００は、セントロイドＩＤ「Ｖ６」に対応付けられたベクトル識別情報「Ｖ９」にセントロイドＩＤ「ＣＮ６２」を対応付けて記憶してもよい。このように、生成装置１００は、各ベクトルにそのベクトルが属する部分領域のセントロイドに関する情報を対応付けて第２インデックス情報記憶部１２３Ａに記憶する。これにより、生成装置１００は、第２インデックス情報記憶部１２３Ａを参照することで、ベクトルがどの部分領域に属するかを特定可能となり、さらに処理を高速化することができる。
【００９７】
上述したように、部分領域ＡＲ４１〜ＡＲ４９による分割が無い場合、クエリ情報ＱＥ２１と各ベクトルとの距離は、クエリ情報ＱＥ２１と領域ＡＲ４のセントロイドであるベクトル識別情報Ｖ６に対応するベクトルとの距離とみなされることとなる。一方、生成装置１００は、部分領域ＡＲ４１〜ＡＲ４９による分割を行うことにより、クエリ情報ＱＥ２１と各ベクトルとの距離をさらに細分化することができる。この点について、図９を用いて説明する。図９は、実施形態に係る第２インデックス情報の利用の一例を示す図である。
【００９８】
例えば、生成装置１００は、部分セントロイド情報ＬＴ１を用いることにより、各ベクトルの位置をそのベクトルが属する部分領域のセントロイドの位置に量子化することができる。これにより、生成装置１００は、クエリ情報ＱＥ２１と各ベクトルとの距離を、クエリ情報ＱＥ２１と各ベクトルが属する部分領域ＡＲ４１〜ＡＲ４９のセントロイドに対応するベクトルとの距離まで細部化することができる。
【００９９】
図９の例では、生成装置１００は、セントロイド情報記憶部１２２に示すようにセントロイドＩＤ「Ｖ６」により識別されるベクトルのベクトルデータを有し、部分セントロイド情報ＬＴ１に示すようにセントロイドＣＮ６１に関する残差ベクトル情報を有する。そのため、生成装置１００は、例えばクエリ情報ＱＥ２１に対して、セントロイドＣＮ６１までの距離を算出することができる。したがって、生成装置１００は、例えばクエリ情報ＱＥ２１とベクトルＶ３４との距離を、ベクトルＶ６よりもさらに近似したセントロイドＣＮ６１までの距離とすることができる。
【０１００】
このように、生成装置１００は、各領域ＡＲ１〜ＡＲ１１をさらに細分化した部分領域に関する情報を用いることにより、格納するベクトルデータの数は領域に対応するセントロイドの数に抑制しつつ、さらに各ベクトルを細分化して量子化することが可能となる。例えば、生成装置１００は、各領域ＡＲ１〜ＡＲ１１に含まれるベクトルの数が膨大（例えば１万や１０万等）になった場合であっても、領域をさらに細分化することにより、各ベクトルを適切に量子化することができる。したがって、生成装置１００は、近傍検索における効率的な検索を可能にするセントロイド情報を生成することができる。
【０１０１】
〔７．ベクトルの分割の一例〕
なお、上記の例では、生成装置１００が各ベクトルを一のベクトルとして処理する場合を示したが、生成装置１００は、各ベクトルを複数の部分ベクトルに分割して処理してもよい。例えば、生成装置１００は、いわゆる直積量子化に関する技術を用いて、処理を行ってもよい。この点について図１０を用いて説明する。図１０は、実施形態に係るベクトルの分割の一例を示す図である。なお、図１０の例では、説明を簡単にするために、クエリに対応するベクトルデータＱＥ３１の次元数が１２である場合を示すが、生成装置１００は、より高次元のベクトルを対象としてもよい。
【０１０２】
図１０の例では、生成装置１００は、ベクトルデータＱＥ３１を４分割する。例えば、生成装置１００は、ベクトルデータＱＥ３１のうち、１次元〜３次元のデータを部分ベクトルデータＱＥ３１−１とし、４次元〜６次元のデータを部分ベクトルデータＱＥ３１−２とし、７次元〜９次元のデータを部分ベクトルデータＱＥ３１−３とし、１０次元〜１２次元のデータを部分ベクトルデータＱＥ３１−４とする。具体的には、生成装置１００は、「４５，２３，２」を部分ベクトルデータＱＥ３１−１とし、「１２７，３４，５」を部分ベクトルデータＱＥ３１−２とし、「２０，９８，１１０」を部分ベクトルデータＱＥ３１−３とし、「１２，４５，４」を部分ベクトルデータＱＥ３１−４とする。
【０１０３】
なお、上記のように、クエリを部分ベクトルに分割する場合を示したが、セントロイド情報の生成処理においては、各画像情報に対応するベクトルが部分ベクトルに分割されるものとする。また、図１０では、説明を簡単にするために図１に示す空間情報ＧＲ１２中の領域ＡＲ４を複数の部分領域（以下「部分空間」ともいう）に分割する場合を図示する。図１０に示す例では、空間情報ＧＲ１２中の領域ＡＲ４が複数の部分空間ＡＲ４−１〜ＡＲ４−４に分割された場合を示す。
【０１０４】
部分ベクトルデータＱＥ３１−１は、部分空間ＡＲ４−１に対応するベクトルデータであり、部分ベクトルデータＱＥ３１−２は、部分空間ＡＲ４−２に対応するベクトルデータであり、部分ベクトルデータＱＥ３１−３は、部分空間ＡＲ４−３に対応するベクトルデータであり、部分ベクトルデータＱＥ３１−４は、部分空間ＡＲ４−４に対応するベクトルデータであるものとする。例えば、図１０の例では、部分ベクトルデータＱＥ３１−１は、部分空間ＡＲ４−１中のセントロイドＣＮ６３の領域に位置する。
【０１０５】
図１０の例では、部分空間ＡＲ４−１〜ＡＲ４−４を類似の形状で示すが、各部分空間ＡＲ４−１〜ＡＲ４−４の形状は異なってもよいし、また各部分空間ＡＲ４−１〜ＡＲ４−４における領域の分割態様も異なってもよい。
【０１０６】
そして、生成装置１００は、全部分空間ＡＲ４−１〜ＡＲ４−４における距離を合計等することにより、各クエリとセントロイドとの距離を算出する。例えば、生成装置１００は、下記の式（１）により、各クエリとベクトルとの距離を算出してもよい。なお、上述した例では、部分領域のセントロイドは基本共通であったが、部分ベクトルの場合には、生成装置１００は、ベクトル単位にセントロイド集合を生成してもよい。例えば、生成装置１００は、部分空間ＡＲ４−１〜ＡＲ４−４ごとにセントロイド集合を生成してもよい。これにより、部分ベクトルごとのベクトルデータの分布の傾向が違う場合であっても、生成装置１００は、近傍検索における効率的な検索を可能にするセントロイド情報を生成することができる。また、生成装置１００は、部分ベクトルを共通としてセントロイド集合を生成してもよい。例えば、生成装置１００は、部分空間ＡＲ４−１〜ＡＲ４−４に共通するセントロイド集合を生成してもよい。これにより、生成装置１００は、ベクトルを部分ベクトルに分割した場合であっても、近傍検索における効率的な検索を可能にするセントロイド情報を生成することができる。
【０１０７】
【数１】
2018101225.tif 000003
【０１０８】
ここで、上記式（１）中の左辺の値は、例えば、クエリとベクトルとの間の二乗距離を示す。また、例えば、上記式（１）中の「ｘ」は、クエリに対応する。また、例えば、上記式（１）中の「ｙ」は、ベクトルに対応する。また、例えば、上記式（１）の右辺中の「ｑｃ（ｙ）」は、「ｙ」のセントロイドを示す。例えば、生成装置１００は、上記式（１）中の「ｙ」について、ベクトルのベクトルデータを有しない場合は、図８のように各ベクトルが属する部分領域のセントロイドのベクトルデータの数値を用いてもよい。また、例えば、「ｙ−ｑｃ（ｙ）」は、残差ベクトルを示す。また、例えば、上記式（１）の右辺中の「ｑｐ」は、所定の量子化器（関数）を示す。
【０１０９】
また、例えば、上記式（１）の右辺中の「ｊ」は、分割された空間の数であってもよい。例えば、図１０の例では、上記式（１）の右辺中の「ｊ」は、分割された空間の数「４」であってもよい。また、例えば、上記式（１）の右辺中の「ｕｊ（）」は、括弧中のベクトル間の部分残差ベクトルを示す。例えば、生成装置１００は、上記式（１）を用いて、各部分空間におけるクエリとベクトルとの間の二乗距離を算出し、合算することにより、各クエリとベクトルとの距離を算出してもよい。例えば、図１０の例では、生成装置１００は、各部分空間ＡＲ４−１〜ＡＲ４−４における部分ベクトルデータＱＥ３１−１〜ＱＥ３１−４と、各部分空間ＡＲ４−１〜ＡＲ４−４におけるベクトルとの間の二乗距離を算出し、合算することにより、ベクトルデータＱＥ３１に対応するクエリとベクトルとの距離を算出してもよい。
【０１１０】
これにより、生成装置１００は、各ベクトルをより細分化して量子化することが可能となり、クエリに対応するベクトルをより適切に抽出することができる。また、生成装置１００は、上述した処理を適宜組み合わせることにより、近傍検索における効率的な検索を可能にするセントロイド情報を生成してもよい。例えば、生成装置１００は、直積量子化時の各部分ベクトルをそのまま用いてもよいし、残差ベクトルを算出して用いてもよい。例えば、生成装置１００は、各部分ベクトルとセントロイドから残差ベクトルを算出し、その残差ベクトルを用いてもよい。また、生成装置１００は、部分ベクトル間で共通にセントロイドを生成してもよいし、個別にセントロイドを生成してもよい。例えば、生成装置１００は、一のベクトルが分割された部分ベクトル間で共通にセントロイドを生成してもよいし、個別にセントロイドを生成してもよい。なお、上記は一例であり、生成装置１００は、種々の情報を適宜組み合わせたり、個別に用いたりすることにより、近傍検索における効率的な検索を可能にするセントロイド情報を生成してもよい。例えば、生成装置１００は、ある情報を共通化して用いたり、ある情報を個別化して用いたりすることにより、近傍検索における効率的な検索を可能にするセントロイド情報を生成してもよい。
【０１１１】
〔８．効果〕
上述してきたように、実施形態に係る生成装置１００は、取得部１３１と、生成部１３２とを有する。取得部１３１は、近傍検索における検索対象の各々に対応する複数のベクトル情報を取得する。生成部１３２は、取得部１３１により取得された複数のベクトル情報に基づいて、ベクトル量子化において各ベクトル情報の各々が距離に応じて対応付けられる複数のセントロイド情報であって、各セントロイド情報に対応付けられるベクトル情報の数の差が所定値以内になるように複数のセントロイド情報を生成する。
【０１１２】
これにより、実施形態に係る生成装置１００は、ベクトル量子化において各ベクトル情報の各々が距離に応じて対応付けられる複数のセントロイド情報であって、各セントロイド情報に対応付けられるベクトル情報の数の差が所定値以内になるように複数のセントロイド情報を生成する。これにより、生成装置１００は、各セントロイドに対応付けられるベクトルの数が均等になるような複数のセントロイドを生成することができ、近傍検索における効率的な検索を可能にするセントロイド情報を生成することができる。
【０１１３】
また、実施形態に係る生成装置１００において、生成部１３２は、複数のベクトル情報から所定の条件に基づいてベクトル情報をセントロイド情報として選択することにより、複数のセントロイド情報を生成する。
【０１１４】
これにより、実施形態に係る生成装置１００は、複数のベクトル情報から所定の条件に基づいてベクトル情報をセントロイド情報として選択し、複数のセントロイド情報を生成することにより、近傍検索における効率的な検索を可能にするセントロイド情報を生成することができる。
【０１１５】
また、実施形態に係る生成装置１００において、生成部１３２は、複数のベクトル情報から、ランダムサンプリングにより選択されたベクトル情報をセントロイド情報として選択することにより、複数のセントロイド情報を生成する。
【０１１６】
これにより、実施形態に係る生成装置１００は、複数のベクトル情報から、ランダムサンプリングにより選択されたベクトル情報をセントロイド情報として選択することにより、複数のセントロイド情報を生成することにより、近傍検索における効率的な検索を可能にするセントロイド情報を生成することができる。
【０１１７】
また、実施形態に係る生成装置１００において、取得部１３１は、複数のベクトル情報を異なるタイミングで取得する。生成部１３２は、取得部１３１がベクトル情報を取得した時点において、セントロイド情報の数が所定の閾値未満である場合、当該ベクトル情報をセントロイド情報として選択することにより、複数のセントロイド情報を生成する。
【０１１８】
これにより、実施形態に係る生成装置１００は、ベクトル情報を取得した時点において、セントロイド情報の数が所定の閾値未満である場合、当該ベクトル情報をセントロイド情報として選択し、複数のセントロイド情報を生成することにより、近傍検索における効率的な検索を可能にするセントロイド情報を生成することができる。
【０１１９】
また、実施形態に係る生成装置１００において、生成部１３２は、所定の検索要求に対して、セントロイド情報の特定に用いる第１インデックス情報を生成する。
【０１２０】
これにより、実施形態に係る生成装置１００は、所定の検索要求に対して、複数のセントロイド情報の特定に用いる第１インデックス情報を生成することにより、近傍検索における効率的な検索を可能にするセントロイド情報を生成することができる。
【０１２１】
また、実施形態に係る生成装置１００において、生成部１３２は、高次元ベクトルを検索する検索インデックスを第１インデックス情報として生成する。
【０１２２】
これにより、実施形態に係る生成装置１００は、高次元ベクトルを検索する検索インデックスを第１インデックス情報として生成することにより、近傍検索における効率的な検索を可能にするセントロイド情報を生成することができる。
【０１２３】
また、実施形態に係る生成装置１００において、生成部１３２は、複数のセントロイド情報に関する木構造型のインデックス、または、グラフ構造型のインデックスを第１インデックス情報として生成する。
【０１２４】
これにより、実施形態に係る生成装置１００は、複数のセントロイド情報に関する木構造型のインデックス、または、グラフ構造型のインデックスを第１インデックス情報として生成することにより、近傍検索における効率的な検索を可能にするセントロイド情報を生成することができる。
【０１２５】
また、実施形態に係る生成装置１００において、生成部１３２は、各セントロイド情報と、当該各セントロイド情報に対応付けられたベクトル情報とを示す第２インデックス情報を生成する。
【０１２６】
これにより、実施形態に係る生成装置１００は、各セントロイド情報と、当該各セントロイド情報に対応付けられたベクトル情報とを示す第２インデックス情報を生成することにより、近傍検索における効率的な検索を可能にするセントロイド情報を生成することができる。
【０１２７】
また、実施形態に係る生成装置１００において、生成部１３２は、各セントロイド情報に対応付けられたベクトル情報を特定する転置インデックスを第２インデックス情報として生成する。
【０１２８】
これにより、実施形態に係る生成装置１００は、各セントロイド情報に対応付けられたベクトル情報を特定する転置インデックスを第２インデックス情報として生成することにより、近傍検索における効率的な検索を可能にするセントロイド情報を生成することができる。
【０１２９】
また、実施形態に係る生成装置１００において、生成部１３２は、各ベクトル情報を分割した各部分ベクトルを量子化するベクトル量子化に基づいて、各セントロイド情報に対応付けられるベクトル情報の数が均等になるように複数のセントロイド情報を生成する。
【０１３０】
これにより、実施形態に係る生成装置１００は、各ベクトル情報を分割した各部分ベクトルを量子化するベクトル量子化に基づいて、各セントロイド情報に対応付けられるベクトル情報の数が均等になるように複数のセントロイド情報を生成することにより、近傍検索における効率的な検索を可能にするセントロイド情報を生成することができる。
【０１３１】
また、実施形態に係る生成装置１００において、生成部１３２は、各セントロイド情報に対応する領域に含まれるベクトル情報に基づいて、当該領域が分割された複数の部分領域に対応する部分セントロイド情報を生成する。
【０１３２】
これにより、実施形態に係る生成装置１００は、各セントロイド情報に対応する領域に含まれるベクトル情報に基づいて、当該領域が分割された複数の部分領域に対応する部分セントロイド情報を生成することにより、近傍検索における効率的な検索を可能にするセントロイド情報を生成することができる。
【０１３３】
また、実施形態に係る生成装置１００において、生成部１３２は、各セントロイド情報に対応する領域に含まれるベクトル情報に関する残差ベクトル情報に基づいて、当該領域が分割された複数の部分領域に対応する部分セントロイド情報を生成する。
【０１３４】
これにより、実施形態に係る生成装置１００は、各セントロイド情報に対応する領域に含まれるベクトル情報に関する残差ベクトル情報に基づいて、当該領域が分割された複数の部分領域に対応する部分セントロイド情報を生成することにより、近傍検索における効率的な検索を可能にするセントロイド情報を生成することができる。
【０１３５】
また、実施形態に係る生成装置１００において、生成部１３２は、各セントロイド情報と、当該各セントロイド情報に対応する領域に含まれるベクトル情報により生成される残差ベクトル情報に基づいて、当該領域が分割された複数の部分領域に対応する部分セントロイド情報を生成する。
【０１３６】
これにより、実施形態に係る生成装置１００は、各セントロイド情報と、当該各セントロイド情報に対応する領域に含まれるベクトル情報により生成される残差ベクトル情報に基づいて、当該領域が分割された複数の部分領域に対応する部分セントロイド情報を生成することにより、近傍検索における効率的な検索を可能にするセントロイド情報を生成することができる。
【０１３７】
また、実施形態に係る生成装置１００において、生成部１３２は、各部分領域の部分セントロイド情報と、当該各部分領域内に含まれるベクトル情報とを対応付けた対応付情報を生成する。
【０１３８】
これにより、実施形態に係る生成装置１００は、各部分領域の部分セントロイド情報と、当該各部分領域内に含まれるベクトル情報とを対応付けた対応付情報を生成することにより、近傍検索における効率的な検索を可能にするセントロイド情報を生成することができる。
【０１３９】
また、実施形態に係る生成装置１００において、生成部１３２は、各セントロイド情報と、当該各セントロイド情報の各部分領域内に対応する各部分セントロイド情報とにより生成される残差ベクトル情報に基づいて、対応付情報を生成する。
【０１４０】
これにより、実施形態に係る生成装置１００は、各セントロイド情報と、当該各セントロイド情報の各部分領域内に対応する各部分セントロイド情報とにより生成される残差ベクトル情報に基づいて、対応付情報を生成することにより、近傍検索における効率的な検索を可能にするセントロイド情報を生成することができる。
【０１４１】
〔９．ハードウェア構成〕
上述してきた実施形態に係る生成装置１００は、例えば図１２に示すような構成のコンピュータ１０００によって実現される。図１２は、生成装置の機能を実現するコンピュータの一例を示すハードウェア構成図である。コンピュータ１０００は、ＣＰＵ１１００、ＲＡＭ１２００、ＲＯＭ（Read  Only  Memory）１３００、ＨＤＤ（Hard  Disk  Drive）１４００、通信インターフェイス（Ｉ／Ｆ）１５００、入出力インターフェイス（Ｉ／Ｆ）１６００、及びメディアインターフェイス（Ｉ／Ｆ）１７００を有する。
【０１４２】
ＣＰＵ１１００は、ＲＯＭ１３００またはＨＤＤ１４００に格納されたプログラムに基づいて動作し、各部の制御を行う。ＲＯＭ１３００は、コンピュータ１０００の起動時にＣＰＵ１１００によって実行されるブートプログラムや、コンピュータ１０００のハードウェアに依存するプログラム等を格納する。
【０１４３】
ＨＤＤ１４００は、ＣＰＵ１１００によって実行されるプログラム、及び、かかるプログラムによって使用されるデータ等を格納する。通信インターフェイス１５００は、ネットワークＮを介して他の機器からデータを受信してＣＰＵ１１００へ送り、ＣＰＵ１１００が生成したデータをネットワークＮを介して他の機器へ送信する。
【０１４４】
ＣＰＵ１１００は、入出力インターフェイス１６００を介して、ディスプレイやプリンタ等の出力装置、及び、キーボードやマウス等の入力装置を制御する。ＣＰＵ１１００は、入出力インターフェイス１６００を介して、入力装置からデータを取得する。また、ＣＰＵ１１００は、生成したデータを入出力インターフェイス１６００を介して出力装置へ出力する。
【０１４５】
メディアインターフェイス１７００は、記録媒体１８００に格納されたプログラムまたはデータを読み取り、ＲＡＭ１２００を介してＣＰＵ１１００に提供する。ＣＰＵ１１００は、かかるプログラムを、メディアインターフェイス１７００を介して記録媒体１８００からＲＡＭ１２００上にロードし、ロードしたプログラムを実行する。記録媒体１８００は、例えばＤＶＤ（Digital  Versatile  Disc）、ＰＤ（Phase  change  rewritable  Disk）等の光学記録媒体、ＭＯ（Magneto-Optical  disk）等の光磁気記録媒体、テープ媒体、磁気記録媒体、または半導体メモリ等である。
【０１４６】
例えば、コンピュータ１０００が実施形態に係る生成装置１００として機能する場合、コンピュータ１０００のＣＰＵ１１００は、ＲＡＭ１２００上にロードされたプログラムを実行することにより、制御部１３０の機能を実現する。コンピュータ１０００のＣＰＵ１１００は、これらのプログラムを記録媒体１８００から読み取って実行するが、他の例として、他の装置からネットワークＮを介してこれらのプログラムを取得してもよい。
【０１４７】
以上、本願の実施形態のいくつかを図面に基づいて詳細に説明したが、これらは例示であり、発明の開示の行に記載の態様を始めとして、当業者の知識に基づいて種々の変形、改良を施した他の形態で本発明を実施することが可能である。
【０１４８】
〔１０．その他〕
また、上記実施形態において説明した各処理のうち、自動的に行われるものとして説明した処理の全部または一部を手動的に行うこともでき、あるいは、手動的に行われるものとして説明した処理の全部または一部を公知の方法で自動的に行うこともできる。この他、上記文書中や図面中で示した処理手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。例えば、各図に示した各種情報は、図示した情報に限られない。
【０１４９】
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的形態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。
【０１５０】
また、上述してきた各実施形態に記載された各処理は、処理内容を矛盾させない範囲で適宜組み合わせることが可能である。
【０１５１】
また、上述してきた「部（section、module、unit）」は、「手段」や「回路」などに読み替えることができる。例えば、取得部は、取得手段や取得回路に読み替えることができる。
【符号の説明】
【０１５２】
１  生成システム
１００  生成装置
１２１  第１インデックス情報記憶部
１２２  セントロイド情報記憶部
１２３  第２インデックス情報記憶部
１３０  制御部
１３１  取得部
１３２  生成部
１３３  抽出部
１３４  提供部
１０  端末装置
５０  情報提供装置
Ｎ  ネットワーク
【図１】
2018101225.tif 000004
【図２】
2018101225.tif 000005
【図３】
2018101225.tif 000006
【図４】
2018101225.tif 000007
【図５】
2018101225.tif 000008
【図６】
2018101225.tif 000009
【図７】
2018101225.tif 000010
【図８】
2018101225.tif 000011
【図９】
2018101225.tif 000012
【図１０】
2018101225.tif 000013
【図１１】
2018101225.tif 000014
【図１２】
2018101225.tif 000015
【手続補正書】
【提出日】平成29年12月26日(2017.12.26)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
近傍検索における検索対象の各々に対応する複数のベクトル情報を取得する取得部と、
前記取得部により取得された複数のベクトル情報について所定の回数ランダムサンプリングを行い、各クラスタに含まれるベクトル情報の数の差が最も小さくベクトル情報がクラスタリングされる組合せに基づいて、ベクトル量子化において各ベクトル情報の各々が距離に応じて対応付けられる複数のセントロイド情報であって、各セントロイド情報に対応付けられるベクトル情報の数の差が所定値以内になるように複数のセントロイド情報を生成する生成部と、
を備えることを特徴とする生成装置。
【請求項２】
前記生成部は、
前記複数のベクトル情報から所定の条件に基づいてベクトル情報をセントロイド情報として選択することにより、複数のセントロイド情報を生成する
ことを特徴とする請求項１に記載の生成装置。
【請求項３】
前記生成部は、
前記複数のベクトル情報から、ランダムサンプリングにより選択されたベクトル情報をセントロイド情報として選択することにより、複数のセントロイド情報を生成する
ことを特徴とする請求項１または請求項２に記載の生成装置。
【請求項４】
前記取得部は、
前記複数のベクトル情報を異なるタイミングで取得し、
前記生成部は、
前記取得部がベクトル情報を取得した時点において、セントロイド情報の数が所定の閾値未満である場合、当該ベクトル情報をセントロイド情報として選択することにより、複数のセントロイド情報を生成する
ことを特徴とする請求項１〜３のいずれか１項に記載の生成装置。
【請求項５】
前記生成部は、
所定の検索要求に対して、セントロイド情報の特定に用いる第１インデックス情報を生成する
ことを特徴とする請求項１〜４のいずれか１項に記載の生成装置。
【請求項６】
前記生成部は、
高次元ベクトルを検索する検索インデックスを第１インデックス情報として生成する
ことを特徴とする請求項５に記載の生成装置。
【請求項７】
前記生成部は、
複数のセントロイド情報に関する木構造型のインデックス、または、グラフ構造型のインデックスを第１インデックス情報として生成する
ことを特徴とする請求項５または請求項６に記載の生成装置。
【請求項８】
前記生成部は、
各セントロイド情報と、当該各セントロイド情報に対応付けられたベクトル情報とを示す第２インデックス情報を生成する
ことを特徴とする請求項１〜７のいずれか１項に記載の生成装置。
【請求項９】
前記生成部は、
各セントロイド情報に対応付けられたベクトル情報を特定する転置インデックスを第２インデックス情報として生成する
ことを特徴とする請求項８に記載の生成装置。
【請求項１０】
前記生成部は、
各ベクトル情報を分割した各部分ベクトルを量子化するベクトル量子化に基づいて、各セントロイド情報に対応付けられるベクトル情報の数の差が所定値以内になるように複数のセントロイド情報を生成する
ことを特徴とする請求項１〜９のいずれか１項に記載の生成装置。
【請求項１１】
前記生成部は、
各セントロイド情報に対応する領域に含まれるベクトル情報に基づいて、当該領域が分割された複数の部分領域に対応する部分セントロイド情報を生成する
ことを特徴とする請求項１〜１０のいずれか１項に記載の生成装置。
【請求項１２】
前記生成部は、
各セントロイド情報に対応する領域に含まれるベクトル情報に関する残差ベクトル情報に基づいて、当該領域が分割された複数の部分領域に対応する部分セントロイド情報を生成する
ことを特徴とする請求項１〜１１のいずれか１項に記載の生成装置。
【請求項１３】
前記生成部は、
各セントロイド情報と、当該各セントロイド情報に対応する領域に含まれるベクトル情報により生成される残差ベクトル情報に基づいて、当該領域が分割された複数の部分領域に対応する部分セントロイド情報を生成する
ことを特徴とする請求項１〜１２のいずれか１項に記載の生成装置。
【請求項１４】
前記生成部は、
各部分領域の部分セントロイド情報と、当該各部分領域内に含まれるベクトル情報とを対応付けた対応付情報を生成する
ことを特徴とする請求項１１〜１３のいずれか１項に記載の生成装置。
【請求項１５】
前記生成部は、
各セントロイド情報と、当該各セントロイド情報の各部分領域内に対応する各部分セントロイド情報とにより生成される残差ベクトル情報に基づいて、前記対応付情報を生成する
ことを特徴とする請求項１４に記載の生成装置。
【請求項１６】
コンピュータが実行する生成方法であって、
近傍検索における検索対象の各々に対応する複数のベクトル情報を取得する取得工程と、
前記取得工程により取得された複数のベクトル情報について所定の回数ランダムサンプリングを行い、各クラスタに含まれるベクトル情報の数の差が最も小さくベクトル情報がクラスタリングされる組合せに基づいて、ベクトル量子化において各ベクトル情報の各々が距離に応じて対応付けられる複数のセントロイド情報であって、各セントロイド情報に対応付けられるベクトル情報の数の差が所定値以内になるように複数のセントロイド情報を生成する生成工程と、
を含むことを特徴とする生成方法。
【請求項１７】
近傍検索における検索対象の各々に対応する複数のベクトル情報を取得する取得手順と、
前記取得手順により取得された複数のベクトル情報について所定の回数ランダムサンプリングを行い、各クラスタに含まれるベクトル情報の数の差が最も小さくベクトル情報がクラスタリングされる組合せに基づいて、ベクトル量子化において各ベクトル情報の各々が距離に応じて対応付けられる複数のセントロイド情報であって、各セントロイド情報に対応付けられるベクトル情報の数の差が所定値以内になるように複数のセントロイド情報を生成する生成手順と、
をコンピュータに実行させることを特徴とする生成プログラム。