特許法第30条第2項適用 公開日 令和2年3月25日 令和2年7月27日時点における本願に関連するソフトウェアを公開するページ https://github.com/yahoojapan/NGT/releases/tag/v1.10.0
以下に、本願に係る情報処理装置、情報処理方法及び情報処理プログラムを実施するための形態(以下、「実施形態」と呼ぶ)について図面を参照しつつ詳細に説明する。なお、この実施形態により本願に係る情報処理装置、情報処理方法及び情報処理プログラムが限定されるものではない。また、以下の各実施形態において同一の部位には同一の符号を付し、重複する説明は省略される。
〔1.情報処理装置が示す推定処理の一例〕
まず、図1を用いて、情報処理装置100が実行する推定処理の一例について説明する。図1は、実施形態に係る情報処理装置100が実行する推定処理の一例を示す図である。図1の例では、情報処理装置100が画像を検索する際に、検索に用いる推定対象グラフを生成する例を挙げて説明する。
図1に示すように、情報処理装置100は、オブジェクトの集合であるオブジェクト群(オブジェクト群が示すオブジェクト数が第2数の一例に相当)を外部装置から取得する(ステップS1)。
例えば、外部装置に記憶される電子商取引サービスにおいて取引される取引対象に関する画像情報から検索対象のオブジェクトを検索する検索要求を外部装置から受付けるものとする。この場合、情報処理装置100は、オブジェクト群として、取引対象に関する画像情報の集合(取引対象群の一例)を外部装置から取得する。より具体的な例を挙げると、情報処理装置100は、オブジェクト群が示す第2数である「10000000」のオブジェクトを外部装置から取得する。なお、以下では、各オブジェクトは、ベクトル化され、ベクトル化されたオブジェクト(ベクトル情報)を対象として、後述する推定処理等の各種処理を行う。
続いて、情報処理装置100は、オブジェクト群から第1数のオブジェクトを選択する(ステップS2)。例えば、情報処理装置100は、「10000000」のオブジェクトから、第1数として「12500」のオブジェクトを選択する。
そして、情報処理装置100は、第1数のオブジェクトに対応する各ノードが連結されるエッジの数である連結エッジ数を初期値に設定する(ステップS3)。例えば、情報処理装置100は、連結エッジ数の初期値として、「100」と設定する。
続いて、情報処理装置100は、第1数のオブジェクトと、連結エッジ数とに基づいて、測定対象グラフを生成する(ステップS4)。例えば、情報処理装置100は、「12500」のオブジェクトと、「100」の連結エッジ数とに基づいて、測定対象グラフを生成する。
以下では、エッジが有効エッジである場合について説明する。ここで、有向エッジとは、一方向にしかデータを辿れないエッジを意味する。以下では、エッジにより辿る元、すなわち始点となるノードを参照元とし、エッジにより辿る先、すなわち終点となるノードを参照先とする。例えば、所定のノード「A」から所定のノード「B」に連結される有向エッジとは、参照元をノード「A」とし、参照先をノード「B」とするエッジである。
例えば、ノード「A」を参照元とするエッジをノード「A」の出力エッジという。また、例えば、ノード「B」を参照先とするエッジをノード「B」の入力エッジという。すなわち、ここでいう出力エッジ及び入力エッジとは、一の有向エッジをその有向エッジが連結する2個のノードのうち、いずれのノードを中心として捉えるか否かの相違であり、一の有向エッジが出力エッジ及び入力エッジになる。すなわち、出力エッジ及び入力エッジは、相対的な概念であって、一の有向エッジについて、参照元となるノードを中心として捉えた場合に出力エッジとなり、参照先となるノードを中心として捉えた場合に入力エッジとなる。
なお、本実施形態においては、エッジについては、出力エッジや入力エッジ等の有向エッジを対象とするため、以下では、有向エッジを単に「エッジ」と記載する場合がある。また、ここでいう、各ノードは、各オブジェクトに対応する。
例えば、情報処理装置100は、測定対象グラフGR1のような測定対象グラフを生成する。測定対象グラフGR1は、第1数のオブジェクトに対応するノードが有向エッジで連結されたグラフ情報である。
なお、ノードは、「ノードN*(*は任意の数値)」と記載した場合、ノードID「N*」によって識別されるノードを示す。例えば、ノードは、「ノードN1」と記載した場合、ノードID「N1」によって識別されるノードを示す。
また、エッジは、「エッジE*(*は任意の数値)」と記載した場合、エッジID「E*」によって識別されるエッジを示す。例えば、エッジは、「エッジE31」と記載した場合、エッジID「E31」によって識別されるエッジである。
また、測定対象グラフGR1には、第1数に対応する数のノードが含まれるが、図1の例では、説明を簡単にするために、5個のノードを図示して処理の概要を説明する。例えば、情報処理装置100は、測定対象グラフGR1に示すように、ノードN1~N3、N43、N53等の複数のノードを含むグラフ情報を生成する。
例えば、図1の例では、情報処理装置100は、各オブジェクトに対応する各ノードから連結エッジ数「100」の出力エッジが他のエッジに連結されるように、測定対象グラフGR1を生成する。また、情報処理装置100は、測定対象グラフGR1における各ノードが、そのノードとの間の距離が近い方から連結エッジ数「100」のノードへの出力エッジが連結されるように測定対象グラフGR1を生成する。
ここで、各ノード間の距離は、ノードの類似性を示し、距離が近いほど類似している。本実施形態においては、測定対象グラフGR1における各ノードの距離を、各ノードに対応する各オブジェクト間の類似度とする。例えば、各ノードに対応するオブジェクトの類似性が、測定対象グラフGR1におけるノード間の距離として写像されているものとする。例えば、各ノードに対応する概念間の類似度が各ノード間の距離に写像されているものとする。ここで、図1の例では、測定対象グラフGR1における各ノード間の距離が短いオブジェクト同士の類似度が高いことを示し、測定対象グラフGR1における各ノード間の距離が長いオブジェクト同士の類似度が低いことを示す。
例えば、測定対象グラフGR1において、ノードN43とノードN2とは近接している、すなわち、距離が短い(近い)。そのため、ノードN43に対応するオブジェクトと、ノードN2に対応するオブジェクトとは類似度が高いことを示す。また、測定対象グラフGR1において、ノードN43とノードN53とは遠隔にある、すなわち、距離が長い(遠い)。そのため、ノードN43に対応するオブジェクトと、ノードN53に対応するオブジェクトとは類似度が低いことを示す。
なお、上記例では、ノード間の類似度を示す指標として、距離を挙げたが、距離は、ベクトル(N次元ベクトル)間の距離として適用可能であれば、如何なる距離であってもよい。例えば、距離は、ユークリッド距離や、マハラノビス距離等の種々の距離であってもよい。また、ノード間の類似度は、2つのオブジェクト間の類似度を反映するものであれば、如何なる情報であってもよく、例えば、コサイン類似度等の角度に関する情報であってもよい。
また、測定対象グラフGR1では、ノードN1は、ノードN53へ向かう有向エッジであるエッジE2が連結される。すなわち、ノードN1は、ノードN53とエッジE2とによって連結される。例えば、ノードN1を参照元とし、ノードN53を参照先として連結されるエッジE2により、ノードN1からノードN53に辿ることが可能となる。この場合、有向エッジであるエッジE2は、ノードN1を中心として識別される場合、出力エッジとなり、ノードN53を中心として識別される場合、入力エッジとなる。
言い換えると、有向エッジであるエッジE2は、ノードN1側からの視点でとらえた場合、ノードN1自身から他のエッジへ矢印が向いているエッジ(外向きエッジ)となり、ノードN53側からの視点でとらえた場合、ノードN53自身の方に矢印が向いているエッジ(内向きエッジ)となる。すなわち、ここでいう出力エッジは、外向きエッジと読み替えることができ、入力エッジは、内向きエッジと読み替えることができる。また、図1では図示を省略するが、ノードN53は、ノードN1へ向かう有向エッジ(エッジE531とする)が連結されてもよい。このように、ノードN53からの出力エッジであるエッジE531がノードN1に連結されてもよい。この場合、ノードN1とノードN53との間には、ノードN1からノードN53へ向かう有向エッジであるエッジE2と、ノードN53からノードN1へ向かう有向エッジであるエッジE531との2個のエッジが連結される。
そして、情報処理装置100は、測定対象グラフの評価指標として検索精度を測定する。なお、ここでいう評価指標は、測定対象グラフの性能を示す指標であれば、如何なる指標であってもよく、検索精度の代わりに、例えば、検索時間や、オブジェクトアクセス数や、距離計算回数や、測定対象グラフの生成速度等であってもよい。
ここで、精確な正解データを生成するには、すべてのオブジェクトとの距離を計算する必要があり、大規模なオブジェクト群である場合には現実的な時間でできない。そのため、情報処理装置100が近似正解データを生成する場合に、評価用クエリに対して正解データを得る代わりに、何らかの評価対象のインデックスを用いて近似正解データを事前に取得するものとする。例えば、情報処理装置100は、近傍検索に関する種々の技術を適宜用いて、評価用クエリに対応する近似正解データを生成する。
ここで、近似正解データを生成する生成処理について説明する。まず、情報処理装置100は、評価用クエリを決定する。例えば、情報処理装置100は、第1数のオブジェクトからランダムに抽出したオブジェクト、または、ランダムに抽出した二つ以上のオブジェクトの平均値のオブジェクトを、評価用クエリに決定する。
例えば、情報処理装置100は、第1数のオブジェクトからランダムに二つ以上の所定数のオブジェクトを評価用クエリの生成に用いるオブジェクトとして抽出する。そして、情報処理装置100は、ランダムに抽出された複数のオブジェクトの平均値である多次元のベクトル情報を評価用クエリに決定する。
なお、上記は一例であり、情報処理装置100は、種々の情報を適宜用いて、評価用クエリを決定してもよい。平均値を求める複数のオブジェクトは、ランダムに選択した一つのオブジェクトと、そのオブジェクトに対して距離が近いオブジェクトを一つ以上選択したオブジェクトとしてもよい。また、例えば、情報処理装置100は、オブジェクト群のうち、第1数のオブジェクトに対応する測定対象グラフに含まれないオブジェクトを評価用クエリとして用いてもよい。
次に、情報処理装置100は、近似正解データを取得する。ここで、近似正解データとは、評価用クエリを対象とする近似正解データである。情報処理装置100は、評価用クエリを用いて、k個(kは任意の数)のノードを近傍ノードとして抽出した結果を示す近似正解データを取得する。
例えば、情報処理装置100は、後述する図5に示す検索処理により、評価用クエリに対応する近似正解データを生成する。この場合、情報処理装置100は、検索範囲係数「ε」の値を所定値以上大きくして、測定対象グラフGR1を用いて図5に示す検索処理を行うことにより、評価用クエリに対応する近似正解データを生成する。これにより、情報処理装置100は、すべてのオブジェクトとの距離を計算して正解データを生成する場合に比べて、処理時間を短縮することができる。
なお、上記処理は一例であり、すべてのオブジェクトとの距離を計算して正解データを生成するよりも短い処理時間で、近似正解データを生成することができれば、情報処理装置100は、如何なる処理により、近似正解データを生成してもよい。
ここで、検索範囲係数「ε」の概念について簡単に説明する。例えば、情報処理装置100は、評価用クエリを中心とする半径r内の第1範囲と、評価用クエリを中心とする半径r(1+ε)内の第2範囲とを用いて、測定対象グラフGR1を検索し、近傍ノードを抽出する。このように、情報処理装置100は、検索範囲係数「ε」を適用した処理により、近傍ノードを抽出する処理を行うが、検索範囲係数「ε」を用いた処理の詳細は図5において説明する。
そして、情報処理装置100は、測定対象グラフGR1の検索精度を測定する。ここで、検索精度とは、例えば、再現率である。ここでいう再現率とは、「(近似正解データの中で実際に検索された結果)/(近似正解データ)」で得られる指標である。すなわち、再現率は、検索精度の測定対象となる検索処理における「近似正解データの中で実際に検索された結果」を、「近似正解データ」で除算することにより算出される。例えば、情報処理装置100は、検索条件として、測定対象グラフGR1に含まれるすべてのエッジを利用し、且つ、εの値を0とし、図5に示す検索処理を行う。これにより、情報処理装置100は、近傍ノードを取得する。そして、情報処理装置100は、かかる近傍ノードと、近似正解データとを比較することで、測定対象グラフGR1の検索精度を測定する。例えば、情報処理装置100は、検索処理を連結エッジ数「100」の測定対象グラフに行い、取得された近傍ノードと、評価用クエリとを比較することで検索精度「98%」と測定する。
また、情報処理装置100は、測定対象グラフの検索精度が条件を満たすか否かを判定する(ステップS5)。例えば、情報処理装置100は、測定対象グラフの検索精度が条件を満たさないと判定した場合に(ステップS5;No)、連結エッジ数を変更する(ステップS6)。例えば、情報処理装置100は、測定対象グラフの検索精度が条件を満たさないと判定した場合に、測定対象グラフが示す連結エッジ数を小さい数に変更する。そして、情報処理装置100は、小さい数に変更した連結エッジ数に基づいて、測定対象グラフを生成する(ステップS4)。情報処理装置100は、このような処理(ステップS4~S6)を測定対象グラフの検索精度が条件を満たすと判定するまで繰返す。
一方、情報処理装置100は、測定対象グラフの検索精度が条件を満たすと判定した場合に(ステップS5;Yes)、測定対象グラフの検索精度が条件を満たした連結エッジ数を、第1数に対応する最適エッジ数と特定する(ステップS6)。例えば、検索精度が90%以上であり、且つ、最適エッジ数が最小値を示す場合に、測定対象グラフの検索精度が条件を満たすものとする。この場合、情報処理装置100は、測定対象グラフの検索精度が条件を満たすと判定したときに、「12500」に対応する最適エッジ数を「25」と特定する。
ここで、連結エッジ数の変更処理について説明する。例えば、検索精度が90%以上であり、且つ、最適エッジ数が最小値を示す場合に、測定対象グラフの検索精度が条件を満たすものとする。また、測定対象グラフの検索精度が条件を満たさない場合に、連結エッジ数を半分の値に変更するものとする。この場合、情報処理装置100は、初期値である連結エッジ数「100」から初期値の半分の値である「50」に基づいて、測定対象グラフを生成し、かかる測定対象グラフの検索精度を測定する。このとき、情報処理装置100は、連結エッジ数「100」の測定対象グラフから「50」のエッジを取得し、連結エッジ数「50」の測定対象グラフを生成する。
より具体的な例を挙げて説明すると、情報処理装置100は、連結エッジ数「100」の測定対象グラフから各ノードのみを取得する。また、情報処理装置100は、かかる各ノードに対して、連結エッジ数「100」の測定対象グラフを参照して距離の短い方のエッジから「50」のエッジを選択する。そして、情報処理装置100は、取得した各ノードと、選択した「50」のエッジとに基づいて、連結エッジ数「50」の測定対象グラフを生成する。これにより、情報処理装置100は、測定対象グラフの生成に図5のような検索処理が不要となるため、高速に測定対象グラフを生成することができる。なお、このときの検索精度が93%であるものとする。
そして、情報処理装置100は、上記と同様の処理を行うことで、連結エッジ数「50」の半分の値である「25」に基づいて生成された測定対象グラフの検索精度が「90」と測定する。また、情報処理装置100は、上記と同様の処理を行うことで、連結エッジ数「25」の半分の値である「13」に基づいて生成された測定対象グラフの検索精度が「85」と測定する。この場合、情報処理装置100は、検索精度が90%以上であり、且つ、最適エッジ数が最小値を示す場合が最適エッジ数「25」であると特定する。
このように、情報処理装置100は、初期値「100」の最適エッジ数に基づいて生成された測定対象グラフを参照して、かかる測定対象グラフからエッジ数を減少させることで、変更する最適エッジ数に対応する測定対象グラフを生成することができる。これにより、情報処理装置100は、最適エッジ数を有する測定対象グラフの生成をより短時間の計算時間で実現することができる。
続いて、情報処理装置100は、推定対象グラフが推定可能か否かを判定する(ステップS8)。例えば、情報処理装置100は、推定対象グラフが推定可能でないと判定した場合に(ステップS8;No)、第1数を変更する(ステップS9)。例えば、情報処理装置100は、推定対象グラフが推定可能でないと判定した場合に、第1数を大きい数に変更する。例えば、情報処理装置100は、第1数「12500」を「25000」と変更する。そして、情報処理装置100は、大きい数に変更した第1数に基づいて、最適エッジ数を特定する。このように、情報処理装置100は、各第1数に対応する最適エッジ数の特定処理(ステップS2~S8)を推定対象グラフが推定可能であると判定するまで繰返す。
一方、情報処理装置100は、推定対象グラフが推定可能であると判定した場合に(ステップS8;Yes)、推定対象グラフの最適エッジ数を推定する(ステップS10)。例えば、情報処理装置100は、第1数(関数GR2ではオブジェクト数に相当)と、最適エッジ数との組合せに基づいて関数GR2を生成することができる場合に、推定対象グラフが推定可能であると判定する。
例えば、第1数と、最適エッジ数との組合せが4つである場合に、推定対象グラフが推定可能であるものとする。この場合、関数GR2は、NO1及びNE1の組合せと、NO2及びNE2の組合せと、NO3及びNE3の組合せと、NO4及びNE4の組合せとに基づいて生成される。より具体的な例を挙げると、関数GR2は、「12500」及び「25」の組合せと、「25000」及び「35」の組合せと、「50000」及び「45」の組合せと、「100000」及び「65」の組合せとに基づいて生成される。
そして、情報処理装置100は、オブジェクト群が示す第2数NOXを関数GR2に入力することで、出力として、推定対象グラフの最適エッジ数NEXを推定する。例えば、情報処理装置100は、関数GR2を用いて、オブジェクト群が示す第2数「10000000」に基づいて、最適エッジ数を「85」と推定する。
従来、各ノードに接続されたエッジ数が多いほど、グラフを用いた検索を行った場合の検索精度が高くなる傾向があるが、一方で、計算時間が膨大になるといった課題があった。例えば、図1の例でいうと、第2数が非常に大きい数である場合に、最適エッジ数を有したグラフの生成に非常に時間がかかる場合がある。そこで、実施形態に係る情報処理装置100は、特定された測定対象グラフの最適エッジ数に基づいて、第1数よりも多い第2数のオブジェクトの各々のノードがエッジによって連結された推定対象グラフの最適エッジ数を推定することで従来の課題を解決する。
例えば、情報処理装置100は、第2数よりも小さい第1数に基づいて測定対象グラフを生成し、第1数を複数回変更することで、推定したいオブジェクト群の特徴を示す関数であって、オブジェクト数と、最適エッジ数との関係性を示す関数を生成する。これにより、情報処理装置100は、推定したいオブジェクト群が示すオブジェクト数(図1の例では第2数)をかかる関数に入力することで、第2数に対応する最適エッジ数を推定する。このように、情報処理装置100は、第2数をすべて取扱い、最適エッジ数を有するグラフを生成するよりも計算時間を削減できる。したがって、情報処理装置100は、検索精度と、計算時間とを適切に調節可能な最適エッジ数をより迅速に推定することができる。
〔2.情報処理システムの構成〕
次に、図2を用いて、実施形態に係る情報処理システム1の構成について説明する。図2は、実施形態に係る情報処理システム1の構成例を示す図である。図2に示すように、情報処理システム1には、外部装置50と、情報処理装置100とが含まれる。外部装置50と、情報処理装置100とはネットワークNを介して有線又は無線により通信可能に接続される。なお、図2に示した情報処理システム1には、複数台の外部装置50や、複数台の情報処理装置100が含まれてもよい。
実施形態に係る外部装置50は、ユーザ等に種々の情報提供を行うための情報が格納された情報処理装置であり、例えば、サーバ又はクラウドシステムによって実現される。例えば、外部装置50は、ウェブサーバ等の種々の外部装置から収集した文字情報等に基づくオブジェクトIDが格納される。例えば、外部装置50は、ユーザ等に画像検索サービスを提供する情報処理装置である。例えば、外部装置50は、画像検索サービスを提供するための各情報が格納される。例えば、外部装置50は、画像検索サービスの対象となる画像に対応するベクトル情報を情報処理装置100に提供する。なお、外部装置50が情報処理装置100に提供するデータは、画像情報等のデータ自体であってもよいし、URL(Uniform Resource Locator)等の対応するデータを参照するための情報であってもよい。
実施形態に係る情報処理装置100は、例えば、サーバ又はクラウドシステムによって実現される。情報処理装置100は、検索対象となるオブジェクト群のうち、第1数のオブジェクトの各々のノードがエッジによって連結された測定対象グラフを対象として評価指標を測定し、評価指標が所定の条件を満たすエッジ数である最適エッジ数を特定する。そして、情報処理装置100は、特定された測定対象グラフの最適エッジ数に基づいて、第1数よりも多い第2数のオブジェクトの各々のノードがエッジによって連結された推定対象グラフの最適エッジ数を推定する。
〔3.情報処理装置の構成〕
また、図2を用いて、実施形態に係る情報処理装置100の構成について説明する。図2は、実施形態に係る情報処理装置100の構成例を示す図である。図2に示すように、情報処理装置100は、通信部110と、記憶部120と、制御部130とを有する。なお、情報処理装置100は、情報処理装置100の管理者等から各種操作を受け付ける入力部(例えば、キーボードやマウス等)や、各種情報を表示するための表示部(例えば、液晶ディスプレイ等)を有してもよい。
(通信部110について)
通信部110は、例えば、NIC(Network Interface Card)等によって実現される。そして、通信部110は、所定のネットワークNと有線又は無線で接続され、外部装置50との間で情報の送受信を行う。
(記憶部120について)
記憶部120は、例えば、RAM(Random Access Memory)、フラッシュメモリ(Flash Memory)等の半導体メモリ素子、または、ハードディスク、光ディスク等の記憶装置によって実現される。また、記憶部120は、測定対象グラフ情報記憶部121と、関数情報記憶部122とを有する。
(測定対象グラフ情報記憶部121について)
実施形態に係る測定対象グラフ情報記憶部121は、測定対象グラフに関する各種情報を記憶する。ここで、図3は、実施形態に係る測定対象グラフ情報記憶部121の一例を示す図である。図3に示す測定対象グラフ情報記憶部121は、「測定対象グラフID(Identifier)」、「ノードID」、「オブジェクトID」、「エッジ情報」といった項目を有する。また、「エッジ情報」には、「エッジID」や「参照先」といった情報が含まれる。
「測定対象グラフID」は、測定対象グラフを識別する識別子である。「ノードID」は、測定対象グラフデータにおける各ノードを識別する識別子である。また、「オブジェクトID」は、オブジェクトを識別する識別情報子である。
また、「エッジ情報」は、対応するノードに接続されるエッジに関する情報である。図3の例では、「エッジ情報」は、対応するノードから出力される有向エッジに関する情報である。また、「エッジID」は、ノード間を連結するエッジを識別する識別子である。また、「参照先」は、エッジにより連結された参照先を示す情報である。すなわち、図3の例では、ノードを識別するノードIDに対して、そのノードに対応するオブジェクトを識別する情報や、そのノードからの有向エッジが連結される参照先が対応付けられて登録されている。
図3の例では、測定対象グラフIDによって識別された「G1」は、ノードIDが「N1」であり、オブジェクトID「OB1」である。また、エッジID「E1」によって識別されるエッジが、ノードID「N2」によって識別されるノードに連結されることを示す。すなわち、図3の例では、測定対象グラフ情報におけるノードN1からはエッジE1によってノードN2へ辿ることができることを示す。
また、図3の例では、ノードID「N2」によって識別されるノードは、オブジェクトID「OB2」によって識別されるオブジェクトに対応することを示す。また、エッジID「E21」によって識別されるエッジが、ノードID「N1」によって識別されるノードに連結されることを示す。すなわち、図3の例では、測定対象グラフ情報におけるノードN2からはエッジE21によりノードN1へ辿ることができることを示す。
なお、測定対象グラフ情報記憶部121は、上記例に限定されなくともよく、目的に応じて種々の情報を記憶してもよい。例えば、測定対象グラフ情報記憶部121は、各ノード間を連結するエッジの長さが記憶されてもよい。すなわち、測定対象グラフ情報記憶部121は、各ノード間の距離を示す情報が記憶されてもよい。また、測定対象グラフ情報記憶部121には、有向エッジにより連結されたグラフ情報に限らず、種々のグラフ情報が記憶されてもよい。例えば、測定対象グラフ情報記憶部121には、無向エッジにより連結されたグラフ情報が記憶されてもよい。
(関数情報記憶部122について)
実施形態に係る関数情報記憶部122は、第1数と、第1数に対応する最適エッジ数に基づいて生成される関数に関する各種情報を記憶する。ここで、図4に、実施形態に係る関数情報記憶部122の一例を示す。図4に示した例では、関数情報記憶部122は、「関数ID」、「測定対象グラフID」、「測定対象グラフ情報」といった項目を有する。「測定対象グラフ情報」は、測定対グラフIDに対応付けられた測定対象グラフを特徴付ける情報を示す。例えば、「測定対象グラフ情報」は、「オブジェクト数」、「最適エッジ数」、「検索精度」といった項目を有する。
「関数ID」は、複数の測定対象グラフが示す各オブジェクト数と、各最適エッジ数との組合せに基づいて生成される関数を識別する識別子である。「測定対象グラフID」は、「関数ID」に対応付けられた測定対象グラフに関する情報である。
「オブジェクト数」は、「測定対象グラフID」に対応付けられた測定対象グラフが示すオブジェクト数に関する情報である。「最適エッジ数」は、「測定対象グラフID」に対応付けられた測定対象グラフが示す最適エッジ数に関する情報である。「検索精度」は、「測定対象グラフID」に対応付けられた測定対象グラフを測定したときに得られた検索精度に関する情報である。例えば、「最適エッジ数」及び「検索精度」に記憶される情報は、測定処理毎に更新されてもよい。
例えば、図4では、関数IDによって識別された「F1」は、測定対象グラフIDが「G1」であり、オブジェクト数が「NO1」であり、最適エッジ数が「NE1」であり、検索精度が「AC1」である。なお、図4に示した例では、オブジェクト数、最適エッジ数及び検索精度を抽象的な符号で表現したが、オブジェクト数、最適エッジ数及び検索精度は、具体的な数値や、具体的なファイル形式等であってもよい。また、関数情報記憶部122は、上記項目例だけでなく、ノード数や、検索時間等を記憶してもよい。
(制御部130について)
制御部130は、コントローラ(controller)であり、例えば、CPU(Central Processing Unit)やMPU(Micro Processing Unit)等によって、情報処理装置100内部の記憶装置に記憶されている各種プログラム(情報処理プログラムの一例に相当)がRAMを作業領域として実行されることにより実現される。また、制御部130は、コントローラであり、例えば、ASIC(Application Specific Integrated Circuit)やFPGA(Field Programmable Gate Array)等の集積回路により実現される。
図2に示すように、制御部130は、取得部131と、生成部132と、測定部133と、推定部134と、提供部135とを有し、以下に説明する情報処理の機能や作用を実現または実行する。なお、制御部130の内部構成は、図2に示した構成に限られず、後述する情報処理を行う構成であれば他の構成であってもよい。
(取得部131について)
取得部131は、各種情報を取得する。例えば、取得部131は、オブジェクトの集合であるオブジェクト群を外部装置50から取得する。例えば、外部装置50に記憶される電子商取引サービスにおいて取引される取引対象に関する画像情報から検索対象のオブジェクトを検索する検索要求を外部装置50から受付けるものとする。この場合、取得部131は、オブジェクト群として、取引対象に関する画像情報の集合を外部装置50から取得する。より具体的な例を挙げると、取得部131は、オブジェクト群が示す第2数である「10000000」のオブジェクトを外部装置50から取得する。
また、取得部131は、オブジェクト群から第1数のオブジェクトを選択してもよい。例えば、取得部131は、「10000000」のオブジェクトから、第1数として、「12500」のオブジェクトを選択する。また、取得部131は、近似正解データを取得してもよい。
(生成部132について)
生成部132は、各種情報を生成する。具体的には、生成部132は、グラフ情報を生成する。より具体的には、生成部132は、所定のエッジ数に基づいて、第1数に対応する各ノードがエッジによって連結された測定対象グラフを生成する。
例えば、生成部132は、第1数のオブジェクトに対応する各ノードが連結されるエッジの数である連結エッジ数を初期値に設定する例えば、情報処理装置100は、連結エッジ数の初期値として、「100」と設定する。そして、生成部132は、第1数のオブジェクトと、連結エッジ数とに基づいて、測定対象グラフを生成する。例えば、生成部132は、「12500」のオブジェクトと、「100」の連結エッジ数とに基づいて、測定対象グラフを生成する。
なお、上記例のように、測定対象グラフを生成する例に限定されなくともよく、生成部132は、第2数と、推定された最適エッジ数とに基づいて、推定対象グラフを生成してもよい。
(測定部133について)
測定部133は、検索対象となるオブジェクト群のうち、第1数のオブジェクトの各々のノードがエッジによって連結された測定対象グラフを対象として評価指標を測定し、評価指標が所定の条件を満たすエッジ数である最適エッジ数を特定する。例えば、測定部133は、測定対象グラフの評価指標として検索精度を測定する。
例えば、測定部133は、評価用クエリを決定する。例えば、測定部133は、第1数のオブジェクトからランダムに抽出したオブジェクト、または、ランダムに抽出した二つ以上のオブジェクトの平均値のオブジェクトを、評価用クエリに決定する。
例えば、測定部133は、第1数のオブジェクトからランダムに二つ以上の所定数のオブジェクトを評価用クエリの生成に用いるオブジェクトとして抽出する。そして、測定部133は、ランダムに抽出された複数のオブジェクトの平均値である多次元のベクトル情報を評価用クエリに決定する。
そして、測定部133は、図5に示すような処理により、評価用クエリに対応する近似正解データを生成する。この場合、測定部133は、検索範囲係数「ε」の値を所定値以上大きくして、測定対象グラフGR1を用いて図5に示す検索処理を行うことにより、評価用クエリに対応する近似正解データを生成する。
そして、測定部133は、測定対象グラフGR1の検索精度を測定する。例えば、測定部133は、検索条件として、測定対象グラフGR1に含まれるすべてのエッジを利用し、且つ、εの値を0とし、図5に示す検索処理を行う。これにより、測定部133は、近傍ノードを取得する。そして、測定部133は、かかる近傍ノードと、近似正解データとを比較することで、測定対象グラフGR1の検索精度を測定する。例えば、測定部133は、検索処理を連結エッジ数「100」の測定対象グラフに行い、取得された近傍ノードと、評価用クエリとを比較することで検索精度「98%」と測定する。
また、測定部133は、測定対象グラフの検索精度が条件を満たすか否かを判定する。例えば、測定部133は、測定対象グラフの検索精度が条件を満たさないと判定した場合に、連結エッジ数を変更する。例えば、測定部133は、測定対象グラフの検索精度が条件を満たさないと判定した場合に、測定対象グラフが示す連結エッジ数を小さい数に変更する。
一方、測定部133は、測定対象グラフの検索精度が条件を満たすと判定した場合に、測定対象グラフの検索精度が条件を満たした連結エッジ数を、第1数に対応する最適エッジ数と特定する。例えば、検索精度が90%以上であり、且つ、最適エッジ数が最小値を示す場合に、測定対象グラフの検索精度が条件を満たすものとする。この場合、測定部133は、測定対象グラフの検索精度が条件を満たすと判定したときに、「12500」に対応する最適エッジ数を「25」と特定する。
ここで、連結エッジ数の変更処理について説明する。例えば、検索精度が90%以上であり、且つ、最適エッジ数が最小値を示す場合に、測定対象グラフの検索精度が条件を満たすものとする。また、測定対象グラフの検索精度が条件を満たさない場合に、連結エッジ数を半分の値に変更するものとする。この場合、測定部133は、初期値である連結エッジ数「100」から初期値の半分の値である「50」に基づいて、測定対象グラフを生成し、かかる測定対象グラフの検索精度を測定する。このとき、測定部133は、連結エッジ数「100」の測定対象グラフから「50」のエッジを取得し、連結エッジ数「50」の測定対象グラフを生成する。
より具体的な例を挙げて説明すると、測定部133は、連結エッジ数「100」の測定対象グラフから各ノードのみを取得する。また、測定部133は、かかる各ノードに対して、連結エッジ数「100」の測定対象グラフを参照して距離の短い方のエッジから「50」のエッジを選択する。そして、測定部133は、取得した各ノードと、選択した「50」のエッジとに基づいて、連結エッジ数「50」の測定対象グラフを生成する。なお、このときの検索精度が93%であるものとする。
そして、測定部133は、上記と同様の処理を行うことで、連結エッジ数「50」の半分の値である「25」に基づいて生成された測定対象グラフの検索精度が「90」と測定する。また、測定部133は、上記と同様の処理を行うことで、連結エッジ数「25」の半分の値である「13」に基づいて生成された測定対象グラフの検索精度が「85」と測定する。この場合、測定部133は、検索精度が90%以上であり、且つ、最適エッジ数が最小値を示す場合が最適エッジ数「25」であると特定する。
(推定部134について)
推定部134は、測定部133によって特定された測定対象グラフの最適エッジ数に基づいて、第1数よりも多い第2数のオブジェクトの各々のノードがエッジによって連結された推定対象グラフの最適エッジ数を推定する。
例えば、推定部134は、推定対象グラフが推定可能であると判定した場合に、推定対象グラフの最適エッジ数を推定する。例えば、図1の例では、推定部134は、第1数と、最適エッジ数との組合せに基づいて関数GR2を生成することができる場合に、推定対象グラフが推定可能であると判定する。
図1の例では、第1数と、最適エッジ数との組合せが4つである場合に、推定対象グラフが推定可能であるものとする。この場合、関数GR2は、NO1及びNE1の組合せと、NO2及びNE2の組合せと、NO3及びNE3の組合せと、NO4及びNE4の組合せとに基づいて生成される。より具体的な例を挙げると、関数GR2は、「12500」及び「25」の組合せと、「25000」及び「35」の組合せと、「50000」及び「45」の組合せと、「100000」及び「65」の組合せとに基づいて生成される。
そして、推定部134は、オブジェクト群が示す第2数NOXを関数GR2に入力することで、出力として、推定対象グラフの最適エッジ数NEXを推定する。例えば、推定部134は、関数GR2を用いて、オブジェクト群が示す第2数「10000000」に基づいて、最適エッジ数を「85」と推定する。
なお、上記例では、推定部134が第1数と、最適エッジ数との組合せが4つである場合に、推定対象グラフが推定可能であると判定する例を挙げて説明したが、4つに限定されなくともよく、推定対象グラフが推定可能であれば、如何なる数であってもよい。
(提供部135について)
提供部135は、各種情報を提供する。例えば、提供部135は、外部装置50に記憶される電子商取引サービスにおいて取引される取引対象に関する画像情報から検索対象のオブジェクトの指定を外部装置50から受付けた場合に、推定部134によって推定された最適エッジ数を外部装置50に提供する。また、提供部135は、情報処理装置100の管理者から検索対象のオブジェクトの指定を受付けた場合に、かかる管理者対して、推定部134によって推定された最適エッジ数を提供する。
なお、上記例では、最適エッジ数を提供する例を挙げて説明したが、これに限定されなくともよく、第2数と、最適エッジ数とに基づいて生成された推定対象グラフに関する情報を提供してもよい。
〔4.処理手順(1)検索処理〕
次に、図5を用いて、実施形態に係る情報処理装置100が実行する検索処理の手順について説明する。図5は、実施形態に係る情報処理装置100が実行する検索処理の一例を示すフローチャートである。
ここでは、近傍集合N(G,y)は、ノードyに付与されているエッジにより関連付けられている近傍のオブジェクトの集合である。例えば、近傍集合N(G,y)は、ノードyとの間にエッジが連結されたオブジェクトの集合である。また、グラフのノード間が有向エッジで連結される場合、近傍集合N(G,y)は、ノードyからの出力エッジが連結されたオブジェクトの集合である。「G」は、所定のグラフデータ(例えば、グラフGR1等)であってもよい。例えば、情報処理装置100は、k近傍検索処理を実行する。
例えば、図5に示すように、情報処理装置100は、超球の半径rを∞(無限大)に設定し(ステップS100)、既存のオブジェクト集合から集合Sを抽出する(ステップS101)。例えば、情報処理装置100は、起点ノードとして選択されたオブジェクトを集合Sとして抽出してもよい。また、例えば、超球とは、検索範囲を示す仮想的な球である。
なお、ステップS101において抽出された集合Sに含まれるオブジェクトは、検索結果の集合Rの初期集合にも含められる。また、ステップS101において抽出された集合Sに含まれるオブジェクトは、集合Cに含められてもよい。集合Cは、重複検索を回避するために便宜上設けられるものであり、処理開始時には空集合に設定されてもよい。
次に、情報処理装置100は、集合Sに含まれるオブジェクトの中で、検索対象となるオブジェクトをyとするとオブジェクトyとの距離が最も短いオブジェクトを抽出し、オブジェクトsとする(ステップS102)。例えば、情報処理装置100は、オブジェクトyに対応する起点ノード等が含まれる集合Sから、一のノードをオブジェクトsとして抽出する。次に、情報処理装置100は、オブジェクトsを集合Sから除外する(ステップS103)。例えば、情報処理装置100は、起点ノードを集合Sから除外する。
次に、情報処理装置100は、オブジェクトsとオブジェクトyとの距離d(s,y)がr(1+ε)を超えるか否かを判定する(ステップS104)。ここで、εは拡張要素であり、r(1+ε)は、探索範囲(この範囲内のノードのみを探索する。検索範囲よりも大きくすることで精度を高めることができる)の半径を示す値である。オブジェクトsとオブジェクトyとの距離d(s,y)がr(1+ε)を超える場合(ステップS104:Yes)、情報処理装置100は、集合Rをオブジェクトyの近傍集合として出力し(ステップS105)、処理を終了する。
オブジェクトsとオブジェクトyとの距離d(s,y)がr(1+ε)を超えない場合(ステップS104:No)、情報処理装置100は、オブジェクトsの近傍集合N(G,s)の要素であるオブジェクトの中から集合Cに含まれないオブジェクトを、所定の基準に基づいて一つ選択し、選択したオブジェクトuを、集合Cに格納する(ステップS106)。
次に、情報処理装置100は、オブジェクトuとオブジェクトyとの距離d(u,y)がr(1+ε)以下であるか否かを判定する(ステップS107)。オブジェクトuとオブジェクトyとの距離d(u,y)がr(1+ε)以下である場合(ステップS107:Yes)、情報処理装置100は、オブジェクトuを集合Sに追加する(ステップS108)。また、オブジェクトuとオブジェクトyとの距離d(u,y)がr(1+ε)以下ではない場合(ステップS107:No)、情報処理装置100は、ステップS109の判定(処理)を行う。
次に、情報処理装置100は、オブジェクトuとオブジェクトyとの距離d(u,y)がr以下であるか否かを判定する(ステップS109)。オブジェクトuとオブジェクトyとの距離d(u,y)がrを超える場合、情報処理装置100は、ステップS115の判定処理を行う。また、オブジェクトuとオブジェクトyとの距離d(u,y)がr以下ではない場合(ステップS109:No)、情報処理装置100は、ステップS115の判定処理を行う。
オブジェクトuとオブジェクトyとの距離d(u,y)がr以下である場合(ステップS109:Yes)、情報処理装置100は、オブジェクトuを集合Rに追加する(ステップS110)。そして、情報処理装置100は、集合Rに含まれるオブジェクト数がksを超えるか否かを判定する(ステップS111)。所定数ksは、任意に定められる自然数である。例えば、ksは、検索における抽出数を示し、「3」や「20」や「100」等の任意の値であってもよい。集合Rに含まれるオブジェクト数がksを超えない場合(ステップS111:No)、情報処理装置100は、ステップS113の判定処理を行う。
集合Rに含まれるオブジェクト数がksを超える場合(ステップS111:Yes)、情報処理装置100は、集合Rに含まれるオブジェクトの中でオブジェクトyとの距離が最も長い(遠い)オブジェクトを、集合Rから除外する(ステップS112)。
次に、情報処理装置100は、集合Rに含まれるオブジェクト数がksと一致するか否かを判定する(ステップS113)。集合Rに含まれるオブジェクト数がksと一致しない場合(ステップS113:No)、情報処理装置100は、ステップS115の判定処理を行う。また、集合Rに含まれるオブジェクト数がksと一致する場合(ステップS113:Yes)、情報処理装置100は、集合Rに含まれるオブジェクトの中でオブジェクトyとの距離が最も長い(遠い)オブジェクトと、オブジェクトyとの距離を、新たなrに設定する(ステップS114)。
そして、情報処理装置100は、オブジェクトsの近傍集合N(G,s)の要素であるオブジェクトから全てのオブジェクトを選択したか否かを判定する(ステップS115)。オブジェクトsの近傍集合N(G,s)の要素であるオブジェクトから全てのオブジェクトを選択していない場合(ステップS115:No)、情報処理装置100は、ステップS106に戻って処理を繰り返す。なお、情報処理装置100は、オブジェクトsの近傍集合N(G,s)の要素であるオブジェクトから全てを選択する場合に限らず、所定の閾値を設定し、その閾値に対応する個数までオブジェクトを選択してもよい。
オブジェクトsの近傍集合N(G,s)の要素であるオブジェクトから全てのオブジェクトを選択した場合(ステップS115:Yes)、情報処理装置100は、集合Sが空集合であるか否かを判定する(ステップS116)。集合Sが空集合でない場合(ステップS116:No)、情報処理装置100は、ステップS102に戻って処理を繰り返す。また、集合Sが空集合である場合(ステップS116:Yes)、情報処理装置100は、集合Rを出力し、処理を終了する(ステップS117)。例えば、情報処理装置100は、オブジェクト集合に含まれるオブジェクトを対象ノード(入力オブジェクトy)に対応する近傍ノードとして選択してもよい。
〔5.処理手順(2)推定処理〕
次に、図6を用いて、実施形態に係る情報処理装置100が実行する推定処理の手順について説明する。図6は、実施形態に係る情報処理装置100が実行する推定処理の流れの一例を示すフローチャートである。
図6に示すように、情報処理装置100は、オブジェクトの集合であるオブジェクト群を取得する(ステップS201)。そして、情報処理装置100は、オブジェクト群から第1数のオブジェクトを選択する(ステップS202)。また、情報処理装置100は、連結エッジ数を初期値に設定し(ステップS203)、測定対象グラフを生成する(ステップS204)。
そして、情報処理装置100は、測定対象グラフの検索精度が所定の条件を満たすか否かを判定する(ステップS205)。具体的には、情報処理装置100は、測定対象グラフの検索精度を測定する。そして、情報処理装置100は、測定対象グラフの検索精度が所定の条件を満たさないと判定した場合(ステップS205;No)、連結エッジ数を変更する(ステップS206)。ここで、情報処理装置100は、測定対象グラフの検索精度が所定の条件を満たすまで、ステップS204~S206を繰返す。
一方、情報処理装置100は、測定対象グラフの検索精度が所定の条件を満たすと判定した場合(ステップS205;Yes)、かかる測定対象グラフの連結エッジ数を最適エッジ数と特定する(ステップS207)。そして、情報処理装置100は、推定対象グラフが推定可能か否かを判定する(ステップS208)。具体的には、情報処理装置100は、推定対象グラフが推定可能でないと判定した場合(ステップS208;No)、第1数を変更する(ステップS209)。ここで、情報処理装置100は、推定対象グラフが推定可能と判定するまで、ステップS202~S209を繰返す。
一方、情報処理装置100は、推定対象グラフが推定可能であると判定した場合(ステップS208;Yes)、かかる推定対象グラフの最適エッジ数を推定する(ステップS210)。
〔6.変形例〕
上述した情報処理装置100は、上記実施形態以外にも種々の異なる形態にて実施されてよい。そこで、以下では、情報処理装置100の他の実施形態について説明する。
〔6-1.検索対象〕
上記実施形態では、検索対象として、画像情報を例に挙げて説明したが、検索対象は、動画情報や、音声情報等の如何なる情報であってもよい。また、検索対象のデータは、画像、音声、テキストデータ等、如何なる種類のデータであってもよい。
〔6-2.オブジェクト〕
上記実施形態では、検索対象となる情報として、オブジェクトに関する情報を例に挙げて説明したが、ベクトルとして表現可能であれば、如何なる情報であってもよい。例えば、オブジェクトは、画像から抽出された複数の局所特徴量のそれぞれであってもよい。また、オブジェクトは、オブジェクト間の距離が定義された種々のデータであってもよい。
また、情報処理装置100が用いる情報は、ベクトルに限らず、各対象の類似性を表現可能な情報であれば、如何なる形式の情報であってもよい。例えば、情報処理装置100は、各対象に対応する所定のデータや、値等から生成されたグラフ情報を用いてもよい。例えば、情報処理装置100は、各対象から生成された所定の数値(例えば2進数の値や16進数の値)から生成されたグラフ情報を用いてもよい。例えば、情報処理装置100は、ベクトルに代えて、データ間の距離が定義されていれば任意の形態のデータを用いてもよい。
〔6-3.類似オブジェクト群〕
上記実施形態では、検索対象となる情報として、オブジェクト群を例に挙げて説明したが、これに限定されなくともよく、例えば、オブジェクト群は、対象とするオブジェクト群と類似するオブジェクト群である類似オブジェクト群等であってもよい。
〔6-4.エッジ〕
上記実施形態では、各ノードを連結するエッジとして、有向エッジを例に挙げて説明したが、種々のエッジであってもよい。例えば、各ノードを連結するエッジは、ノードを連結する方向のないエッジであってもよい。例えば、各ノードを連結するエッジは、相互に参照可能なエッジであってもよい。例えば、各ノードを連結するエッジは、全て無向エッジ(双方向エッジ)であってもよい。
〔6-5.グラフ情報〕
上記実施形態では、情報処理装置100が取得したオブジェクト群のすべて、または、一部のオブジェクト群に対してグラフを作成する例を挙げて説明したが、如何なるインデックスを生成してもよい。例えば、情報処理装置100は、インデックスの一例として、ツリーを生成してもよい。
また、図1に示した測定対象グラフGR1は、ユークリッド空間であってもよい。また、測定対象グラフGR1は、各ベクトル間の距離等の説明のための概念的な図であり、測定対象グラフGR1は、多次元空間である。例えば、図1に示す測定対象グラフGR1は、平面上に図示するため2次元の態様にて図示したが、例えば、100次元や、1000次元等の多次元空間であるものとする。この場合、各ノードに対応するベクトルデータは、N次元の実数値ベクトルである。
〔6-6.正解データ〕
上記実施形態では、情報処理装置100が近似正解データを用いて測定処理を行う例を挙げて説明したが、情報処理装置100は、オブジェクト群のうち、すべてのオブジェクトとの距離を計算することで生成される正解データを用いて測定処理を行ってもよい。例えば、情報処理装置100は、第1数のオブジェクトのうち、すべてのオブジェクトとの距離を計算することで生成される正解データを正解として、測定対象グラフに対応する検索精度を測定してもよい。
このように、情報処理装置100は、近似正解データを用いて検索精度を測定するときには、近似正解データに含まれない正解が検索される場合があるので、検索結果が近似正解データの最遠の結果よりも近ければ正解として検索精度を測定してもよい。これにより、情報処理装置100は、検索処理に関連する評価指標を適切に測定することができる。
〔6-7.連結エッジ数の変更処理〕
上記実施形態では、情報処理装置100が実行する連結エッジ数の変更処理では、最適エッジ数を半分に減少させるように変更する例を挙げて説明したが、これに限定されない。例えば、情報処理装置100は、最適エッジ数を10ずつ等減少させるように変更してもよい。
また、情報処理装置100が一律に最適エッジ数を減少させるように変更する例を挙げて説明したが、これに限定されなくともよい。例えば、情報処理装置100は、最適エッジ数が所定の閾値を下回った場合には、最適エッジ数を増加させるように変更してもよい。
また、情報処理装置100が連結エッジ数を半分の値に変更する例を挙げて説明したが、これに限定されなくともよい。例えば、情報処理装置100は、連結エッジ数と、検索精度との組合せに基づいて、連結エッジ数を変更してもよい。例えば、情報処理装置100は、検索精度を重みとして、変更する連結エッジ数を重み付き平均として算出してもよい。また、例えば、情報処理装置100は、連結エッジ数に任意の値を乗算等することで、連結エッジ数を変更してもよい。
〔6-8.評価指標〕
上記実施形態では、情報処理装置100が評価指標として検索精度を測定する測定処理の一例を挙げて説明したが、これに限定されなくともよい。例えば、情報処理装置100は、評価指標として、検索時間や、オブジェクトアクセス数や、距離計算回数や、測定対象グラフの生成速度等を測定してもよい。
ここで、検索時間を例に挙げて連結エッジ数の変更処理について説明する。例えば、検索時間が1分以内であり、且つ、最適エッジ数が最大値を示す場合に、測定対象グラフの検索精度が条件を満たすものとする。また、連結エッジ数が初期値「100」である場合に、検索時間は2分であったものとする。また、測定対象グラフの検索精度が条件を満たさない場合に、連結エッジ数を半分の値に変更するものとする。この場合、情報処理装置100は、初期値である連結エッジ数「100」から初期値の半分の値である「50」に基づいて、測定対象グラフを生成し、かかる測定対象グラフの検索時間を測定する。このとき、検索精度が「1分30秒」であるものとする。そして、情報処理装置100は、上記と同様の処理を行うことで、連結エッジ数「50」の半分の値である「25」に基づいて生成された測定対象グラフの検索精度が「1分」と測定する。また、情報処理装置100は、上記と同様の処理を行うことで、連結エッジ数「25」の半分の値である「13」に基づいて生成された測定対象グラフの検索精度が「30秒」と測定する。この場合、情報処理装置100は、検索時間が1分以下であり、且つ、最適エッジ数が最大値を示す場合が最適エッジ数「25」であると特定する。
〔7.ハードウェア構成〕
上述してきた実施形態に係る情報処理装置100は、例えば、図7に示すような構成のコンピュータ1000によって実現される。図7は、情報処理装置100の機能を実現するコンピュータの一例を示すハードウェア構成図である。コンピュータ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)」は、「手段」や「回路」などに読み替えることができる。例えば、推定部は、推定手段や推定回路に読み替えることができる。
〔9.効果〕
上述してきたように、実施形態に係る情報処理装置100は、測定部133と、推定部134とを有する。測定部133は、検索対象となるオブジェクト群のうち、第1数のオブジェクトの各々のノードがエッジによって連結された測定対象グラフを対象として評価指標を測定し、評価指標が所定の条件を満たすエッジ数である最適エッジ数を特定する。推定部134は、測定部133によって特定された測定対象グラフの最適エッジ数に基づいて、第1数よりも多い第2数のオブジェクトの各々のノードがエッジによって連結された推定対象グラフの最適エッジ数を推定する。
このように、実施形態に係る情報処理装置100は、特定された測定対象グラフの最適エッジ数に基づいて、第1数よりも多い第2数のオブジェクトの各々のノードがエッジによって連結された推定対象グラフの最適エッジ数を推定するため、適切なエッジ数を推定することができる。
また、実施形態に係る情報処理装置100において、測定部133は、第1数を変化させて生成された複数の測定対象グラフの各々を対象として評価指標を測定し、複数の測定対象グラフの各々の最適エッジ数を特定し、推定部134は、複数の測定対象グラフの各々の最適エッジ数の推移に基づいて、推定対象グラフの最適エッジ数を推定する。
このように、実施形態に係る情報処理装置100は、複数の測定対象グラフの各々の最適エッジ数の推移に基づいて推定対象グラフの最適エッジ数を推定するため、適切なエッジ数を推定することができる。
また、実施形態に係る情報処理装置100において、推定部134は、複数の測定対象グラフの各々の最適エッジ数の推移から生成される関数を用いて、推定対象グラフの最適エッジ数を推定する。
このように、実施形態に係る情報処理装置100は、複数の測定対象グラフの各々の最適エッジ数の推移から生成される関数を用いて、推定対象グラフの最適エッジ数を推定するため、適切なエッジ数を推定することができる。
また、実施形態に係る情報処理装置100において、推定部134は、オブジェクトの数を入力として、入力された数のオブジェクトをノードとした場合の最適エッジ数を出力する関数を用いて、推定対象グラフの最適エッジ数を推定する。
このように、実施形態に係る情報処理装置100は、オブジェクトの数を入力として、入力された数のオブジェクトをノードとした場合の最適エッジ数を出力する関数を用いて、推定対象グラフの最適エッジ数を推定するため、適切なエッジ数を推定することができる。
また、実施形態に係る情報処理装置100において、所定のエッジ数に基づいて、第1数に対応する各ノードがエッジによって連結された測定対象グラフを生成する生成部132をさらに備える。
このように、実施形態に係る情報処理装置100は、所定のエッジ数に基づいて、第1数に対応する各ノードがエッジによって連結された測定対象グラフを生成するため、適切なエッジ数を推定するために必要な測定対象グラフを簡便に生成することができる。
また、実施形態に係る情報処理装置100において、測定部133は、評価指標として、測定対象グラフを用いた場合における検索時の精度を示す検索精度を測定する。
このように、実施形態に係る情報処理装置100は、評価指標として、測定対象グラフを用いた場合における検索時の精度を示す検索精度を測定するため、適切なエッジ数を推定するために必要な測定対象グラフを適切に選択することができる。
また、実施形態に係る情報処理装置100において、生成部132は、第1数に対応するノード数と、所定のエッジ数との組合せに基づいて、評価用の測定対象グラフを生成し、測定部134は、評価用の測定対象グラフを用いた検索時に所定の閾値以上の検索精度を示した組合せを正解データとして用いて、測定対象グラフが示す検索精度を測定する。
このように、実施形態に係る情報処理装置100は、評価用の測定対象グラフを用いた検索時に所定の閾値以上の検索精度を示した組合せを正解データとして用いて、測定対象グラフが示す検索精度を測定するため、適切なエッジ数を推定するために必要な測定対象グラフを適切に選択することができる。
また、実施形態に係る情報処理装置100において、推定部134は、オブジェクト群に含まれるオブジェクト数である第2数のオブジェクトの各々のノードがエッジによって連結された推定対象グラフの最適エッジ数を推定する。
このように、実施形態に係る情報処理装置100は、オブジェクト群に含まれるオブジェクト数である第2数のオブジェクトの各々のノードがエッジによって連結された推定対象グラフの最適エッジ数を推定するため、適切なエッジ数を推定することができる。
また、実施形態に係る情報処理装置100において、オブジェクト群は、電子商取引サービスにおいて取引される取引対象群である。
このように、実施形態に係る情報処理装置100は、オブジェクト群が電子商取引サービスにおいて取引される取引対象群であるため、電子商取引サービスにおいて取引される取引対象を適切に検索することを可能とする推定対象グラフに必要な最適エッジ数を推定することができる。
また、実施形態に係る情報処理装置100において、推定部133は、オブジェクト群のうち、第2数のオブジェクトの各々のノードがエッジによって連結された推定対象グラフの最適エッジ数を推定する。
このように、実施形態に係る情報処理装置100は、オブジェクト群のうち、第2数のオブジェクトの各々のノードがエッジによって連結された推定対象グラフの最適エッジ数を推定するため、適切なエッジ数を推定することができる。
また、実施形態に係る情報処理装置100において、推定部133は、オブジェクト群と類似する類似オブジェクト群のうち、第2数のオブジェクトの各々のノードがエッジによって連結された推定対象グラフの最適エッジ数を推定する。
このように、実施形態に係る情報処理装置100は、オブジェクト群と類似する類似オブジェクト群のうち、第2数のオブジェクトの各々のノードがエッジによって連結された推定対象グラフの最適エッジ数を推定するため、適切なエッジ数を推定することができる。
以上、本願の実施形態のいくつかを図面に基づいて詳細に説明したが、これらは例示であり、発明の開示の行に記載の態様を始めとして、当業者の知識に基づいて種々の変形、改良を施した他の形態で本発明を実施することが可能である。