説明

グラフインデックス更新装置

【課題】グラフインデックスの更新において、過剰に長いリンクの生成を抑制することが可能な装置又は方法を提供する。
【解決手段】データベースに格納された複数のベクトルデータの一部又は全部によって構成される特定のベクトルデータ集合を特定する。ついで、前記ベクトルデータ集合に属する第1のベクトルデータから、第2のベクトルデータを、前記複数のベクトルデータ間のリンク関係を示すグラフインデックスを用いて検索する。ついで、前記グラフインデックスを用いた検索の過程において取得した第3のベクトルデータと前記第2のベクトルデータとの間の距離が、前記第1のベクトルデータから前記第2のベクトルデータまでの距離より短い場合には、前記第3のベクトルデータと前記第2のベクトルデータとの間に新たなリンクを生成して、前記グラフインデックスを更新する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、データ検索のために用いられるグラフインデックスを更新するための装置及び方法に関するものである。特に、本発明は、ノード間のリンクを新たに生成してグラフインデックスを更新するため技術に関するものである。
【背景技術】
【0002】
例えば、ある画像(検索画像)に類似する画像を、多数の画像(対象画像)の中から検索する場合がある。この場合、各画像の特徴を、多次元のベクトルデータ(すなわち特徴量)で表し、各ベクトルデータ間の類似度を用いて、類似画像を抽出する方法が考えられる。
【0003】
類似画像の検索作業において、対象画像の数が多い場合には、検索画像と対象画像との類似度(例えばユークリッド距離や色差式)を逐一計算していると、検索に要する時間が非常に長くなってしまう。そこで、木構造のグラフインデックス(索引)を用いて、検索を高速化する方法が提案されている。
【0004】
一般に、多次元のベクトル空間において、ある範囲の多次元データを高速に検索するには、多次元空間インデックスであるkd-tree若しくは R-treeや、又は、距離空間インデックスである Vp-treeなどが知られている。これらの手法は、空間を分割して木構造のグラフインデックスを生成し、生成された木構造を辿ることで高速な検索を目指している。
【0005】
ところで、一旦生成したグラフインデックスから、ベクトルデータを削除する場合がある。この場合には、通常、ベクトルデータだけでなく、削除対象のベクトルデータに接続するリンクをすべて削除する。しかし、あるベクトルデータが、他の複数のベクトルデータ間の橋渡しをしているような場合において、この橋渡しをするベクトルデータを削除すると、複数のベクトルデータ間のリンクが完全に切れてしまい、分離したグラフ構造になってしまうことがある。つまり、検索時において、ベクトルデータを辿れない場合が生じ、検索漏れが発生する。あるいは、仮に辿れるとしても、辿るべきリンク数が多すぎる等の問題を生じることがある。
【0006】
そこで、本発明者による下記特許文献1では、ベクトルデータの削除時に、削除対象のベクトルデータからリンクしていたベクトルデータどうしを互いにリンクすることにより、前記の問題を解消している。この方法は簡便なために、ベクトルデータを高速に削減ができるという利点があるが、遠いベクトルデータ間をリンクしてしまう可能性がある。つまり、過剰に長いリンクを生成してしまう可能性がある。このようなリンクを生成すると、検索効率や検索精度が劣化する可能性がある。
【先行技術文献】
【特許文献】
【0007】
【特許文献1】特開2010−79871号公報(例えば図41)
【発明の概要】
【発明が解決しようとする課題】
【0008】
本発明は、前記した状況に鑑みてなされたものである。本発明の主な目的は、グラフインデックスの更新において、過剰に長いリンクの生成を抑制することが可能な装置又は方法を提供することである。
【課題を解決するための手段】
【0009】
本発明は、以下のいずれかの項目に記載の構成とされている。
【0010】
(項目1)
複数のベクトルデータと前記複数のベクトルデータ間のリンク関係を示すグラフインデックスとを格納するデータベースと、前記複数のベクトルデータのうちの特定のベクトルデータから、前記グラフインデックスが示すリンク関係を辿ることで他のベクトルデータを検索する検索部と、前記データベースのグラフインデックスの更新を行うインデックス更新部とを備えており、
前記インデックス更新部は、
前記複数のベクトルデータの一部又は全部によって構成される特定のベクトルデータ集合を特定する処理と、
前記ベクトルデータ集合に属する第1のベクトルデータから、第2のベクトルデータを、前記グラフインデックスを用いて、前記検索部によって検索させる処理と、
前記グラフインデックスを用いた検索における前記リンク関係を辿る過程において取得した第3のベクトルデータと前記第2のベクトルデータとの間の距離が、前記第1のベクトルデータから前記第2のベクトルデータまでの距離より短い場合には、前記第3のベクトルデータと前記第2のベクトルデータとの間に新たなリンクを生成して前記データベースの前記グラフインデックスを更新する処理と
を行う構成となっている
グラフインデックス更新装置。
【0011】
(項目2)
前記第2のベクトルデータは、前記ベクトルデータ集合において、前記第1のベクトルデータに対して最も近いベクトルデータである
項目1に記載のグラフインデックス更新装置。
【0012】
(項目3)
前記グラフインデックス更新部は、さらに、
前記第2のベクトルデータから、前記第1のベクトルデータを、前記検索部によって検索させる処理と、
前記グラフインデックスを用いた検索における前記リンク関係を辿る過程によって取得した第4のベクトルデータと前記第1のベクトルデータとの間の距離が、前記第3のベクトルデータから前記第1のベクトルデータまでの距離より短い場合には、前記第4のベクトルデータと前記第1のベクトルデータとの間に新たなリンクを生成して前記データベースの前記グラフインデックスを更新する処理と
を行う構成となっている
項目1又は2に記載のグラフインデックス更新装置。
【0013】
(項目4)
データベースに格納された複数のベクトルデータの一部又は全部によって構成される特定のベクトルデータ集合を特定するステップと、
前記ベクトルデータ集合に属する第1のベクトルデータから、第2のベクトルデータを、前記複数のベクトルデータ間のリンク関係を示すグラフインデックスを用いて検索するステップと、
前記グラフインデックスを用いた検索の過程において取得した第3のベクトルデータと前記第2のベクトルデータとの間の距離が、前記第1のベクトルデータから前記第2のベクトルデータまでの距離より短い場合には、前記第3のベクトルデータと前記第2のベクトルデータとの間に新たなリンクを生成して、前記グラフインデックスを更新するステップと
を備えたグラフインデックス更新方法。
【0014】
(項目5)
項目4に記載の各ステップをコンピュータに実行させるためのコンピュータプログラム。
【0015】
このコンピュータプログラムは、適宜な記録媒体(例えばCD−ROMやDVDディスクのような光学的な記録媒体、ハードディスクやフレキシブルディスクのような磁気的記録媒体、あるいはMOディスクのような光磁気記録媒体)に格納することができる。このコンピュータプログラムは、インターネットなどの通信回線を介して伝送されることができる。
【発明の効果】
【0016】
本発明によれば、過剰に長いリンクの生成を抑制することが可能な装置又は方法を提供することが可能となる。
【図面の簡単な説明】
【0017】
【図1】本発明のインデックス更新装置が用いられるシステム全体の概略を説明するためのブロック図である。
【図2】本発明の第1実施形態におけるグラフインデックス更新の手順を説明するためのフローチャートである。
【図3】第1実施形態におけるグラフインデックス更新の手順を説明するための説明図である。
【図4】第1実施形態におけるグラフインデックス更新の手順を説明するための説明図である。
【図5】第1実施形態におけるグラフインデックス更新の手順を説明するための説明図である。
【図6】第1実施形態におけるグラフインデックス更新の手順を説明するための説明図である。
【図7】第2実施形態におけるグラフインデックス更新の利点を説明するための説明図である。
【図8】第2実施形態におけるグラフインデックス更新の手順を説明するための説明図である。
【発明を実施するための形態】
【0018】
(第1実施形態の構成)
第1実施形態のグラフインデックス更新装置を説明する前提として、この更新装置を含む検索システム全体の構成を、図1に基づいて説明する。
【0019】
この検索システムは、検索サーバ1と、クライアント端末2と、ネットワーク3とを主要な構成として備えている。そして、この検索システムは、ネットワーク3を介してクライアント端末2から検索サーバ1にクエリを送ることにより、類似データをクライアント端末2に送り返すことができるようになっている。このような検索システム全体の構成は、例えば前記特許文献1と同様なので、これについての詳しい説明は省略する。
【0020】
第1実施形態のグラフインデックス更新装置は、前記した検索サーバ1として実装される。すなわち、この検索サーバ1は、データベース11と、検索部12と、インデックス更新部13とを備えている。
【0021】
データベース11は、複数のベクトルデータを格納するベクトルデータDB111と、これらの複数のベクトルデータ間のリンク関係を示すグラフインデックスとを格納グラフインデックスDB112とを備えている。
【0022】
検索部12は、複数のベクトルデータのうちの特定のベクトルデータから、グラフインデックスが示すリンク関係を辿ることで他のベクトルデータを検索する構成となっている。
【0023】
これらのデータベース11と検索部12は、基本的には、従来(例えば前記した特許文献1)と同様に構成することができるので、これ以上詳しい説明は省略する。
【0024】
インデックス更新部13は、データベースのグラフインデックスの更新を行う構成となっている。より具体的には、インデックス更新部は、以下の処理を行う構成となっている:
・複数のベクトルデータの一部又は全部によって構成される特定のベクトルデータ集合を特定する処理;
・ベクトルデータ集合に属する第1のベクトルデータから、第2のベクトルデータを、グラフインデックスを用いて、検索部12によって検索させる処理;
・グラフインデックスを用いた検索におけるリンク関係を辿る過程において取得した第3のベクトルデータと第2のベクトルデータとの間の距離が、第1のベクトルデータから第2のベクトルデータまでの距離より短い場合には、第3のベクトルデータと第2のベクトルデータとの間に新たなリンクを生成してデータベース11のグラフインデックスを更新する処理。
【0025】
インデックス更新部13の詳しい動作は後述する。
【0026】
(グラフインデックスの更新手順)
以下、図2をさらに参照しながら、本実施形態の更新装置を用いたグラフインデックスの更新手順を詳しく説明する。なお、以下の説明では、ベクトルデータのことをノードと称することがある。また、以下に説明する更新手順は、特に説明のない限り、基本的にはインデックス更新部13により実行される。
【0027】
(図2のステップSA−1)
まず、インデックス更新部13が、ノード集合Sを特定する。ここで、本実施形態では、グラフインデックスの初期状態を、図3(a)に示す状態であると仮定する。この状態において、ノードDをこのグラフインデックスから削除する(図3(b)参照)。本実施形態では、削除されたノードDに直接に連結していたノードSn(本実施形態ではS1〜S4)によってノード集合Sが形成される。
【0028】
(図2のステップSA−2)
ついで、インデックス更新部13が、ノード集合Sから、始点のノードとして、任意の一つのノードSi(第1のベクトルデータの一例に相当)を特定する。本実施形態では、ノードS1を始点ノードとする。
【0029】
(図2のステップSA−3)
次に、インデックス更新部13が、選択したノードS1から最も距離が近いノードSj(本例ではS2)を、集合Sから取得する。ノードSjは、第2のベクトルデータの一例に相当する。
【0030】
ついで、インデックス更新部13は、検索部12を用いて、ノードS1からグラフを辿ることによって、ノードS2の近傍点をn個検索する。検索部12によるこの検索処理は、通常のグラフインデックスにおける検索処理と同一でよいので、これについての詳しい説明は省略する。ここで、検索対象のノード数であるnを大きくすることにより精度よい検索となる一方、処理が遅くなるので、nの値は、用途に応じて適宜設定すれば良い。
【0031】
(図2のステップSA−4)
検索結果として得られたn個のノードの中にノードS2が含まれていた場合には、ノードS1とノードS2との間に既にパス(つまりリンク)が存在すると判断できる。したがってこの場合は、新たにリンクを生成する必要はないので、ステップSA−8に進む。ステップSA−4での判断がNoであった場合には次のステップSA−5に進む。
【0032】
(図2のステップSA−5及びSA−6)
次に、インデックス更新部13は、検索結果として得られたn個のノード中に、ノードS1とノードS2との間の距離より近いノードP(第3のベクトルデータの一例に相当)が検索されたかどうかを判定する。このようなノードPが検索された場合(かつノードS1とノードS2間には途中までのパスが存在する場合)、ノードPとノードS2との間にリンクを生成する(図4(a)及び(b)参照)。その後、ステップSA−8に移る。
【0033】
(図2のステップSA−7)
n個の検索結果中に、「ノードS1とノードS2との間の距離よりも近いノード」が検索されなかった場合(つまり、ノードS2から最も近いノードがS1であった場合であり、かつ、両者間に全くパスが存在しない場合)には、ノードS1とノードS2との間にリンクを生成する。
【0034】
(図2のステップSA−8)
集合Sに他のノードがあれば、それをS2とし、上記したノードS2をS1として、ステップSA−3からの処理を再度行う。前記作業を、集合Sに属するすべてのノードについて行ったら、上記手順を終了する。
【0035】
以降の手順を、図5及び図6をさらに参照しながら、説明する。
【0036】
図5では、S1とS2とが前記の手順で連結された(図4の例では、ノードPを介して連結された)後に、ノードS2を前記のノードSiとし、ノードS3を前記のノードSjとして、図3の手順を行った例を示している。ここでは、図2のステップSA−4において、「検索結果として得られたn個のノードの中にノードSjが含まれていた場合」に該当するので、「ノードS2とノードS3との間に既にパス(つまりリンク)が存在する」と判断できる。したがってこの場合は、新たにリンクを生成する必要はないので、ステップSA−8に進むことができる。
【0037】
図6の例では、S2とS3との連結が前記の手順で確認された後に、ノードS3を前記のノードSiとし、ノードS4を前記のノードSjとして、図3の手順を行った例を示している。この例では、ステップSA−5での判定がNoとなるので、ステップSA−7に進み、ノードS3とノードS4とを直接にリンクする。ここまでの手順によって、集合Sに属する全てのノードについての処理が完了する。完了した状態を図6(c)に示す。
【0038】
前記した本実施形態によれば、ノード間のリンクを短くすることが可能となるという利点がある。
【0039】
なお、前記の説明では、ノードSiからノードSjを検索する例を説明したが、逆に、ノードSjからノードSiを検索することもできる。さらには、ノードSiからノードSjを検索した後に、ノードSjからノードSiを検索することもできる。そして、ノードSjからノードSiに向けてリンクを辿る過程によって取得した第4のベクトルデータ(図示せず)と第1のベクトルデータ(ノードSi)との間の距離が、第3のベクトルデータ(ノードP)から第1のベクトルデータ(ノードSi)までの距離より短い場合には、第4のベクトルデータと第1のベクトルデータ(ノードSi)との間に新たなリンクを生成してデータベース11のグラフインデックスを更新することができる。この場合は、第3のベクトルデータ(ノードP)から第1のベクトルデータ(ノードSi)へのリンク生成を省略することができる。
【0040】
(第2実施形態)
次に、第2実施形態に係るグラフインデックス更新装置を、図7及び図8を参照しながら説明する。なお、第2実施形態の説明においては、前記した第1実施形態と基本的に共通する処理手順あるいは構成については、符号を援用することにより、説明の煩雑を避ける。
【0041】
まず、説明の前提として、第2実施形態の手法が有効な状況を、図7により説明する。ここでは、グラフインデックスから、リンクが集中しているノードD(図7(a)参照)を削除する。すると、図7(b)に示すように、リンク切れの状態が現れる。そこで、図2に示す手順を実施する。この場合は、ノード集合Sが、ノードS1〜S8により構成される。図2の手順を実施した結果、各ノード間のリンクを確保することは可能である。しかしながら、ノードS4とノードS8との間を直接にリンクすることが最適であるにも拘わらず、前記の手順では、ノードS8よりもノードS5がノードS4に近いため、ノードS4とノードS8との間にはリンクが生成されない(図7(c)の破線参照)。
【0042】
そこで、第2実施形態では、以下のような手順を採用する。すなわち、第1実施形態では、集合S中の一つのノードSiを順次更新していた。これに対して、第2実施形態では、既に辿られた全てのノードから、次のノードを辿る。例えば、図8(a)に示すように、ノードS1からノードS2へは、第1実施形態と同じ方法で辿り、両者間にリンクを貼ることができる(図2のステップSA−7)。その後、第2実施形態では、第1実施形態と異なり、二つのノードS1及びS2を、図2のノードSiとみなして、それぞれから、ノードS3(つまりノードSj)を辿る(図8(b)参照)。その結果、二通りのリンク(エッジ)が形成された場合は、両リンクを評価して、より良いリンクを残す。リンクの評価基準としては、例えば、「リンクが短いほど良いリンクとする」という基準を用いることができる。この例では、図8(c)に示すように、ノードS2とノードS3との間にリンクを生成することができる。その後、さらに、リンクが張られた各ノードS1〜S3を前記したノードSiとみなして、これらの各ノードS1〜S3からノードS4を辿る。以降、同様の操作を繰り返す。
【0043】
この第2実施形態によれば、より適切なリンクを生成できる可能性が高まる。
【0044】
第2実施形態における他の構成及び利点は、前記した第1実施形態と同様なので、これ以上詳しい説明は省略する。
【0045】
前記した各実施形態の動作は、コンピュータに適宜のコンピュータソフトウエアを組み込むことにより実施することができる。
【0046】
なお、本発明の内容は、前記実施形態に限定されるものではない。本発明は、特許請求の範囲に記載された範囲内において、具体的な構成に対して種々の変更を加えうるものである。
【0047】
例えば、前記した各構成要素は、機能ブロックとして存在していればよく、独立したハードウエアとして存在しなくても良い。また、実装方法としては、ハードウエアを用いてもコンピュータソフトウエアを用いても良い。さらに、本発明における一つの機能要素が複数の機能要素の集合によって実現されても良く、本発明における複数の機能要素が一つの機能要素により実現されても良い。
【0048】
また、機能要素は、物理的に離間した位置に配置されていてもよい。この場合、機能要素どうしがネットワークにより接続されていても良い。グリッドコンピューティングにより機能を実現し、あるいは機能要素を構成することも可能である。
【0049】
さらに、前記した各実施形態では、グラフインデックスからノードを削除する例を説明した。しかしながら、本発明は、ノードの削除に限らず、例えば、破損したグラフインデックスの修復や、複数のグラフインデックスの統合にも利用することができる。例えば、二つのグラフインデックスGA、GBを結合する場合には、
・各々のグラフインデックスに対応するノード集合をSA,SBとし、
・これらのノード集合SA又はSBから任意の1ノードを取得し、
・ノード集合SA及びSBで構成されるノード集合Sを本発明のベクトルデータ集合と把握して、
・前記実施形態の手法により、集合S内のノード間でのリンク結合を行う
ことが可能である。
【符号の説明】
【0050】
1 検索サーバ
11 データベース
111 ベクトルデータDB
112 格納グラフインデックスDB
12 検索部
13 インデックス更新部
2 クライアント端末
3 ネットワーク

【特許請求の範囲】
【請求項1】
複数のベクトルデータと前記複数のベクトルデータ間のリンク関係を示すグラフインデックスとを格納するデータベースと、前記複数のベクトルデータのうちの特定のベクトルデータから、前記グラフインデックスが示すリンク関係を辿ることで他のベクトルデータを検索する検索部と、前記データベースのグラフインデックスの更新を行うインデックス更新部とを備えており、
前記インデックス更新部は、
前記複数のベクトルデータの一部又は全部によって構成される特定のベクトルデータ集合を特定する処理と、
前記ベクトルデータ集合に属する第1のベクトルデータから、第2のベクトルデータを、前記グラフインデックスを用いて、前記検索部によって検索させる処理と、
前記グラフインデックスを用いた検索における前記リンク関係を辿る過程において取得した第3のベクトルデータと前記第2のベクトルデータとの間の距離が、前記第1のベクトルデータから前記第2のベクトルデータまでの距離より短い場合には、前記第3のベクトルデータと前記第2のベクトルデータとの間に新たなリンクを生成して前記データベースの前記グラフインデックスを更新する処理と
を行う構成となっている
グラフインデックス更新装置。
【請求項2】
前記第2のベクトルデータは、前記ベクトルデータ集合において、前記第1のベクトルデータに対して最も近いベクトルデータである
請求項1に記載のグラフインデックス更新装置。
【請求項3】
前記グラフインデックス更新部は、さらに、
前記第2のベクトルデータから、前記第1のベクトルデータを、前記検索部によって検索させる処理と、
前記グラフインデックスを用いた検索における前記リンク関係を辿る過程によって取得した第4のベクトルデータと前記第1のベクトルデータとの間の距離が、前記第3のベクトルデータから前記第1のベクトルデータまでの距離より短い場合には、前記第4のベクトルデータと前記第1のベクトルデータとの間に新たなリンクを生成して前記データベースの前記グラフインデックスを更新する処理と
を行う構成となっている
請求項1又は2に記載のグラフインデックス更新装置。
【請求項4】
データベースに格納された複数のベクトルデータの一部又は全部によって構成される特定のベクトルデータ集合を特定するステップと、
前記ベクトルデータ集合に属する第1のベクトルデータから、第2のベクトルデータを、前記複数のベクトルデータ間のリンク関係を示すグラフインデックスを用いて検索するステップと、
前記グラフインデックスを用いた検索の過程において取得した第3のベクトルデータと前記第2のベクトルデータとの間の距離が、前記第1のベクトルデータから前記第2のベクトルデータまでの距離より短い場合には、前記第3のベクトルデータと前記第2のベクトルデータとの間に新たなリンクを生成して、前記グラフインデックスを更新するステップと
を備えたグラフインデックス更新方法。
【請求項5】
請求項4に記載の各ステップをコンピュータに実行させるためのコンピュータプログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate


【公開番号】特開2013−101441(P2013−101441A)
【公開日】平成25年5月23日(2013.5.23)
【国際特許分類】
【出願番号】特願2011−244065(P2011−244065)
【出願日】平成23年11月8日(2011.11.8)
【出願人】(500257300)ヤフー株式会社 (1,128)