特許法第30条第2項適用 公開日 平成30年8月7日 令和1年8月13日時点における本願に関連するソフトウェアを公開するページ https://github.com/yahoojapan/NGT https://github.com/yahoojapan/NGT/releases
以下に、本願に係る情報処理装置、情報処理方法、及び情報処理プログラムを実施するための形態(以下、「実施形態」と呼ぶ)について図面を参照しつつ詳細に説明する。なお、この実施形態により本願に係る情報処理装置、情報処理方法、及び情報処理プログラムが限定されるものではない。また、以下の各実施形態において同一の部位には同一の符号を付し、重複する説明は省略される。
(実施形態)
〔1.情報処理〕
図1を用いて、実施形態に係る情報処理の一例について説明する。図1は、実施形態に係る情報処理の一例を示す図である。情報処理装置100(図6参照)が与えられたデータセットに対して実際に検索してパラメータを決定する処理について説明する。図1では、情報処理装置100がデータセットの情報を用いて、閾値を算出する関数に含まれる複数のパラメータの各々の値を調整する処理(「調整処理」ともいう)により、複数のパラメータの各々の値を決定する場合を示す。詳細は後述するが、図1の例では、グラフの検索時に参照する参照エッジ数を示す閾値TH1を算出する関数FC1のパラメータ「e0」の値やパラメータ「we」の値を調整する場合を示す。以下では、パラメータ「e0」を「第1パラメータ」、パラメータ「e0」の値を「第1値」と記載し、パラメータ「we」を「第2パラメータ」、パラメータ「we」の値を「第2値」と記載する場合がある。なお、情報処理装置100は、上記に限らず、種々の関数に含まれる複数のパラメータを対象に調整処理を行ってもよい。
図1の例では、情報処理装置100は、オブジェクトOB1、OB2、OB3、OB101等の複数のオブジェクトを含むデータセットDS1を用いて、第1パラメータの第1値及び第2パラメータの第2値を調整する。データセットDS1中の各オブジェクトは、ベクトル化され、ベクトル化されたオブジェクト(ベクトル情報)を対象として、後述する検索処理などの各種処理を行う。なお、データセットDS1に含まれ検索対象となる情報(オブジェクト)は、ベクトルとして表現可能であれば、どのような情報であってもよい。なお、以下では、画像情報を対象としたベクトル情報について説明するが、ベクトル情報の対象は、動画情報や音声情報等の他の対象であってもよい。
また、情報処理装置100が用いる情報は、ベクトルに限らず、各対象の類似性を表現可能な情報であれば、どのような形式の情報であってもよい。例えば、情報処理装置100は、各対象に対応する所定のデータや値を用いて対象をグラフ構造化したグラフ情報を用いてもよい。例えば、情報処理装置100は、各対象から生成された所定の数値(例えば2進数の値や16進数の値)を用いて対象をグラフ構造化したグラフ情報を用いてもよい。例えば、ベクトルに代えて、データ間の距離(類似度)が定義されていれば任意の形態のデータであっても良い。例えば、情報処理装置100は、オブジェクト情報記憶部121(図7参照)からデータセットDS1を取得する。
〔1-1.調整処理〕
まず、情報処理装置100は、評価用クエリを決定する(ステップS1)。情報処理装置100は、与えられたデータセットからクエリオブジェクトセットを生成する。情報処理装置100は、データセットからランダムに抽出したオブジェクト、または、ランダムに抽出した二つ以上のオブジェクトの平均値のオブジェクトを、クエリオブジェクト(評価用クエリ)に決定する。これにより、情報処理装置100は、データセットに含まれないオブジェクトを評価用クエリとすることができる。
図1の例では、情報処理装置100は、データセットDS1から評価用クエリの生成に用いるオブジェクトを抽出する。例えば、情報処理装置100は、データセットDS1からランダムに二つ以上の所定数のオブジェクトを抽出オブジェクトとして抽出する。情報処理装置100は、データセットDS1からオブジェクトOB500とオブジェクトOB1000との2つのオブジェクトを抽出オブジェクトとして抽出する。そして、情報処理装置100は、オブジェクトOB500とオブジェクトOB1000との平均である「7,35,13,93...」の多次元のベクトル情報を生成する。このように、図1の例では、情報処理装置100は、評価用クエリRQ1に示すように、オブジェクトOB500とオブジェクトOB1000とに基づいて、クエリQE1を生成する。これにより、情報処理装置100は、「7,35,13,93...」の多次元のベクトル情報であるクエリQE1を評価用クエリに決定する。
なお、上記は一例であり、情報処理装置100は、種々の情報を適宜用いて、評価用クエリを決定してもよい。情報処理装置100は、二つより多い、例えば三つのオブジェクトの平均値のオブジェクトを、クエリオブジェクト(評価用クエリ)に決定してもよい。平均値を求める複数のオブジェクトは、ランダムに選択した一つのオブジェクトと、そのオブジェクトに対して距離が近いオブジェクトを一つ以上選択したオブジェクトとしてもよい。また、例えば、情報処理装置100は、後述するグラフ生成にデータセットのうち一部のオブジェクトが用いられる場合、データセットのうちグラフに含まれないオブジェクトを評価用クエリとして用いてもよい。
そして、情報処理装置100は、グラフを生成する(ステップS2)。情報処理装置100は、与えられたデータセットのすべて、または、一部のデータに対してインデックス(グラフやツリー)を作成する。なお、図1の例では、説明を簡単にするため、情報処理装置100がインデックスとしてグラフを生成する場合を示すが、ツリーも生成してもよい。なお、ツリーについての詳細は後述する。
例えば、情報処理装置100は、データセットDS1中の全オブジェクトを用いて、グラフを生成してもよいし、データセットDS1のうち一部のオブジェクトを用いて、グラフを生成してもよい。例えば、情報処理装置100は、データセットDS1のうち、オブジェクトOB3等を除く、オブジェクトOB1、OB2、OB101等の一部のオブジェクトを用いて、グラフを生成してもよい。この場合、情報処理装置100は、オブジェクトOB3を評価用クエリとして用いてもよい。
図1の例では、情報処理装置100は、データセットDS1中の全オブジェクトを用いて、グラフGR11を生成する。情報処理装置100は、グラフ生成に関する種々の技術を適宜用いて、グラフGR11を生成する。ここで、グラフGR11について説明する。
図1に示すグラフGR11は、データセットDS1に含まれる各オブジェクトに対応するノードが有向エッジで連結されたグラフ情報を示す。なお、図1中のグラフGR11に示すようなグラフ情報は、情報処理装置100が生成する場合に限らず、情報処理装置100は、図1中のグラフGR11に示すようなグラフ情報を情報提供装置50(図5参照)等の他の外部装置から取得してもよい。
また、ここでいう、有向エッジとは、一方向にしかデータを辿れないエッジを意味する。以下では、エッジにより辿る元、すなわち始点となるノードを参照元とし、エッジにより辿る先、すなわち終点となるノードを参照先とする。例えば、所定のノード「A」から所定のノード「B」に連結される有向エッジとは、参照元をノード「A」とし、参照先をノード「B」とするエッジであることを示す。なお、各ノードを連結するエッジは、有向エッジに限らず、種々のエッジであってもよい。例えば、各ノードを連結するエッジは、ノードを連結する方向のないエッジであってもよい。例えば、各ノードを連結するエッジは、相互に参照可能なエッジであってもよい。例えば、各ノードを連結するエッジは、全て無向エッジ(双方向エッジ)であってもよい。
例えば、このようにノード「A」を参照元とするエッジをノード「A」の出力エッジという。また、例えば、このようにノード「B」を参照先とするエッジをノード「B」の入力エッジという。すなわち、ここでいう出力エッジ及び入力エッジとは、一の有向エッジをその有向エッジが連結する2個のノードのうち、いずれのノードを中心として捉えるかの相違であり、一の有向エッジが出力エッジ及び入力エッジになる。すなわち、出力エッジ及び入力エッジは、相対的な概念であって、一の有向エッジについて、参照元となるノードを中心として捉えた場合に出力エッジとなり、参照先となるノードを中心として捉えた場合に入力エッジとなる。なお、本実施形態においては、エッジについては、出力エッジや入力エッジ等の有向エッジを対象とするため、以下では、有向エッジを単に「エッジ」と記載する場合がある。また、ここでいう、各ノードは、各オブジェクトに対応する。例えば、画像から抽出された複数の局所特徴量のそれぞれがオブジェクトであってもよい。また、例えば、オブジェクト間の距離が定義された種々のデータがオブジェクトであってもよい。
また、図1中のグラフGR11には、データセットDS1中の多数のオブジェクト(ノード)が含まれるが、図面においてはその一部のみを図示する。例えば、情報処理装置100は、図1中のグラフGR11に示すように、ノードN1~N3、N43、N53等の複数のノード(ベクトル)を含むグラフ情報を生成する。図1の例では、説明を簡単にするために、5個のノードを図示して処理の概要を説明するが、グラフGR11にはデータセットDS1中のオブジェクト数に対応する数のノードが含まれる。
図1の例では、例えば、情報処理装置100は、各オブジェクトに対応する各ノードから所定数以上の出力エッジが他のエッジに連結されるように、グラフGR11を生成する。情報処理装置100は、グラフGR11における各ノードが、そのノードとの間の距離が近い方から所定数のノードへのエッジ(出力エッジ)が連結されるようにグラフGR1を生成する。例えば、所定数は、目的や用途等に応じて、2や5や10や100等の種々の値であってもよい。例えば、所定数が2である場合、ノードN1からは、ノードN1からの距離が最も近いノード及び2番目に距離が近い2個のノードに出力エッジが連結される。なお、類似度を示す指標としての距離は、ベクトル(N次元ベクトル)間の距離として適用可能であれば、どのような距離であってもよく、例えば、ユークリッド距離やマハラノビス距離等の種々の距離が用いられてもよい。例えば、距離は、2つのオブジェクト間の類似度を反映するものであれば、どのような情報であってもよく、例えばコサイン類似度等の角度に関する情報であってもよい。
また、このように「ノードN*(*は任意の数値)」と記載した場合、そのノードはノードID「N*」により識別されるノードであることを示す。例えば、「ノードN1」と記載した場合、そのノードはノードID「N1」により識別されるノードである。
また、図1中のグラフGR11では、ノードN1は、ノードN53へ向かう有向エッジであるエッジE2が連結される。すなわち、ノードN1は、ノードN53とエッジE2により連結される。このように「エッジE*(*は任意の数値)」と記載した場合、そのエッジはエッジID「E*」により識別されるエッジであることを示す。例えば、「エッジE31」と記載した場合、そのエッジはエッジID「E31」により識別されるエッジである。例えば、ノードN1を参照元とし、ノードN53を参照先として連結されるエッジE2により、ノードN1からノードN53に辿ることが可能となる。この場合、有向エッジであるエッジE2は、ノードN1を中心として識別される場合、出力エッジとなり、ノードN53を中心として識別される場合、入力エッジとなる。
言い換えると、有向エッジであるエッジE2は、ノードN1側からの視点でとらえた場合、自身から他のエッジへ矢印が向いているエッジ、すなわち外向きエッジとなり、ノードN53側からの視点でとらえた場合、自身の方に矢印が向いているエッジ、すなわち内向きエッジとなる。つまり、ここでいう出力エッジは、外向きエッジと読み替えることができ、入力エッジは、内向きエッジと読み替えることができる。また、図1では図示を省略するが、ノードN53は、ノードN1へ向かう有向エッジ(エッジE531とする)が連結されてもよい。このように、ノードN53からの出力エッジであるエッジE531がノードN1に連結されてもよい。この場合、ノードN1とノードN53との間には、ノードN1からノードN53へ向かう有向エッジであるエッジE2と、ノードN53からノードN1へ向かう有向エッジであるエッジE531との2個のエッジが連結される。
また、図1中のグラフGR11は、ユークリッド空間であってもよい。また、図1に示すグラフGR11は、各ベクトル間の距離等の説明のための概念的な図であり、グラフGR11は、多次元空間である。例えば、図1に示すグラフGR11は、平面上に図示するため2次元の態様にて図示されるが、例えば100次元や1000次元等の多次元空間であるものとする。なお、各ノードに対応するベクトルデータは、N次元の実数値ベクトルであってもよい。
また、図1の例では、グラフGR11においては、適宜「ノードN*(*は任意の数値)」の図示を省略し、各ノードに対応する「○」内に「ノードN*」の「*」の値を付すことにより表現する。すなわち、「ノードN*」の部分の「*」が一致するノードに対応する。例えば、グラフGR11中の左上の「○」であって、内部に「43」が付された「○」は、ノードID「N43」により識別されるノード(ノードN43)に対応する。
ここで、各ノード間の距離は、ノード(画像情報)の類似性を示し、距離が近いほど類似している。本実施形態においては、グラフGR11における各ノードの距離を対応する各オブジェクト間の類似度とする。例えば、各ノードに対応する画像情報の類似性が、グラフGR11内におけるノード間の距離として写像されているものとする。例えば、各ノードに対応する概念間の類似度が各ノード間の距離に写像されているものとする。ここで、図1の例では、グラフGR11における各ノード間の距離が短いオブジェクト同士の類似度が高く、グラフGR11における各ノード間の距離が長いオブジェクト同士の類似度が低い。
例えば、図1中のグラフGR11において、ノードN43とノードN2とは近接している、すなわち距離が短い(近い)。そのため、ノードN43に対応するオブジェクトと、ノードN2に対応するオブジェクトとは類似度が高いことを示す。また、図1中のグラフGR11において、ノードN43とノードN53とは遠隔にある、すなわち距離が長い(遠い)。そのため、ノードN43に対応するオブジェクトと、ノードN53に対応するオブジェクトとは類似度が低いことを示す。なお、上記は一例であり、情報処理装置100は、種々の条件を用いて、グラフを生成してもよい。例えば、情報処理装置100は、各オブジェクトに対応する各ノードから所定の数以上の入力エッジが他のエッジから連結されるように、グラフGR11を生成してもよい。
そして、情報処理装置100は、近似正解検索結果を取得する(ステップS3)。情報処理装置100は、クエリQE1を対象とする近似正解検索結果を取得する。情報処理装置100は、クエリQE1を用いて、k個(kは任意の数)のノードを近傍ノードとして抽出した結果を示す近似正解検索結果を取得する。情報処理装置100は、近似正解検索結果情報記憶部124(図10参照)からクエリQE1に対応する近似正解検索結果を取得する。
ここで、精確な正解検索結果を生成するには、すべてのオブジェクトとの距離を計算する必要があり、大規模なデータセットの場合には現実的な時間でできない。そのため、情報処理装置100が近似正解検索結果を生成する場合、評価用クエリに対して正解検索結果を得る代わりに、何らかの評価対象のインデックスを用いて近似検索結果を事前に取得する。例えば、情報処理装置100は、近傍検索に関する種々の技術を適宜用いて、クエリQE1に対応する近似正解検索結果を生成する。
例えば、情報処理装置100は、図15に示すような処理により、クエリQE1に対応する近似正解検索結果を生成する。この場合、情報処理装置100は、後述する検索範囲係数「ε」の値を所定値以上大きくして、図15に示すような処理をグラフGR11を用いて行うことにより、クエリQE1に対応する近似正解検索結果を生成する。これにより、情報処理装置100は、すべてのオブジェクトとの距離を計算して正解情報を生成する場合に比べて、処理時間を短くすることができる。なお、上記は一例であり、すべてのオブジェクトとの距離を計算して正解情報を生成するよりも短い処理時間で、近似正解検索結果を生成することができれば、情報処理装置100は、どのような処理により、近似正解検索結果を生成してもよい。
ここで、検索範囲係数「ε」の概念について簡単に説明する。図1中のグラフGR11-1は、グラフGR11であり、「○」内に「Q」を記載したクエリQE1に対応する範囲AR1及び範囲AR2を図示するために、ノードのみを図示し、エッジの図示を省略したものである。情報処理装置100は、クエリQE1を中心とする半径r内の範囲AR1と、クエリQE1を中心とする半径r(1+ε)内の範囲AR2とを用いて、グラフGR11を検索し、近傍ノードを抽出する。このように、情報処理装置100は、検索範囲係数「ε」を適用した処理により、近傍ノードを抽出する処理を行うが、検索範囲係数「ε」を用いた処理の詳細は図15において説明する。
図1の例では、情報処理装置100は、クエリQE1に対応する近似正解検索結果RR1を生成する。近似正解検索結果RR1に示すように、クエリQE1に対応する近似正解情報は、Noが「1」である、すなわち最も近傍のノードがオブジェクトOB101に対応するノードであることを示す。また、クエリQE1に対応する近似正解情報は、Noが「k」である、すなわち最も遠いノード(最遠オブジェクト)がオブジェクトOB55に対応するノードであることを示す。情報処理装置100は、近似正解検索結果RR1を用いて、後述する精度算出等の処理を行う。
そして、情報処理装置100は、ターゲット精度範囲を決定する(ステップS4)。情報処理装置100は、下記の式(1)のような閾値を算出(導出)する関数に含まれる各パラメータ(変数)に対するターゲット精度範囲を決定する。
ここで、上記式(1)は図1中の関数FC1に対応する。上記式(1)の左辺中の「ep」は、グラフの検索時に参照する参照エッジ数を示す閾値TH1に対応する。
また、上記式(1)の右辺中の「e0」は、定数項(第1パラメータ)を示す。また、上記式(1)の右辺中の「ε」は、検索範囲係数「ε」を示す。また、上記式(1)の右辺中の「we」は、検索範囲係数「ε」に掛け合わされる変数(第2パラメータ)を示す。例えば、「ε」が「0.1」であり、「we」が「10」であり、「e0」が「5」である場合、上記の式(1)は、「ep=1010×0.1+5」となる。すなわち、「ep」が「15(=101+5)」となり、閾値TH1が「15」に決定される。この場合、情報処理装置100は、検索処理において、各ノードを対象とする処理において、選択する参照先のノードの数を15個までとする。例えば、情報処理装置100は、あるノードを対象とした処理で、図15に示すステップS315において閾値「15」に達した場合、そのノードの繰り返し処理を終了する。
図1の例では、情報処理装置100は、上記式(1)中の第1パラメータ「e0」と、第2パラメータ「we」との各々のターゲット精度範囲を決定する。情報処理装置100は、種々の情報を適宜用いて、第1パラメータ「e0」と、第2パラメータ「we」との各々のターゲット精度範囲を決定する。図1の例では、情報処理装置100は、ターゲット情報TR1に示すように、第1パラメータ「e0」と第2パラメータ「we」との各々について、ターゲット精度範囲の下限、上限及びマージンを決定する。
情報処理装置100は、第1パラメータ「e0」のターゲット精度範囲(「第1ターゲット精度範囲」ともいう)の下限を「R1a」に、上限を「R1b」に決定し、マージンを「MG1」に決定する。情報処理装置100は、第2パラメータ「we」のターゲット精度範囲(「第2ターゲット精度範囲」ともいう)の下限を「R2a」に、上限を「R2b」に決定し、マージンを「MG2」に決定する。このように、第1パラメータ「e0」の第1ターゲット精度範囲と、第2パラメータ「we」の第2ターゲット精度範囲とを各々個別に決定する。
例えば、情報処理装置100は、情報処理装置100の管理者等による指定値や、予め記憶部120(図6参照)に記憶された基準値等を用いて、第1パラメータ「e0」と、第2パラメータ「we」との各々のターゲット精度範囲を決定する。ここで、第1パラメータ「e0」は検索範囲係数「ε」が小さい(精度が低い)ときに効いてくるパラメータで、第2パラメータ「we」は検索範囲係数「ε」が大きいとき(精度が高い)ときに効いてくるパラメータである。そのため、第1パラメータ「e0」と、第2パラメータ「we」とは、独立して調整する。なお、以下では、第1パラメータ「e0」の第1値を調整する処理を「第1調整処理」と記載し、第2パラメータ「we」の第2値を調整する処理を「第2調整処理」と記載する場合がある。
上記のように、情報処理装置100は、低い精度と高い精度についてそれぞれターゲット精度範囲を事前に決定する。例えば、情報処理装置100は、第2パラメータ「we」の第2ターゲット精度範囲を第1パラメータ「e0」の第1ターゲット精度範囲よりも高く決定する。例えば、情報処理装置100は、第2パラメータ「we」の第2ターゲット精度範囲の下限「R2a」を第1パラメータ「e0」の第1ターゲット精度範囲の下限「R1a」よりも高くする。例えば、情報処理装置100は、第2パラメータ「we」の第2ターゲット精度範囲の上限「R2b」を、第1パラメータ「e0」の第1ターゲット精度範囲の上限「R1b」よりも高くする。このように、情報処理装置100は、第2ターゲット精度範囲を第1ターゲット精度範囲よりも高いターゲット精度範囲に決定する。なお、情報処理装置100は、1つのターゲット精度範囲を各パラメータに共通して用いてもよい。
そして、情報処理装置100は、各パラメータの調整処理を実行する。ここで、図1の例では、情報処理装置100は、評価指標情報EI1に示すように、評価指標として検索時間を用いる。なお、図1は一例であり、評価指標は、検索時間に限らず、距離計算回数やノードのアクセス数等、種々の指標が用いられてもよい。情報処理装置100は、各パラメータの調整のために、特定の精度区間(ターゲット精度区間)における評価指標(例えば検索時間、オブジェクトアクセス数、距離計算回数等)を測定する。
また、図1の例では、情報処理装置100は、精度情報PR1に示すように、精度として再現率を用いる。なお、図1は一例であり、精度は、再現率に限らず、検索処理の精度が測定できれば種々の情報であってもよい。
ここでいう再現率は、「(正解検索結果の中で実際に検索された結果)/(正解検索結果)」で得られる。すなわち、再現率は、精度測定対象となる検索処理における「正解検索結果の中で実際に検索された結果」を、「正解検索結果」で除算することにより算出される。情報処理装置100は、後述する各試行において、評価用クエリを用いて検索処理を行い、その検索処理の時間を計測するとともに、抽出した検索結果を用いて、再現率を算出する。図1の例では、「正解検索結果」として、「近似正解検索結果」を用いるため、「近似正解検索結果」よりもよい結果(正解)が各個別の調整処理により抽出される可能性があるが、この点についての詳細は後述する。
まず、情報処理装置100は、第1パラメータ「e0」を対象とした第1調整処理を実行する(ステップS5)。情報処理装置100は、下限「R1a」、上限「R1b」、マージン「MG1」である第1ターゲット精度範囲を用いて、第1調整処理を実行する。なお、初回の第1調整処理においては、情報処理装置100は、第2パラメータ「we」の値(第2値)は、所定の初期値を用いる。また、2回目以降の第1調整処理においては、情報処理装置100は、その前の第2調整処理で決定された第2パラメータ「we」の値(第2値)を用いる。このように、情報処理装置100は、第1パラメータ「e0」を対象とした第1調整処理においては、第2パラメータを所定の固定値に固定し、第1パラメータの値を変動させることにより、第1パラメータの最適な第1値を探索する。このように、情報処理装置100は、低いターゲット精度範囲における評価指標の算出を行い第1パラメータ「e0」の最適値を探索する。
図1の例では、情報処理装置100は、第1パラメータ「e0」を任意の値(「測定対象値」ともいう)に設定し、評価指標を測定する。例えば、情報処理装置100は、第1パラメータ「e0」を「20」に設定し、評価指標を測定する処理(「測定処理」ともいう)を行う。情報処理装置100は、図2に示すような処理により、第1パラメータ「e0」を任意の値に設定し、評価指標を測定する。図2は、実施形態に係る測定処理の一例を示す図である。
情報処理装置100は、第1パラメータの値を測定対象値(例えば「20」)に固定した状態で、検索範囲係数「ε」を変動させることにより、検索精度範囲をカバーする検索範囲係数「ε」の下限、上限を探索する。情報処理装置100は、図2中の探索結果RS1に示すように、第1ターゲット精度範囲の上限「R1b」と、上限「R1b」にマージン「MG1」を加算した値(上限マージン「R1b+MG1」と記載する場合がある)との範囲内に位置する検索範囲係数「ε」を検索範囲係数「ε」の上限として探索する。また、情報処理装置100は、第1ターゲット精度範囲の下限「R1a」と、下限「R1a」からマージン「MG1」を減算した値(下限マージン「R1a-MG1」と記載する場合がある)との範囲内に位置する検索範囲係数「ε」を検索範囲係数「ε」の下限として探索する。探索結果RS1は、横軸(X軸)を再現率とし、縦軸(Y軸)を検索時間とする再現率と検索時間との関係を示す図を示す。
探索結果RS1中の試行結果T1~T6は、1回目~6回目の各々の試行結果を示す。例えば、試行結果T1は、1回目の試行結果を示す。例えば、情報処理装置100は、各試行において、図15に示すような処理により、クエリQE1を用いてk個の近傍ノードを抽出する検索処理を実行する。この場合、情報処理装置100は、各試行で設定した検索範囲係数「ε」や、関数FC1により算出された閾値TH1を用いてグラフGR11を探索することにより、クエリQE1に対応するk個の近傍ノードを抽出する。
なお、情報処理装置100は、各試行において、評価用クエリを用いて検索処理を行い、その検索処理の時間を計測するとともに、抽出した検索結果を用いて、再現率を算出する。図2の例では、情報処理装置100は、クエリQE1を用いてグラフGR11からk個の近傍ノードを抽出する検索処理を行い、その検索処理の時間を計測するとともに、抽出した検索結果と近似正解検索結果RR1とを用いて再現率を算出する。情報処理装置100は、抽出した検索結果のうち近似正解検索結果RR1に含まれるオブジェクトの数を、近似正解検索結果RR1のオブジェクトの数で除することにより、再現率を算出する。このように、図1及び図2の例では、kが分母となり、0以上k以下の値が分子となる。0~1の範囲、すなわち0以上1以下の値が再現率として算出される。
図2の例では、情報処理装置100は、最初(1回目)の試行では、精度「再現率」が上限「R1b」を超えるような大きな値を検索範囲係数「ε」に設定して、検索処理を実行する。このように、例えば、情報処理装置100は、最初(1回目)の試行では、上限「R1b」を超える精度を示す試行結果T1を得る。
また、情報処理装置100は、2回目の試行では、精度「再現率」が下限「R1a」を下回るような小さな値を検索範囲係数「ε」に設定して、検索処理を実行する。このように、例えば、情報処理装置100は、2回目の試行では、下限「R1a」を下回る精度を示す試行結果T2を得る。
そして、情報処理装置100は、3回目以降の試行を繰り返すことにより、上限「R1b」と上限マージン「R1b+MG1」との範囲内に位置する検索範囲係数「ε」を検索範囲係数「ε」の上限として探索する。例えば、情報処理装置100は、3回目の試行では、試行結果T1における検索範囲係数「ε」の設定値と、試行結果T2における検索範囲係数「ε」の設定値との間の値を、検索範囲係数「ε」に設定する。例えば、情報処理装置100は、3回目の試行では、試行結果T1における検索範囲係数「ε」の設定値と、試行結果T2における検索範囲係数「ε」の設定値との平均値を、検索範囲係数「ε」に設定する。そして、情報処理装置100は、設定した検索範囲係数「ε」を用いて処理を実行し、試行結果T3を得る。
試行結果T3では、上限「R1b」を下回る精度を得たため、情報処理装置100は、4回目の試行では、試行結果T1における検索範囲係数「ε」の設定値と、試行結果T3における検索範囲係数「ε」の設定値との間の値を、検索範囲係数「ε」に設定する。例えば、情報処理装置100は、4回目の試行では、試行結果T1における検索範囲係数「ε」の設定値と、試行結果T3における検索範囲係数「ε」の設定値との平均値を、検索範囲係数「ε」に設定する。そして、情報処理装置100は、設定した検索範囲係数「ε」を用いて処理を実行し、試行結果T4を得る。
試行結果T4では、上限マージン「R1b+MG1」を超える精度を得たため、情報処理装置100は、5回目の試行では、試行結果T3における検索範囲係数「ε」の設定値と、試行結果T4における検索範囲係数「ε」の設定値との間の値を、検索範囲係数「ε」に設定する。例えば、情報処理装置100は、5回目の試行では、試行結果T3における検索範囲係数「ε」の設定値と、試行結果T4における検索範囲係数「ε」の設定値との平均値を、検索範囲係数「ε」に設定する。そして、情報処理装置100は、設定した検索範囲係数「ε」を用いて処理を実行し、試行結果T5を得る。
このように、情報処理装置100は、各試行結果の精度と、上限「R1b」や上限マージン「R1b+MG1」の位置関係に応じて、検索範囲係数「ε」の設定値を変更し、試行結果の精度が、上限「R1b」と上限マージン「R1b+MG1」との範囲内に位置するまで、処理を繰り返す。図2の例では、情報処理装置100は、試行結果T6に示すように、6回目の試行により、検索範囲係数「ε」の設定値「0.12」とした処理で、上限「R1b」と上限マージン「R1b+MG1」との範囲内に位置する精度を得る。これにより、情報処理装置100は、検索範囲係数「ε」の係数上限「0.12」を得る。
そして、情報処理装置100は、上記の試行結果T1~T6を利用して、下限「R1a」と下限マージン「R1a-MG1」との範囲内に位置する検索範囲係数「ε」を検索範囲係数「ε」の下限として探索する。図2の例では、下限「R1a」が試行結果T2と、試行結果T3との間に位置するため、情報処理装置100は、7回目以降の試行では、まず、試行結果T2における検索範囲係数「ε」の設定値と、試行結果T3における検索範囲係数「ε」の設定値との間の値を、検索範囲係数「ε」に設定する。このように、情報処理装置100は、下限「R1a」と下限マージン「R1a-MG1」との範囲内に位置するまで、処理を繰り返す。図2の例では、情報処理装置100は、探索結果RS2中の試行結果T11に示すように、検索範囲係数「ε」の設定値「0.08」とした処理で、下限「R1a」と下限マージン「R1a-MG1」との範囲内に位置する精度を得る。これにより、情報処理装置100は、検索範囲係数「ε」の係数下限「0.08」を得る。ここでのεを探索する手順は二分探索を応用したものだが、εを探索する手順は上記に限らず、他の方法を用いても良い。
そして、情報処理装置100は、検索範囲係数「ε」を下限から上限まで当分に分割して、それぞれの検索範囲係数「ε」での検索を行って評価指標を求める。図2の例では、情報処理装置100は、係数下限「0.08」から係数上限「0.12」まで当分に6分割して、それぞれの検索範囲係数「ε」での検索を行って評価指標を求める。これにより、情報処理装置100は、探索結果RS3中の算出用試行結果ED1~ED5に対応する処理により、各々に対応する評価指標を求める。
そして、情報処理装置100は、台形近似により範囲における平均の評価指標を算出する。情報処理装置100は、台形近似により範囲における平均の検索時間を評価指標として算出する。図2の例では、情報処理装置100は、台形近似により探索結果RS4中のハッチング部分である範囲AR11の平均の評価指標を算出する。例えば、生成装置100は、台形公式等の種々の従来技術を適宜用いて、検索時間の平均を算出してもよい。情報処理装置100は、探索結果RS4に示すように、横軸(X軸)、横軸(X軸)方向の両端(上限「R1b」、下限「R1a」)の検索時間に対応する線、各検索時間を線で結んだ範囲AR11を対象にその間の検索時間の平均を算出する。例えば、情報処理装置100は、探索結果RS4に示すように隣り合う試行結果(検索時間の値)間を線で結んだ範囲AR11を対象にその間の検索時間の平均を算出する。例えば、情報処理装置100は、台形公式により範囲AR11の面積を算出し、その面積を横軸方向(再現率)の範囲の値で除算することにより、範囲AR11に対応する検索時間の平均を算出してもよい。情報処理装置100は、係数下限「0.08」と算出用試行結果ED1との間のうち、第1ターゲット精度範囲の下限「R1a」と算出用試行結果ED1との間のみを用いて、平均の評価指標を算出する。また、情報処理装置100は、算出用試行結果ED5と係数上限「0.12」との間のうち、算出用試行結果ED5と第1ターゲット精度範囲の上限「R1b」との間のみを用いて、平均の評価指標を算出する。例えば、情報処理装置100は、下限「R1a」と上限「R1b」との間の範囲AR11の面積を算出し、その面積を横軸方向(再現率)の上限「R1b」と下限「R1a」との間の範囲の値で除算することにより、範囲AR11に対応する検索時間の平均を算出してもよい。例えば、情報処理装置100は、下限「R1a」と上限「R1b」との間の範囲AR11の面積を算出し、その面積を上限「R1b」の再現率と下限「R1a」の再現率との差で除算することにより、範囲AR11に対応する検索時間の平均を算出してもよい。これにより、情報処理装置100は、第1ターゲット精度範囲内に対応する平均の評価指標を算出することができる。そして、情報処理装置100は、平均の評価指標を、その測定処理で設定した第1パラメータ「e0」の設定値における評価指標に決定する。このように、情報処理装置100は、探索結果RS4中の範囲AR11に対応する範囲の平均の評価指標を算出することで、第1パラメータ「e0」を一の値に設定した測定処理を終了する。
そして、情報処理装置100は、上述した第1パラメータ「e0」を一の値に設定した測定処理を、第1パラメータ「e0」の最適値が求まるまで繰り返す。例えば、情報処理装置100は、最初の測定処理で「20」に設定した第1パラメータ「e0」の値を変動させることにより、第1パラメータ「e0」の設定値と、各設定値の評価指標との関係を示す情報(グラフ)を生成し、生成した情報を基に第1パラメータ「e0」の最適値を決定してもよい。例えば、情報処理装置100は、測定処理を所定の回数繰り返し、最も評価指標が良い設定値を第1パラメータ「e0」の第1値(最適値)に決定してもよい。第1パラメータ「e0」に対して評価指標は通常凸関数なので、例えば、山登り法といった探索方法を用いて、評価指標が最少値(最大値)になるような第1パラメータ「e0」を求めれば良い。
そして、情報処理装置100は、決定した第1パラメータ「e0」の第1値が前回の第1調整処理で決定した第1パラメータ「e0」の第1値(「前回第1値」ともいう)と同じであるかを判定する(ステップS6)。情報処理装置100は、決定した第1パラメータ「e0」の第1値が前回第1値と同じであると判定した場合(ステップS6:Yes)、調整処理を終了する。
一方で、情報処理装置100は、決定した第1パラメータ「e0」の第1値が前回第1値と同じでないと判定した場合(ステップS6:No)、第2パラメータ「we」を対象とした第2調整処理を実行する(ステップS7)。また、情報処理装置100は、初回の第1調整処理の場合、前回第1値が無いため、決定した第1パラメータ「e0」の第1値が前回第1値と同じではないと判定し(ステップS6:No)、第2調整処理を実行する。
上記のように、情報処理装置100は、第1調整処理が初回の場合や第1調整処理で第1パラメータの第1値が変更された場合、第2パラメータ「we」を対象とした第2調整処理を実行する。情報処理装置100は、下限「R2a」、上限「R2b」、マージン「MG2」である第2ターゲット精度範囲を用いて、第2調整処理を実行する。第2調整処理においては、情報処理装置100は、その前の第1調整処理で決定された第1パラメータ「e0」の値(第1値)を用いる。このように、情報処理装置100は、第2パラメータ「we」を対象とした第2調整処理においては、第1パラメータを所定の固定値に固定し、第2パラメータの値を変動させることにより、第2パラメータの最適な第2値を探索する。このように、情報処理装置100は、高いターゲット精度範囲における評価指標の算出を行い第2パラメータ「we」の最適値を探索する。
図1の例では、情報処理装置100は、第2パラメータ「we」を任意の値(測定対象値)に設定し、評価指標を測定する。例えば、情報処理装置100は、第2パラメータ「we」を「30」に設定し、評価指標を測定する処理(測定処理)を行う。情報処理装置100は、上述した第1パラメータに対する測定処理と同様に、図2に示すような処理により、第2パラメータ「we」を任意の値に設定し、評価指標を測定する。
情報処理装置100は、第2パラメータの値を測定対象値(例えば「30」)に固定した状態で、検索範囲係数「ε」を変動させることにより、検索精度範囲をカバーする検索範囲係数「ε」の下限、上限を探索する。情報処理装置100は、第2ターゲット精度範囲の上限「R2b」と、上限「R2b」にマージン「MG2」を加算した値(上限マージン「R2b+MG2」と記載する場合がある)との範囲内に位置する検索範囲係数「ε」を検索範囲係数「ε」の上限として探索する。また、情報処理装置100は、第2ターゲット精度範囲の下限「R2a」と、下限「R2a」からマージン「MG2」を減算した値(下限マージン「R2a-MG2」と記載する場合がある)との範囲内に位置する検索範囲係数「ε」を検索範囲係数「ε」の下限として探索する。
情報処理装置100は、上述した第1パラメータに対する測定処理と同様に、各試行結果の精度と、上限「R2b」や上限マージン「R2b+MG2」の位置関係に応じて、検索範囲係数「ε」の設定値を変更し、試行結果の精度が、上限「R2b」と上限マージン「R2b+MG2」との範囲内に位置するまで、処理を繰り返す。また、情報処理装置100は、検索範囲係数「ε」の設定値を変更し、試行結果の精度が、下限「R2a」と下限マージン「R2a-MG2」との範囲内に位置するまで、処理を繰り返す。
そして、情報処理装置100は、検索範囲係数「ε」を下限から上限まで当分に分割して、それぞれの検索範囲係数「ε」での検索を行って評価指標を求める。そして、情報処理装置100は、台形近似により範囲における平均の評価指標を算出する。情報処理装置100は、台形近似により範囲における平均の検索時間を評価指標として算出する。情報処理装置100は、上述した第1パラメータに対する測定処理と同様に、第2ターゲット精度範囲内に対応する平均の評価指標を算出することができる。そして、情報処理装置100は、平均の評価指標を、その測定処理で設定した第2パラメータ「we」の設定値における評価指標に決定する。
そして、情報処理装置100は、上述した第2パラメータ「we」を一の値に設定した測定処理を、第2パラメータ「we」の最適値が求まるまで繰り返す。例えば、情報処理装置100は、最初の測定処理で「30」に設定した第2パラメータ「we」の値を変動させることにより、第2パラメータ「we」の設定値と、各設定値の評価指標との関係を示す情報(グラフ)を生成し、生成した情報を基に第2パラメータ「we」の最適値を決定してもよい。例えば、情報処理装置100は、測定処理を所定の回数繰り返し、最も評価指標が良い設定値を第2パラメータ「we」の第2値(最適値)に決定してもよい。
そして、情報処理装置100は、決定した第2パラメータ「we」の第2値が前回の第2調整処理で決定した第2パラメータ「we」の第2値(「前回第2値」ともいう)と同じであるかを判定する(ステップS8)。情報処理装置100は、決定した第2パラメータ「we」の第2値が前回第2値と同じであると判定した場合(ステップS8:Yes)、調整処理を終了する。
一方で、情報処理装置100は、決定した第2パラメータ「we」の第2値が前回第2値と同じでないと判定した場合(ステップS8:No)、ステップS5に戻って処理を繰り返す。
上述のように、情報処理装置100は、第1パラメータを調整する第1調整処理と第2パラメータを調整する第2調整処理とを繰り返すことにより、複数のパラメータの値を適切に決定することができる。図1及び図2の例では、情報処理装置100は、第1パラメータ「e0」を調整する第1調整処理と、第2パラメータ「we」を調整する第2調整処理とを、独立して行う。具体的には、情報処理装置100は、第2調整処理で調整された第2パラメータを用いて第1パラメータを調整する第1調整処理と、その結果の第1パラメータの第1値を用いて第2パラメータを調整する第2調整処理とを、独立して行う。このように、情報処理装置100は、第1パラメータ「e0」と、第2パラメータ「we」とを、独立して調整することにより、複数のパラメータの値を適切に決定することができる。
例えば、上述した関数FC1内のパラメータはデータによって最適な値が異なる。そこで、情報処理装置100は、与えられたデータセットを対象として、関数FC1内の複数のパラメータを調整することにより、最適なパラメータを決定することができる。例えば、情報処理装置100は、データセットDS1とは異なる別のデータセットDSXを対象とする場合、そのデータセットDSXのデータを用いて上述した調整処理を行うことにより、データセットDSXを対象として調整されたパラメータを得ることができる。このように、情報処理装置100は、対象とするデータセットに応じて、適切なパラメータの値を決定することができる。
〔1-2.近似正解検索結果を用いた場合の処理〕
上述のパラメータの調整においては、特定の精度区間における評価指標(例えば検索時間、オブジェクトアクセス数、距離計算回数)を測定することが必要となる。また、上述したように、精度である再現率は、正解検索結果を基に算出される。しかし、正確な正解検索結果を生成するにはすべてのオブジェクトとの距離を計算する必要があり、大規模なデータセットの場合には現実的な時間でできないという課題がある。
そのため、上述したように、図1の例では、「正解検索結果」として、「近似正解検索結果」を用いる。この場合、「近似正解検索結果」よりもよい結果(正解)が各個別の調整処理により抽出される可能性がある。そこで、情報処理装置100は、「近似正解検索結果」よりもよい結果(正解オブジェクト)が抽出された場合、以下のような処理を実行する。
例えば、情報処理装置100は、対象グラフを対象とする検索処理により、「近似正解検索結果」よりもよい正解オブジェクトが抽出された場合、その正解オブジェクトを正解として、精度を算出してもよい。例えば、情報処理装置100は、対象グラフを対象とする検索処理により、「近似正解検索結果」よりもよい正解オブジェクトが抽出された場合、その正解オブジェクトを「近似正解検索結果」に追加する更新処理を行ってもよい。
以下、図3を用いて具体的に説明する。図3は、実施形態に係る近似正解検索結果を用いた処理の一例を示す図である。なお、図3では、図1及び図2中の調整処理において行われる場合を一例として説明する。図1及び図2と同様の点についての説明は省略する。例えば、図3に示す処理は、図2の例で情報処理装置100がクエリQE1を用いてグラフGR11からk個の近傍ノードを抽出する検索処理を行い、再現率を算出する際に実行される。
図3に示す近似正解検索結果RR1は、図1中の近似正解検索結果RR1に対応する。図3に示す測定用検索結果SR1は、情報処理装置100がクエリQE1を用いてグラフGR11からk個の近傍ノードを抽出した検索処理を示す。
まず、情報処理装置100は、測定用検索結果SR1のうち、近似正解検索結果RR1に含まれないオブジェクトを非重複オブジェクトとして抽出する(ステップS21)。図3の例では、情報処理装置100は、非重複オブジェクト情報NOL1に示すように、測定用検索結果SR1のうちオブジェクトOB77を、近似正解検索結果RR1に含まれない非重複オブジェクトとして抽出する。
そして、情報処理装置100は、最遠オブジェクト情報FOL1に示すように、近似正解検索結果RR1のうち、クエリQE1から最遠のオブジェクトであるオブジェクトOB55と、オブジェクトOB77とを比較する(ステップS22)。具体的には、情報処理装置100は、最遠オブジェクトOB55及びクエリQE1間の距離D55と、非重複オブジェクトOB77及びクエリQE1間の距離D77とを比較する。情報処理装置100は、距離D77が距離D55よりも短い場合、非重複オブジェクトを正解とする所定の処理を行う。このように、情報処理装置100は、距離D77が距離D55よりも短い場合、「近似正解検索結果」よりもよい非重複オブジェクトが抽出されたとして、その非重複オブジェクトを正解とする所定の処理を実行する。
〔1-2-1.更新処理〕
図3の例では、情報処理装置100は、距離D77が距離D55よりも短いため、非重複オブジェクトを正解とする所定の処理を行う。情報処理装置100は、非重複オブジェクトOB77を正解として、近似正解検索結果に追加する更新処理を行う。この場合、情報処理装置100は、最遠オブジェクトOB55を近似正解検索結果から除外してもよい。これにより、情報処理装置100は、近似正解検索結果RR1を、オブジェクトOB77を正解として含む近似正解検索結果RR2に更新する(ステップS23)。
そして、情報処理装置100は、更新処理を行った場合、調整処理や測定処理を再度実行してもよい。例えば、上述のように新たな正解検索結果が見つかった場合には、近似正解検索結果を用いて指定された検索精度範囲をカバーする検索範囲係数「ε」の下限、上限を再度探索する。
このように、近似正解検索結果を用いて再現率を計算するときには、近似正解データに含まれない正解オブジェクトが検索される場合がある。そのため、情報処理装置100は、検索結果のオブジェクトが近似正解検索結果の最遠の結果よりも近ければ正解として近似正解検索結果に追加する。これにより、情報処理装置100は、検索処理に関連する評価指標を適切に算出することができる。
〔1-2-2.精度算出〕
なお、情報処理装置100は、上述した更新処理に限らず、種々の処理を行ってもよい。図3の例では、例えば、情報処理装置100は、非重複オブジェクトOB77を正解として、測定用検索結果SR1に対応する検索の再現率を算出してもよい。
このように、近似正解検索結果を用いて再現率を計算するときには、近似正解データに含まれない正解オブジェクトが検索される場合があるので、検索結果のオブジェクトが近似正解検索結果の最遠の結果よりも近ければ正解として精度を計算する。これにより、情報処理装置100は、検索処理に関連する評価指標を適切に算出することができる。
〔1-3.ツリー情報〕
上述した例では、グラフ情報のみを用いる場合を示したが、情報処理装置100は、ツリー情報など、各種のインデックスを用いて、処理を高速化してもよい。例えば、情報処理装置100は、図4中の情報群GINF11に示すようなツリー情報IND11を用いて、検索の起点となるノード(以下「起点ノード」ともいう)を決定してもよい。図4は、実施形態に係る情報処理に用いるツリーの一例を示す図である。なお、ツリー情報IND11は、情報処理装置100が生成してもよいし、情報処理装置100は、ツリー情報IND11を情報提供装置50等の他の外部装置から取得してもよい。
例えば、情報処理装置100は、ツリー情報IND11に基づいて、クエリQE1に対応する起点ノードを決定してもよい。情報処理装置100は、ツリー情報記憶部122(図8参照)に記憶されたツリー情報IND11を用いて、起点ノードを決定する。例えば、ツリー情報IND11は、グラフGR11中のいくつかのノードに到達可能なツリー構造を有するツリーである。図4の例では説明を簡単にするために、ツリー情報IND11は、ノードN1~N5の5個のノードに到達するルートのみを図示するが、多数(例えば500や1000等)の他のノードへ到達するルートが含まれてもよい。
例えば、情報処理装置100は、図4中のツリー情報IND11に示すような木構造型のツリー情報を用いて、グラフGR11における起点ノードを決定する。図1の例では、情報処理装置100は、クエリQE1に基づいて、ツリー情報IND11を上(ルートRT)から下へ辿ることにより、ツリー情報IND11の近傍候補となる起点ノードを決定(特定)する。これにより、情報処理装置100は、効率的に検索クエリ(クエリQE1)に対応する起点ノードを決定することができる。
例えば、情報処理装置100は、ツリー情報IND11をルートRTからリーフノード(グラフGR11中のノード)まで辿ることにより、クエリQE1に対応する起点ノードを決定してもよい。例えば、情報処理装置100は、木構造に関する種々の従来技術を適宜用いて、ツリー情報IND11をルートRTからリーフノードまで辿ることにより、辿りついたリーフノードを起点ノードとして決定してもよい。例えば、情報処理装置100は、クエリQE1との類似度に基づいて、ツリー情報IND11を下へ辿ることにより、起点ノードを決定してもよい。例えば、情報処理装置100は、ルートRTから節点VT1、VT2等のいずれの節点に辿るかを、クエリQE1と節点VT1、VT2との類似度に基づいて決定してもよい。例えば、情報処理装置100は、ルートRTから節点VT1、VT2等のうち、クエリQE1との類似度が最も高い節点VT2へ辿ると決定してもよい。また、例えば、情報処理装置100は、節点VT2から節点VT2-1~VT2-4等のうち、クエリQE1との類似度が最も高い節点VT2-2へ辿ると決定してもよい。
図4の例に示すツリー情報(ツリーデータ)は一例であり、情報処理装置100は、種々のツリー情報を用いて、グラフ情報を検索してもよい。情報処理装置100は、検索時の起点ノードの決定に用いるツリーを生成してもよい。なお、ツリーを用いることは一例であり、情報処理装置100は、検索時の起点ノードの決定の高速化が可能であれば、ツリーに限らず種々の情報を用いてもよい。例えば、情報処理装置100は、高次元ベクトルを高速に検索するための検索ツリー(ツリー情報)を生成する。ここでいう高次元ベクトルとは、例えば、数百次元から数千次元のベクトルであってもよいし、それ以上の次元のベクトルであってもよい。
例えば、情報処理装置100は、図4に示すようなツリー構造(木構造)に関するツリー情報IND11を生成してもよい。例えば、情報処理装置100は、kd木(k-dimensional tree)に関する検索ツリーを生成してもよい。例えば、情報処理装置100は、VP木(Vantage-Point tree)に関する検索ツリーを生成してもよい。
また、例えば、情報処理装置100は、その他の木構造を有するツリーとして生成してもよい。例えば、情報処理装置100は、木構造のツリーのリーフがグラフに接続する種々のツリーを生成してもよい。例えば、情報処理装置100は、木構造のツリーのリーフがグラフ中のノードに対応する種々のツリーを生成してもよい。また、情報処理装置100は、このようなツリーを用いて検索を行う場合、ツリーを辿って到達したリーフ(ノード)からグラフを探索してもよい。
なお、上述したようなツリーは一例であり、情報処理装置100は、グラフ中のクエリを高速に特定することが可能であれば、どのようなデータ構造のツリーを生成してもよい。例えば、情報処理装置100は、クエリに対応するグラフ情報中のノードを高速に特定することが可能であれば、バイナリ空間分割に関する技術等の種々の従来技術を適宜用いて、ツリーを生成してもよい。例えば、情報処理装置100は、高次元ベクトルの検索に対応可能なツリーであれば、どのようなデータ構造のツリーを生成してもよい。情報処理装置100は、上述のようなツリーとグラフとを用いることにより、所定の対象に関してより効率的な検索を可能にすることができる。すなわち、情報処理装置100は、上述のようなツリーとグラフとを用いることにより、所定の対象に関してより高速な検索を可能にすることができる。
〔2.情報処理システムの構成〕
図5に示すように、情報処理システム1には、端末装置10と、情報提供装置50と、情報処理装置100とが含まれる。端末装置10と、情報提供装置50と、情報処理装置100とは所定のネットワークNを介して、有線または無線により通信可能に接続される。図5は、実施形態に係る情報処理システムの構成例を示す図である。なお、図5に示した情報処理システム1には、複数台の端末装置10や、複数台の情報提供装置50や、複数台の情報処理装置100が含まれてもよい。
端末装置10は、ユーザによって利用される情報処理装置である。端末装置10は、ユーザによる種々の操作を受け付ける。なお、以下では、端末装置10をユーザと表記する場合がある。すなわち、以下では、ユーザを端末装置10と読み替えることもできる。なお、上述した端末装置10は、例えば、スマートフォンや、タブレット型端末や、ノート型PC(Personal Computer)や、デスクトップPCや、携帯電話機や、PDA(Personal Digital Assistant)等により実現される。
情報提供装置50は、ユーザ等に種々の情報提供を行うための情報が格納された情報処理装置である。例えば、情報提供装置50は、ウェブサーバ等の種々の外部装置から収集した文字情報等に基づくオブジェクトIDが格納される。例えば、情報提供装置50は、ユーザ等に画像検索サービスを提供する情報処理装置である。例えば、情報提供装置50は、画像検索サービスを提供するための各情報が格納される。例えば、情報提供装置50は、画像検索サービスの対象となる画像に対応するベクトル情報を情報処理装置100に提供する。また、情報提供装置50は、クエリを情報処理装置100に送信することにより、情報処理装置100からクエリに対応する画像を示すオブジェクトID等を受信する。
情報処理装置100は、検索処理において、所定のノードとエッジにより連結されたノードである連結ノードのうち、判定処理の処理対象数に関する基準に基づいて、判定処理の対象とするノードである判定対象ノードを選択するコンピュータである。例えば、情報処理装置100は、選択した判定対象ノードに基づいてノードを抽出する抽出装置である。
情報処理装置100は、クエリに類似するオブジェクトを抽出する検索装置である。例えば、情報処理装置100は、端末装置からクエリ情報(クエリ)を受信すると、クエリに類似する対象(ベクトル情報等)を検索し、検索結果を端末装置に提供する。また、例えば、情報処理装置100が端末装置に提供するデータは、画像情報等のデータ自体であってもよいし、URL(Uniform Resource Locator)等の対応するデータを参照するための情報であってもよい。また、クエリや検索対象のデータは、画像、音声、テキストデータなど、如何なる種類のデータであってもよい。本実施形態において、情報処理装置100が画像を検索する場合を一例として説明する。
〔3.情報処理装置の構成〕
次に、図6を用いて、実施形態に係る情報処理装置100の構成について説明する。図6は、実施形態に係る情報処理装置100の構成例を示す図である。図6に示すように、情報処理装置100は、通信部110と、記憶部120と、制御部130とを有する。なお、情報処理装置100は、情報処理装置100の管理者等から各種操作を受け付ける入力部(例えば、キーボードやマウス等)や、各種情報を表示するための表示部(例えば、液晶ディスプレイ等)を有してもよい。
(通信部110)
通信部110は、例えば、NIC(Network Interface Card)等によって実現される。そして、通信部110は、ネットワーク(例えば図5中のネットワークN)と有線または無線で接続され、端末装置10や情報提供装置50との間で情報の送受信を行う。
(記憶部120)
記憶部120は、例えば、RAM(Random Access Memory)、フラッシュメモリ(Flash Memory)等の半導体メモリ素子、または、ハードディスク、光ディスク等の記憶装置によって実現される。実施形態に係る記憶部120は、図6に示すように、オブジェクト情報記憶部121と、ツリー情報記憶部122と、グラフ情報記憶部123と、近似正解検索結果情報記憶部124と、関数情報記憶部125と、調整関連情報記憶部126とを有する。
(オブジェクト情報記憶部121)
実施形態に係るオブジェクト情報記憶部121は、オブジェクトに関する各種情報を記憶する。例えば、オブジェクト情報記憶部121は、データセットごとにオブジェクトIDやベクトルデータを記憶する。図7は、実施形態に係るオブジェクト情報記憶部の一例を示す図である。図7に示すオブジェクト情報記憶部121は、「データセットID」、「オブジェクトID」、「ベクトル情報」といった項目が含まれる。
「データセットID」は、データセットを識別するための識別情報を示す。「オブジェクトID」は、オブジェクトを識別するための識別情報を示す。また、「ベクトル情報」は、オブジェクトIDにより識別されるオブジェクトに対応するベクトル情報を示す。すなわち、図7の例では、オブジェクトを識別するオブジェクトIDに対して、オブジェクトに対応するベクトルデータ(ベクトル情報)が対応付けられて登録されている。
図7の例では、データセットID「DS1」により識別されるデータセット(データセットDS1)には、オブジェクトID「OB1」、「OB2」、「OB3」等により識別される複数のオブジェクト(対象)が含まれることを示す。オブジェクトID「OB1」により識別されるオブジェクト(オブジェクトOB1)は、「10,24,51,2...」の多次元のベクトル情報が対応付けられることを示す。また、オブジェクトID「OB2」により識別されるオブジェクト(オブジェクトOB2)は、「32,1,120,31...」の多次元のベクトル情報が対応付けられることを示す。
なお、オブジェクト情報記憶部121は、上記に限らず、目的に応じて種々の情報を記憶してもよい。
(ツリー情報記憶部122)
実施形態に係るツリー情報記憶部122は、ツリーに関する各種情報を記憶する。図8は、実施形態に係るツリー情報記憶部の一例を示す図である。具体的には、図8の例では、ツリー情報記憶部122は、ツリー構造のツリー情報を示す。図8の例では、ツリー情報記憶部122は、「ルート階層」、「第1階層」、「第2階層」、「第3階層」等といった項目が含まれる。なお、「第1階層」~「第3階層」に限らず、ツリーの階層数に応じて、「第4階層」、「第5階層」、「第6階層」等が含まれてもよい。
「ルート階層」は、ツリーを用いた起点ノードの決定の開始点となるルート(最上位)の階層を示す。「第1階層」は、ツリーの第1階層に属するノード(節点またはグラフ情報中のベクトル)を識別(特定)する情報が格納される。「第1階層」に格納されるノードは、ツリーの根(ルート)に直接結ばれる階層に対応するノードとなる。
「第2階層」は、ツリーの第2階層に属するノード(節点またはグラフ情報中のベクトル)を識別(特定)する情報が格納される。「第2階層」に格納されるノードは、第1階層のノードに結ばれる直下の階層に対応するノードとなる。「第3階層」は、ツリーの第3階層に属するノード(節点またはグラフ情報中のベクトル)を識別(特定)する情報が格納される。「第3階層」に格納されるノードは、第2階層のノードに結ばれる直下の階層に対応するノードとなる。
図8に示す例においては、ツリー情報記憶部122には、図1中のツリー情報IND11に対応する情報が記憶される。例えば、ツリー情報記憶部122は、第1階層のノードが、節点VT1~VT3等であることを示す。また、各節点の下の括弧内の数値は、各節点に対応するベクトルの値を示す。
また、ツリー情報記憶部122は、節点VT2の直下の第2階層のノードが、節点VT2-1~VT2-4であることを示す。また、ツリー情報記憶部122は、節点VT2-1の直下の第3階層のノードが、ノードN1、ノードN2のグラフGR11中のノード(ベクトル)であることを示す。ツリー情報記憶部122は、節点VT2-2の直下の第3階層のノードが、ノードN3、ノードN4、ノードN5のグラフGR11中のノード(ベクトル)であることを示す。
なお、ツリー情報記憶部122は、上記に限らず、目的に応じて種々の情報を記憶してもよい。
(グラフ情報記憶部123)
実施形態に係るグラフ情報記憶部123は、グラフに関する各種情報を記憶する。例えば、グラフ情報記憶部123は、検索処理等の情報処理に用いられるグラフ情報を記憶する。図9の例は、グラフ情報記憶部123は、近傍グラフデータを記憶する。図9は、実施形態に係るグラフ情報記憶部の一例を示す図である。図9に示すグラフ情報記憶部123は、「ノードID」、「オブジェクトID」、および「有向エッジ情報」といった項目を有する。また、「有向エッジ情報」には、「エッジID」や「参照先」といった情報が含まれる。
「ノードID」は、グラフデータにおける各ノード(対象)を識別するための識別情報を示す。また、「オブジェクトID」は、オブジェクトを識別するための識別情報を示す。
また、「有向エッジ情報」は、対応するノードに接続されるエッジに関する情報を示す。図9の例では、「有向エッジ情報」は、対応するノードから出力される出力エッジに関する情報を示す。また、「エッジID」は、ノード間を連結するエッジを識別するための識別情報を示す。また、「参照先」は、エッジにより連結された参照先(ノード)を示す情報を示す。すなわち、図9の例では、ノードを識別するノードIDに対して、そのノードに対応するオブジェクト(対象)を識別する情報やそのノードからの有向エッジ(出力エッジ)が連結される参照先(ノード)が対応付けられて登録されている。
図9の例では、ノードID「N1」により識別されるノード(ノードN1)は、オブジェクトID「OB1」により識別されるオブジェクト(対象)に対応することを示す。また、ノードN1からは、エッジID「E1」により識別されるエッジ(エッジE1)が、ノードID「N2」により識別されるノード(ノードN2)に連結されることを示す。すなわち、図9の例では、グラフ情報におけるノードN1からはエッジE1によりノードN2へ辿ることができることを示す。
また、図9の例では、ノードID「N2」により識別されるノード(ノードN2)は、オブジェクトID「OB2」により識別されるオブジェクト(対象)に対応することを示す。また、ノードN2からは、エッジID「E21」により識別されるエッジ(エッジE21)が、ノードID「N1」により識別されるノード(ノードN1)に連結されることを示す。すなわち、図9の例では、グラフ情報におけるノードN2からはエッジE21によりノードN1へ辿ることができることを示す。
なお、グラフ情報記憶部123は、上記に限らず、目的に応じて種々の情報を記憶してもよい。例えば、グラフ情報記憶部123は、各ノード(ベクトル)間を連結するエッジの長さが記憶されてもよい。すなわち、グラフ情報記憶部123は、各ノード(ベクトル)間の距離を示す情報が記憶されてもよい。グラフ情報記憶部123には、有向エッジにより連結されたグラフ情報に限らず、種々のグラフ情報が記憶されてもよい。グラフ情報記憶部123には、無向エッジにより連結されたグラフ情報が記憶されてもよい。
(近似正解検索結果情報記憶部124)
実施形態に係る近似正解検索結果情報記憶部124は、近似正解検索に関する各種情報を記憶する。近似正解検索結果情報記憶部124は、各クエリを用いた場合の検索処理の精度を測定するために用いる近似正解情報を記憶する。例えば、近似正解検索結果情報記憶部124は、各クエリに対応付けてそのクエリのk個の近傍ノードを近似正解検索結果として記憶する。図10は、実施形態に係る閾値記憶部の一例を示す図である。図10に示す近似正解検索結果情報記憶部124は、「クエリID」、「ベクトル情報」、「近似正解検索結果」といった項目を有する。また、「近似正解検索結果」には、「No」や「オブジェクト」といった項目が含まれる。
「クエリID」は、クエリを識別するための識別情報を示す。例えば、「クエリID」は、評価用クエリを識別するための識別情報を示す。また、「ベクトル情報」は、対応するクエリのベクトル情報を示す。「近似正解検索結果」は、対応するクエリの近似正解情報として用いる近似正解検索結果が記憶される。「No」は、対応するクエリの各近傍ノードの順位を示す。「オブジェクト」は、対応する順位の近傍ノード(オブジェクト)を示す。
図10の例では、クエリID「QE1」により識別されるクエリ(クエリQE1)は、「7,35,13,93...」の多次元のベクトル情報であることを示す。クエリQE1に対応する近似正解情報は、Noが「1」である、すなわち最も近傍のノードがオブジェクトOB101に対応するノードであることを示す。また、クエリQE1に対応する近似正解情報は、Noが「k」である、すなわち最も遠いノード(最遠オブジェクト)がオブジェクトOB55に対応するノードであることを示す。
なお、近似正解検索結果情報記憶部124は、上記に限らず、目的に応じて種々の情報を記憶してもよい。近似正解検索結果情報記憶部124は、複数のグラフ情報を使い分ける場合、閾値に、その閾値が用いられるグラフ情報を対応付けて記憶してもよい。例えば、近似正解検索結果情報記憶部124は、グラフGR11以外のグラフ情報が用いられる場合、各閾値が用いられるグラフ情報と、対応する閾値とを対応付けて記憶してもよい。
(関数情報記憶部125)
実施形態に係る関数情報記憶部125は、関数に関する各種情報を記憶する。図11は、実施形態に係る関数情報記憶部の一例を示す図である。図11の例では、関数情報記憶部125は、「関数ID」、「算出対象」、「関数」、「パラメータ情報」といった項目を有する。また、「パラメータ情報」には、「第1パラメータ」や「第2パラメータ」といった情報が含まれる。なお、「パラメータ情報」には、「第1パラメータ」、「第2パラメータ」に限らず、関数に含まれるパラメータ数に応じて、「第3パラメータ」、「第4パラメータ」等が含まれてもよい。
「関数ID」は、関数を識別するための識別情報を示す。「算出対象」は、関数により算出される対象を示す。「関数」は、関数のデータを示す。図11では「関数」に「FINF1」といった概念的な情報が格納される例を示したが、実際には、対応する関数の種々の情報、または、その格納場所を示すファイルパス名などが格納される。
「パラメータ情報」には、対応する関数に含まれるパラメータ(変数)を示す。「第1パラメータ」は、対応する関数に含まれる1つのパラメータ(変数)を示す。また、「第2パラメータ」は、対応する関数に含まれる第1パラメータ以外の1つのパラメータ(変数)を示す。
図11の例では、関数ID「FC1」により識別される関数(関数FC1)は、算出対象が「閾値TH1」であることを示す。関数FC1の関数のデータは、「FINF1」であることを示す。関数FC1は、図1中の関数FC1に対応し、図1中に「ep」で示す閾値TH1を算出する関数である。
また、関数FC1の第1パラメータは、「e0」であることを示す。第1パラメータは、関数FC1中の定数項「e0」であることを示す。
また、関数FC1の第2パラメータは、「we」であることを示す。第2パラメータは、関数FC1中の定数「10」を底とする指数「weε」中の「we」であることを示す。第2パラメータは、検索範囲係数「ε」との掛け合わされる「we」であることを示す。
なお、関数情報記憶部125は、上記に限らず、目的に応じて種々の情報を記憶してもよい。
(調整関連情報記憶部126)
実施形態に係る調整関連情報記憶部126は、パラメータの調整に関する各種情報を記憶する。図12は、実施形態に係る調整関連情報記憶部の一例を示す図である。図12の例では、調整関連情報記憶部126は、「調整ID」、「対象データセット」、「精度」、「評価指標」、「精度区間情報」といった項目を有する。また、「精度区間情報」には、「対象パラメータ」、「下限」、「上限」、「マージン」といった項目が含まれる。
「調整ID」は、調整を識別するための識別情報を示す。「対象データセット」は、調整の対象とするデータセットを識別するための識別情報を示す。「精度」は、精度として用いる対象を示す。「評価指標」は、評価指標として用いる対象を示す。
「精度区間情報」は、精度区間に関する各種情報を示す。「対象パラメータ」は、対応する精度区間を適用する対象となるパラメータを示す。「下限」は、精度区間の下限を示す。「上限」は、精度区間の上限を示す。「マージン」は、精度区間のマージンを示す。なお、図12の例では、1つのマージンを用いる場合を示すが、マージンは上限と下限の各々に個別に設定されてもよい。
図12の例では、調整ID「AD1」により識別される調整(調整AD1)は、データセットDS1を対象とした調整であることを示す。調整AD1は、精度として「再現率」が用いられることを示す。なお、精度は、再現率(recall)に限らず、検索処理の精度が測定できれば、例えば適合率(precision)等どのようなものであってもよい。
また、調整AD1は、評価指標として「検索時間」が用いられることを示す。なお、評価指標は、検索時間に限らず、距離計算回数やノードのアクセス数等、種々の指標が用いられてもよい。
また、パラメータ「e0」を対象とする精度区間は、下限が「R1a」であり、上限が「R1b」であり、マージンが「MG1」であることを示す。なお、図12に示す例では、精度区間を示す値を「R1a」、「R1b」、「MG1」といった抽象的な符号を図示するが、具体的な数値等であってもよい。
また、パラメータ「we」を対象とする精度区間は、下限が「R2a」であり、上限が「R2b」であり、マージンが「MG2」であることを示す。なお、図12に示す例では、精度区間を示す値を「R2a」、「R2b」、「MG2」といった抽象的な符号を図示するが、具体的な数値等であってもよい。
なお、調整関連情報記憶部126は、上記に限らず、目的に応じて種々の情報を記憶してもよい。
(制御部130)
図6の説明に戻って、制御部130は、コントローラ(controller)であり、例えば、CPU(Central Processing Unit)やMPU(Micro Processing Unit)等によって、情報処理装置100内部の記憶装置に記憶されている各種プログラム(情報処理プログラムの一例に相当)がRAMを作業領域として実行されることにより実現される。また、制御部130は、コントローラであり、例えば、ASIC(Application Specific Integrated Circuit)やFPGA(Field Programmable Gate Array)等の集積回路により実現される。
図6に示すように、制御部130は、取得部131と、生成部132と、算出部133と、決定部134と、抽出部135と、提供部136とを有し、以下に説明する情報処理の機能や作用を実現または実行する。なお、制御部130の内部構成は、図6に示した構成に限られず、後述する情報処理を行う構成であれば他の構成であってもよい。
(取得部131)
取得部131は、各種情報を取得する。取得部131は、記憶部120から各種情報を取得する。取得部131は、オブジェクト情報記憶部121や、ツリー情報記憶部122や、グラフ情報記憶部123や、近似正解検索結果情報記憶部124や、関数情報記憶部125や、調整関連情報記憶部126等から各種情報を取得する。また、取得部131は、各種情報を外部の情報処理装置から取得する。取得部131は、端末装置10等の外部装置から各種情報を取得する。取得部131は、グラフ情報記憶部123からグラフ情報を取得する。取得部131は、ツリー情報記憶部122からツリー情報を取得する。
取得部131は、検索対象となる複数のオブジェクトを含むデータセットと、データセットを対象とする検索に用いられる閾値を算出する関数とを取得する。取得部131は、グラフの検索時に用いられる閾値を算出する関数を取得する。取得部131は、対象グラフの検索時に参照する参照エッジ数を示す閾値を算出する関数を取得する。
取得部131は、複数のオブジェクトの各々に対応する複数のノードがエッジにより連結された対象グラフを取得する。取得部131は、データセットのうち、一部のオブジェクト群の各々に対応する複数のノードがエッジにより連結された対象グラフを取得する。
取得部131は、第1パラメータと第2パラメータとを含む関数を取得する。決定部134は、第1パラメータの第1値と、第2パラメータの第2値とを調整する調整処理により、第1値と第2値とを決定する。取得部131は、検索精度が高くなるほど、第1パラメータよりも影響が強くなる第2パラメータを含む関数を取得する。
取得部131は、第1パラメータに対してターゲットとする検索精度の範囲を示す第1精度範囲と、第2パラメータに対してターゲットとする検索精度の範囲を示す第2精度範囲とを取得する。取得部131は、再現率の範囲を示す第1精度範囲及び第2精度範囲を取得する。
取得部131は、定数項である第1パラメータと、所定の値を底とする指数に含まれる第2パラメータとを含む関数を取得する。取得部131は、検索処理における探索範囲を決定するための係数である検索範囲係数を含む関数を取得する。取得部131は、第2パラメータと検索範囲係数との掛け合わせを含む関数を取得する。
取得部131は、検索対象となる複数のオブジェクトを含むデータセットと、評価用クエリと、評価用クエリを用いたデータセットの近傍検索の結果である近似正解検索結果とを取得する。取得部131は、ターゲットとする検索精度の範囲を示す精度範囲を取得する。取得部131は、再現率の範囲を示す精度範囲を取得する。取得部131は、データセットを対象とする検索に用いられる閾値を算出する関数を取得する。
取得部131は、検索クエリに関する情報を取得する。取得部131は、画像検索に関する検索クエリを取得する。取得部131は、ユーザが利用する端末装置10からクエリを取得する。取得部131は、端末装置10からクエリを受け付けた情報提供装置50からクエリを取得してもよい。図1の例では、取得部131は、クエリQE11をユーザが利用する端末装置10から取得する。
図1の例では、取得部131は、グラフ情報記憶部123からグラフGR11を取得する。取得部131は、オブジェクト情報記憶部121(図7参照)からデータセットDS1を取得する。取得部131は、ツリー情報記憶部122からツリー情報IND11を取得する。
取得部131は、近似正解検索結果を取得する。取得部131は、クエリQE1を対象とする近似正解検索結果を取得する。取得部131は、クエリQE1を用いて、k個(kは任意の数)のノードを近傍ノードとして抽出した結果を示す近似正解検索結果を取得する。取得部131は、近似正解検索結果情報記憶部124(図10参照)からクエリQE1に対応する近似正解検索結果を取得する。
(生成部132)
生成部132は、各種情報を生成する。生成部132は、記憶部120に記憶された各種情報に基づいて、種々の情報を生成する。生成部132は、オブジェクト情報記憶部121や、ツリー情報記憶部122や、グラフ情報記憶部123や、近似正解検索結果情報記憶部124や、関数情報記憶部125や、調整関連情報記憶部126等に基づいて、各種情報を生成する。
生成部132は、取得部131により取得された各種情報に基づいて、種々の情報を生成する。生成部132は、算出部133により算出された各種情報に基づいて、種々の情報を生成する。生成部132は、決定部134により決定された各種情報に基づいて、種々の情報を生成する。生成部132は、抽出部135により抽出された各種情報に基づいて、種々の情報を生成する。生成部132は、グラフ情報を生成してもよい。
図1の例では、生成部132は、与えられたデータセットからクエリオブジェクトセットを生成する。生成部132は、データセットからランダムに抽出したオブジェクト、または、ランダムに抽出した二つ以上のオブジェクトの平均値であるクエリオブジェクト(評価用クエリ)を生成する。生成部132は、オブジェクトOB500とオブジェクトOB1000との平均である「7,35,13,93...」の多次元のベクトル情報を生成する。このように、図1の例では、生成部132は、評価用クエリRQ1に示すように、オブジェクトOB500とオブジェクトOB1000とに基づいて、クエリQE1を生成する。
生成部132は、グラフを生成する。生成部132は、データセットDS1中の全オブジェクトを用いて、グラフを生成してもよいし、データセットDS1のうち一部のオブジェクトを用いて、グラフを生成してもよい。例えば。生成部132は、データセットDS1のうち、オブジェクトOB3等を除く、オブジェクトOB1、OB2、OB101等の一部のオブジェクトを用いて、グラフを生成してもよい。生成部132は、データセットDS1中の全オブジェクトを用いて、グラフGR11を生成する。生成部132は、グラフ生成に関する種々の技術を適宜用いて、グラフGR11を生成する。生成部132は、図1中のグラフGR11に示すように、ノードN1~N3、N43、N53等の複数のノード(ベクトル)を含むグラフ情報を生成する。
生成部132は、各オブジェクトに対応する各ノードから所定数以上の出力エッジが他のエッジに連結されるように、グラフGR11を生成する。生成部132は、グラフGR11における各ノードが、そのノードとの間の距離が近い方から所定数のノードへのエッジ(出力エッジ)が連結されるようにグラフGR1を生成する。
生成部132は、近傍検索に関する種々の技術を適宜用いて、クエリQE1に対応する近似正解検索結果を生成する。例えば、生成部132は、図15に示すような処理により、クエリQE1に対応する近似正解検索結果を生成する。この場合、生成部132は、後述する検索範囲係数「ε」の値を所定値以上大きくして、図15に示すような処理をグラフGR11を用いて行うことにより、クエリQE1に対応する近似正解検索結果を生成する。生成部132は、クエリQE1に対応する近似正解検索結果RR1を生成する。
(算出部133)
算出部133は、各種情報を算出する。算出部133は、記憶部120に記憶された各種情報に基づいて、種々の情報を算出する。算出部133は、オブジェクト情報記憶部121や、ツリー情報記憶部122や、グラフ情報記憶部123や、近似正解検索結果情報記憶部124や、関数情報記憶部125や、調整関連情報記憶部126等に基づいて、各種情報を算出する。算出部133は、取得部131により取得された各種情報に基づいて、種々の情報を算出する。算出部133は、生成部132により生成された各種情報に基づいて、種々の情報を算出する。算出部133は、抽出部135により抽出された各種情報に基づいて、種々の情報を算出する。算出部133は、決定部134により決定された各種情報に基づいて、種々の情報を算出する。
算出部133は、データセットに対応する複数のノードがエッジにより連結された対象グラフと、評価用クエリとを用いた検索処理による検索結果のうち、近似正解検索結果に含まれない一のオブジェクトが、近似正解検索結果のうち、評価用クエリから最遠のオブジェクトである最遠オブジェクトよりも評価用クエリに近い場合、一のオブジェクトを正解とする所定の処理を行うことにより、検索処理に関連する評価指標を算出する。
算出部133は、対象グラフを対象とする検索処理による検索結果のうち、一のオブジェクトが、最遠オブジェクトよりも評価用クエリに近い場合、所定の処理を行うことにより、検索処理に関連する評価指標を算出する。算出部133は、対象グラフを対象とする検索処理による検索結果のうち、一のオブジェクトが、最遠オブジェクトよりも評価用クエリに近い場合、所定の処理を行うことにより、検索処理に関連する評価指標を算出する。
算出部133は、データセットから抽出された抽出オブジェクトに基づく評価用クエリを用いた検索処理による検索結果のうち、一のオブジェクトが、最遠オブジェクトよりも評価用クエリに近い場合、所定の処理を行うことにより、検索処理に関連する評価指標を算出する。算出部133は、データセットから抽出された複数の抽出オブジェクトから生成される評価用クエリを用いた検索処理による検索結果のうち、一のオブジェクトが、最遠オブジェクトよりも評価用クエリに近い場合、所定の処理を行うことにより、検索処理に関連する評価指標を算出する。算出部133は、複数の抽出オブジェクトの平均を評価用クエリとする検索処理による検索結果のうち、一のオブジェクトが、最遠オブジェクトよりも評価用クエリに近い場合、所定の処理を行うことにより、検索処理に関連する評価指標を算出する。
算出部133は、検索処理における検索時間、距離計算回数、及び対象グラフのノードのアクセス数のうち少なくとも1つを、評価指標として算出する。算出部133は、精度範囲を用いて評価指標を算出する。算出部133は、精度範囲における評価指標を算出する。算出部133は、検索処理における探索範囲を決定するための係数である検索範囲係数を変動させることにより、精度範囲における評価指標を算出する。
算出部133は、検索精度が精度範囲に含まれる複数の検索範囲係数の値の各々に対応する複数の個別評価指標を用いて、精度範囲における評価指標を算出する。算出部133は、精度範囲の下限以下の検索精度になる検索範囲係数の第1値と、精度範囲の上限以上の検索精度になる検索範囲係数の第2値とを用いて、精度範囲における評価指標を算出する。算出部133は、第1値と、第2値との間を等分した複数の検索範囲係数の値の各々に対応する複数の個別評価指標を用いて、精度範囲における評価指標を算出する。
算出部133は、台形近似により、精度範囲における評価指標を算出する。算出部133は、対象グラフを対象とする検索処理による検索結果のうち、一のオブジェクトが、最遠オブジェクトよりも評価用クエリに近い場合、一のオブジェクトを正解として、評価指標を算出する。算出部133は、対象グラフを対象とする検索処理による検索結果のうち、一のオブジェクトが、最遠オブジェクトよりも評価用クエリに近い場合、一のオブジェクトを正解として近似正解検索結果を更新する。算出部133は、対象グラフを対象とする検索処理による検索結果のうち、一のオブジェクトが、最遠オブジェクトよりも評価用クエリに近い場合、一のオブジェクトを近似正解検索結果に追加する更新処理を行い、評価指標を算出する。算出部133は、一のオブジェクトを近似正解検索結果に追加し、最遠オブジェクトを近似正解検索結果から除外する更新処理を行い、評価指標を算出する。算出部133は、更新処理を行った場合、評価指標を算出する処理を再度実行することにより、評価指標を算出する。
算出部133は、関数に含まれる複数のパラメータの各々の値を調整する調整処理における検索処理による検索結果のうち、一のオブジェクトが、最遠オブジェクトよりも評価用クエリに近い場合、所定の処理を行うことにより、評価指標を算出する。算出部133は、閾値が示す参照エッジ数による対象グラフの検索処理を含む調整処理により、複数のパラメータの各々の値を決定する。算出部133は、第1パラメータの第1値と、第2パラメータの第2値とを調整する調整処理における検索処理による検索結果のうち、一のオブジェクトが、最遠オブジェクトよりも評価用クエリに近い場合、所定の処理を行うことにより、評価指標を算出する。
算出部133は、検索精度が高くなるほど、第1パラメータよりも影響が強くなる第2パラメータを含む関数を対象に、評価指標を算出する。算出部133は、定数項である第1パラメータと、所定の値を底とする指数に含まれる第2パラメータとを含む関数を対象に、評価指標を算出する。算出部133は、検索処理における探索範囲を決定するための係数である検索範囲係数を含む関数を対象に、評価指標を算出する。算出部133は、第2パラメータと検索範囲係数との掛け合わせを含む関数を対象に、評価指標を算出する。
図1の例では、算出部133は、各パラメータの調整のために、特定の精度区間(ターゲット精度区間)における評価指標(例えば検索時間、オブジェクトアクセス数、距離計算回数等)を測定する。算出部133は、第1パラメータ「e0」を任意の値(測定対象値)に設定し、評価指標を測定する。例えば、算出部133は、第1パラメータ「e0」を「20」に設定し、評価指標を測定する処理(測定処理)を行う。算出部133は、第2パラメータ「we」を任意の値(測定対象値)に設定し、評価指標を測定する。例えば、算出部133は、第2パラメータ「we」を「30」に設定し、評価指標を測定する処理(測定処理)を行う。算出部133は、上述した第1パラメータに対する測定処理と同様に、図2に示すような処理により、第2パラメータ「we」を任意の値に設定し、評価指標を測定する。
算出部133は、各試行において、評価用クエリを用いて検索処理を行い、その検索処理の時間を計測するとともに、抽出した検索結果を用いて、再現率を算出する。図2の例では、算出部133は、クエリQE1を用いてグラフGR11からk個の近傍ノードを抽出する検索処理を行い、その検索処理の時間を計測するとともに、抽出した検索結果と近似正解検索結果RR1とを用いて再現率を算出する。算出部133は、抽出した検索結果のうち近似正解検索結果RR1に含まれるオブジェクトの数を、近似正解検索結果RR1のオブジェクトの数で除することにより、再現率を算出する。
算出部133は、台形近似により範囲における平均の評価指標を算出する。算出部133は、台形近似により範囲における平均の検索時間を評価指標として算出する。図2の例では、算出部133は、台形近似により探索結果RS4中の範囲AR11に対応する範囲の平均の評価指標を算出する。算出部133は、係数下限「0.08」と算出用試行結果ED1との間のうち、第1ターゲット精度範囲の下限「R1a」と算出用試行結果ED1との間のみを用いて、平均の評価指標を算出する。また、算出部133は、算出用試行結果ED5と係数上限「0.12」との間のうち、算出用試行結果ED5と第1ターゲット精度範囲の上限「R1b」との間のみを用いて、平均の評価指標を算出する。
算出部133は、検索範囲係数「ε」を下限から上限まで当分に分割して、それぞれの検索範囲係数「ε」での検索を行って評価指標を求める。算出部133は、台形近似により範囲における平均の評価指標を算出する。算出部133は、台形近似により範囲における平均の検索時間を評価指標として算出する。
(決定部134)
決定部134は、各種情報を決定する。決定部134は、各種情報を判定する。決定部134は、各種情報を選択する。決定部134は、記憶部120に記憶された各種情報に基づいて、種々の情報を決定する。決定部134は、記憶部120に記憶された各種情報に基づいて、種々の情報を判定する。決定部134は、オブジェクト情報記憶部121や、ツリー情報記憶部122や、グラフ情報記憶部123や、近似正解検索結果情報記憶部124や、関数情報記憶部125や、調整関連情報記憶部126等に基づいて、各種情報を決定する。
決定部134は、取得部131により取得された各種情報に基づいて、種々の情報を決定する。決定部134は、取得部131により取得された各種情報に基づいて、種々の情報を判定する。決定部134は、算出部133により算出された各種情報に基づいて、種々の情報を決定する。決定部134は、算出部133により算出された各種情報に基づいて、種々の情報を判定する。決定部134は、抽出部135により抽出された各種情報に基づいて、種々の情報を決定する。決定部134は、抽出部135により抽出された各種情報に基づいて、種々の情報を判定する。決定部134は、抽出部135により抽出された各種情報に基づいて、種々の情報を選択する。決定部134は、検索処理における判定処理や決定処理や選択処理を行う。
決定部134は、データセットに対応する複数のノードがエッジにより連結された対象グラフと、閾値とを用いた検索処理を含み、関数に含まれる複数のパラメータの各々の値を調整する調整処理により、複数のパラメータの各々の値を決定する。決定部134は、閾値が示す参照エッジ数による対象グラフの検索処理を含む調整処理により、複数のパラメータの各々の値を決定する。決定部134は、対象グラフを対象とする検索処理を含む調整処理により、複数のパラメータの各々の値を決定する。決定部134は、対象グラフを対象とする検索処理を含む調整処理により、複数のパラメータの各々の値を決定する。
決定部134は、データセットから抽出された抽出オブジェクトに基づく評価用クエリを用いた検索処理を含む調整処理により、複数のパラメータの各々の値を決定する。決定部134は、データセットから抽出された複数の抽出オブジェクトから生成される評価用クエリを用いた検索処理を含む調整処理により、複数のパラメータの各々の値を決定する。
決定部134は、複数の抽出オブジェクトの平均を評価用クエリとする検索処理を含む調整処理により、複数のパラメータの各々の値を決定する。決定部134は、検索処理に関連する評価指標を用いた調整処理により、複数のパラメータの各々の値を決定する。決定部134は、検索処理における検索時間、距離計算回数、及び対象グラフのノードのアクセス数のうち少なくとも1つを、評価指標として用いた調整処理により、複数のパラメータの各々の値を決定する。
決定部134は、第1パラメータの第1値を調整する第1調整処理と、第2パラメータの第2値を調整する第2調整処理と含む調整処理により、第1値と第2値とを決定する。決定部134は、所定の条件を満たすまで第1調整処理と第2調整処理とを繰り返す調整処理により、第1値と第2値とを決定する。決定部134は、第1調整処理により調整された第1パラメータの第1値が、前回の第1調整処理により調整された第1パラメータの前回の第1値と同じ、または、第2調整処理により調整された第2パラメータの第2値が、前回の第2調整処理により調整された第2パラメータの前回の第2値と同じである場合、調整処理を終了する。
決定部134は、第2調整処理により調整された第2値を用いて、第1パラメータの第1値を調整する第1調整処理を行うことにより、第1値と第2値とを決定する。決定部134は、第1調整処理により調整された第1値を用いて、第2パラメータの第2値を調整する第2調整処理を行うことにより、第1値と第2値とを決定する。決定部134は、第1精度範囲を用いて第1調整処理を行い、第2精度範囲を用いて第2調整処理を行うことにより、第1値と第2値とを決定する。
決定部134は、第1精度範囲における検索処理に関連する評価指標を算出することにより、第1値を調整する第1調整処理と、第2精度範囲における評価指標を算出することにより、第2値を調整する第2調整処理とを行うことにより、第1値と第2値とを決定する。決定部134は、検索処理における探索範囲を決定するための係数である検索範囲係数を変動させることにより、第1精度範囲における評価指標を算出し、第1値を調整する第1調整処理と、検索範囲係数を変動させることにより、第2精度範囲における評価指標を算出し、第2値を調整する第2調整処理とを行うことにより、第1値と第2値とを決定する。
決定部134は、検索の起点となる起点ノード決定してもよい。決定部134は、所定のツリー情報を用いて、起点ノードを決定する。決定部134は、図4中の情報群GINF11に示すようなツリー情報IND11を用いて起点ノードを決定する。決定部134は、ツリー情報IND11に基づいて、クエリQE11に対応する起点ノードを決定する。決定部134は、ツリー情報記憶部122(図8参照)に記憶されたツリー情報IND11を用いて、起点ノードを決定する。
決定部134は、図4中のツリー情報IND11に示すような木構造型のツリー情報を用いて、グラフGR11における起点ノードを決定する。決定部134は、クエリQE11に基づいて、ツリー情報IND11を上(ルートRT)から下へ辿ることにより、ツリー情報IND11の近傍候補となる起点ノードを特定する。決定部134は、2個のノードを起点ノードに決定する。
決定部134は、ツリー情報IND11をルートRTからリーフノード(グラフGR11中のノード)まで辿ることにより、クエリQE11に対応する起点ノードを決定してもよい。
図1の例では、決定部134は、評価用クエリを決定する。決定部134は、データセットからランダムに抽出したオブジェクト、または、ランダムに抽出した二つ以上のオブジェクトの平均値のオブジェクトを、クエリオブジェクト(評価用クエリ)に決定する。決定部134は、「7,35,13,93...」の多次元のベクトル情報であるクエリQE1を評価用クエリに決定する。
決定部134は、ターゲット精度範囲を決定する。決定部134は、上記式(1)のような閾値を算出(導出)する関数に含まれる各パラメータ(変数)に対するターゲット精度範囲を決定する。
決定部134は、上記式(1)中の第1パラメータ「e0」と、第2パラメータ「we」との各々のターゲット精度範囲を決定する。決定部134は、種々の情報を適宜用いて、第1パラメータ「e0」と、第2パラメータ「we」との各々のターゲット精度範囲を決定する。決定部134は、ターゲット情報TR1に示すように、第1パラメータ「e0」と第2パラメータ「we」との各々について、ターゲット精度範囲の下限、上限及びマージンを決定する。
決定部134は、第1パラメータ「e0」のターゲット精度範囲(第1ターゲット精度範囲)の下限を「R1a」に、上限を「R1b」に決定し、マージンを「MG1」に決定する。決定部134は、第2パラメータ「we」のターゲット精度範囲(第2ターゲット精度範囲)の下限を「R2a」に、上限を「R2b」に決定し、マージンを「MG2」に決定する。このように、第1パラメータ「e0」の第1ターゲット精度範囲と、第2パラメータ「we」の第2ターゲット精度範囲とを各々個別に決定する。決定部134は、情報処理装置100の管理者等による指定値や、予め記憶部120(図6参照)に記憶された基準値等を用いて、第1パラメータ「e0」と、第2パラメータ「we」との各々のターゲット精度範囲を決定する。
決定部134は、平均の評価指標を、その測定処理で設定した第1パラメータ「e0」の設定値における評価指標に決定する。決定部134は、測定処理を所定の回数繰り返し、最も評価指標が良い設定値を第1パラメータ「e0」の第1値(最適値)に決定する。決定部134は、決定した第1パラメータ「e0」の第1値が前回の第1調整処理で決定した第1パラメータ「e0」の第1値(前回第1値)と同じであるかを判定する。決定部134は、決定した第1パラメータ「e0」の第1値が前回第1値と同じであると判定した場合、調整処理を終了すると決定する。
決定部134は、決定した第1パラメータ「e0」の第1値が前回第1値と同じでないと判定した場合、第2パラメータ「we」を対象とした第2調整処理を実行すると決定する。決定部134は、初回の第1調整処理の場合、前回第1値が無いため、決定した第1パラメータ「e0」の第1値が前回第1値と同じではないと判定し、第2調整処理を実行すると決定する。
決定部134は、測定処理を所定の回数繰り返し、最も評価指標が良い設定値を第2パラメータ「we」の第2値(最適値)に決定。決定部134は、決定した第2パラメータ「we」の第2値が前回の第2調整処理で決定した第2パラメータ「we」の第1値(「前回第2値」ともいう)と同じであるかを判定する。決定部134は、決定した第2パラメータ「we」の第2値が前回第2値と同じであると判定した場合、調整処理を終了すると決定する。決定部134は、決定した第2パラメータ「we」の第2値が前回第2値と同じでないと判定した場合、第1調整処理を再度行う。
(抽出部135)
抽出部135は、各種情報を抽出する。抽出部135は、記憶部120に記憶された各種情報に基づいて、種々の情報を抽出する。抽出部135は、オブジェクト情報記憶部121や、ツリー情報記憶部122や、グラフ情報記憶部123や、近似正解検索結果情報記憶部124や、関数情報記憶部125や、調整関連情報記憶部126等に基づいて、各種情報を抽出する。抽出部135は、取得部131により取得された各種情報に基づいて、種々の情報を抽出する。抽出部135は、生成部132により生成された各種情報に基づいて、種々の情報を抽出する。抽出部135は、算出部133により算出された各種情報に基づいて、種々の情報を抽出する。抽出部135は、決定部134により決定された各種情報に基づいて、種々の情報を抽出する。抽出部135は、検索処理における抽出処理を行う。
抽出部135は、検索クエリに類似するノードである類似ノードを抽出する。抽出部135は、各種情報を検索する検索部であってもよい。抽出部135は、グラフ情報を探索することにより、オブジェクトを検索する。抽出部135は、取得部131により取得されたクエリが取得された場合、グラフ情報を探索することにより、クエリに類似するオブジェクトを検索する。抽出部135は、グラフデータを探索することにより、クエリに類似するオブジェクトを抽出する。抽出部135は、図15に示すような処理手順に基づいて、グラフデータを探索することにより、クエリに類似するオブジェクトを抽出する。
図1の例では、抽出部135は、データセットDS1から評価用クエリの生成に用いるオブジェクトを抽出する。抽出部135は、データセットDS1からランダムに二つ以上の所定数のオブジェクトを抽出オブジェクトとして抽出する。抽出部135は、データセットDS1からオブジェクトOB500とオブジェクトOB1000との2つのオブジェクトを抽出オブジェクトとして抽出する。
抽出部135は、クエリQE1を中心とする半径r内の範囲AR1と、クエリQE1を中心とする半径r(1+ε)内の範囲AR2とを用いて、グラフGR11を検索し、近傍ノードを抽出する。
図3の例では、抽出部135は、測定用検索結果SR1のうち、近似正解検索結果RR1に含まれないオブジェクトを非重複オブジェクトとして抽出する。抽出部135は、非重複オブジェクト情報NOL1に示すように、測定用検索結果SR1のうちオブジェクトOB77を、近似正解検索結果RR1に含まれない非重複オブジェクトとして抽出する。
(提供部136)
提供部136は、各種情報を提供する。提供部136は、端末装置10や情報提供装置50に各種情報を提供する。提供部136は、端末装置10に各種情報を送信する。提供部136は、端末装置10に各種情報を配信する。提供部136は、取得部131により取得された各種情報に基づいて、種々の情報を提供する。提供部136は、生成部132により生成された各種情報に基づいて、種々の情報を提供する。提供部136は、算出部133により算出された各種情報に基づいて、種々の情報を提供する。提供部136は、決定部134により決定された各種情報に基づいて、種々の情報を提供する。提供部136は、抽出部135により抽出された各種情報に基づいて、種々の情報を提供する。提供部136は、検索処理における提供処理を行う。
提供部136は、クエリに対応するオブジェクトIDを検索結果として提供する。提供部136は、決定部134により決定された類似ノードに関する情報を提供する。提供部136は、決定部134により決定された類似ノードを示すオブジェクトIDを端末装置10や情報提供装置50へ提供する。提供部136は、決定部134により決定されたオブジェクトIDをクエリに対応するベクトルを示す情報として、端末装置10や情報提供装置50に提供する。提供部136は、抽出部135により抽出(検索)されたオブジェクトIDを端末装置10や情報提供装置50へ提供する。提供部136は、抽出部135が検索により抽出したオブジェクトIDを情報提供装置50へ提供する。提供部136は、抽出部135により抽出されたオブジェクトIDをクエリに対応するベクトルを示す情報として、端末装置10や情報提供装置50に提供する。
提供部136は、抽出部135により抽出された類似ノードに関する情報を提供する。提供部136は、類似ノードに関する情報を所定のユーザが利用する端末装置10(図5参照)に提供する。提供部136は、クエリの送信元へ検索結果を提供する。図1の例では、提供部136は、ノードN6、N7、N56を示す情報をクエリQE11の類似ノードとして、検索の要求元へ提供する。情報処理装置100は、クエリQE11に基づく検索結果として、ノードN6、N7、N56を示す情報を、検索の要求元へ提供する。提供部136は、クエリQE11の送信元であるユーザU1が利用する端末装置10に検索結果を提供する。提供部136は、クエリQE11に類似するノードN6、N7、N56を示す情報を検索結果として提供する。
〔4.情報処理(決定処理、算出処理)のフロー〕
次に、図13及び図14を用いて、実施形態に係る情報処理システム1による情報処理の手順について説明する。
〔4-1.決定処理のフロー〕
まず、図13について説明する。図13は、実施形態に係る情報処理の一例を示すフローチャートである。具体的には、図13は、実施形態に係る情報処理に含まれる決定処理の一例を示すフローチャートである。
図13に示すように、情報処理装置100は、検索対象となる複数のオブジェクトを含むデータセットを取得する(ステップS101)。例えば、情報処理装置100は、オブジェクト情報記憶部121(図7参照)から、データセットDS1を取得する。
そして、情報処理装置100は、データセットを対象とする検索に用いられる閾値を算出する関数を取得する(ステップS102)。例えば、情報処理装置100は、関数情報記憶部(図11参照)から、関数FC1を取得する。
そして、情報処理装置100は、データセットに対応する複数のノードがエッジにより連結された対象グラフと、閾値とを用いた検索処理を含み、関数に含まれる複数のパラメータの各々の値を調整する調整処理により、複数のパラメータの各々の値を決定する(ステップS103)。情報処理装置100は、データセットに対応する複数のノードがエッジにより連結された対象グラフと、閾値とを用いた検索処理を含む調整処理であって、関数に含まれる複数のパラメータの各々の値を調整する調整処理により、複数のパラメータの各々の値を決定する例えば、情報処理装置100は、調整処理により、関数FC1の第1パラメータ「e0」と第2パラメータ「we」の各々の値を決定する。
〔4-2.算出処理のフロー〕
次に、図14について説明する。図14は、実施形態に係る情報処理の一例を示すフローチャートである。具体的には、図14は、実施形態に係る情報処理に含まれる算出処理の一例を示すフローチャートである。なお、図14に示す算出処理は、図13に示す調整処理内で行われてもよい。
図14に示すように、情報処理装置100は、検索対象となる複数のオブジェクトを含むデータセットを取得する(ステップS201)。例えば、情報処理装置100は、オブジェクト情報記憶部121(図7参照)から、データセットDS1を取得する。
そして、情報処理装置100は、評価用クエリを取得する(ステップS202)。例えば、情報処理装置100は、評価用クエリであるクエリQE1を取得する。
そして、情報処理装置100は、評価用クエリを用いたデータセットの近傍検索の結果である近似正解検索結果を取得する(ステップS203)。例えば、情報処理装置100は、近似正解検索結果情報記憶部124(図10参照)からクエリQE1に対応する近似正解検索結果を取得する。
そして、情報処理装置100は、データセットに対応する複数のノードがエッジにより連結された対象グラフと、評価用クエリとを用いた検索処理を実行する(ステップS204)。例えば、情報処理装置100は、グラフ情報記憶部123(図9参照)に記憶されたグラフGR11と、クエリQE1とを用いた検索処理を実行する。
そして、情報処理装置100は、検索結果のうち、近似正解検索結果に含まれない一のオブジェクトが、近似正解検索結果のうち、評価用クエリから最遠のオブジェクトである最遠オブジェクトよりも評価用クエリに近い場合、一のオブジェクトを正解とする所定の処理を実行する(ステップS205)。例えば、情報処理装置100は、評価用クエリから最遠のオブジェクトである最遠オブジェクトよりも評価用クエリに近い場合、一のオブジェクトを正解として精度を算出する。また、例えば、情報処理装置100は、評価用クエリから最遠のオブジェクトである最遠オブジェクトよりも評価用クエリに近い場合、一のオブジェクトを正解として近似正解検索結果を更新する。
そして、情報処理装置100は、検索処理に関連する評価指標を算出する(ステップS206)。例えば、情報処理装置100は、検索処理に関連する評価指標である検索時間を算出する。
〔5.情報処理(検索処理)のフロー〕
次に、情報処理装置100による検索処理のフローについて、図15を一例として説明する。図15は、実施形態に係る情報処理の一例を示すフローチャートである。具体的には、図15は、グラフデータを用いた検索処理の一例を示すフローチャートである。なお、図15に示す検索処理には、選択処理も含まれる。以下に説明する検索処理は、情報処理装置100によって行われる。また、以下でいうオブジェクトは、ノードと読み替えてもよい。なお、情報処理装置100によるグラフデータを用いた検索は下記に限らず、種々の手順により行われてもよい。
ここでは、近傍集合N(G,y)は、ノードyに付与されているエッジにより関連付けられている近傍のオブジェクトの集合である。例えば、近傍集合N(G,y)は、ノードyからの出力エッジが連結されたオブジェクト(ノード)の集合である。「G」は、所定のグラフデータ(例えば、グラフGR11等)であってもよい。例えば、情報処理装置100は、k近傍検索処理を実行する。
例えば、情報処理装置100は、超球の半径rを∞(無限大)に設定し(ステップS300)、既存のオブジェクト集合から集合Sを抽出する(ステップS301)。例えば、情報処理装置100は、起点ノードとして決定(選択)されたオブジェクト(ノード)を集合Sとして抽出してもよい。また、例えば、超球とは、検索範囲を示す仮想的な球である。なお、ステップS301において抽出された集合Sに含まれるオブジェクト(ノード)は、検索結果(抽出候補)の集合Rの初期集合にも含められる。また、ステップS301において抽出された集合Sに含まれるオブジェクト(ノード)は、集合Cに含められてもよい。集合Cは、重複検索を回避するために便宜上設けられるものであり、処理開始時には空集合に設定されてもよい。
次に、情報処理装置100は、集合Sに含まれるオブジェクトの中で、検索クエリオブジェクトをyとするとオブジェクトyとの距離が最も短いオブジェクトを抽出し、オブジェクトsとする(ステップS302)。例えば、図1の例では、情報処理装置100は、オブジェクトyであるクエリQE1に対応する起点ノードであるノードN2等が含まれる集合Sから、一のノードをオブジェクトs(対象ノード)として抽出する。次に、情報処理装置100は、オブジェクトsを集合Sから除外する(ステップS303)。例えば、図1の例では、情報処理装置100は、起点ノードであるノードN2を集合Sから除外する。
次に、情報処理装置100は、オブジェクトsとオブジェクトyとの距離d(s,y)がr(1+ε)を超えるか否かを判定する(ステップS304)。ここで、εは拡張要素であり、r(1+ε)は、探索範囲(この範囲内のノードのみを探索する。検索範囲よりも大きくすることで精度を高めることができる)の半径を示す値である。オブジェクトsとオブジェクトyとの距離d(s,y)がr(1+ε)を超える場合(ステップS304:Yes)、情報処理装置100は、集合Rをオブジェクトyの近傍集合として出力し(ステップS305)、処理を終了する。
オブジェクトsと検索クエリオブジェクトyとの距離d(s,y)がr(1+ε)を超えない場合(ステップS304:No)、情報処理装置100は、オブジェクトsの近傍集合N(G,s)の要素であるオブジェクトの中から集合Cに含まれないオブジェクトを、所定の基準に基づいて一つ選択し、選択したオブジェクトuを、集合Cに格納する(ステップS306)。例えば、図1の例では、情報処理装置100は、ノードN2の連結ノードであるノードN1、N43等のうち、クエリQE11と最も近いノード(例えばノードN43)をオブジェクトuとして選択する。
次に、情報処理装置100は、オブジェクトuとオブジェクトyとの距離d(u,y)がr(1+ε)以下であるか否かを判定する(ステップS307)。オブジェクトuとオブジェクトyとの距離d(u,y)がr(1+ε)以下である場合(ステップS307:Yes)、情報処理装置100は、オブジェクトuを集合Sに追加する(ステップS308)。また、オブジェクトuとオブジェクトyとの距離d(u,y)がr(1+ε)以下ではない場合(ステップS307:No)、情報処理装置100は、ステップS309の判定(処理)を行う。
次に、情報処理装置100は、オブジェクトuとオブジェクトyとの距離d(u,y)がr以下であるか否かを判定する(ステップS309)。オブジェクトuとオブジェクトyとの距離d(u,y)がrを超える場合、情報処理装置100は、ステップS315の判定(処理)を行う。また、オブジェクトuとオブジェクトyとの距離d(u,y)がr以下ではない場合(ステップS309:No)、情報処理装置100は、ステップS315の判定(処理)を行う。
オブジェクトuとオブジェクトyとの距離d(u,y)がr以下である場合(ステップS309:Yes)、情報処理装置100は、オブジェクトuを集合Rに追加する(ステップS310)。そして、情報処理装置100は、集合Rに含まれるオブジェクト数がksを超えるか否かを判定する(ステップS311)。所定数ksは、任意に定められる自然数である。例えば、ksは、検索における抽出数を示し、「3」や「20」や「100」等の任意の値であってもよい。集合Rに含まれるオブジェクト数がksを超えない場合(ステップS311:No)、情報処理装置100は、ステップS313の判定(処理)を行う。
集合Rに含まれるオブジェクト数がksを超える場合(ステップS311:Yes)、情報処理装置100は、集合Rに含まれるオブジェクトの中でオブジェクトyとの距離が最も長い(遠い)オブジェクトを、集合Rから除外する(ステップS312)。
次に、情報処理装置100は、集合Rに含まれるオブジェクト数がksと一致するか否かを判定する(ステップS313)。集合Rに含まれるオブジェクト数がksと一致しない場合(ステップS313:No)、情報処理装置100は、ステップS315の判定(処理)を行う。また、集合Rに含まれるオブジェクト数がksと一致する場合(ステップS313:Yes)、情報処理装置100は、集合Rに含まれるオブジェクトの中でオブジェクトyとの距離が最も長い(遠い)オブジェクトと、オブジェクトyとの距離を、新たなrに設定する(ステップS314)。
そして、情報処理装置100は、オブジェクトsの近傍集合N(G,s)の要素であるオブジェクトから閾値に対応する個数のオブジェクトを選択したか否かを判定する(ステップS315)。例えば、図1の例では、情報処理装置100は、ノードN2の対象ノードとした繰り返し処理において、関数FC1の出力値「ep」である閾値TH1に対応する数だけノード(判定対象ノード)を選択したかを判定する。オブジェクトsの近傍集合N(G,s)の要素であるオブジェクトから閾値に対応する個数のオブジェクトを選択していない場合(ステップS315:No)、情報処理装置100は、ステップS306に戻って処理を繰り返す。
オブジェクトsの近傍集合N(G,s)の要素であるオブジェクトから閾値に対応する個数のオブジェクトを選択した場合(ステップS315:Yes)、情報処理装置100は、集合Sが空集合であるか否かを判定する(ステップS316)。なお、情報処理装置100は、オブジェクトsの近傍集合N(G,s)から閾値に対応する個数までオブジェクトを選択する前であっても、オブジェクトsの近傍集合N(G,s)中の全オブジェクトが選択済みである場合、ステップS316の処理を行ってもよい。すなわち、情報処理装置100は、オブジェクトsの近傍集合N(G,s)中のオブジェクト数が閾値以下であり、近傍集合N(G,s)中の全オブジェクトを選択した場合、ステップS315がYesである場合と同様に、ステップS316の処理を行ってもよい。集合Sが空集合でない場合(ステップS316:No)、情報処理装置100は、ステップS302に戻って処理を繰り返す。また、集合Sが空集合である場合(ステップS316:Yes)、情報処理装置100は、集合Rを出力し、処理を終了する(ステップS317)。例えば、図1の例では、情報処理装置100は、集合Rに含まれるノードN2、N43、N1等をクエリQE1(入力オブジェクトy)に対応する検索結果として出力する。また、例えば、情報処理装置100は、集合Rに含まれるオブジェクト(ノード)を検索クエリ(入力オブジェクトy)に対応する検索結果として、検索を行った端末装置10等へ提供してもよい。
〔6.効果〕
上述してきたように、実施形態に係る情報処理装置100は、取得部131と、算出部133とを有する。取得部131は、検索対象となる複数のオブジェクトを含むデータセットと、評価用クエリと、評価用クエリを用いたデータセットの近傍検索の結果である近似正解検索結果とを取得する。算出部133は、データセットに対応する複数のノードがエッジにより連結された対象グラフと、評価用クエリとを用いた検索処理による検索結果のうち、近似正解検索結果に含まれない一のオブジェクトが、近似正解検索結果のうち、評価用クエリから最遠のオブジェクトである最遠オブジェクトよりも評価用クエリに近い場合、一のオブジェクトを正解とする所定の処理を行うことにより、検索処理に関連する評価指標を算出する。
このように、実施形態に係る情報処理装置100は、検索処理による検索結果に、近似正解検索結果よりもクエリに近似するオブジェクトが含まれる場合、そのオブジェクトを正解とする所定の処理を行い、検索処理に関連する評価指標を算出することで、検索処理に関連する評価指標を適切に算出することができる。
また、実施形態に係る情報処理装置100において、取得部131は、複数のオブジェクトの各々に対応する複数のノードがエッジにより連結された対象グラフを取得する。算出部133は、対象グラフを対象とする検索処理による検索結果のうち、一のオブジェクトが、最遠オブジェクトよりも評価用クエリに近い場合、所定の処理を行うことにより、検索処理に関連する評価指標を算出する。
このように、実施形態に係る情報処理装置100は、複数のオブジェクトの各々に対応する複数のノードがエッジにより連結された対象グラフを用いた検索処理を対象に、検索処理に関連する評価指標を算出することで、検索処理に関連する評価指標を適切に算出することができる。
また、実施形態に係る情報処理装置100において、取得部131は、データセットのうち、一部のオブジェクト群の各々に対応する複数のノードがエッジにより連結された対象グラフを取得する。算出部133は、対象グラフを対象とする検索処理による検索結果のうち、一のオブジェクトが、最遠オブジェクトよりも評価用クエリに近い場合、所定の処理を行うことにより、検索処理に関連する評価指標を算出する。
このように、実施形態に係る情報処理装置100は、データセットのうち、一部のオブジェクト群の各々に対応する複数のノードがエッジにより連結された対象グラフを用いた検索処理を対象に、検索処理に関連する評価指標を算出することで、検索処理に関連する評価指標を適切に算出することができる。
また、実施形態に係る情報処理装置100において、算出部133は、データセットから抽出された抽出オブジェクトに基づく評価用クエリを用いた検索処理による検索結果のうち、一のオブジェクトが、最遠オブジェクトよりも評価用クエリに近い場合、所定の処理を行うことにより、検索処理に関連する評価指標を算出する。
このように、実施形態に係る情報処理装置100は、データセットから抽出された抽出オブジェクトに基づく評価用クエリを用いて、検索処理に関連する評価指標を算出することで、検索処理に関連する評価指標を適切に算出することができる。
また、実施形態に係る情報処理装置100において、算出部133は、データセットから抽出された複数の抽出オブジェクトから生成される評価用クエリを用いた検索処理による検索結果のうち、一のオブジェクトが、最遠オブジェクトよりも評価用クエリに近い場合、所定の処理を行うことにより、検索処理に関連する評価指標を算出する。
このように、実施形態に係る情報処理装置100は、データセットから抽出された複数の抽出オブジェクトから生成される評価用クエリを用いて、検索処理に関連する評価指標を算出することで、検索処理に関連する評価指標を適切に算出することができる。
また、実施形態に係る情報処理装置100において、算出部133は、複数の抽出オブジェクトの平均を評価用クエリとする検索処理による検索結果のうち、一のオブジェクトが、最遠オブジェクトよりも評価用クエリに近い場合、所定の処理を行うことにより、検索処理に関連する評価指標を算出する。
このように、実施形態に係る情報処理装置100は、複数の抽出オブジェクトの平均を評価用クエリとして用いて、検索処理に関連する評価指標を算出することで、検索処理に関連する評価指標を適切に算出することができる。
また、実施形態に係る情報処理装置100において、算出部133は、検索処理における検索時間、距離計算回数、及び対象グラフのノードのアクセス数のうち少なくとも1つを、評価指標として算出する。
このように、実施形態に係る情報処理装置100は、検索処理における検索時間、距離計算回数、及び対象グラフのノードのアクセス数のうち少なくとも1つを、評価指標として算出することで、検索処理に関連する評価指標を適切に算出することができる。
また、実施形態に係る情報処理装置100において、取得部131は、ターゲットとする検索精度の範囲を示す精度範囲を取得する。算出部133は、精度範囲を用いて評価指標を算出する。
このように、実施形態に係る情報処理装置100は、ターゲットとする検索精度の範囲を示す精度範囲を用いて評価指標を算出することで、検索処理に関連する評価指標を適切に算出することができる。
また、実施形態に係る情報処理装置100において、取得部131は、再現率の範囲を示す精度範囲を取得する。
このように、実施形態に係る情報処理装置100は、再現率の範囲を示す精度範囲を用いて評価指標を算出することで、検索処理に関連する評価指標を適切に算出することができる。
また、実施形態に係る情報処理装置100において、算出部133は、精度範囲における評価指標を算出する。
このように、実施形態に係る情報処理装置100は、精度範囲における評価指標を算出することで、検索処理に関連する評価指標を適切に算出することができる。
また、実施形態に係る情報処理装置100において、算出部133は、検索処理における探索範囲を決定するための係数である検索範囲係数を変動させることにより、精度範囲における評価指標を算出する。
このように、実施形態に係る情報処理装置100は、検索処理における探索範囲を決定するための係数である検索範囲係数を変動させることにより、精度範囲における評価指標を算出することで、検索処理に関連する評価指標を適切に算出することができる。
また、実施形態に係る情報処理装置100において、算出部133は、検索精度が精度範囲に含まれる複数の検索範囲係数の値の各々に対応する複数の個別評価指標を用いて、精度範囲における評価指標を算出する。
このように、実施形態に係る情報処理装置100は、検索精度が精度範囲に含まれる複数の検索範囲係数の値の各々に対応する複数の個別評価指標を用いることで、検索処理に関連する評価指標を適切に算出することができる。
また、実施形態に係る情報処理装置100において、算出部133は、精度範囲の下限以下の検索精度になる検索範囲係数の第1値と、精度範囲の上限以上の検索精度になる検索範囲係数の第2値とを用いて、精度範囲における評価指標を算出する。
このように、実施形態に係る情報処理装置100は、精度範囲の下限以下の第1値や精度範囲の上限以上の第2値を用いることで、検索処理に関連する評価指標を適切に算出することができる。
また、実施形態に係る情報処理装置100において、算出部133は、第1値と、第2値との間を等分した複数の検索範囲係数の値の各々に対応する複数の個別評価指標を用いて、精度範囲における評価指標を算出する。
このように、実施形態に係る情報処理装置100は、第1値と、第2値との間を等分した複数の検索範囲係数の値の各々に対応する複数の個別評価指標を用いることで、検索処理に関連する評価指標を適切に算出することができる。
また、実施形態に係る情報処理装置100において、算出部133は、台形近似により、精度範囲における評価指標を算出する。
このように、実施形態に係る情報処理装置100は、台形近似により、精度範囲における評価指標を算出することで、検索処理に関連する評価指標を適切に算出することができる。
また、実施形態に係る情報処理装置100において、算出部133は、対象グラフを対象とする検索処理による検索結果のうち、一のオブジェクトが、最遠オブジェクトよりも評価用クエリに近い場合、一のオブジェクトを正解として、評価指標を算出する。
このように、実施形態に係る情報処理装置100は、検索処理による検索結果に、近似正解検索結果よりもクエリに近似するオブジェクトが含まれる場合、そのオブジェクトを正解として、評価指標を算出することで、検索処理に関連する評価指標を適切に算出することができる。
また、実施形態に係る情報処理装置100において、算出部133は、対象グラフを対象とする検索処理による検索結果のうち、一のオブジェクトが、最遠オブジェクトよりも評価用クエリに近い場合、一のオブジェクトを近似正解検索結果に追加する更新処理を行い、評価指標を算出する。
このように、実施形態に係る情報処理装置100は、検索処理による検索結果に、近似正解検索結果よりもクエリに近似するオブジェクトが含まれる場合、そのオブジェクトを近似正解検索結果に追加する更新処理を行うことで、検索処理に関連する評価指標を適切に算出することができる。
また、実施形態に係る情報処理装置100において、算出部133は、一のオブジェクトを近似正解検索結果に追加し、最遠オブジェクトを近似正解検索結果から除外する更新処理を行い、評価指標を算出する。
このように、実施形態に係る情報処理装置100は、検索処理による検索結果に、近似正解検索結果よりもクエリに近似するオブジェクトが含まれる場合、そのオブジェクトを近似正解検索結果に追加し、最遠オブジェクトを近似正解検索結果から除外することで、検索処理に関連する評価指標を適切に算出することができる。
また、実施形態に係る情報処理装置100において、算出部133は、更新処理を行った場合、評価指標を算出する処理を再度実行することにより、評価指標を算出する。
このように、実施形態に係る情報処理装置100は、更新処理を行った場合、評価指標を算出する処理を再度実行することにより、評価指標を算出することで、検索処理に関連する評価指標を適切に算出することができる。
また、実施形態に係る情報処理装置100において、取得部131は、データセットを対象とする検索に用いられる閾値を算出する関数を取得する。算出部133は、関数に含まれる複数のパラメータの各々の値を調整する調整処理における検索処理による検索結果のうち、一のオブジェクトが、最遠オブジェクトよりも評価用クエリに近い場合、所定の処理を行うことにより、評価指標を算出する。
このように、実施形態に係る情報処理装置100は、データセットを対象とする検索に用いられる閾値を算出する関数に含まれる複数のパラメータの各々の値を調整する調整処理において、検索処理に関連する評価指標を適切に算出することができる。
また、実施形態に係る情報処理装置100において、取得部131は、グラフの検索時に用いられる閾値を算出する関数を取得する。
このように、実施形態に係る情報処理装置100は、グラフの検索時に用いられる閾値を算出する関数を対象とする調整処理において、検索処理に関連する評価指標を適切に算出することができる。
また、実施形態に係る情報処理装置100において、取得部131は、対象グラフの検索時に参照する参照エッジ数を示す閾値を算出する関数を取得する。算出部133は、閾値が示す参照エッジ数による対象グラフの検索処理を含む調整処理により、複数のパラメータの各々の値を決定する。
このように、実施形態に係る情報処理装置100は、対象グラフの検索時に参照する参照エッジ数を示す閾値を算出する関数を対象とする調整処理において、検索処理に関連する評価指標を適切に算出することができる。
また、実施形態に係る情報処理装置100において、取得部131は、第1パラメータと第2パラメータとを含む関数を取得する。算出部133は、第1パラメータの第1値と、第2パラメータの第2値とを調整する調整処理における検索処理による検索結果のうち、一のオブジェクトが、最遠オブジェクトよりも評価用クエリに近い場合、所定の処理を行うことにより、評価指標を算出する。
このように、実施形態に係る情報処理装置100は、第1パラメータと第2パラメータとを含む関数を対象とする調整処理において、検索処理に関連する評価指標を適切に算出することができる。
また、実施形態に係る情報処理装置100において、取得部131は、検索精度が高くなるほど、第1パラメータよりも影響が強くなる第2パラメータを含む関数を取得する。
このように、実施形態に係る情報処理装置100は、検索精度が高くなるほど、第1パラメータよりも影響が強くなる第2パラメータを含む関数を対象とする調整処理において、検索処理に関連する評価指標を適切に算出することができる。
また、実施形態に係る情報処理装置100において、取得部131は、定数項である第1パラメータと、所定の値を底とする指数に含まれる第2パラメータとを含む関数を取得する。
このように、実施形態に係る情報処理装置100は、定数項である第1パラメータと、所定の値を底とする指数に含まれる第2パラメータとを含む関数を対象とする調整処理において、検索処理に関連する評価指標を適切に算出することができる。
また、実施形態に係る情報処理装置100において、取得部131は、検索処理における探索範囲を決定するための係数である検索範囲係数を含む関数を取得する。
このように、実施形態に係る情報処理装置100は、検索処理における探索範囲を決定するための係数である検索範囲係数を含む関数を対象とする調整処理において、検索処理に関連する評価指標を適切に算出することができる。
また、実施形態に係る情報処理装置100において、取得部131は、第2パラメータと検索範囲係数との掛け合わせを含む関数を取得する。
このように、実施形態に係る情報処理装置100は、第2パラメータと検索範囲係数との掛け合わせを含む関数を対象とする調整処理において、検索処理に関連する評価指標を適切に算出することができる。
〔7.ハードウェア構成〕
上述してきた実施形態に係る情報処理装置100は、例えば図16に示すような構成のコンピュータ1000によって実現される。図16は、情報処理装置の機能を実現するコンピュータの一例を示すハードウェア構成図である。コンピュータ1000は、CPU1100、RAM1200、ROM(Read Only Memory)1300、HDD(Hard Disk Drive)1400、通信インターフェイス(I/F)1500、入出力インターフェイス(I/F)1600、及びメディアインターフェイス(I/F)1700を有する。
CPU1100は、ROM1300またはHDD1400に格納されたプログラムに基づいて動作し、各部の制御を行う。ROM1300は、コンピュータ1000の起動時にCPU1100によって実行されるブートプログラムや、コンピュータ1000のハードウェアに依存するプログラム等を格納する。
HDD1400は、CPU1100によって実行されるプログラム、及び、かかるプログラムによって使用されるデータ等を格納する。通信インターフェイス1500は、ネットワークNを介して他の機器からデータを受信してCPU1100へ送り、CPU1100が生成したデータをネットワークNを介して他の機器へ送信する。
CPU1100は、入出力インターフェイス1600を介して、ディスプレイやプリンタ等の出力装置、及び、キーボードやマウス等の入力装置を制御する。CPU1100は、入出力インターフェイス1600を介して、入力装置からデータを取得する。また、CPU1100は、生成したデータを入出力インターフェイス1600を介して出力装置へ出力する。
メディアインターフェイス1700は、記録媒体1800に格納されたプログラムまたはデータを読み取り、RAM1200を介してCPU1100に提供する。CPU1100は、かかるプログラムを、メディアインターフェイス1700を介して記録媒体1800からRAM1200上にロードし、ロードしたプログラムを実行する。記録媒体1800は、例えばDVD(Digital Versatile Disc)、PD(Phase change rewritable Disk)等の光学記録媒体、MO(Magneto-Optical disk)等の光磁気記録媒体、テープ媒体、磁気記録媒体、または半導体メモリ等である。
例えば、コンピュータ1000が実施形態に係る情報処理装置100として機能する場合、コンピュータ1000のCPU1100は、RAM1200上にロードされたプログラムを実行することにより、制御部130の機能を実現する。コンピュータ1000のCPU1100は、これらのプログラムを記録媒体1800から読み取って実行するが、他の例として、他の装置からネットワークNを介してこれらのプログラムを取得してもよい。
以上、本願の実施形態のいくつかを図面に基づいて詳細に説明したが、これらは例示であり、発明の開示の行に記載の態様を始めとして、当業者の知識に基づいて種々の変形、改良を施した他の形態で本発明を実施することが可能である。
〔8.その他〕
また、上記実施形態において説明した各処理のうち、自動的に行われるものとして説明した処理の全部または一部を手動的に行うこともでき、あるいは、手動的に行われるものとして説明した処理の全部または一部を公知の方法で自動的に行うこともできる。この他、上記文書中や図面中で示した処理手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。例えば、各図に示した各種情報は、図示した情報に限られない。
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的形態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。
また、上述してきた各実施形態に記載された各処理は、処理内容を矛盾させない範囲で適宜組み合わせることが可能である。
また、上述してきた「部(section、module、unit)」は、「手段」や「回路」などに読み替えることができる。例えば、取得部は、取得手段や取得回路に読み替えることができる。