(57)【要約】【課題】ｋ最近傍グラフを用いた最近傍検索は、高い検索精度を実現し得る一方、制限された数の有向エッジでしかノード間が接続されないため分離したグラフ、すなわち探索においてたどれない経路が生じてしまう。これにより、検索漏れや計算処理量の増加が生じるおそれがある。【解決手段】ｋ最近傍グラフにおいて一つの有向エッジのみによって接続されているノード間にすでに接続されている有向エッジと逆向きの有向エッジである逆向エッジを付加することで改変する改変ｋ最近傍グラフ生成し、当該改変ｋ最近傍グラフを用いて探索する改変ｋ最近傍グラフ生成装置を提供する。【選択図】図１
2017021493.tif 000002
【特許請求の範囲】
【請求項１】
ベクトル空間で定義される複数のノードを保持するノード保持部と、
保持される各ノードが前記ベクトル空間内でｋ個の最近傍ノードと有向エッジにより接続されて構成されるｋ最近傍グラフを生成するｋ最近傍グラフ生成部と、
生成されたｋ最近傍グラフにおいて、一つの有向エッジのみによって接続されているノード間にすでに接続されている有向エッジと逆向きの有向エッジである逆向エッジを付加することで改変されたｋ最近傍グラフである改変ｋ最近傍グラフを生成する改変ｋ最近傍グラフ生成部と、
を有する改変ｋ最近傍グラフ生成装置。
【請求項２】
自然数ｋが下記式（１）を満たし、生成される一のグラフ内にて複数の値をとりうる変動数とした場合に、
ベクトル空間で定義される複数のノードを保持するノード保持部と、
保持される各ノードが前記ベクトル空間内でｋ個の最近傍ノードと有向エッジにより接続されて構成される変動ｋ最近傍グラフを生成する変動ｋ最近傍グラフ生成部と、
生成された変動ｋ最近傍グラフにおいて、一つの有向エッジのみによって接続されているノード間にすでに接続されている有向エッジと逆向きの有向エッジである逆向エッジを付加することで改変された変動ｋ最近傍グラフである改変変動ｋ最近傍グラフを生成する改変変動ｋ最近傍グラフ生成部と、
を有する改変変動ｋ最近傍グラフ生成装置。
式（１）  a  ≦  ｋ  ≦  ｂ
a、b：自然数
【請求項３】
生成された改変ｋ最近傍グラフを構成するノードのうち、自身を始点とする有向エッジの数が所定の閾値を超えるノードについて、閾値を超えた分の有向エッジを長い順に前記閾値を超えない有向エッジ数に至るまで削除する第一エッジ削除部を、さらに有する請求項１に記載の改変ｋ最近傍グラフ生成装置。
【請求項４】
生成された改変変動ｋ最近傍グラフを構成するノードのうち、自身を始点とする有向エッジの数が所定の閾値を超えるノードについて、閾値を超えた分の有向エッジを長い順に前記閾値を超えない有向エッジ数に至るまで削除する第二エッジ削除部を、さらに有する請求項２に記載の改変変動ｋ最近傍グラフ生成装置。
【請求項５】
前記ｋ最近傍グラフに代えて近似ｋ最近傍グラフとした請求項１又は３に記載の改変ｋ最近傍グラフ生成装置。
【請求項６】
ベクトル空間で定義される複数のノードを保持するノード保持部を有する改変ｋ最近傍グラフ生成装置の動作方法であって、
保持される各ノードが前記ベクトル空間内でｋ個の最近傍ノードと有向エッジにより接続されて構成されるｋ最近傍グラフを生成するｋ最近傍グラフ生成ステップと、
生成されたｋ最近傍グラフにおいて、一つの有向エッジのみによって接続されているノード間にすでに接続されている有向エッジと逆向きの有向エッジである逆向エッジを付加することで改変されたｋ最近傍グラフである改変ｋ最近傍グラフを生成する改変ｋ最近傍グラフ生成ステップと、
を有する改変ｋ最近傍グラフ生成装置の動作方法。
【請求項７】
ベクトル空間で定義される複数のノードを保持するノード保持部を有する改変ｋ最近傍グラフ生成装置を動作させるプログラムであって、
保持される各ノードが前記ベクトル空間内でｋ個の最近傍ノードと有向エッジにより接続されて構成されるｋ最近傍グラフを生成するｋ最近傍グラフ生成ステップと、
生成されたｋ最近傍グラフにおいて、一つの有向エッジのみによって接続されているノード間にすでに接続されている有向エッジと逆向きの有向エッジである逆向エッジを付加することで改変されたｋ最近傍グラフである改変ｋ最近傍グラフを生成する改変ｋ最近傍グラフ生成ステップと、
を計算機に実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、高次元ベクトルデータの探索をするためのグラフ構造のインデックスの生成を行う技術に関する。
【背景技術】
【０００２】
高次元空間におけるベクトルデータの近傍検索は、画像検索や音声検索などで活用されている。近傍検索を行うにあたり、各ベクトルデータの近傍（隣接データ）を定義したグラフ構造のインデックスが直感的で理解しやすく近傍検索の索引として用いられている。
【０００３】
このようなグラフ構造のインデックス生成の手法の一つとしてｋ最近傍グラフがある。この手法は各ノード（ベクトルデータ）からｋ個の最近傍のノードへの有向エッジで接続されているグラフ構造のインデックスである。そして、このように接続されたエッジをたどりながら、例えば指定されたオブジェクトと最も類似するオブジェクトを検索する。ｋ最近傍グラフの生成や更新、ｋ最近傍グラフを用いた最近傍検索に関する技術としては、特許文献１や特許文献２などがある。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００１−５２０２４号公報
【特許文献２】特開２０１１−９０３５１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
ｋ最近傍グラフを用いた最近傍検索は、ノード間のエッジ数をｋ個の最近傍に制限するため少ない距離計算回数で高い検索精度を実現し得る。一方、制限された数の有向エッジでしかノード間が接続されないため分離したグラフ、すなわち探索においてたどれない経路が生じてしまう。これにより、探索漏れが生じたり遠回りをした探索による計算処理量の増加が生じたりするおそれがある。
【課題を解決するための手段】
【０００６】
そこで、上記課題を解決するために本発明において、以下の改変ｋ最近傍グラフ生成装置などを提供する。すなわち、ベクトル空間で定義される複数のノードを保持するノード保持部と、保持される各ノードが前記ベクトル空間内でｋ個の最近傍ノードと有向エッジにより接続されて構成されるｋ最近傍グラフを生成するｋ最近傍グラフ生成部と、生成されたｋ最近傍グラフにおいて、一つの有向エッジのみによって接続されているノード間にすでに接続されている有向エッジと逆向きの有向エッジである逆向エッジを付加することで改変されたｋ最近傍グラフである改変ｋ最近傍グラフを生成する改変ｋ最近傍グラフ生成部と、を有する改変ｋ最近傍グラフ生成装置を提供する。
【０００７】
また、上記構成を備え、生成された改変ｋ最近傍グラフを構成するノードのうち、自身を始点とする有向エッジの数が所定の閾値を超えるノードについて、閾値を超えた分の有向エッジを長い順に前記閾値を超えない有向エッジ数に至るまで削除する第一エッジ削除部を、さらに有する改変ｋ最近傍グラフ生成装置も提供する。また、上記いずれかの改変ｋ最近傍グラフ生成装置において、ｋ最近傍グラフに代えて近似ｋ最近傍グラフとした改変ｋ最近傍グラフ生成装置を提供する。
【発明の効果】
【０００８】
上記のような構成を採用する改変ｋ最近傍グラフ生成装置により、従来のｋ最近傍グラフをインデックスとする最近傍検索よりも、検索精度と検索速度に優れる最近傍検索を行うことができる。
【図面の簡単な説明】
【０００９】
【図１】実施形態１の改変ｋ最近傍グラフ生成装置の機能ブロックの一例を示すブロック図
【図２】ｋ＝３として作成したｋ最近傍グラフの一部とキーノードの一例を示す概念図
【図３】ｋ最近傍グラフを用いて最近傍検索を行う態様を示す概念図
【図４】改変ｋ最近傍グラフ生成部による逆向エッジ付加の態様の一例を示す概念図
【図５】実施形態１の改変ｋ最近傍グラフ生成装置のハードウェア構成の一例を表す概略図
【図６】実施形態１の改変ｋ最近傍グラフ生成装置における処理の流れの一例を表すフロー図
【図７】実施形態２の改変ｋ最近傍グラフ生成装置の機能ブロックの一例を示すブロック図
【図８】第一エッジ削除部によりエッジを削除する一例を示す概念図
【図９】第一エッジ削除部によりエッジを削除する他の例を示す概念図
【図１０】実施形態２の改変ｋ最近傍グラフ生成装置における処理の流れの一例を表すフロー図
【図１１】試験結果を示すグラフ
【発明を実施するための形態】
【００１０】
以下、本発明の実施の形態について、添付図面を用いて説明する。なお、本発明は、これら実施形態に何ら限定されるべきものではなく、その要旨を逸脱しない範囲において、種々なる態様で実施し得る。
【００１１】
実施形態１は、主に請求項１、３、４、５などに関する。実施形態２は、主に請求項２、３、４、５などに関する。
＜実施形態１＞
＜概要＞
【００１２】
本実施形態の改変ｋ最近傍グラフ生成装置は、生成したｋ最近傍グラフにおいて、一つの有向エッジのみによって接続されているノード間にかかる有向エッジと逆向きのエッジを付加してｋ最近傍グラフを改変することに特徴を有する。このように改変した改変ｋ最近傍グラフを用いることにより、最近傍検索の検索精度及び検索速度の向上を図ることができる。
＜構成＞
【００１３】
図１は、本実施形態の改変ｋ最近傍グラフ生成装置の機能ブロックの一例を示すブロック図である。なお、以下に記載する本装置の機能ブロックは、ハードウェア及びソフトウェアの組み合わせとして実現され得る。具体的には、コンピュータを利用するものであれば、ＣＰＵ（中央演算装置）や主メモリ、システムバス、あるいは二次記憶装置（ハードディスクドライブや不揮発性メモリ、ＣＤやＤＶＤなどの記憶メディアとそれらメディアの読取ドライブなど）、情報入力に利用される入力デバイス、表示装置、その他の外部周辺装置などのハードウェア構成部、またその外部周辺装置用のインターフェース、通信用インターフェース、それらハードウェアを制御するためのドライバプログラムやその他アプリケーションプログラム、ユーザ・インターフェース用アプリケーションなどが挙げられる。そして主メモリ上に展開したプログラムに従ったＣＰＵの演算処理によって、入力デバイスやその他インターフェースなどから入力され、メモリやハードディスク上に保持されているデータなどが加工、蓄積されたり、上記各ハードウェアやソフトウェアを制御するための命令が生成されたりする。あるいは本装置の機能ブロックは専用ハードウェアによって実現されてもよい。また、本装置は一つのハードウェアやソフトウェアにより構成される場合に限られず、複数のハードウェアやソフトウェアの組み合わせによって構成されてもよく、ネットワークを介在したサーバ装置を含んで構成されてもよい。
【００１４】
また、この発明は装置として実現できるのみでなく、方法としても実現可能である。また、このような発明の一部をソフトウェアとして構成することができる。さらに、そのようなソフトウェアをコンピュータに実行させるために用いるプログラム、及びプログラムを固定した記録媒体も、当然にこの発明の技術的な範囲に含まれる（本明細書の全体を通じて同様である）。
【００１５】
図１に示すように、本実施形態の「改変ｋ最近傍グラフ生成装置」（０１００）は、「ノード保持部」（０１０１）と、「ｋ最近傍グラフ生成部」（０１０２）と、「改変ｋ最近傍グラフ生成部」（０１０３）とを有する。
【００１６】
「ノード保持部」（０１０１）は、ベクトル空間で定義される複数のノード改変ｋ最近傍グラフ生成装置を保持する機能を有する。ノードは高次元のベクトルデータであり、例えば、画像や音声などの特徴量が挙げられる。
【００１７】
キーノードは、本装置に対して例えばクライアント端末から検索クエリを受付けた場合に、探索の基準となるノードとして定義されるノードである。例えば、類似画像検索においては、指定された画像を表わす画像特徴量を抽出してキーノードとして定義する。
【００１８】
「ｋ最近傍グラフ生成部」（０１０２）は、保持される各ノードが前記ベクトル空間内でｋ個の最近傍ノードと有向エッジにより接続されて構成されるｋ最近傍グラフを生成する機能を有する。
【００１９】
ｋ最近傍グラフ生成部は、各ノードのベクトルデータに基づき距離をインデックスの基準としてグラフを生成する。このｋ最近傍グラフの生成は、各ノードの近傍にあるノードのうち最も近傍にあるｋ個のノードを有向エッジで接続することで作成する。なお、有向エッジとは単一の方向を有するエッジである。したがって、一つの有向エッジでのみ接続されるノード間では、探索の際にはその単一の方向にしかたどることができない。なお、最近傍検索及びｋ最近傍グラフの理論については、特許文献１及び２などに開示されているように公知のものであり、詳細な説明については省略する。
【００２０】
「改変ｋ最近傍グラフ生成部」（０１０３）は、生成されたｋ最近傍グラフにおいて、一つの有向エッジのみによって接続されているノード間にすでに接続されている有向エッジと逆向きの有向エッジである逆向エッジを付加することで改変されたｋ最近傍グラフである改変ｋ最近傍グラフを生成する機能を有する。
【００２１】
図２は、ｋ＝３として作成したｋ最近傍グラフの一部を示す概念図である。図中において黒丸で示しているのがノードであり、矢印で示しているのが有向エッジである。図示するように双方を指す有向エッジによって互いに接続されるノードがある一方で、一つの有向エッジによってのみ接続される「ノードＡ」（０２０１）及び「ノードＢ」（０２０２）も存在する。
【００２２】
図３は、図２に示したｋ最近傍グラフを用いて最近傍検索を行う態様を示す概念図である。図中において白丸で示しているのは、「キーノード」（０３０３）である。なお、キーノードは、検索装置に対して例えばクライアント端末から検索クエリを受付けた場合に、探索の基準となるノードとして定義されるノードである。例えば、類似画像検索においては、指定された画像を表わす画像特徴量を抽出してキーノードとして定義する。探索が「ノードＣ」（０３０４）の方から進んでいる場合、各ノードにおいて指定されたキーノードに最も近いノードをｋ個の近傍ノードから選択していくと、探索の経路は「ノードＡ」（０３０１）をたどることになる。ノードＡにおいて「キーノード」（０３０３）に最も近いｋ個のノードに「ノードＢ」（０３０２）が含まれ得るが、ノードＡからノードＢへ向く有向エッジは存在しない。したがって、ノードＡからノードＢへの直接的な経路がなく、結果としてキーノードに近いノードを検索結果として得られない場合や、得られたとしても多くの計算量が上乗せされる場合が生じる。
【００２３】
そこで、図４に示すように、「ノードＡ」（０４０１）から「ノードＢ」（０４０２）へ向かう有向エッジである逆向エッジを付加する。この逆向エッジの付加により、ノードＡからノードＢへの探索経路が繋がり、「キーノード」（０４０３）へ近づくことが可能となる。改変ｋ最近傍グラフ生成部は、上記のような一の有向エッジによってのみ接続されるノードのすべてに対して逆向エッジを付加する。
【００２４】
このように逆向エッジを付加することで改変されたグラフを改変ｋ最近傍グラフという。改変ｋ最近傍グラフ生成部は、改変ｋ最近傍グラフを保持するとともにノード保持部へ新たなノードが追加された場合に改めてｋ最近傍グラフを生成し、さらに逆向エッジ付加による改変を行うよう構成することが好ましい。
【００２５】
なお、ｋ最近傍グラフの生成と、生成されたｋ最近傍グラフを逆向エッジの付加により改変することを、それぞれ説明してきたが、ｋ最近傍グラフの生成を行いつつ逆向エッジを付加しながら改変ｋ最近傍グラフの生成を行うように構成してもよい。すなわち、ｋ最近傍グラフ生成部と改変ｋ最近傍グラフ生成部とを一体的に構成してもよい。
【００２６】
なお、本実施形態の改変ｋ最近傍グラフ生成装置の構成に、さらに、改変ｋ最近傍グラフを用いてキーノードの最近傍検索ノードを探索する探索部を加えてもよい。探索部による探索は、改変ｋ最近傍グラフを用いることの他は従来の最近傍探索と同様である。すなわち、例えば任意に定めたノードを探索の起点とし、起点ノードと有向エッジにより接続される近傍のノードとキーノードとの距離を計算し、それらの近傍ノードのうちキーノードとの距離が最も近いノードを選択する。そして、選択されたノードにおける近傍ノードのうちキーノードに最も近いノードを選択する。このようなキーノードとの距離に基づき近傍のノードを順次たどりながらキーノードと最も近いノードへ近づいていく。さらに、キーノードを中心とする所定の検索範囲内に含まれるノードを網羅的にすべて探索してもよい。
＜ハードウェア構成＞
【００２７】
図５、上記機能的な各構成要件をハードウェアとして実現した際の、改変ｋ最近傍グラフ生成装置の構成の一例を表す概略図である。この図を利用して改変ｋ最近傍グラフ生成装置に係るそれぞれのハードウェア構成の働きについて説明する。
【００２８】
この図にあるように、改変ｋ最近傍グラフ生成装置は、各種演算処理を実行するための「ＣＰＵ」（０５０１）と、「主メモリ」（０５０２）と、「記憶装置」（０５０３）と、「通信回路」（０５０４）」などを備える。記憶装置にはノード、生成したｋ最近傍グラフ及び各種プログラムなどが格納されている。ＣＰＵはこれら各種プログラムを主メモリに展開したうえで実行する。前記の各ハードウェア構成は「システムバス」（０５０５）などのデータ通信経路によって相互に接続され、情報の送受信や処理を行う。
【００２９】
まず、ＣＰＵは、ｋ最近傍グラフ生成プログラムを実行し、格納されているノードを読出し、ノード間の距離計算処理等を行い、ｋ最近傍グラフを生成する。そして、改変ｋ最近傍グラフ生成プログラムを実行し、一つの有向エッジでのみ接続されるノードを抽出し、抽出したノード間に逆向エッジを付加して改変ｋ最近傍グラフの生成を行う。
【００３０】
なお、探索部を構成に加える場合には、さらにＣＰＵは、例えば検索クエリの受付けをトリガとし、格納されている探索プログラムを実行し、通信回路を介して受信した検索クエリに基づくキーノードを記憶装置から読出し、さらに格納されている改変ｋ最近傍グラフを構成するノードを読み出してキーノードと読出したノードとの距離計算処理を行う。このような処理を順次行いエッジをたどりキーノードに最も近いノードを探索するための処理を行う。なお、改変ｋ最近傍グラフが生成された後は必ずしもｋ最近傍グラフを保持し続けなくてもよい。
＜処理の流れ＞
【００３１】
図６は、本実施形態の改変ｋ最近傍グラフ生成装置における処理の流れの一例を表すフロー図である。なお、以下に示すステップは、上記のような計算機の各ハードウェア構成によって実行されるステップであっても良いし、媒体に記録され計算機を制御するためのプログラムを構成する処理ステップであっても構わない。
【００３２】
図示するように、まず、保持される各ノードが前記ベクトル空間内でｋ個の最近傍ノードと有向エッジにより接続されて構成されるｋ最近傍グラフを生成する（ｋ最近傍グラフ生成ステップ：Ｓ０６０１）。そして、生成されたｋ最近傍グラフにおいて、一つの有向エッジのみによって接続されているノード間に逆向エッジを付加して改変ｋ最近傍グラフを生成する（改変ｋ最近傍グラフ生成ステップ：Ｓ０６０２）。なお、ｋ最近傍グラフ生成ステップと改変ｋ最近傍グラフ生成ステップとは重畳して行ってもよい。
＜他の構成＞
【００３３】
ここまで、生成したｋ最近傍グラフを改変して最近傍検索を行う改変ｋ最近傍グラフ生成装置について説明してきた。この改変ｋ最近傍グラフ生成装置において、ｋ最近傍グラフに代えて近似ｋ最近傍グラフを生成し、生成した近似ｋ最近傍グラフを上述の通り改変して生成した改変近似ｋ最近傍グラフを用いて最近傍検索を行うよう構成してもよい。
【００３４】
ｋ最近傍グラフはすべてのノード間の距離計算を行ったうえでｋ個の最近傍ノードを特定し有向エッジで接続する。したがって、元来計算処理量が大きくグラフ生成コストを問題視する向きもある。そこで近年ではｋ最近傍グラフの理論を踏襲しつつ生成コストの抑制を図る近似ｋ最近傍グラフの生成手法が提案されている（Wei Dong, Moses Charikar, Kai Li. Efficient K-Nearest Neighbor Graph Construction for Generic Similarity Measures. WWW2011）。
【００３５】
本実施形態の改変ｋ最近傍グラフ生成装置は、このような生成手法に基づき生成された近似ｋ最近傍グラフを改変して検索に用いても有効である。これは、後述する実施形態２においても同様である。
【００３６】
また、ｋ最近傍グラフを生成する代わりに変動ｋ最近傍グラフを生成し、生成した変動ｋ最近傍グラフに対して改変ｋ最近傍グラフ生成部における処理と同様に逆向エッジを付加して改変するように構成してもよい。変動ｋ最近傍グラフは、自然数ｋが下記式（１）を満たし、生成される一のグラフ内にて複数の値をとりうる変動数であり、各ノードがｋ個の最近傍ノードと有向エッジにより接続されて構成されるグラフである。
式（１）  a≦ｋ≦ｂ  （a、b：自然数）
【００３７】
変動ｋ最近傍グラフは、ノード間が有向エッジで接続される点においてｋ最近傍グラフと同様であるが、有向エッジで接続される最近傍ノードの数がノードによって異なる点で相違する。近傍探索に用いられるグラフについては様々に研究が行われており、このような変動ｋ最近傍グラフも存在し、有向エッジにより接続されて構成されるグラフであることから、逆向エッジを付加し改変変動ｋ最近傍グラフを生成することの効果もｋ最近傍ノードを改変する場合と同様に奏し得る。
【００３８】
変動ｋ最近傍グラフを生成し、さらに逆向エッジを付加して改変変動ｋ最近傍グラフを生成する改変変動ｋ最近傍グラフ生成装置の機能ブロック構成やハードウェア構成は、改変ｋ最近傍グラフ生成装置に準じて構成することができる。また、改変変動ｋ最近傍グラフ生成装置における処理の流れについても、改変ｋ最近傍グラフ生成装置における処理の流れに準じたものとなる。
＜効果＞
【００３９】
本実施形態の改変ｋ最近傍グラフ生成装置により、従来のｋ最近傍グラフをインデックスとする最近傍検索よりも、検索精度と検索速度に優れる最近傍検索を行うことができる。
＜実施形態２＞
＜概要＞
【００４０】
本実施形態は、実施形態１における改変ｋ最近傍グラフ生成装置を基本とし、改変ｋ最近傍グラフにおいて、自身を始点とする有向エッジの数が所定数の閾値を超えるノードについて、閾値を超えた分の有向エッジを長い順に前記閾値を超えない有向エッジ数に至るまで削除する。これにより計算処理量の増加を抑制し、より検索速度に優れる最近傍検索を行うことができる。
＜構成＞
【００４１】
図７は、本実施形態の改変ｋ最近傍グラフ生成装置の機能ブロックの一例を示すブロック図である。図７に示すように、本実施形態の「改変ｋ最近傍グラフ生成装置」（０７００）は、「ノード保持部」（０７０１）と、「ｋ最近傍グラフ生成部」（０７０２）と、「改変ｋ最近傍グラフ生成部」（０７０３）とを有し、さらに「第一エッジ削除部」（０７０４）を有する。第一エッジ削除部の他の各構成は、実施形態１において既に説明を行っているため重ねての説明は省略する。なお、改変変動ｋ最近傍グラフ生成装置に第一エッジ削除部と同機能を果たす第二エッジ部を加えて構成してもよい。
【００４２】
「第一エッジ削除部」（０７０４）は、生成された改変ｋ最近傍グラフを構成するノードのうち、自身を始点とする有向エッジの数が所定の閾値を超えるノードについて、閾値を超えた分の有向エッジを長い順に前記閾値を超えない有向エッジ数に至るまで削除する機能を有する。
【００４３】
生成した改変ｋ最近傍グラフにおいて、一部のノードに極めて多量の有向エッジが存在する場合が生じ得る。この場合計算処理量が増加し検索速度の低下をもたらすおそれがある。そこで、一のノードからのエッジの上限数を定め、上限数を超える場合には超えた分のエッジを長い順に削除する。
【００４４】
図８は、第一エッジ削除部によりエッジを削除する一例を示す概念図である。図８（ａ）は、改変ｋ最近傍グラフにおける一のノードを始点とする有向エッジを示す図である。図示するように、一の「ノード」（０８０１）を始点とする有向エッジの本数は１１本である。
【００４５】
図８（ｂ）は、閾値を「６」とした場合のエッジ削除の態様を示す図である。図示するように、「ノード」（０８０１）を始点とする１１本の有向エッジのうち、閾値を超えた５本の破線で示したエッジが削除される。なお、図中の鎖線の円は、有向エッジの長さが分かるよう便宜的に描いたものである。
【００４６】
有向エッジの長さは、その有向エッジにより接続されるノード間の距離である。したがって、一のノードと接続されるすべてのノードとの距離を計算し、距離の長い順にソートして有向エッジの数が閾値に至るまで削除すればよい。なお、改変ｋ最近傍グラフ生成部によって付加されたエッジのみを削除の対象として限定してもよいし、すべてのエッジを削除の対象としてもよい。
【００４７】
有向エッジを削除するにあたり、有向エッジの接続先のノードにおける距離順位を考慮するように構成してもよい。図９（ａ）は、エッジ削除の対象となる一のノードを始点とする計１１本の有向エッジを示している。これら有向エッジのうちＥ１〜Ｅ４は元のｋ最近傍グラフ（ｋ＝４）において存在していたものである。そして、Ｅ５〜Ｅ１１は改変ｋ最近傍グラフ生成部により付加されたエッジである。各エッジに付した数は長さ（距離）を示し、数字の大きいエッジほど距離が長い。
【００４８】
図９（ｂ）は、Ｅ１〜Ｅ１１についての「対象ノードに接続するエッジを距離の近い順でソートしたときの順位（Ａ）」、「距離」、「当該エッジの接続先ノードにおけるエッジの距離の近い順での順位（Ｂ）」及び「削除のための指標（Ａ＋Ｂ）」を示す表である。
【００４９】
元々存在するＥ１〜Ｅ４は削除の対象となるエッジから除外している。Ｅ５〜Ｅ１１エッジ数の上限を定める閾値を「８」とした場合、エッジの接続先ノードにおけるエッジの距離の近い順での順位（Ｂ）を考慮して、（Ａ＋Ｂ）の値に基づいて削除対象となるエッジを特定する。図中に示すように、（Ａ＋Ｂ）の値の大きい順にソートすると、「Ｅ１１（１５）」、「Ｅ９（１３）」及び「Ｅ８（１２）」の三つのエッジが削除対象として特定される。なお、距離の近い順での順位に代えて距離の遠い順での順位を用いて指標としてもよい。すなわち指標を設定するのにあたり昇順、降順は問わない。
【００５０】
エッジ削除の対象ノードにおける距離順位が低いエッジであっても、当該エッジが接続するノードにおいては距離順位の高い重要なエッジであり削除しない方が良い場合がある。そこで、このように接続先ノードにおける距離順位も考慮してエッジ削除を行う。
＜ハードウェア構成＞
【００５１】
本実施形態の改変ｋ最近傍グラフ生成装置は、実施形態１の改変ｋ最近傍グラフ生成装置に係るハードウェア構成に準じて構成することができる。例えば、上述したようにエッジを削除するための第一エッジ削除プログラムや閾値をさらに記憶装置に格納し、当該プログラムをＣＰＵが実行することで構成される。
＜処理の流れ＞
【００５２】
図１０は、本実施形態の改変ｋ最近傍グラフ生成装置における処理の流れの一例を表すフロー図である。図示するように、まず、保持される各ノードがベクトル空間内でｋ個の最近傍ノードと有向エッジにより接続されて構成されるｋ最近傍グラフを生成する（ｋ最近傍グラフ生成ステップ：Ｓ１００１）。そして、生成されたｋ最近傍グラフにおいて、一つの有向エッジのみによって接続されているノード間に逆向エッジを付加して改変ｋ最近傍グラフを生成する（改変ｋ最近傍グラフ生成ステップ：Ｓ１００２）。そして、自身を始点とする有向エッジの数が所定の閾値を超えるノードについて、閾値を超えた分の有向エッジを長い順に前記閾値を超えない有向エッジ数に至るまで削除する（第一エッジ削除ステップ：Ｓ１００３）。
＜効果＞
【００５３】
本実施形態の改変ｋ最近傍グラフ生成装置により、計算処理量の増加を抑制し、より検索速度に優れる最近傍検索を行うことができる。
＜試験＞
【００５４】
図１１は、検索範囲よりわずかに広い範囲を探索するための探索半径係数εを０．０から０．０２ずつ大きくして、１２８次元のＳＩＦＴ（画像局所特徴量）１０００万オブジェクトに対して２０件の最近傍ノードの検索をしたときの検索時間と検索精度（再現率）との関係を示すグラフである。εを大きくすると検索精度は向上するが、その分検索時間の増加をもたらす。グラフＡは、ｋ＝１０で生成したｋ最近傍グラフを改変せずにそのまま用いて検索を行った結果である。グラフＢは、さらに実施形態１の逆向きエッジの追加をした改変ｋ最近傍グラフを用いて検索を行った結果である。グラフＣは、さらに実施形態２の閾値を４０としてエッジ削除をした改変ｋ最近傍グラフを用いて検索を行った結果である。
【００５５】
グラフＡとグラフＢとの対比から分かるように、改変ｋ最近傍グラフを用いた検索はより短い検索時間で高い検索精度が得られることが示された。また、グラフＢとグラフＣとの対比から分かるように、エッジの削除を行うことにより、さらに短い検索時間で高い検索精度が得られることが示された。
【符号の説明】
【００５６】
０１００  改変ｋ最近傍グラフ生成装置
０１０１  ノード保持部
０１０２  ｋ最近傍グラフ生成部
０１０３  改変ｋ最近傍グラフ生成部
【図１】
2017021493.tif 000003
【図２】
2017021493.tif 000004
【図３】
2017021493.tif 000005
【図４】
2017021493.tif 000006
【図５】
2017021493.tif 000007
【図６】
2017021493.tif 000008
【図７】
2017021493.tif 000009
【図８】
2017021493.tif 000010
【図９】
2017021493.tif 000011
【図１０】
2017021493.tif 000012
【図１１】
2017021493.tif 000013