(57)【要約】【課題】探索実行時の精度を高く保ち少ない計算量で近似解又は厳密解に近い解を発見することができるグラフ索引を少時間計算量で構築する。【解決手段】グラフ生成装置において、n個のオブジェクトを探索対象のn個の頂点として入力する入力部と、前記n個の頂点を有するグラフであって、頂点間の辺として近傍辺と近傍辺以外の辺とを有する部分的近傍グラフを生成する生成部と、前記部分的近傍グラフを出力する出力部とを備える。【選択図】図４
2019061300.tif 000002
【特許請求の範囲】
【請求項１】
n個のオブジェクトを探索対象のn個の頂点として入力する入力部と、
前記n個の頂点を有するグラフであって、頂点間の辺として近傍辺と近傍辺以外の辺とを有する部分的近傍グラフを生成する生成部と、
前記部分的近傍グラフを出力する出力部と
を備えることを特徴とするグラフ生成装置。
【請求項２】
前記生成部は、
前記n個の頂点から選択されたnより小さいm個の頂点の各々について、k最近傍頂点を算出し、当該k最近傍頂点との間に辺を張り、残りのn-m個の頂点の各々について、ランダムに選択したk個の頂点との間に辺を張ることにより前記部分的近傍グラフを生成する、又は、
前記n個の頂点に対し、反復アルゴリズムの収束条件を緩和したNN-Descent法の処理を行うことにより近似k-NNリストを作成し、当該近似k-NNリストから前記部分的近傍グラフを生成する
ことを特徴とする請求項１に記載のグラフ生成装置。
【請求項３】
グラフ生成装置が実行するグラフ生成方法であって、
n個のオブジェクトを探索対象のn個の頂点として入力する入力ステップと、
前記n個の頂点を有するグラフであって、頂点間の辺として近傍辺と近傍辺以外の辺とを有する部分的近傍グラフを生成する生成ステップと、
前記部分的近傍グラフを出力する出力ステップと
を備えることを特徴とするグラフ生成方法。
【請求項４】
前記生成ステップにおいて、前記グラフ生成装置は、
前記n個の頂点から選択されたnより小さいm個の頂点の各々について、k最近傍頂点を算出し、当該k最近傍頂点との間に辺を張り、残りのn-m個の頂点の各々について、ランダムに選択したk個の頂点との間に辺を張ることにより前記部分的近傍グラフを生成する、又は、
前記n個の頂点に対し、反復アルゴリズムの収束条件を緩和したNN-Descent法の処理を行うことにより近似k-NNリストを作成し、当該近似k-NNリストから前記部分的近傍グラフを生成する
ことを特徴とする請求項３に記載のグラフ生成方法。
【請求項５】
コンピュータを、請求項１又は２に記載のグラフ生成装置における各部として機能させるためのプログラム。
【請求項６】
グラフ索引型類似探索システムにおいて探索対象データの中から探索条件を満たすデータを探索する処理に用いられる索引を表すグラフのデータ構造であって、
ｎ個の頂点から成る頂点集合と当該頂点集合に属する頂点の間に設定された無向辺の集合とから構成され、
前記n個の頂点の各々は、前記探索対象データに対応付けられており、
前記頂点の間に設定された無向辺は、頂点間に定義された関係性尺度に基づき張られた出力辺を無向化した辺であって、
前記n個の頂点のそれぞれについて、当該頂点に接続される出力辺のうち、予め定めた整数kより小さいk´本の出力辺はk近傍となる頂点に接続されており、当該k´本の出力辺以外の出力辺は、当該頂点を除くn-1個の頂点の中からランダムに選ばれた頂点に接続されており、
前記k近傍となる頂点とは、
前記探索対象データの中で当該頂点に対応する探索対象データとの関係性尺度に基づいた関係が強い順に選択されたk個の探索対象データの各々に対応する頂点
であることを特徴とするデータ構造。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、大規模データを探索する際の索引となるグラフを生成する装置に関するものである。
【背景技術】
【０００２】
文書、画像、映像、音声音響信号、センサデータ、記号列データ等の多様な大規模データ（探索対象データ又は被探索データ）から、与えられたクエリデータ（探索対象データと同型のデータ）に類似するデータ又はそれに関連する情報を効率的に発見する探索技術は、データの多様化と大規模化に伴い、重要な技術になっている。
【０００３】
探索技術の中の１つである探索法には、厳密解を求める厳密探索法（exact algorithm）、厳密解に対する精度が保証された近似解を求める近似探索法(approximation algorithm)、如何なる保証もないが厳密解に近いであろう解を見つけることが経験的、実験的に知られているヒューリスティック法（発見的方法）がある。また、大規模データを探索対象とする場合は、これらの探索法の多くは、探索実行前に索引（index）を構築し、高速探索を実現する。
【０００４】
多様なメディア又はその複合メディアを取り扱うには、メディア固有の特徴に基づく索引より、データ間の関係性に着目した抽象度の高いグラフ構造を索引とすることが有望である。多くの場合、索引として用いられるグラフは近傍性を保持したグラフであり、その近傍グラフには２つの系列がある。１つは、ボロノイ図（Voronoi diagram）の双対であるドロネー三角形分割（Delaunay triangulation、DT）、DTの部分グラフである相対近傍グラフ（relative neighborhood graph, RNG）又はRNGの一般化グラフであるβスケルトングラフ、RNGの部分グラフである最小全域木（minimum spanning tree, MST）である。他の1つは、k最近傍グラフ（k-nearest neighbor graph, k-NNグラフ）系列である。
【０００５】
非特許文献１に記載の次数低減k最近傍グラフ（degree-reduced k-nearest neighbor graph, k-DRグラフ）はk最近傍グラフの部分グラフである。なお、k-DRグラフは、非特許文献１では、k-DRNN graphと呼ばれ、特許文献２では、k-GRネットワークと呼ばれている。
【０００６】
グラフ索引を用いた探索法には、近似探索法（非特許文献２）又は発見的方法（特許文献１，２）、（非特許文献１，３）があり、種々のメディアに対して高速探索を実現してきた。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特許第4774016号公報
【特許文献２】特許第4774019号公報
【非特許文献】
【０００８】
【非特許文献１】K. Aoyama, K. Saito, T. Yamada, and N. Ueda, "Fast similarity search in small-world networks," Int. Workshop Complex Networks (CompleNet 2009), pp. 185-196, 2009.
【非特許文献２】K. Aoyama, K. Saito, H. Sawada, and N. Ueda, "Fast approximate similarity search based on degree-reduced neighborhood graphs," ACM SIGKDD Conf. Knowledge Discovery and Data Mining, 2011.
【非特許文献３】K. Aoyama, A. Ogawa, T. Hattori, T. Hori, and A. Nakamura, "GRAPH INDEX BASED QUERY-BY-EXAMPLE SEARCH ON A LARGE SPEECH DATA SET" Proc. Int. Conf. Acoustics, Speech, and Signal Processing (ICASSP), pp. 8520-8524, 2013.
【非特許文献４】W. Dong, M. Charikar, and K. Li, "Efficient K-nearest neighbor graph construction for generic similarity measures," Int. World Wide Web Conf., 2011.
【発明の概要】
【発明が解決しようとする課題】
【０００９】
しかしながら、グラフ索引構築に多大な計算量を要するという問題があった。例えば、素朴な方法を用いると、相対近傍グラフ（RNG）を構築するためにはO(n3)、k-NNグラフを構築するためにはO(n2)の非類似度（又は類似度）計算に対応する時間計算量が必要となる。ここでnは索引に含まれるデータ数、即ち、探索対象データの数である。k-NNグラフの場合の具体的な値は、非類似度が対称性を有しない場合、n(n-1)であり、対称である場合n(n-1)/2である。
【００１０】
この時間計算量を低減する発見的方法の1つにNN-Descent法がある（非特許文献4）。NN-Descent法は、対象となるデータからランダムグラフを作成し、辺を有する頂点間の近傍性を利用して、局所的に近似有向k-NNグラフを構築する方法であり、経験的にはデータサイズが106程度（n〜106）まではO(n1.11〜n1.14)の計算量で、厳密有向k-NNグラフに対してある程度の精度を有する有向k-NNグラフを構築する。大規模データに対しては、更なる高速化が望まれている。
【００１１】
一方、探索実行時には無向k-NNグラフより次数低減k最近傍グラフ（k-DRグラフ）を索引として用いた方が高速であることが知られている（非特許文献1）。また、k-DRグラフは有向k-NNグラフから変換し構築できることも知られている。
【００１２】
本発明は、上記の問題を解決するためになされたものであり、探索実行時の精度を高く保ち少ない計算量で近似解又は厳密解に近い解を発見することができるグラフ索引（特に、k-NNグラフに基づく索引）を少時間計算量で構築することを目的とする。
【課題を解決するための手段】
【００１３】
開示の技術によれば、n個のオブジェクトを探索対象のn個の頂点として入力する入力部と、
前記n個の頂点を有するグラフであって、頂点間の辺として近傍辺と近傍辺以外の辺とを有する部分的近傍グラフを生成する生成部と、
前記部分的近傍グラフを出力する出力部と
を備えることを特徴とするグラフ生成装置が提供される。
【発明の効果】
【００１４】
開示の技術により、探索実行時の精度を高く保ち少ない計算量で近似解又は厳密解に近い解を発見することができるグラフ索引（特に、k-NNグラフに基づく索引）を少時間計算量で構築することができる。
【図面の簡単な説明】
【００１５】
【図１】本発明の実施の形態におけるグラフ索引型類似探索システムの構成図である。
【図２】グラフ構築部１００の構成図である。
【図３】装置のハードウェア構成例を示す図である。
【図４】ランダムグラフへの近傍性の導入を説明するための図であり、頂点着目型（Ｖｅｒｔｅｘ  ｔｙｐｅ）を示す。
【図５】ランダムグラフへの近傍性の導入を説明するための図であり、近似近傍導入型（ＮＮ‐Ｄｅｓｃｅｎｔ  ｔｙｐｅ）を示す。
【図６】ランダムグラフへの近傍性の導入を説明するための図であり、辺着目型（Ｅｄｇｅ  ｔｙｐｅ）を示す。
【図７】最良優先探索時の辺に関する再現率と平均探索コスト率の関係を示す図である。
【図８】多頂点開始貪欲探索時の辺に関する再現率と平均貪欲探索成功率の関係を示す図である。
【図９】多頂点開始貪欲探索時の辺に関する再現率と平均探索コスト率の関係を示す図である。
【図１０】説明に使用する記号の例を説明するための図である。
【図１１】記号の説明を示す図である。
【図１２】ｐを中継点とするlocal joinとT(v)の例を示す図である。
【図１３】ＮＮ−ｄｅｓｃｅｎｔ法の処理の流れを示すフローチャートである。
【図１４】ＮＮ−ｄｅｓｃｅｎｔ法の処理例を示す図である。
【図１５】NN-Descent法により近似20-NNリストを作成した場合のデータサイズと計算量（距離計算回数）との関係を示す図である。
【図１６】NN-Descent法により近似20-NNリストを作成した場合のデータサイズと計算量（scan rate）との関係を示す図である。
【図１７】NN-Descent法により近似20-NNリストを作成した場合の計算量（scan rate）と辺の再現率（recall）との関係を示す図である。
【図１８】近似20-NNリストから構築した部分20-NNグラフを索引とした最良優先探索時の辺に関する再現率と平均探索コスト率の関係を示す図である。
【図１９】多頂点開始貪欲探索時の辺に関する再現率と平均貪欲探索成功率の関係を示す図である。
【図２０】多頂点開始貪欲探索時の辺に関する再現率と平均探索コスト率の関係を示す図である。
【発明を実施するための形態】
【００１６】
以下に説明する技術は、探索対象データから作成したランダムグラフの中にデータ間の近傍性に関する情報をデータ間の辺として埋め込んだ近傍性を有する僅かな部分を設定することで、探索実行時の計算量が厳密なk-NNグラフと同等であり、探索精度を高く保つことができるという発見に基づくものである。
【００１７】
ランダムグラフを作成するための時間計算量は他の処理に比べると非常に小さい。本発明に係る技術では、このランダムグラフ中に僅かに近傍性を挿入するだけであるため、非常に少ない時間計算量で部分近傍グラフを構築することができる。
【００１８】
以下、図面を参照して本発明の実施の形態（本実施の形態）を詳細に説明する。以下で説明する実施の形態は一例に過ぎず、本発明が適用される実施の形態は、以下の実施の形態に限られるわけではない。
【００１９】
（システム構成）
図１は、本実施の形態におけるグラフ索引型類似探索システムの構成図である。図１を用いてグラフ索引型類似探索システムを説明する。
【００２０】
図１に示すように、グラフ索引型類似探索システムは、グラフ構築部１００と探索実行部２００を有する。
【００２１】
探索実行前に、探索対象データ（被探索オブジェクト集合とも呼び、オブジェクト集合の部分集合である）とオブジェクトペア間に定義された関係性尺度とがグラフ構築部１００に入力され、索引であるグラフ（部分的近傍グラフと呼ぶ）が構築される。構築された部分的近傍グラフは、探索実行部２００に入力される。ここで、関係性尺度とは、２つのオブジェクトの間の近傍性を評価可能な尺度のことであり、非類似度（Kullback-Leibler divergence, Bregman divergenceに代表されるdivergence等）又は距離空間の公理を満たす距離（Euclidean distance等）、並びに類似度（cosine similarity等）などである。以降、関係性尺度の１つである距離を用いて説明する。
【００２２】
探索実行時には、クエリオブジェクトとクエリタイプ等が探索実行部２００に入力され、クエリタイプに基づいて探索が実行される。探索前に構築されたグラフは探索実行部２００で実行時に索引として利用される。ここで、クエリオブジェクトとはオブジェクト集合の１つ又は複数である。クエリタイプ等とは、クエリオブジェクトから距離rを半径とした超球の内部に存在する被探索オブジェクト集合を列挙するレンジクエリ（range query）やクエリオブジェクトから距離の昇順にk個のオブジェクトを求めるk最近傍クエリ（k-nearest neighbor query: k-NN query）のことである。レンジクエリとk-NNクエリとの各々はrとkとのパラメータも同時に入力される。
【００２３】
探索実行部２００により実行されるグラフ上の探索では、初めに初期頂点（被探索オブジェクトに対応し、以降、オブジェクトと頂点とを同一視する）をグラフ上の頂点からランダムに選ぶ。クエリオブジェクトに近い頂点から探索を開始する方が探索終了までに要する計算量が少ないが、大規模高次元データ（intrinsic dimensionalityを含めた次元に基づく意味での高次元）から構築されたk-NNグラフ族（k-DRグラフを含む）は平均最短パス長が非常に小さいことが知られているため（例えば非特許文献１）、任意の頂点を開始点としても良い。
【００２４】
探索実行部２００により実行される探索には、隣接頂点（ある頂点と辺で接続され辿ることが可能な頂点）のうちで最もクエリとの距離が小さく、且つ、現在の頂点とクエリとの距離よりも小さい距離に存在する、即ち、近い頂点に移動するという操作を繰り返し、現在の頂点がその隣接頂点のどれよりもクエリに近ければ、探索を終了するという貪欲探索法（greedy search）を用いる方法がある。また、次に移動する頂点を決定するための評価関数を導入することで一般化した最良優先探索法（best-first search）を用いても良い。これらの方法でクエリタイプに応じた解を発見し、探索結果として出力する。
【００２５】
図２はグラフ構築部１００の構成図である。図２に示すとおり、グラフ構築部１００の主要な構成要素は、ランダムグラフ生成部１１０と近傍グラフ生成部１２０である。また、グラフ構築部１００は入力部１３０と出力部１４０を有する。ランダムグラフ生成部１１０と近傍グラフ生成部１２０は、同時に連携しながら動作してもよいし、個別に分離して動作してもよく、そのどちらを実行するかはグラフ構築部１００の実装形態に依存する。グラフ構築部１００の動作詳細は後述する。なお、グラフ構築部１００をグラフ生成装置と称しても良い。
【００２６】
上述したグラフ索引型類似探索システム全体、グラフ構築部１００、探索実行部２００はいずれも、コンピュータ等の装置に本実施の形態で説明する処理内容を記述したプログラムを実行させることにより実現可能である。すなわち、当該装置が有する機能は、コンピュータに内蔵されるＣＰＵやメモリ等のハードウェア資源を用いて、当該装置で実施される処理に対応するプログラムを実行することによって実現することが可能である。上記プログラムは、コンピュータが読み取り可能な記録媒体（可搬メモリ等）に記録して、保存したり、配布したりすることが可能である。また、上記プログラムをインターネットや電子メール等、ネットワークを通して提供することも可能である。
【００２７】
図３は、上記装置（グラフ索引型類似探索システム、グラフ構築部１００、又は探索実行部２００）のハードウェア構成例を示す図である。図３の装置は、それぞれバスＢで相互に接続されているドライブ装置１０００、補助記憶装置１００２、メモリ装置１００３、ＣＰＵ１００４、インタフェース装置１００５、表示装置１００６、及び入力装置１００７等を有する。なお、表示装置１００６及び入力装置１００７を備えないこととしてもよい。
【００２８】
当該装置での処理を実現するプログラムは、例えば、ＣＤ−ＲＯＭ又はメモリカード等の記録媒体１００１によって提供される。プログラムを記憶した記録媒体１００１がドライブ装置１０００にセットされると、プログラムが記録媒体１００１からドライブ装置１０００を介して補助記憶装置１００２にインストールされる。但し、プログラムのインストールは必ずしも記録媒体１００１より行う必要はなく、ネットワークを介して他のコンピュータよりダウンロードするようにしてもよい。補助記憶装置１００２は、インストールされたプログラムを格納すると共に、必要なファイルやデータ等を格納する。
【００２９】
メモリ装置１００３は、プログラムの起動指示があった場合に、補助記憶装置１００２からプログラムを読み出して格納する。ＣＰＵ１００４は、メモリ装置１００３に格納されたプログラムに従って当該装置に係る機能を実現する。インタフェース装置１００５は、ネットワークに接続するためのインタフェースとして用いられる。表示装置１００６はプログラムによるＧＵＩ（Ｇｒａｐｈｉｃａｌ  Ｕｓｅｒ  Ｉｎｔｅｒｆａｃｅ）等を表示する。入力装置１００７はキーボード及びマウス、ボタン、又はタッチパネル等で構成され、様々な操作指示を入力させるために用いられる。
【００３０】
（ランダムグラフに頂点の近傍性を導入する方法について）
前述したように、本実施の形態では、ランダムグラフの中に頂点の近傍性が導入される。図４〜図６を参照して、その方法の例として、第１の方法（頂点着目型）、第２の方法（近似近傍導入型）、及び第３の方法（辺着目型）を説明する。ここでは近傍性を、ある頂点から距離の近いk個の頂点を選択し辺で接続するk近傍として説明する。他には、ある頂点から距離r以内に存在する頂点に辺を張るr近傍もある。なお、「近傍辺」は、その意味として、k近傍頂点（k最近傍頂点と呼んでもよい）に接続された辺と、r近傍頂点に接続された辺を含むものとする。
【００３１】
第１の方法は、頂点に着目し、ある頂点に関しては厳密にk近傍を求め、そのk近傍に辺を張り、残りについてはランダムに辺を張る方法である。第１の方法により生成された部分的近傍グラフにおいては、図４に示すように、近傍辺のみを有する頂点である近傍性頂点と、ランダム辺のみを有する頂点が存在する。
【００３２】
第２の方法は、NN-Descent法を早い段階で停止する方法である。この方法では、k近傍の辺が張られることもあるが、それ以外の辺が張られることもある。但し、前述のk近傍以外の辺もランダムに選択された辺とは異なり、ある程度距離の近い頂点に張られた辺になる。すなわち、第２の方法により生成された部分的近傍グラフにおいては、図５に示すように、近似近傍辺のみが接続された頂点、近似近傍辺と近傍辺が接続された頂点、及び、近似近傍辺と近傍辺とランダム辺が接続された頂点等が存在する。NN-Descent法の他の利用方法としては、第１の方法と同様にある頂点に着目し、その頂点に接続された頂点に関して局所的に近傍性を確保する方法がある。
【００３３】
第３の方法では、辺に着目する。探索対象のn個の頂点のそれぞれについて、当該頂点と他の頂点とを接続している出力辺（out-link, out-going edge, out-edge）のうちk'本(k'<k)の出力辺はk近傍の頂点のうちのいずれかの頂点に接続された辺であり、残りの出力辺はn-1個の頂点からランダムに選択された頂点に接続された辺になるように部分的近傍グラフが生成される。k'は、kより小さい値であれば頂点毎に異なっていてもよい。また、各頂点に接続されている出力辺の数はk本とするが、k'よりも大きければk本でなくてもよい。第３の方法により生成された部分的近傍グラフにおいては、図６に示すように、各頂点において、ランダム辺と近傍辺が接続されている。
【００３４】
すなわち、第３の方法におけるデータ構造は、グラフ索引型類似探索システムにおいて探索対象データの中から探索条件を満たすデータを探索する処理に用いられる索引を表すグラフのデータ構造であって、ｎ個の頂点から成る頂点集合と当該頂点集合に属する頂点の間に設定された無向辺の集合とから構成され、前記n個の頂点の各々は、前記探索対象データに対応付けられており、前記頂点の間に設定された無向辺は、頂点間に定義された関係性尺度に基づき張られた出力辺を無向化した辺であって、前記n個の頂点のそれぞれについて、当該頂点に接続される出力辺のうち、予め定めた整数kより小さいk´本の出力辺はk近傍となる頂点に接続されており、当該k´本の出力辺以外の出力辺は、当該頂点を除くn-1個の頂点の中からランダムに選ばれた頂点に接続されており、前記k近傍となる頂点とは、前記探索対象データの中で当該頂点に対応する探索対象データとの関係性尺度に基づいた関係が強い順に選択されたk個の探索対象データの各々に対応する頂点であることを特徴とするデータ構造である。
【００３５】
次に、グラフ構築部１００の動作の詳細を第１の方法と第２の方法を例として用いて説明する。以下、第１の方法を使用する例を第１の実施の形態とし、第２の方法を使用する例を第２の実施の形態とする。
【００３６】
（第１の実施の形態）
グラフ構築部１００には、入力部１３０により、n個のオブジェクトから成るデータオブジェクト集合（頂点集合とも呼ぶ）とデータ関係性尺度としての「距離」が入力される。なお、n、kはいずれも0以上の整数であり、kはn以下である。
【００３７】
グラフ構築部１００における近傍グラフ生成部１２０は、入力されたn個のオブジェクトから成るデータオブジェクト集合からm個（m<n）のオブジェクト（頂点）を選択し、その各々について残りのn-1個と距離計算を行い、k最近傍のオブジェクトを求める。続いて、近傍グラフ生成部１２０は、選択されたm個の頂点から各々のk最近傍頂点に有向辺を張る。残りの(n-m)個の頂点の各々については、ランダムグラフ生成部１１０が、ランダムに選択したk個の頂点に有向辺を張る。最後に、有向辺を無向化する。無向化の際には、有向辺を双方向に辿れるようにし、二重辺ができた場合には１つの無向辺にし、単純グラフとする、即ち、対称k-NNグラフ（symmetric k-NN graph）とする。このグラフを部分k-NNグラフ（partial k-NN graph）と呼ぶ。
【００３８】
グラフ構築部１００は、部分k-NNグラフを構築する過程で、非特許文献１に記載のk-DRNN graphの生成方法を用いることで部分k-DRグラフを構築することもできる。部分k-NNグラフと部分k-DRグラフはいずれも部分的近傍グラフの例である。生成された部分的近傍グラフのデータは出力部１４０から出力される。
【００３９】
また、グラフ構築部１００は、構築した部分的近傍グラフに対し、任意の頂点間が辺で辿れるかどうかの到達性をチェックし、到達できない頂点の組がある場合（グラフが分離している場合）には、kを大きくして再度部分的近傍グラフの構築を行うこととしてもよい。また、グラフ構築部１００は、構築した部分的近傍グラフに対し、到達性に影響しない辺を取り除くこととしてもよい。分離したグラフを再構築する他の方法としては、分離したグラフ間に辺を追加する方法がある。辺の追加方法は、分離したグラフ間からランダムに頂点ペアを選択して辺を追加する方法や互いのグラフのうち最近接する頂点間に辺を追加する方法などがある。また、分離したグラフをそのまま索引として使用することもできる。例えば、探索実行時に、分離したグラフ毎に探索開始頂点を設定し、並列探索（並列処理）実行を行い、各々の探索結果を融合する方法である。
【００４０】
＜性能評価＞
上述した手続きにより構築した部分k-NNグラフの探索性能を人工的に作成したデータを用いて評価した。16次元ユークリッド空間の単位超球（半径1）上に105個のオブジェクト（16次元ベクトルであり頂点でもある）を無作為（ランダム）に生成し（n=105）、部分k-NNグラフを構築した。性能評価のため、構築の際にk最近傍頂点への辺のみを有する頂点の数(m)をパラメータとした。結果、ランダムグラフ(m=0)からk-NNグラフ(m=n)までを構築した。グラフ構築のための時間計算量を距離計算回数で評価する。ランダムグラフを作成する計算量は0とした。このとき、部分k-NNグラフ構築に要する距離計算回数はm(n-1)である。
【００４１】
構築した各グラフを索引として探索を実行した。探索には、異なる104個のクエリオブジェクト（クエリベクトル又はクエリ頂点、単にクエリと呼ぶ）を用い、各クエリに対して異なる10個の探索開始頂点を用いた。即ち、105回の探索試行を行った。
【００４２】
図７（ａ）、（ｂ）はクエリに対する最近傍頂点（1-NN）を見つける最良優先探索を行った結果を示す。最良優先探索は、クエリオブジェクト（クエリ頂点又は単にクエリと呼ぶ）と距離計算を実行した頂点のうち、その隣接頂点とクエリとの距離計算が行われていない頂点であって、最もクエリに近い頂点に移動する探索法である。図７（ａ）、（ｂ）の横軸は再現率（recall）を、縦軸は平均距離計算回数率を表す。但し、recall=（k最近傍頂点と接続された辺の総数）／（全ての辺の数）である。recall=0はランダムグラフ、recall=1はk-NNグラフのことである。また、平均距離計算回数率は、105回の探索試行の結果、1探索試行時に、予め求められていたクエリに最も近い頂点を見つけるまでに計算された頂点間距離の回数の平均値を全頂点数で割った値であり、平均探索コストである。k-NNグラフのkはk=20,30,40,50と変化させている。図７（ａ）は両軸が線形表示であり、図７（ｂ）は縦軸が対数表示である。図示のとおり、recallが小さい領域であっても平均探索コストが非常に小さくなることが分かる。
【００４３】
次に、近似アルゴリズムである多頂点開始貪欲探索法（multiple-start greedy search algorithm：MSGS）を用いて評価した（非特許文献２参照）。実験データは前述の最良探索法の場合と同じである。クエリ数は103個とし、１探索試行あたりの探索開始点数（L）をパラメータとし、L=8,16,32を用いた。MSGSの場合、クエリに対して必ずしも正解を得られるとは限らず、確率的に保証されている。そのため、評価項目は探索に要した時間計算量（探索コスト）と探索が成功した割合（探索成功率）の２項目で評価する必要がある。MSGSは複数の頂点から同時に貪欲探索を開始し（各々の探索を探索タスクと呼ぶ）、全ての探索タスクが終了した時点で終了することから、MSGSの時間計算量は最も遅く探索タスクが終了したもの、即ち、同時に開始した探索タスクのうち最も距離計算回数が多いもの（最悪値）で評価される。ここで同時に開始される貪欲探索は、分散処理で行っても良いし、多数コアを備えるＣＰＵで共有メモリを用いたスレッド並列性を用いた処理で行っても良い。
【００４４】
図８（ａ）、（ｂ）は多頂点開始貪欲探索法を用いた場合の再現率と平均貪欲探索成功率とを表す図である。（ａ）はk=50の場合、（ｂ）はk=20の場合である。recallが小さい領域、即ち、ランダムネスが高い領域であっても、探索成功率が高いことが分かる。例えば、図８（ａ）のL=32の場合、recall=0.2のとき平均貪欲探索成功率は0.9を超える。
【００４５】
図９（ａ）、（ｂ）は多頂点開始貪欲探索法を用いた場合の再現率と平均探索コスト率とを表す図である。縦軸は％表示であり、0.1は被探索頂点数nの1/1000であることを表している。ランダムグラフからk-NNグラフまでほぼ一定の低コストであることが分かる。
【００４６】
図８、９は、部分k-NNグラフがランダムネスが高いグラフであっても厳密なk-NNグラフを用いた場合と同様の高い探索成功率と低探索コストとを実現したことを示している。
【００４７】
（第２の実施の形態）
次に、第２の実施の形態を説明する。第２の実施の形態における部分的近傍グラフの生成動作は、近似グラフ生成部１２０が行ってもよいし、近似グラフ生成部１２０とランダムグラフ生成部１１０が連携して行うこととしてもよい。いずれにしてもグラフ構築部１００が部分的近傍グラフの生成を行う。
【００４８】
グラフ構築部１００には、入力部１３０により、n個のオブジェクトから成るデータオブジェクト集合（頂点集合とも呼ぶ）とデータ関係性尺度としての「距離」が入力される。まず、グラフ構築部１００は、入力されたオブジェクト集合から、非特許文献４に示されているNN-Descent法を用いて、近似k-NNリスト（近似有向k-NNグラフ）を作成する。NN-Descentにはbasic algorithmとfull algorithmとがあり、full algorithmはパラメータρ（Rho）0<ρ<=1を用いる。ρを大きくすると近似k-NNリストを作成する際に要する計算量は大きくなるが、反復アルゴリズムであるNN-Descent法が収束条件を充足した際の近似精度は向上する。収束条件を充足した場合であっても近似k-NNリストであり、厳密なk-NNリストではない。本実施の形態では、ランダムネスを高くするため、反復アルゴリズムの収束条件を著しく緩和する、又は、反復アルゴリズムを強制的に途中で終了する。
【００４９】
次に、グラフ構築部１００は、上述した処理により作成したランダムネスの高いk-NNリストを用いて、部分k-NNグラフ、又は非特許文献１に記載の方法を適用して部分k-DRグラフを構築する。この部分k-NNグラフ又は部分k-DRグラフを探索用索引として利用する。部分k-NNグラフと部分k-DRグラフはいずれも部分的近傍グラフの例である。生成された部分的近傍グラフは出力部１４０から出力される。
【００５０】
近似k-NNリストには頂点毎にk個の頂点の情報が含まれているので、グラフ構築部１００は、当該情報を用いて、部分k-NNグラフを下記のようにして作成することができる。
【００５１】
グラフ構築部１００は、入力されたn個の頂点からm個（m<n）の頂点を選択し、その各々について、近似k-NNリストのk個の頂点に有向辺を張る。残りの(n-m)個の頂点の各々については、ランダムに選択したk個の頂点に有向辺を張る。最後に、有向辺を無向化する。無向化の際には、有向辺を双方向に辿れるようにし、二重辺ができた場合には１つの無向辺にし、単純グラフとする。
【００５２】
＜NN-Descent法＞
ここで、グラフ構築部１００により実行されるNN-Descent法の処理の一例についてより詳細に説明する。
【００５３】
初めに、ここでのNN-Descent法の説明に使用する記号と用語を定義する。オブジェクトとそれらの関係性を頂点と有向辺を用いて有向グラフで表現するため、オブジェクトと頂点とを同一視し、同じ記号を用いて表す。全k近傍問題の対象であるオブジェクト(頂点)集合をVとし、そのオブジェクト(頂点)数n=|V|とする。頂点集合Vのうち、v∈Vからの距離（非類似度でもよい）が最も小さいk個の頂点をvのk最近傍頂点集合（以降、k近傍頂点集合とも呼ぶ）と呼び、Vの全ての頂点のk近傍頂点集合をリスト形式にまとめたものをk近傍リストと呼ぶ。頂点vのk頂点集合をB(v)、vのリバースk頂点集合をR(v)={u∈V|v∈B(u)}、vの隣接頂点集合をA(v)=B(v)∪R(v)とし、vの隣接頂点部分集合をAS(v)とする(AS(v)⊂=A(v))。また、Vの全ての頂点のk頂点集合及び隣接頂点部分集合をリスト形式にまとめたものをそれぞれB、ASとする。
【００５４】
図１０にV={1, 2, 3, 4, 5, 6}を用いた場合のB(v)、R(v)、A(v)を示す。頂点3に着目すると、リバースk頂点集合R(3)は、R(3)={u∈V|{3}∈B(u)}であるため、R(3)={4}となる。これは、グラフでは頂点3 へ有向辺を張っている頂点集合に該当する。頂点3の隣接頂点集合A(3)は、A(3)=B(3)∪R(3)={5}∪{4}= {4, 5}である。図１１に、記号をまとめて示している。
【００５５】
次に、NN-Descent法の基本的な考え方と処理手順の概要を説明する。NN-Descent法は、下記の式(1)の目的関数F(V)を最小にするB(v)を求める発見的方法と捉えることができる。
【００５６】
F(V)=Σv∈VΣu∈B(v)σ(v, u)  式(1)
但し、σ:V×V → Rは近傍性を評価する距離関数である。NN-Descent法は「近傍の近傍は近傍になりやすい」という性質を利用し、頂点vと距離計算を行う頂点集合を、次のように絞り込む。まず、各頂点vについて、全頂点から無作為に選択したk個の頂点を頂点集合B(v) とする。次に、頂点vの全ての隣接頂点集合の隣接頂点集合∪u∈A(v)A(u)の頂点と、vとの距離計算を行う。そして、現在のB(v)の頂点より近い頂点が存在する場合、その頂点とvから最も遠い頂点z(z∈B(v))とを置換する。以上の操作を全頂点について実行し、更にB(v)に変更がなくなるまで、操作を繰り返し行う。最終的に得られた各頂点のB(v)をリスト形式にしたものを、近似k近傍リストとする。基本的な考え方と処理手順は以上である。なお、本実施の形態では、「B(v)に変更がなくなるまで、操作を繰り返し行う」という条件は緩和されている。
【００５７】
この処理手順を素朴に実行すると、各頂点について「隣接頂点集合の隣接頂点集合」という空間的に広域な頂点との距離計算を必要とする。局所的かつ効率的な処理を行うために、NN-Descent法では、local join、sampling、early terminationを用いている。Local joinとは、頂点pの隣接頂点部分集合AS(p)に対し、全ての異なる頂点の組み合わせv、u∈AS(p)について距離を計算し、B(v)又はB(u) の更新を行うことである。例えば、図１２のグラフが与えられたとき(簡単のためAS(p)=A(p)とする)、pの隣接頂点v、u∈A(p)の距離計算と更新とを行うことは、vとその隣接頂点の隣接頂点uとの距離計算と更新とを行うことに相当する。T(v)= {u|v∈AS(p)∧u∈AS(p), p∈V}，即ち、v∈AS(p)となるpを中継点としたvの隣接頂点(p)の隣接頂点を要素として持つ集合を定義する。Local joinとT(v)との関係を図１２に示す。Local joinは、処理対象を局所的な頂点のみに限定するものである。
【００５８】
Samplingは、local joinを行う際に、予め設定されたパラメータρを用いて、対象頂点からρk個を無作為に選択し、それらの頂点についてのみ距離計算を行う方法である。Early terminationは、予め設定されたパラメータδを用いて、k近傍リストの更新回数（更新の量）がδkn未満である場合に、反復アルゴリズムを終了させる。ただし、本実施の形態では、当該条件は緩和され、より早期に反復アルゴリズムが終了する。条件を緩和するために、例えば、条件判定に用いる「δkn」として、「δkn」よりも大きな値を使用することが考えられる。
【００５９】
NN-Descent法の全体の流れを例を用いて説明する。図１３にNN-Descent 法の処理とデータの流れを、図１４に図１０のグラフを処理した際のB(v)の更新の流れを示す。なお、図１４では、パラメータk=1、ρ=2.0とした。Step 1で全頂点v∈Vについて、k(=1)頂点集合B(v)を頂点集合から無作為に選択し作成する(図１０のグラフに相当する)。Step 2でR(v)からsamplingを行い、その結果を用いてAS(v)を作成する。ここでは、AS(4)の作成を例に説明する。
【００６０】
まず、頂点4をk頂点集合に含むB(1)、B(2)、B(6)からR(4)={1, 2, 6} を作成する。次に、R(4)からρk(= 2.0×1=2)個の頂点を無作為に選択する。ここでは、頂点1, 2が選択されたものとする。最後に、R(4)のsampling結果とB(4)との和集合をAS(4)={1, 2, 3}とする。以上の処理を全頂点v∈Vについて行う。尚、頂点4以外の頂点では、|R(v)|≦2であるため、AS(v)=A(v)とする。Step 3では、各v∈Vでlocal joinを行う。ここでは、頂点3をAS(p)に含む頂点pでlocal joinを行い、B(3)を更新することを例に説明する。
【００６１】
頂点3をAS(p)に含む頂点pは、p=4、5である。頂点4でlocal joinを行ったときは、AS (4)={1, 2, 3}の全組み合わせの距離σ(1, 2)、σ(1, 3)、σ(2, 3)を計算し、B(1)、B(2)、B(3)の更新を、頂点5でlocal joinを行ったときは、AS(5) ={3, 6}の全組み合わせの距離σ(3,6)を計算し、B(3)とB(6)との更新を行う。即ち、頂点3とT(3)={1, 2, 6}との距離を計算し、B(3)の更新をすることと同じ操作が行われる。ここでは、頂点3に最も近い頂点を頂点2とし、B(3)={2}に更新されたものとした。以上の操作を全ての頂点について行った後、Step 4では、B(v)(∀v∈V)の更新回数がδkn 未満であるという条件が満たされれば、Bを近似k頂点リストとして出力する。前記以外の場合は、Step 2からStep 4を再度行う。
【００６２】
第２の実施の形態では、更新回数がδkn未満であるという条件が満たされる前に、処理を終了し、得られた近似k頂点リスト（近似k-NNリスト）を用いて部分k-NNグラフあるいは部分k-DRグラフを作成する。なお、上記のSamplingを行わない場合をbasic algorithmと呼び、Samplingを行う場合をfull algorithmと呼んでおり、Samplingを行わないbasic algorithmにおいても、更新回数がδkn未満であるという条件が満たされる前に、処理を終了し、得られた近似k頂点リスト（近似k-NNリスト）を用いて部分k-NNグラフあるいは部分k-DRグラフを作成する。
【００６３】
＜性能評価＞
第１実施の形態で利用した人工データ（16次元ユークリッド空間の単位超球上のオブジェクト集合）を用いて、前記のグラフ索引構築時の性能及び探索の性能を評価した。
【００６４】
図１５は、NN-Descent法を用いて近似20-NNリスト（k-NNリストのk=20の場合）を作成した場合のデータサイズ（オブジェクト数n）と距離計算回数との関係を表す図である。
【００６５】
両対数表示で傾き1.11の直線になっており、このデータサイズ領域ではnに関してn1.11の関数であることが分かる。素朴な方法の場合は、n(n-1)/2であり、nに関して最高次はn2であるため、NN-Descent法は計算量を大きく削減している。
【００６６】
図１６はNN-Descent法を用いて近似20-NNリスト（k-NNリストのk=20の場合）を作成した場合のデータサイズ（オブジェクト数n）と計算量（scan rate）との関係を表す図である。scan rateとは、距離計算回数／(n(n-1)/2)であり、素朴に厳密k-NNリストを作成した場合の距離計算回数に対する比率である。
【００６７】
図１７は、NN-Descent法により近似20-NNリストを作成した場合の計算量（scan rate）と辺の再現率（recall）との関係を表す図である。横軸のscan rateはアルゴリズムの反復回数に対応しており、反復を途中で強制的に終了することで、非常に小さい計算量で高いrecallの近似k-NNリストを作成できる。例えば、full algorithmでρ=0.5の場合、scan rate=0.022でrecall=0.77の近似k-NN(k=20)リストを作成することができる。このようにfull algorithmのρと反復回数を制御することで、少ないリスト作成計算量且つ高いrecallの近似近傍k-NNリストを作成することができる。
【００６８】
この近似近傍k-NNリストを用いて、部分k-NNグラフ又は部分k-DRグラフを構築する。k-NNリスト作成の計算量と比較して、k-NNリストからk-NNグラフ又はk-DRグラフを構築する計算量は無視できる。例として、full algorithmにおいてρ=0.5, 1.0に設定し、k=20の近似近傍k-NNリストを強制終了することなく作成し、そのリストを用いて部分k-NNグラフを構築した。
【００６９】
第１の実施の形態と同様に、最良優先探索を実行した結果を図１８（ａ），（ｂ）に示す。第１の実施の形態と比べると、ランダムネスが高いrecallが小さい領域で探索コスト率が小さく抑えられていることが分かる。一方、多頂点開始貪欲探索法（MSGS）を用いた場合の探索成功率を図１９（ａ），（ｂ）に示し、探索コスト率を図２０（ａ），（ｂ）に示す。これらに示すとおり、第１の実施の形態の場合と同様の傾向があることが分かる。
【００７０】
以上、ランダムグラフに近傍性を有する部分をわずかに設けたグラフで、グラフ構築計算量を小さく抑えながらも、グラフ索引探索の性能を厳密な近傍グラフを用いた性能とほぼ同程度にすることができた。
【００７１】
（実施の形態のまとめ）
以上、説明したとおり、本実施の形態により、n個のオブジェクトを探索対象のn個の頂点として入力する入力部と、前記n個の頂点を有するグラフであって、頂点間の辺として近傍辺と近傍辺以外の辺とを有する部分的近傍グラフを生成する生成部と、前記部分的近傍グラフを出力する出力部とを備えることを特徴とするグラフ生成装置が提供される。
【００７２】
前記生成部は、前記n個の頂点から選択されたnより小さいm個の頂点の各々について、k最近傍頂点を算出し、当該k最近傍頂点との間に辺を張り、残りのn-m個の頂点の各々について、ランダムに選択したk個の頂点との間に辺を張ることにより前記部分的近傍グラフを生成する、又は、前記n個の頂点に対し、反復アルゴリズムの収束条件を緩和したNN-Descent法の処理を行うことにより近似k-NNリストを作成し、当該近似k-NNリストから前記部分的近傍グラフを生成することとしてもよい。
【００７３】
また、本実施の形態により、グラフ生成装置が実行するグラフ生成方法であって、n個のオブジェクトを探索対象のn個の頂点として入力する入力ステップと、前記n個の頂点から、近傍辺に接続される頂点と、近傍辺以外の辺に接続される頂点とを有する部分的近傍グラフを生成する生成ステップと、前記部分的近傍グラフを出力する出力ステップとを備えることを特徴とするグラフ生成方法が提供される。
【００７４】
前記生成ステップにおいて、前記グラフ生成装置は、前記n個の頂点から選択されたnより小さいm個の頂点の各々について、k最近傍頂点を算出し、当該k最近傍頂点との間に辺を張り、残りのn-m個の頂点の各々について、ランダムに選択したk個の頂点との間に辺を張ることにより前記部分的近傍グラフを生成する、又は、前記n個の頂点に対し、反復アルゴリズムの収束条件を緩和したNN-Descent法の処理を行うことにより近似k-NNリストを作成し、当該近似k-NNリストから前記部分的近傍グラフを生成することとしてもよい。
【００７５】
また、本実施の形態により、グラフ索引型類似探索システムに用いるグラフのデータ構造であって、探索対象のn個の頂点のそれぞれについて、当該頂点と他の頂点とを接続する出力辺のうち、kより小さいk'本の出力辺はk近傍となる頂点に接続されており、当該k'本の出力辺以外の出力辺は、n-1個の頂点からランダムに選ばれた頂点に接続されていることを特徴とするデータ構造が提供される。
【００７６】
以上、本実施の形態について説明したが、本発明はかかる特定の実施形態に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形・変更が可能である。
【符号の説明】
【００７７】
１００  グラフ構築部
２００  探索実行部
１１０  ランダムグラフ生成部
１２０  近傍グラフ生成部
１３０  入力部
１４０  出力部
１０００  ドライブ装置
１００１  記録媒体
１００２  補助記憶装置
１００３  メモリ装置
１００４  ＣＰＵ
１００５  インタフェース装置
１００６  表示装置
１００７  入力装置
【図１】
2019061300.tif 000003
【図２】
2019061300.tif 000004
【図３】
2019061300.tif 000005
【図４】
2019061300.tif 000006
【図５】
2019061300.tif 000007
【図６】
2019061300.tif 000008
【図７】
2019061300.tif 000009
【図８】
2019061300.tif 000010
【図９】
2019061300.tif 000011
【図１０】
2019061300.tif 000012
【図１１】
2019061300.tif 000013
【図１２】
2019061300.tif 000014
【図１３】
2019061300.tif 000015
【図１４】
2019061300.tif 000016
【図１５】
2019061300.tif 000017
【図１６】
2019061300.tif 000018
【図１７】
2019061300.tif 000019
【図１８】
2019061300.tif 000020
【図１９】
2019061300.tif 000021
【図２０】
2019061300.tif 000022