(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024165298
(43)【公開日】2024-11-28
(54)【発明の名称】情報処理装置、情報処理方法、及び情報処理プログラム
(51)【国際特許分類】
G06F 16/9032 20190101AFI20241121BHJP
【FI】
G06F16/9032
【審査請求】未請求
【請求項の数】20
【出願形態】OL
(21)【出願番号】P 2023081383
(22)【出願日】2023-05-17
(71)【出願人】
【識別番号】500257300
【氏名又は名称】LINEヤフー株式会社
(74)【代理人】
【識別番号】110002147
【氏名又は名称】弁理士法人酒井国際特許事務所
(72)【発明者】
【氏名】岩崎 雅二郎
【テーマコード(参考)】
5B175
【Fターム(参考)】
5B175FA01
5B175FB04
(57)【要約】
【課題】インデックスのパラメータの値をクエリに応じて推定するモデルを生成可能にする。
【解決手段】本願に係る情報処理装置は、複数のオブジェクトを対象とするインデックスと、クエリ用オブジェクトと、検索を行う場合に要求される第1精度とを取得する取得部と、クエリ用オブジェクトを用いて複数のオブジェクトを対象とした検索における正解検索結果を生成する第1生成部と、インデックスを用いて複数のオブジェクトのうちクエリ用オブジェクトに対応する近傍のオブジェクトを抽出する抽出処理を、検索に関するパラメータの値を変動させて繰り返し実行し、抽出処理の結果と正解検索結果との比較に基づく第2精度が第1精度との差が所定の条件を満たした際のパラメータの値と、クエリ用オブジェクトとを対応付けることにより、パラメータの値を推定するモデルの学習に用いる学習用データを生成する第2生成部とを有する。
【選択図】
図4
【特許請求の範囲】
【請求項1】
データ検索の対象となる複数のオブジェクトを対象とするインデックスと、前記データ検索での検索クエリ用のクエリ用オブジェクトと、前記複数のオブジェクトを検索対象として検索を行う場合に要求される第1精度を示す基準情報とを取得する取得部と、
前記クエリ用オブジェクトを用いて前記複数のオブジェクトを対象とした検索における正解となるオブジェクトを示す正解検索結果を生成する第1生成部と、
前記インデックスを用いて前記複数のオブジェクトのうち前記クエリ用オブジェクトに対応する近傍のオブジェクトを抽出する抽出処理を、検索に関するパラメータの値を変動させて繰り返し実行し、前記抽出処理の結果と前記正解検索結果との比較に基づく第2精度が前記第1精度との差が所定の条件を満たした際の前記パラメータの値と、前記クエリ用オブジェクトとを対応付けることにより、前記パラメータの値を推定するモデルの学習に用いる学習用データを生成する第2生成部と、
を備えることを特徴とする情報処理装置。
【請求項2】
前記取得部は、
近似近傍検索に用いられる前記インデックスを取得する
ことを特徴とする請求項1に記載の情報処理装置。
【請求項3】
前記取得部は、
前記複数のオブジェクトがエッジで連結されたグラフインデックスを前記インデックスとして取得する
ことを特徴とする請求項2に記載の情報処理装置。
【請求項4】
前記第2生成部は、
前記抽出処理の結果の精度が高く変化の方向に前記パラメータの値を段階的に変更して前記抽出処理を繰り返し実行し、前記第2精度が前記第1精度との差が所定の条件を満たした際の前記パラメータの値と、前記クエリ用オブジェクトとを対応付けることにより、前記学習用データを生成する
ことを特徴とする請求項1に記載の情報処理装置。
【請求項5】
前記第2生成部は、
前記パラメータの値を段階的に増加させて前記抽出処理を繰り返し実行し、前記第2精度が前記第1精度との差が所定の条件を満たした際の前記パラメータの値と、前記クエリ用オブジェクトとを対応付けることにより、前記学習用データを生成する
ことを特徴とする請求項1に記載の情報処理装置。
【請求項6】
前記取得部は、
学習に用いるオブジェクト群から選択されるオブジェクトである前記クエリ用オブジェクトと、前記クエリ用オブジェクトとして選択されたオブジェクトを前記オブジェクト群から除いた前記複数のオブジェクトを対象とする前記インデックスとを取得する
ことを特徴とする請求項1に記載の情報処理装置。
【請求項7】
前記取得部は、
前記オブジェクト群のうちランダムに選択されるオブジェクトである前記クエリ用オブジェクトを取得する
ことを特徴とする請求項6に記載の情報処理装置。
【請求項8】
前記取得部は、
学習に用いるオブジェクト群である前記複数のオブジェクトを対象とする前記インデックスと、前記オブジェクト群以外のオブジェクトである前記クエリ用オブジェクトとを取得する
ことを特徴とする請求項1に記載の情報処理装置。
【請求項9】
前記取得部は、
前記オブジェクト群とは異なるクエリ用オブジェクト群から前記クエリ用オブジェクトを取得する
ことを特徴とする請求項8に記載の情報処理装置。
【請求項10】
前記学習用データを用いた機械学習により前記モデルを生成する学習部と、
ことを特徴とする請求項1に記載の情報処理装置。
【請求項11】
前記学習部は、
検索クエリとして用いられるデータを入力として、入力されたデータに対応する前記パラメータの値を示す情報を出力する前記モデルを生成する
ことを特徴とする請求項10に記載の情報処理装置。
【請求項12】
前記学習部は、
入力されたデータに対応する前記パラメータの値を示す分類結果を出力する分類モデルである前記モデルを生成する
ことを特徴とする請求項11に記載の情報処理装置。
【請求項13】
前記学習部は、
前記学習用データに含まれる一のクエリ用オブジェクトを入力した場合に、前記一のクエリ用オブジェクトに対応付けられた前記パラメータの値が該当する分類結果を出力するように前記モデルを学習する
ことを特徴とする請求項12に記載の情報処理装置。
【請求項14】
前記学習部は、
入力されたデータに対応する前記パラメータの値を出力する前記モデルを生成する
ことを特徴とする請求項11に記載の情報処理装置。
【請求項15】
前記学習部は、
前記学習用データに含まれる一のクエリ用オブジェクトを入力した場合に、前記一のクエリ用オブジェクトに対応付けられた前記パラメータの値を出力するように前記モデルを学習する
ことを特徴とする請求項14に記載の情報処理装置。
【請求項16】
前記モデルを用いた推論結果を用いた検索処理を実行する検索処理部と、
ことを特徴とする請求項1に記載の情報処理装置。
【請求項17】
前記検索処理部は、
前記モデルの出力に基づいて前記パラメータの値を設定し、前記検索処理を実行する
ことを特徴とする請求項16に記載の情報処理装置。
【請求項18】
前記取得部は、
処理対象となる検索クエリである対象クエリを取得し、
前記検索処理部は、
前記対象クエリを前記モデルに入力し、前記モデルの出力に対応する値に前記パラメータの値を設定し、前記検索処理を実行する
ことを特徴とする請求項16に記載の情報処理装置。
【請求項19】
コンピュータが実行する情報処理方法であって、
データ検索の対象となる複数のオブジェクトを対象とするインデックスと、前記データ検索での検索クエリ用のクエリ用オブジェクトと、前記複数のオブジェクトを検索対象として検索を行う場合に要求される第1精度を示す基準情報とを取得する取得工程と、
前記クエリ用オブジェクトを用いて前記複数のオブジェクトを対象とした検索における正解となるオブジェクトを示す正解検索結果を生成する第1生成工程と、
前記インデックスを用いて前記複数のオブジェクトのうち前記クエリ用オブジェクトに対応する近傍のオブジェクトを抽出する抽出処理を、検索に関するパラメータの値を変動させて繰り返し実行し、前記抽出処理の結果と前記正解検索結果との比較に基づく第2精度が前記第1精度との差が所定の条件を満たした際の前記パラメータの値と、前記クエリ用オブジェクトとを対応付けることにより、前記パラメータの値を推定するモデルの学習に用いる学習用データを生成する第2生成工程と、
を含むことを特徴とする情報処理方法。
【請求項20】
データ検索の対象となる複数のオブジェクトを対象とするインデックスと、前記データ検索での検索クエリ用のクエリ用オブジェクトと、前記複数のオブジェクトを検索対象として検索を行う場合に要求される第1精度を示す基準情報とを取得する取得手順と、
前記クエリ用オブジェクトを用いて前記複数のオブジェクトを対象とした検索における正解となるオブジェクトを示す正解検索結果を生成する第1生成手順と、
前記インデックスを用いて前記複数のオブジェクトのうち前記クエリ用オブジェクトに対応する近傍のオブジェクトを抽出する抽出処理を、検索に関するパラメータの値を変動させて繰り返し実行し、前記抽出処理の結果と前記正解検索結果との比較に基づく第2精度が前記第1精度との差が所定の条件を満たした際の前記パラメータの値と、前記クエリ用オブジェクトとを対応付けることにより、前記パラメータの値を推定するモデルの学習に用いる学習用データを生成する第2生成手順と、
をコンピュータに実行させることを特徴とする情報処理プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、情報処理装置、情報処理方法、及び情報処理プログラムに関する。
【背景技術】
【0002】
従来、種々のインデックスを用いて情報を探索(検索)する技術が提供されている。例えば、検索対象に対応するノードがエッジにより連結されたグラフをインデックスとして生成し、生成したグラフを用いて検索を行う技術が提供されている。また、このような技術は、例えば画像検索等に用いられる。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特許第6293335号公報
【特許文献2】特許第6300982号公報
【特許文献3】特許第6311000号公報
【非特許文献】
【0004】
【非特許文献1】岩崎雅二郎 "木構造型インデックスを利用した近似k最近傍グラフによる近傍検索", 情報処理学会論文誌, 2011/2, Vol. 52, No. 2. pp.817-828.
【発明の概要】
【発明が解決しようとする課題】
【0005】
しかしながら、上記の従来技術には改善の余地がある。例えば、上記の従来技術では、グラフ等のインデックスを用いた検索処理時には探索範囲等を規定するパラメータを設定する必要があるが、パラメータの適切な値を設定することは難しい。例えば、パラメータの値は、クエリに応じて変動することが想定され、クエリに応じて適切なパラメータの値設定を可能にすることが望まれている。
【0006】
本願は、上記に鑑みてなされたものであって、インデックスのパラメータの値をクエリに応じて推定するモデルを生成可能にする情報処理装置、情報処理方法、及び情報処理プログラムを提供することを目的とする。
【課題を解決するための手段】
【0007】
本願に係る情報処理装置は、データ検索の対象となる複数のオブジェクトを対象とするインデックスと、前記データ検索での検索クエリ用のクエリ用オブジェクトと、前記複数のオブジェクトを検索対象として検索を行う場合に要求される第1精度を示す基準情報とを取得する取得部と、前記クエリ用オブジェクトを用いて前記複数のオブジェクトを対象とした検索における正解となるオブジェクトを示す正解検索結果を生成する第1生成部と、前記インデックスを用いて前記複数のオブジェクトのうち前記クエリ用オブジェクトに対応する近傍のオブジェクトを抽出する抽出処理を、検索に関するパラメータの値を変動させて繰り返し実行し、前記抽出処理の結果と前記正解検索結果との比較に基づく第2精度が前記第1精度との差が所定の条件を満たした際の前記パラメータの値と、前記クエリ用オブジェクトとを対応付けることにより、前記パラメータの値を推定するモデルの学習に用いる学習用データを生成する第2生成部と、を備えたことを特徴とする。
【発明の効果】
【0008】
実施形態の一態様によれば、インデックスのパラメータの値をクエリに応じて推定するモデルを生成可能にすることができるという効果を奏する。
【図面の簡単な説明】
【0009】
【
図1】
図1は、実施形態に係る情報処理の一例を示す図である。
【
図2】
図2は、実施形態に係る情報処理の一例を示す図である。
【
図3】
図3は、実施形態に係る情報処理システムの構成例を示す図である。
【
図4】
図4は、実施形態に係る情報処理装置の構成例を示す図である。
【
図5】
図5は、実施形態に係るモデル情報記憶部の一例を示す図である。
【
図6】
図6は、実施形態に係る情報処理の一例を示すフローチャートである。
【
図7】
図7は、実施形態に係る情報処理の一例を示すフローチャートである。
【
図8】
図8は、ハードウェア構成の一例を示す図である。
【発明を実施するための形態】
【0010】
以下に、本願に係る情報処理装置、情報処理方法、及び情報処理プログラムを実施するための形態(以下、「実施形態」と呼ぶ)について図面を参照しつつ詳細に説明する。なお、この実施形態により本願に係る情報処理装置、情報処理方法、及び情報処理プログラムが限定されるものではない。また、以下の各実施形態において同一の部位には同一の符号を付し、重複する説明は省略される。
【0011】
(実施形態)
〔1.情報処理〕
以下では、
図1及び
図2を用いて、実施形態に係る情報処理の一例について説明する。
図1及び
図2は、実施形態に係る情報処理の一例を示す図である。具体的には、
図1は、実施形態に係るモデルを学習するためのデータ(「学習用データ」ともいう)を生成する処理(生成処理)の一例を示す。また、
図2は、実施形態に係る推論処理に基づく検索処理の一例を示す図である。以下では、近似近傍検索(以下「近傍検索」ともいう)に用いるインデックスのパラメータの値を推定する推定モデルを学習する学習用データの生成処理、生成した学習用データを用いた推定モデルの学習処理、学習した推定モデルを用いた推論処理に基づく近傍検索の検索処理の順で説明する。
【0012】
なお、以下の例では、データ検索の対象となる複数のオブジェクトがエッジで連結されたグラフインデックス(単に「グラフ」ともいう)を、近傍検索に用いるインデックスの一例として説明するが、インデックスはグラフに限られない。すなわち、以下に示すグラフはインデックスに一例に過ぎず、インデックスは、近傍検索に用いるインデックスであれば、グラフに限らず、木構造のインデックス、バイナリーインデックス、直積量子化のインデックス等の任意のインデックスであってもよい。
【0013】
また、以下の例では、グラフの検索における検索範囲係数(
図2参照)であるパラメータ「ε」(単に「ε」と記載する場合がある)を、値を推定する対象となるパラメータの一例として説明するが、値を推定する対象となるパラメータはεに限られない。すなわち、以下に示すεはパラメータの一例に過ぎず、パラメータは、インデックスを用いた近傍検索で設定するパラメータであれば、εに限らず、任意のパラメータであってもよい。
【0014】
〔1-1.生成処理例〕
まず、
図1を用いて、学習用データを生成処理の一例について説明する。なお、
図1では、情報処理装置100(
図4参照)が学習に用いるオブジェクト群(「データセット」ともいう)から生成処理時の検索クエリとして用いるオブジェクト(「クエリ用オブジェクト」ともいう)を選択する場合を一例として説明する。なお、クエリ用オブジェクトは、データセット以外から選択されてもよい。この場合、
図1では、情報処理装置100は、例えば、データセットDS1以外とは異なるデータセットであるクエリ用オブジェクト群DS2からクエリ用オブジェクトを取得する。
【0015】
図1の例では、情報処理装置100は、オブジェクトOB1、OB2、OB3、OB101等の複数のオブジェクトを含むデータセットDS1を用いて、パラメータ「ε」の値を推定する推定モデルであるモデルM1(
図2参照)の学習用データを生成する。例えば、データセットDS1中の各オブジェクトは、ベクトル化され、ベクトル化されたオブジェクト(ベクトル情報)を対象として、後述する検索処理などの各種処理を行う。なお、オブジェクトは、ベクトルとして表現可能であれば、どのような情報であってもよい。なお、以下では、画像情報を対象としたベクトル情報について説明するが、ベクトル情報の対象は、動画情報や音声情報等の他の対象であってもよい。
【0016】
また、情報処理装置100が用いる情報は、ベクトルに限らず、各対象の類似性を表現可能な情報であれば、どのような形式の情報であってもよい。例えば、情報処理装置100は、各対象に対応する所定のデータや値を用いて対象をグラフ構造化したグラフ情報を用いてもよい。例えば、情報処理装置100は、各対象から生成された所定の数値(例えば2進数の値や16進数の値)を用いて対象をグラフ構造化したグラフ情報を用いてもよい。例えば、ベクトルに代えて、データ間の距離(類似度)が定義されていれば任意の形態のデータであっても良い。例えば、情報処理装置100は、情報提供装置50(
図3参照)等の他の外部装置から取得する。なお、データセットDS1を取得済みである場合、情報処理装置100は、例えば記憶部120(
図4参照)からデータセットDS1を取得してもよい。
【0017】
まず、情報処理装置100は、クエリ用オブジェクトを取得する(ステップS1)。
図1では、情報処理装置100は、与えられたデータセットDS1からクエリ用オブジェクトを選択する。情報処理装置100は、データセットDS1からランダムにクエリ用オブジェクトを選択する。これにより、情報処理装置100は、データセットに含まれないオブジェクトをクエリ用オブジェクトとすることができる。例えば、情報処理装置100は、データセットDS1からオブジェクトOB500等をクエリ用オブジェクトとして選択する。このように、
図1の例では、情報処理装置100は、クエリ用オブジェクトリストRQ1に示すように、オブジェクトOB500をクエリ用オブジェクトQE1として選択する。情報処理装置100は、データセットDS1から、クエリ用オブジェクトとして選択したオブジェクトを除いたデータ群を検索対象データ群TD1として生成する。
【0018】
そして、情報処理装置100は、正解検索結果を生成する(ステップS2)。情報処理装置100は、クエリ用オブジェクトリストRQ1に示すように、クエリ用オブジェクトとして選択した各オブジェクトをクエリとして用い、検索対象データ群TD1を検索した場合の正解検索結果を生成する。
図1では、クエリ用オブジェクトQE1として選択したオブジェクトOB500をクエリとして用い、検索対象データ群TD1を検索した場合の正解検索結果を生成する。例えば、情報処理装置100は、検索対象データ群TD1を線形探索することにより、クエリ用オブジェクトQE1について、k個(kは任意の数)のオブジェクト(ノード)を近傍オブジェクト(近傍ノード)として抽出した結果を示す正解検索結果を生成する。
【0019】
図1では、情報処理装置100は、クエリ用オブジェクトQE1に対応する正解検索結果RR1を生成する。正解検索結果RR1に示すように、クエリ用オブジェクトQE1に対応する近似正解情報は、Noが「1」である、すなわち最も近傍のノードがオブジェクトOB101に対応するノードであることを示す。また、クエリ用オブジェクトQE1に対応する近似正解情報は、Noが「k」である、すなわち最も遠いノード(最遠オブジェクト)がオブジェクトOB55に対応するノードであることを示す。情報処理装置100は、正解検索結果RR1を用いて、後述する精度算出等の処理を行う。
【0020】
正解検索結果の生成については、線形探索に限らず、任意の手法により行われてもよい。例えば、情報処理装置100は、ステップS3で生成するグラフGR11を用いて、正解検索結果を生成してもよい。この場合、情報処理装置100は、ステップS2よりも先にステップS3を行ってもよい。例えば、情報処理装置100は、パラメータ「ε」の値を所定値以上大きくして、グラフGR11を用いて、
図7に示すような処理を行うことにより、クエリ用オブジェクトQE1に対応する正解検索結果を生成してもよい。なお、上記は一例であり、情報処理装置100は、どのような処理により、正解検索結果を生成してもよい。
【0021】
ここで、パラメータ「ε」の概念について簡単に説明する。
図2のグラフGR11中の「Q」を内部に記載した「○」は、クエリを概念的に示し、クエリに対応する範囲AR1及び範囲AR2を概念的に図示する。範囲AR1は、クエリを中心とする半径r内の範囲を概念的に示し、範囲AR2は、クエリを中心とする半径rをεだけ拡張した半径r(1+ε)内の範囲を示す。このように、εは、検索範囲を変動(拡張)するためのパラメータとして用いられる。例えば、情報処理装置100は、パラメータ「ε」を適用した処理により、近傍オブジェクトを抽出する処理を行うが、パラメータ「ε」を用いた処理の詳細は
図7において説明する。
【0022】
そして、情報処理装置100は、グラフを生成する(ステップS3)。情報処理装置100は、データセットDS1についてグラフを生成する。
図1では、情報処理装置100は、データセットDS1のうち、クエリ用オブジェクトとして選択されたオブジェクト(オブジェクトOB500等)を除いたオブジェクト群(検索対象データ群TD1)についてグラフを生成する。
図1では、情報処理装置100は、検索対象データ群TD1について、グラフGR11を生成する。情報処理装置100は、グラフ生成に関する種々の技術を適宜用いて、グラフGR11を生成する。ここで、グラフGR11について説明する。
【0023】
図1に示すグラフGR11は、検索対象データ群TD1に含まれる各オブジェクトに対応するノードが有向エッジで連結されたグラフ情報を示す。なお、
図1中のグラフGR11に示すようなグラフ情報は、情報処理装置100が生成する場合に限らず、情報処理装置100は、
図1中のグラフGR11に示すようなグラフ情報を情報提供装置50等の他の外部装置から取得してもよい。
【0024】
また、ここでいう、有向エッジとは、一方向にしかデータを辿れないエッジを意味する。以下では、エッジにより辿る元、すなわち始点となるノードを参照元とし、エッジにより辿る先、すなわち終点となるノードを参照先とする。例えば、所定のノード「A」から所定のノード「B」に連結される有向エッジとは、参照元をノード「A」とし、参照先をノード「B」とするエッジであることを示す。なお、各ノードを連結するエッジは、有向エッジに限らず、種々のエッジであってもよい。例えば、各ノードを連結するエッジは、ノードを連結する方向のないエッジであってもよい。例えば、各ノードを連結するエッジは、相互に参照可能なエッジであってもよい。例えば、各ノードを連結するエッジは、全て無向エッジ(双方向エッジ)であってもよい。
【0025】
例えば、このようにノード「A」を参照元とするエッジをノード「A」の出力エッジという。また、例えば、このようにノード「B」を参照先とするエッジをノード「B」の入力エッジという。すなわち、ここでいう出力エッジ及び入力エッジとは、一の有向エッジをその有向エッジが連結する2個のノードのうち、いずれのノードを中心として捉えるかの相違であり、一の有向エッジが出力エッジ及び入力エッジになる。すなわち、出力エッジ及び入力エッジは、相対的な概念であって、一の有向エッジについて、参照元となるノードを中心として捉えた場合に出力エッジとなり、参照先となるノードを中心として捉えた場合に入力エッジとなる。なお、本実施形態においては、エッジについては、出力エッジや入力エッジ等の有向エッジを対象とするため、以下では、有向エッジを単に「エッジ」と記載する場合がある。また、ここでいう、各ノードは、各オブジェクトに対応する。例えば、画像から抽出された複数の局所特徴量のそれぞれがオブジェクトであってもよい。また、例えば、オブジェクト間の距離が定義された種々のデータがオブジェクトであってもよい。
【0026】
また、
図1中のグラフGR11には、データセットDS1中の多数のオブジェクト(ノード)が含まれるが、図面においてはその一部のみを図示する。例えば、情報処理装置100は、
図1中のグラフGR11に示すように、ノードN1~N3、N43、N53等の複数のノード(ベクトル)を含むグラフ情報を生成する。
図1の例では、説明を簡単にするために、5個のノードを図示して処理の概要を説明するが、グラフGR11にはデータセットDS1中のオブジェクト数に対応する数のノードが含まれる。
【0027】
図1の例では、例えば、情報処理装置100は、各オブジェクトに対応する各ノードから所定数以上の出力エッジが他のエッジに連結されるように、グラフGR11を生成する。情報処理装置100は、グラフGR11における各ノードが、そのノードとの間の距離が近い方から所定数のノードへのエッジ(出力エッジ)が連結されるようにグラフGR1を生成する。例えば、所定数は、目的や用途等に応じて、2や5や10や100等の種々の値であってもよい。例えば、所定数が2である場合、ノードN1からは、ノードN1からの距離が最も近いノード及び2番目に距離が近い2個のノードに出力エッジが連結される。なお、類似度を示す指標としての距離は、ベクトル(N次元ベクトル)間の距離として適用可能であれば、どのような距離であってもよく、例えば、ユークリッド距離やマハラノビス距離等の種々の距離が用いられてもよい。例えば、距離は、2つのオブジェクト間の類似度を反映するものであれば、どのような情報であってもよく、例えばコサイン類似度等の角度に関する情報であってもよい。
【0028】
また、このように「ノードN*(*は任意の数値)」と記載した場合、そのノードはノードID「N*」により識別されるノードであることを示す。例えば、「ノードN1」と記載した場合、そのノードはノードID「N1」により識別されるノードである。
【0029】
また、
図1中のグラフGR11では、ノードN1は、ノードN53へ向かう有向エッジであるエッジE2が連結される。すなわち、ノードN1は、ノードN53とエッジE2により連結される。このように「エッジE*(*は任意の数値)」と記載した場合、そのエッジはエッジID「E*」により識別されるエッジであることを示す。例えば、「エッジE31」と記載した場合、そのエッジはエッジID「E31」により識別されるエッジである。例えば、ノードN1を参照元とし、ノードN53を参照先として連結されるエッジE2により、ノードN1からノードN53に辿ることが可能となる。この場合、有向エッジであるエッジE2は、ノードN1を中心として識別される場合、出力エッジとなり、ノードN53を中心として識別される場合、入力エッジとなる。
【0030】
言い換えると、有向エッジであるエッジE2は、ノードN1側からの視点でとらえた場合、自身から他のエッジへ矢印が向いているエッジ、すなわち外向きエッジとなり、ノードN53側からの視点でとらえた場合、自身の方に矢印が向いているエッジ、すなわち内向きエッジとなる。つまり、ここでいう出力エッジは、外向きエッジと読み替えることができ、入力エッジは、内向きエッジと読み替えることができる。また、
図1では図示を省略するが、ノードN53は、ノードN1へ向かう有向エッジ(エッジE531とする)が連結されてもよい。このように、ノードN53からの出力エッジであるエッジE531がノードN1に連結されてもよい。この場合、ノードN1とノードN53との間には、ノードN1からノードN53へ向かう有向エッジであるエッジE2と、ノードN53からノードN1へ向かう有向エッジであるエッジE531との2個のエッジが連結される。
【0031】
また、
図1中のグラフGR11は、ユークリッド空間であってもよい。また、
図1に示すグラフGR11は、各ベクトル間の距離等の説明のための概念的な図であり、グラフGR11は、多次元空間である。例えば、
図1に示すグラフGR11は、平面上に図示するため2次元の態様にて図示されるが、例えば100次元や1000次元等の多次元空間であるものとする。なお、各ノードに対応するベクトルデータは、N次元の実数値ベクトルであってもよい。
【0032】
また、
図1の例では、グラフGR11においては、適宜「ノードN*(*は任意の数値)」の図示を省略し、各ノードに対応する「○」内に「ノードN*」の「*」の値を付すことにより表現する。すなわち、「ノードN*」の部分の「*」が一致するノードに対応する。例えば、グラフGR11中の左上の「○」であって、内部に「43」が付された「○」は、ノードID「N43」により識別されるノード(ノードN43)に対応する。
【0033】
ここで、各ノード間の距離は、ノード(画像情報)の類似性を示し、距離が近いほど類似している。本実施形態においては、グラフGR11における各ノードの距離を対応する各オブジェクト間の類似度とする。例えば、各ノードに対応する画像情報の類似性が、グラフGR11内におけるノード間の距離として写像されているものとする。例えば、各ノードに対応する概念間の類似度が各ノード間の距離に写像されているものとする。ここで、
図1の例では、グラフGR11における各ノード間の距離が短いオブジェクト同士の類似度が高く、グラフGR11における各ノード間の距離が長いオブジェクト同士の類似度が低い。
【0034】
例えば、
図1中のグラフGR11において、ノードN43とノードN2とは近接している、すなわち距離が短い(近い)。そのため、ノードN43に対応するオブジェクトと、ノードN2に対応するオブジェクトとは類似度が高いことを示す。また、
図1中のグラフGR11において、ノードN43とノードN53とは遠隔にある、すなわち距離が長い(遠い)。そのため、ノードN43に対応するオブジェクトと、ノードN53に対応するオブジェクトとは類似度が低いことを示す。なお、上記は一例であり、情報処理装置100は、種々の条件を用いて、グラフを生成してもよい。例えば、情報処理装置100は、各オブジェクトに対応する各ノードから所定の数以上の入力エッジが他のエッジから連結されるように、グラフGR11を生成してもよい。
【0035】
そして、情報処理装置100は、学習用データを生成する(ステップS4)。情報処理装置100は、データセットDS1を検索対象として検索を行う場合に要求される精度(「第1精度」ともいう)を示す基準情報SA1を取得する。例えば、情報処理装置100は、記憶部120から第1精度A1を示す基準情報SA1を取得する。
図1での精度は、データセットDS1を検索対象として検索を行う場合に要求される再現率である場合を一例として説明する。なお、精度は、再現率に限らず、検索処理の精度が測定できれば種々の情報であってもよい。
図1での第1精度A1は、データセットDS1を検索対象として検索を行う場合に要求される再現率の値を示す。
【0036】
情報処理装置100は、対象パラメータ情報TP1に示すように、パラメータであるεを対象としてεを調整して学習用データを生成する。例えば、情報処理装置100は、グラフGR11を用いて検索対象データ群TD1のうち、クエリ用オブジェクトに対応する近傍のオブジェクトを抽出する抽出処理を、εの値を変動させて繰り返し実行し、抽出処理の結果と正解検索結果との比較に基づく第2精度が第1精度A1との差が所定値以内になった際のεの値と、クエリ用オブジェクトとを対応付けることにより、εの値を推定するモデルM1の学習に用いる学習用データを生成する。
【0037】
例えば、情報処理装置100は、
図7に示すような処理により、クエリ用オブジェクトに対応する近傍のオブジェクトを抽出する抽出処理を、εの値を変動させて繰り返し実行してモデルM1の学習に用いる学習用データを生成する。例えば、情報処理装置100は、クエリ用オブジェクトに対応する近傍のオブジェクトを抽出する抽出処理を、εの値段階的に増加させて繰り返し実行して、モデルM1の学習に用いる学習用データを生成する。
【0038】
以下、クエリ用オブジェクトQE1(オブジェクトOB500)を対象としてεの値を決定する場合を一例として説明する。例えば、情報処理装置100は、クエリ用オブジェクトQE1について、パラメータ「ε」の値を0から段階的に増加させて抽出処理を実行する。例えば、情報処理装置100は、クエリ用オブジェクトQE1について、パラメータ「ε」の値を0に設定して、グラフGR11を用いて、
図7に示すような処理を行うことにより、クエリ用オブジェクトQE1に対応する抽出処理の結果である抽出結果RS1を生成する。抽出結果RS1には、クエリ用オブジェクトQE1について、パラメータ「ε」の値を0に設定して検索処理を行った場合のk個の近傍オブジェクトを示す。
【0039】
そして、情報処理装置100は、抽出処理の結果と正解検索結果との比較に基づいて、設定したパラメータでの精度(「第2精度」ともいう)を算出する。情報処理装置100は、抽出結果RS1と正解検索結果RR1とを用いて、クエリ用オブジェクトQE1についてパラメータ「ε」を0に設定した場合の第2精度を算出する。そして、情報処理装置100は、第1精度A1と第2精度との差が所定値以内であるか否かを判定する。
【0040】
情報処理装置100は、第1精度A1と第2精度との差が所定値以内ではない場合、パラメータ「ε」の値を増加させる。例えば、情報処理装置100は、第1精度A1と第2精度との差が所定値以内ではない場合、パラメータ「ε」の値を所定の値(例えば0.05、0.1等)だけ増加させる。そして、情報処理装置100は、増加した後のパラメータ「ε」の値を用いて、クエリ用オブジェクトQE1について上述した処理を繰り返す。
【0041】
一方、情報処理装置100は、第1精度A1と第2精度との差が所定値以内になった場合、そのパラメータ「ε」の値VL1(例えば0.1、0.25等)を、クエリ用オブジェクトQE1に対応づける。
図1では、情報処理装置100は、学習用データLD1に示すように、クエリ用オブジェクトQE1に、第1精度A1と第2精度との差が所定値以内になった場合のパラメータ「ε」の値VL1を対応づける。
【0042】
そして、情報処理装置100は、そのパラメータ「ε」の値と、クエリ用オブジェクトQE1とを対応づけた情報を、学習用データ記憶部121(
図3参照)に登録する。
図1では、情報処理装置100は、学習用データLD1に示すような、オブジェクトOB500、OB1234等のクエリ用オブジェクトの各々とパラメータの値とを対応づけた情報を、学習用データ記憶部121に記憶する。
【0043】
上述したように、情報処理装置100は、各クエリについてそのクエリを用いて検索処理を実行する場合に適切と推定されるパラメータの値をそのクエリに対応付けて収集する。これにより、情報処理装置100は、あるクエリ検索処理を実行する際に、そのクエリについて適切と推定されるパラメータの値を出力する推定モデルを生成することが可能となる。したがって、情報処理装置100は、インデックスのパラメータの値をクエリに応じて推定するモデルを生成可能にすることができる。
【0044】
一般的に、例えば、近似ベクトル近傍検索のような検索では、クエリにより検索精度が異なる。そのため、常に高い検索精度を得るには、例えばε(検索範囲係数)を大きく設定すればよいが、εが小さくても十分な精度が得られるクエリについてもεを大きくすることになり、検索時間の増大することになる。このように、一律にε(検索範囲係数)を大きく設定する場合、不必要に検索時間の増大する場合が生じ得る。
【0045】
そのため、クエリごとに適切なεを推定することが望まれる。そこで、情報処理装置100は、クエリごとにεの値を推定する推定モデルを生成するために必要な学習用データを収集することにより、精度良い推定が可能な推定モデルを生成することが可能となる。
【0046】
具体的には、情報処理装置100は、以下の処理(1-1)~(1-5)に示す処理を実行することにより、εの機械学習を行うための学習用データを生成する。
【0047】
(1-1):登録対象のデータを登録データとクエリデータにランダムに分割
なお、クエリ用のデータが存在する場合、そのデータをクエリデータに利用
(1-2):クエリデータを用いて線形探索を行い、正解検索結果を生成
(1-3):登録データを用いてインデックスを生成
(1-4):εを0から徐々に増やしてインデックスを用いて検索し、正解検索結果を用いて精度を算出
(1-5):精度がAに達したεを出力データとする
【0048】
情報処理装置100は、上記の処理(1-1)~(1-5)により、多次元ベクトルデータであるクエリデータ(入力データ)とεの値(出力データ)からなる学習用データ(データセット)が生成することができる。情報処理装置100は、上記の処理(1-1)~(1-5)を繰り返すことで、多数のデータセットを生成することができる。
【0049】
〔1-2.学習処理例〕
ここから、上述した生成処理により生成した学習用データを用いて、情報処理装置100がモデルM1を学習する学習処理の一例について説明する。以下では、モデルM1の一例として、検索クエリが入力された場合にその検索クエリに対応するεの値を出力するモデルを学習する場合を一例として説明する。なお、情報処理装置100は、分類モデルを学習してもよいが、この点については後述する。
【0050】
情報処理装置100は、モデルM1の学習処理に用いるデータ(学習用データ)を取得する。例えば、情報処理装置100は、モデルM1の学習用データを学習用データ記憶部121(
図4参照)から取得する。
図1では、情報処理装置100は、学習用データLD1に示すような、オブジェクトOB500、OB1234等のクエリ用オブジェクトの各々とパラメータの値とを対応づけた情報を、モデルM1の学習用データとして取得する。
【0051】
情報処理装置100は、学習用データLD1を用いてモデルM1を学習する。例えば、情報処理装置100は、モデルM1が出力する値が、モデルM1に入力したクエリ用オブジェクトに対応付けられた正解情報(パラメータの値)に近づくように、バックプロパゲーション(誤差逆伝播法)等の手法により学習処理を行う。例えば、情報処理装置100は、クエリ用オブジェクトの情報(ベクトル等)が入力されたモデルM1が出力する値が、そのストアに対応付けられた正解情報に近づくように学習処理を行う。例えば、情報処理装置100は、正解情報が「1」である場合、その正解情報が割り当てられたクエリ用オブジェクトが入力された場合に、モデルM1が出力する値が「1」に近づくように、学習処理を行う。また、例えば、情報処理装置100は、正解情報が「0」である場合、その正解情報が割り当てられたクエリ用オブジェクトが入力された場合に、モデルM1が出力する値が「0」に近づくように、学習処理を行う。
【0052】
図1では、情報処理装置100は、オブジェクトOB500が入力された場合に、モデルM1が出力する値がオブジェクトOB500に対応付けられた値VL1に近づくように、学習処理を行う。また、情報処理装置100は、オブジェクトOB1234が入力された場合に、モデルM1が出力する値がオブジェクトOB1234に対応付けられた値VL2に近づくように、学習処理を行う。
【0053】
例えば、情報処理装置100は、学習処理によりノード間で値が伝達する際に考慮される重み(すなわち、接続係数)の値を調整する。このように、情報処理装置100は、モデルM1における出力と、入力に対応する正解情報との誤差が少なくなるようにパラメータ(接続係数)を補正するバックプロパゲーション等の処理によりモデルM1を学習する。例えば、情報処理装置100は、所定の損失(ロス)関数を最小化するようにバックプロパゲーション等の処理を行うことによりモデルM1を生成する。これにより、情報処理装置100は、モデルM1のパラメータを学習する学習処理を行うことができる。
【0054】
なお、モデルの学習手法については、上述した手法に限定されるものではなく、任意の公知技術が適用可能である。なお、各モデルの生成は、機械学習に関する種々の従来技術を適宜用いて行われてもよい。例えば、モデルの生成は、SVM(Support Vector Machine)等の教師あり学習の機械学習に関する技術を用いて行われてもよい。また、例えば、モデルの生成は、教師なし学習の機械学習に関する技術を用いて行われてもよい。例えば、モデルの生成は、深層学習(ディープラーニング)の技術を用いて行われてもよい。例えば、モデルの生成は、DNN(Deep Neural Network)やRNN(Recurrent Neural Network)やCNN(Convolutional Neural Network)等の種々のディープラーニングの技術を適宜用いて行われてもよい。なお、上記モデルの生成に関する記載は例示であり、モデルの生成は、取得可能な情報等に応じて適宜選択された学習手法により行われてもよい。すなわち、情報処理装置100は、学習データに含まれるクエリ用オブジェクトの情報が入力された場合に、正解情報に対応する値を出力するようにモデルM1を学習可能であれば、どのような手法によりモデルM1の生成を行ってもよい。
【0055】
また、上述したモデルは一例に過ぎず、情報処理装置100は、分類モデルを学習してもよい。この場合、εの値を例えば0.10、0.12、…等といった離散値とし、分類問題として入力データと出力データで機械学習を行うことにより、分類モデルを生成してもよい。
【0056】
例えば、情報処理装置100は、学習用データLD1中の各クエリ用オブジェクトについて、そのクエリ用オブジェクトに対応付けられているパラメータの値を上述した離散値(ラベル)のいずれかに割り当てる。例えば、情報処理装置100は、クエリ用オブジェクトに対応付けられているパラメータの値を、上述した離散値(ラベル)のうち、そのパラメータの値との差が最も小さい離散値(ラベル)に割り当て、割り当てた離散値(ラベル)をそのクエリ用オブジェクトの正解情報として用いる。
【0057】
例えば、情報処理装置100は、あるクエリ用オブジェクトを分類モデルに入力した場合、その分類モデルがそのクエリ用オブジェクトに対応付けられた離散値(ラベル)にそのクエリ用オブジェクトを分類するように学習処理が行われる。
図1では、情報処理装置100は、オブジェクトOB500が入力された場合に、分類モデルがオブジェクトOB500に対応付けられた離散値(ラベル)に分類した分類結果を出力するように学習処理が行われる。また、情報処理装置100は、オブジェクトOB1234が入力された場合に、分類モデルがオブジェクトOB1234に対応付けられた離散値(ラベル)に分類した分類結果を出力するように学習処理が行われる。
【0058】
上述したように、情報処理装置100は、生成した学習用データを用いることによりクエリについて適切と推定されるパラメータの値を出力する推定モデルを生成することできる。したがって、情報処理装置100は、インデックスのパラメータの値をクエリに応じて推定するモデルを生成することができる。
【0059】
〔1-3.検索処理例〕
情報処理装置100は、検索処理時には、学習したモデルを用いてクエリからεの値を推定し、推定したεの値を用いてインデックスによる近似近傍検索の処理を実行する。この点について
図2を用いて説明する。
【0060】
図2では、情報処理装置100は、検索処理に用いるクエリQR11を取得する。情報処理装置100は、ユーザからクエリQR11を検索要求として取得する。例えば情報処理装置100は、ユーザが利用する端末装置10からクエリQR11を受信する。
【0061】
情報処理装置100は、クエリQR11を入力情報としてパラメータの値を推定する推定モデルに入力する(ステップS11-1)。
図2では、情報処理装置100は、クエリQR11のベクトルを入力情報としてモデルM1に入力する。入力情報が入力された推定モデルは、パラメータの推定値を出力する(ステップS11-2)。
図2では、クエリQR11のベクトルが入力されたモデルM1は、出力情報OT1に示すように、パラメータ「ε」の推定値VL11を出力する。
【0062】
そして、情報処理装置100は、パラメータ「ε」の値を推定値VL11に設定し、クエリQR11を対象としてグラフGR11を用いた検索処理を実行する(ステップS12)。例えば、情報処理装置100は、パラメータ「ε」の値を推定値VL11に設定し、
図7に示す検索処理を実行することにより、クエリQR11について、k個のオブジェクトを近傍オブジェクトとして抽出する検索処理を実行する。なお、情報処理装置100が実行する検索処理は、
図7に示すような処理に限らず、インデックスを用いた処理であれば、任意の処理が採用可能である。
【0063】
そして、情報処理装置100は、クエリQR11についての検索処理の結果をユーザに提供する。例えば、情報処理装置100は、クエリQR11についての検索処理の結果であるk個の近傍オブジェクトを示す情報をユーザが利用する端末装置10へ送信する。
【0064】
上述したように、情報処理装置100は、クエリについて適切と推定されるパラメータの値を出力する推定モデルを用いることにより、クエリについて適切なパラメータな値を推定することできる。したがって、情報処理装置100は、適切な値に設定されたパラメータにより、インデックスを用いた検索処理を実行することができる。
【0065】
〔2.情報処理システムの構成〕
次に、
図3を用いて情報処理システム1の構成例について説明する。
図3は、実施形態に係る情報処理システムの構成例を示す図である。
図3に示すように、情報処理システム1は、情報処理装置100と、情報提供装置50と、端末装置10とが含まれる。情報処理装置100と、情報提供装置50と、端末装置10とは所定のネットワークNを介して、有線または無線により通信可能に接続される。なお、
図3に示した情報処理システム1には、複数の情報処理装置100、複数の情報提供装置50、複数の端末装置10が含まれてもよい。
【0066】
情報処理装置100は、各種情報処理を実行するコンピュータである。情報処理装置100は、モデルM1等の各種モデルを学習するためのデータ(学習用データ)を生成する生成装置である。また、情報処理装置100は、生成した学習用データを用いて、モデルM1等の各種モデルを学習する学習装置である。また、情報処理装置100は、学習したモデルM1等の各種モデルを用いた推定処理を実行する推論装置である。また、情報処理装置100は、グラフインデックス等のインデックスを用いた近似近傍検索を実行する検索装置である。また、情報処理装置100は、学習したモデルM1等の各種モデルを用いた推定処理の結果を用いた検索処理を実行する。
【0067】
情報処理装置100は、端末装置10を利用するユーザにサービスを提供するコンピュータである。情報処理装置100は、検索サービスを提供する。情報処理装置100は、検索処理結果をユーザに提供する。情報処理装置100は、検索処理結果をユーザが利用する端末装置に送信する。
【0068】
情報提供装置50は、情報処理装置100へ各種情報を提供するサーバ装置である。例えば、情報提供装置50は、グラフインデックス等のインデックスを情報処理装置100へ提供する。情報提供装置50は、グラフGR11等のグラフデータを情報処理装置100へ提供する。
【0069】
情報提供装置50は、モデルの学習に利用可能な情報(データ)を情報処理装置100へ提供する。例えば、情報提供装置50は、モデルの学習への利用が許可されているデータを、学習用データとして情報処理装置100へ送信する。例えば、情報提供装置50は、インターネット上で公開データを公開し、情報処理装置100等の外部装置からの要求に応じて、要求先の外部装置へ要求されたデータを送信する。例えば、情報提供装置50は、情報処理装置100からデータを要求する要求情報を受信し、要求情報の受信に応じて、情報処理装置100へ要求情報に対応するデータを送信する。
【0070】
端末装置10は、ユーザによって利用される情報処理装置である。端末装置10は、例えば、スマートフォンや、タブレット型端末や、ノート型PC(Personal Computer)や、デスクトップPCや、携帯電話機や、PDA(Personal Digital Assistant)等により実現される。なお、端末装置10をユーザと表記する場合がある。すなわち、ユーザを端末装置10と読み替えることもできる。
【0071】
端末装置10は、ユーザによる操作を受け付ける。また、端末装置10は、ユーザの操作に応じて、情報処理装置100や情報提供装置50に種々の情報を送信する。例えば、端末装置10は、情報処理装置100や情報提供装置50に各種情報を要求する要求情報等を送信する。また、端末装置10は、情報処理装置100や情報提供装置50から種々の情報を受信する。
【0072】
端末装置10は、ユーザ入力した検索クエリを情報処理装置100へ送信する。端末装置10は、ユーザが入力した検索クエリを検索要求として情報処理装置100へ送信する。端末装置10は、情報処理装置100から各種情報を受信する。例えば、端末装置10は、情報処理装置100から検索結果を受信する。例えば、端末装置10は、情報処理装置100へ送信した検索クエリの検索処理を、情報処理装置100から受信する。
【0073】
〔3.情報処理装置の構成〕
次に、
図4を用いて、実施形態に係る情報処理装置100の構成について説明する。
図4は、実施形態に係る情報処理装置100の構成例を示す図である。
図4に示すように、情報処理装置100は、通信部110と、記憶部120と、制御部130とを有する。なお、情報処理装置100は、情報処理装置100の管理者等から各種操作を受け付ける入力部(例えば、キーボードやマウス等)や、各種情報を表示するための表示部(例えば、液晶ディスプレイ等)を有してもよい。
【0074】
(通信部110)
通信部110は、例えば、NIC(Network Interface Card)等によって実現される。そして、通信部110は、ネットワークと有線または無線で接続され、端末装置10や情報提供装置50との間で情報の送受信を行う。
【0075】
(記憶部120)
記憶部120は、例えば、RAM(Random Access Memory)、フラッシュメモリ(Flash Memory)等の半導体メモリ素子、または、ハードディスク、光ディスク等の記憶装置によって実現される。実施形態に係る記憶部120は、
図4に示すように、学習用データ記憶部121と、モデル情報記憶部122とを有する。
【0076】
なお、記憶部120は、学習用データ記憶部121及びモデル情報記憶部122に限らず、目的に応じて種々の情報を記憶してもよい。記憶部120は、学習用データの生成処理に用いる各種情報を記憶する。例えば、記憶部120は、学習用データの生成処理に用いる第1精度を示す基準情報を記憶する。
【0077】
記憶部120は、オブジェクトに関する各種情報を記憶する。記憶部120は、検索対象となるオブジェクトの情報を記憶する。記憶部120は、パラメータの推定対象となるインデックスの情報を記憶する。例えば、記憶部120は、グラフインデックス等のインデックス情報を記憶する。例えば、情報処理装置100が検索サービスを提供する場合、記憶部120は、検索サービスに用いる各種情報を記憶する。
【0078】
(学習用データ記憶部121)
実施形態に係る学習用データ記憶部121は、学習に用いるデータに関する各種情報(学習用データ)を記憶する。学習用データ記憶部121は、モデルの生成に用いる教師データを記憶する。学習用データ記憶部121は、入力に用いるデータやそのデータに対応する正解情報(正解値)といった情報を含む学習用データ情報を記憶する。学習用データ記憶部121は、生成部132により生成された学習用データを記憶する。
【0079】
学習用データ記憶部121は、クエリと、そのクエリに対応するパラメータの値(正解値)とが対応付けられた学習用データを記憶する。例えば、学習用データ記憶部121は、クエリと、そのクエリに対応するパラメータ「ε」の値(正解値)とが対応付けられた学習用データを記憶する。
【0080】
なお、学習用データ記憶部121は、上記に限らず、目的に応じて種々の情報を記憶してもよい。例えば、学習用データ記憶部121は、入力データの種別を示す情報を各入力データに対応付けて記憶する。
【0081】
(モデル情報記憶部122)
実施形態に係るモデル情報記憶部122は、モデルに関する情報を記憶する。例えば、モデル情報記憶部122は、学習処理により学習(生成)された学習済みモデル(モデル)の情報(モデルデータ)を記憶する。
図5は、実施形態に係るモデル情報記憶部の一例を示す図である。
図5に示した例では、モデル情報記憶部122は、「モデルID」、「用途」、「モデルデータ」といった項目が含まれる。
【0082】
「モデルID」は、モデルを識別するための識別情報を示す。「用途」は、対応するモデルの用途を示す。「モデルデータ」は、モデルのデータを示す。
図5では「モデルデータ」に「MDT1」といった概念的な情報が格納される例を示したが、実際には、モデルの構成(ネットワーク構成)の情報やパラメータに関する情報等、そのモデルを構成する種々の情報が含まれる。例えば、「モデルデータ」には、ネットワークの各層におけるノードと、各ノードが採用する関数と、ノードの接続関係と、ノード間の接続に対して設定される接続係数とを含む情報が含まれる。
【0083】
図5では、モデルID「M1」により識別されるモデル(モデルM1)は、用途が「パラメータ値推定」であり、例えば、モデルM1は、クエリに対応するパラメータの値を推定するために用いられるモデルであることを示す。例えば、モデルM1は、クエリを用いた検索処理の際に設定されるパラメータ「ε」の適切な値を推定するために用いられるモデルであることを示す。また、モデルM1のモデルデータは、モデルデータMDT1であることを示す。
【0084】
なお、モデル情報記憶部122は、上記に限らず、目的に応じて種々の情報を記憶してもよい。なお、モデルM1等のモデルは、人工知能ソフトウェアの一部であるプログラムモジュールとしての利用が想定されるものであってもよい。モデルM1等のモデルは、プログラムであってもよい。
【0085】
(制御部130)
図4の説明に戻って、制御部130は、コントローラ(controller)であり、例えば、CPU(Central Processing Unit)やMPU(Micro Processing Unit)等によって、情報処理装置100内部の記憶装置に記憶されている各種プログラム(学習プログラムや生成プログラム等の情報処理プログラムの一例に相当)がRAMを作業領域として実行されることにより実現される。また、制御部130は、コントローラであり、例えば、ASIC(Application Specific Integrated Circuit)やFPGA(Field Programmable Gate Array)等の集積回路により実現される。
【0086】
図4に示すように、制御部130は、取得部131と、生成部132と、学習部133と、処理部134と、提供部135とを有し、以下に説明する情報処理の機能や作用を実現または実行する。なお、制御部130の内部構成は、
図4に示した構成に限られず、後述する情報処理を行う構成であれば他の構成であってもよい。
【0087】
(取得部131)
取得部131は、各種情報を取得する。取得部131は、端末装置10や情報提供装置50等の外部の情報処理装置から各種情報を取得する。取得部131は、学習用データ記憶部121やモデル情報記憶部122等に示す各種情報を、外部の情報処理装置から受信してもよい。
【0088】
取得部131は、記憶部120から各種情報を取得する。取得部131は、記憶部120からグラフデータを取得する。取得部131は、学習用データ記憶部121やモデル情報記憶部122等から各種情報を取得する。取得部131は、外部装置から各種情報を受信する。
【0089】
取得部131は、情報提供装置50から各種情報を受信する。例えば、取得部131は、情報提供装置50から学習に用いる情報を受信する。例えば、取得部131は、情報提供装置50から正解検索結果を受信する。
【0090】
取得部131は、ユーザが利用する端末装置10から各種情報を受信する。取得部131は、ユーザから検索処理対象となるクエリを、検索要求として取得する。取得部131は、ユーザが利用する端末装置10からクエリを受信する。
【0091】
取得部131は、ノデータ検索の対象となる複数のオブジェクトを対象とするインデックスと、データ検索での検索クエリ用のクエリ用オブジェクトと、複数のオブジェクトを検索対象として検索を行う場合に要求される第1精度を示す基準情報とを取得する。取得部131は、近似近傍検索に用いられるインデックスを取得する。取得部131は、複数のオブジェクトがエッジで連結されたグラフインデックスをインデックスとして取得する。
【0092】
取得部131は、学習に用いるオブジェクト群から選択されるオブジェクトであるクエリ用オブジェクトと、クエリ用オブジェクトとして選択されたオブジェクトをオブジェクト群から除いた複数のオブジェクトを対象とするインデックスとを取得する。取得部131は、オブジェクト群のうちランダムに選択されるオブジェクトであるクエリ用オブジェクトを取得する。
【0093】
取得部131は、学習に用いるオブジェクト群である複数のオブジェクトを対象とするインデックスと、オブジェクト群以外のオブジェクトであるクエリ用オブジェクトとを取得する。取得部131は、オブジェクト群とは異なるクエリ用オブジェクト群からクエリ用オブジェクトを取得する。取得部131は、処理対象となる検索クエリである対象クエリを取得する。
【0094】
(生成部132)
生成部132は、種々の情報を推定する生成処理を実行する。例えば、生成部132は、取得部131により取得された各種情報に基づいて、生成処理を実行する。生成部132は、記憶部120に記憶された各種情報に基づいて、生成処理を実行する。生成部132は、外部の情報処理装置から受信された各種情報に基づいて、生成処理を実行する。生成部132は、学習部133によるモデルの学習に用いるデータ(学習用データ)を生成する生成処理を実行する。
【0095】
生成部132は、インデックスを用いて複数のオブジェクトのうちクエリ用オブジェクトに対応する近傍のオブジェクトを抽出する抽出処理を、検索に関するパラメータの値を変動させて繰り返し実行し、抽出処理の結果と正解検索結果との比較に基づく第2精度が第1精度との差が所定の条件を満たした際のパラメータの値と、クエリ用オブジェクトとを対応付けることにより、パラメータの値を推定するモデルの学習に用いる学習用データを生成する。
【0096】
生成部132は、抽出処理の結果の精度が高く変化の方向にパラメータの値を段階的に変更して抽出処理を繰り返し実行し、第2精度が第1精度との差が所定の条件を満たした際のパラメータの値と、クエリ用オブジェクトとを対応付けることにより、学習用データを生成する。生成部132は、パラメータの値を段階的に増加させて抽出処理を繰り返し実行し、第2精度が第1精度との差が所定の条件を満たした際のパラメータの値と、クエリ用オブジェクトとを対応付けることにより、学習用データを生成する。
【0097】
(学習部133)
学習部133は、各種情報を学習する。学習部133は、学習処理により各種モデルを生成する。例えば、学習部133は、学習用データ記憶部121等に記憶された情報に基づいて、学習処理を行う。学習部133は、学習用データ記憶部121等に記憶された情報に基づいて種々のモデルを生成する。例えば、学習部133は、学習用データ記憶部121に記憶された学習データを用いて、モデルM1を学習する。
【0098】
例えば、学習部133は、取得部131により取得された各種情報に基づいて、学習処理を実行する。例えば、学習部133は、生成部132により生成された情報に基づいて、モデルを学習する。学習部133は、外部の情報処理装置からの情報や記憶部120に記憶された情報に基づいて、学習処理を実行する。学習部133は、モデル情報記憶部122に記憶された情報に基づいて、学習処理を実行する。学習部133は、学習により生成したモデルをモデル情報記憶部122に格納する。
【0099】
学習部133は、学習処理を行う。学習部133は、各種学習を行う。学習部133は、取得部131により取得された情報に基づいて、各種情報を学習する。学習部133は、モデルを学習(生成)する。学習部133は、モデル等の各種情報を学習する。学習部133は、学習によりモデルを生成する。学習部133は、種々の機械学習に関する技術を用いて、モデルを学習する。例えば、学習部133は、モデル(ネットワーク)のパラメータを学習する。学習部133は、種々の機械学習に関する技術を用いて、モデルを学習する。
【0100】
学習部133は、学習用データを用いた機械学習によりモデルを生成する。学習部133は、検索クエリとして用いられるデータを入力として、入力されたデータに対応するパラメータの値を示す情報を出力するモデルを生成する。学習部133は、入力されたデータに対応するパラメータの値を示す分類結果を出力する分類モデルであるモデルを生成する。
【0101】
学習部133は、学習用データに含まれる一のクエリ用オブジェクトを入力した場合に、一のクエリ用オブジェクトに対応付けられたパラメータの値が該当する分類結果を出力するようにモデルを学習する。学習部133は、入力されたデータに対応するパラメータの値を出力するモデルを生成する。学習部133は、学習用データに含まれる一のクエリ用オブジェクトを入力した場合に、一のクエリ用オブジェクトに対応付けられたパラメータの値を出力するようにモデルを学習する。
【0102】
学習部133は、モデルM1等の各種の学習モデルを生成する。学習部133は、ネットワークのパラメータを学習する。例えば、学習部133は、モデルM1等の各種の学習モデルのネットワークのパラメータを学習する。学習部133は、モデル情報記憶部122に記憶された学習用データを用いて、学習処理を行うことにより、モデルM1等の各種の学習モデルを生成する。例えば、学習部133は、クエリに対応するパラメータの値の推定に用いられるモデルを生成する。学習部133は、モデルM1等の各種の学習モデルのネットワークのパラメータを学習することにより、モデルM1等の各種の学習モデルを生成する。
【0103】
学習部133は、モデル情報記憶部122に記憶された学習用データ(教師データ)に基づいて、学習処理を行う。学習部133は、モデル情報記憶部122に記憶された学習用データを用いて、学習処理を行うことにより、モデルM1等の各種の学習モデルを生成する。
【0104】
例えば、学習部133は、モデルM1が出力するパラメータの推定値が、モデルM1に入力した入力情報(クエリ)に対応付けられた正解情報(望ましいパラメータの値を示す情報)に近づくように、バックプロパゲーション(誤差逆伝播法)等の手法により学習処理を行う。例えば、学習部133は、入力情報としてクエリ情報が入力されたモデルM1が出力するパラメータの推定値が、入力されたクエリ情報に対応付けられたパラメータの値(正解情報)に近づくように学習処理を行う。
【0105】
上記のように、学習部133による学習の手法は特に限定されないが、例えば、データ(入力情報)とその正解情報(出力情報)とを紐づけた学習用データを用意し、その学習用データを多層ニューラルネットワークに基づいた計算モデルに入力して学習してもよい。また、例えばCNN、3D-CNN等のDNNに基づく手法が用いられてもよい。具体的には、学習部133による学習の手法は、U-netに基づく手法が用いられてもよい。学習部133は、音声等のような時系列データを対象とする場合、再帰型ニューラルネットワーク(RNN)やRNNを拡張したLSTM(Long Short-Term Memory units)に基づく手法を用いてもよい。
【0106】
(処理部134)
処理部134は、各種情報を処理する。処理部134は、記憶部120に記憶された情報に基づいて、情報処理を行う。処理部134は、推論処理を行う推論部として機能する。処理部134は、モデル情報記憶部122に記憶されたモデルを用いて、推論処理を行う。例えば、処理部134は、モデルM1にクエリを入力して、モデルM1にパラメータの値を出力させることにより、そのクエリに対応するパラメータの値を推定する推論処理を行う。例えば、処理部134は、モデルM1を用いて、クエリに対応するパラメータ「ε」の値を推定する推論処理を行う。
【0107】
処理部134は、モデルを用いた推論結果を用いた検索処理を実行する。処理部134は、モデルの出力に基づいてパラメータの値を設定し、検索処理を実行する。処理部134は、対象クエリをモデルに入力し、モデルの出力に対応する値にパラメータの値を設定し、検索処理を実行する。
【0108】
処理部134は、推論処理により推定したパラメータの値を用いて検索処理を実行する。処理部134は、各種情報を検索する検索処理部として機能する。例えば、処理部134は、検索処理に用いるクエリ(対象クエリ)をモデルM1に入力して、対象クエリに対応するパラメータの値を推定する。そして、処理部134は、対象クエリを用いた検索処理を実行する際に、パラメータを推定した値に設定する。そして、処理部134は、推定した値に設定したパラメータを用いて、対象クエリの検索処理を実行する。
【0109】
処理部134は、対象クエリに類似するオブジェクト(ノード)である類似オブジェクト(類似ノード)を抽出する。処理部134は、グラフ(グラフデータ)を探索することにより、オブジェクトを検索する。処理部134は、取得部131により対象クエリが取得された場合、グラフを探索することにより、対象クエリに類似するオブジェクトを検索する。
【0110】
処理部134は、グラフを探索することにより、対象クエリに類似するオブジェクトを抽出する。処理部134は、
図7に示すような処理手順に基づいて、グラフを探索することにより、対象クエリに類似するオブジェクトを抽出する。処理部134は、対象クエリを中心とする半径r内の範囲AR1と、対象クエリを中心とする半径r(1+ε)内の範囲AR2とを用いて、グラフを検索し、近傍ノードを抽出する。
【0111】
(提供部135)
提供部135は、各種情報を提供する。例えば、提供部135は、端末装置10や情報提供装置50に各種情報を提供する。提供部135は、端末装置10や情報提供装置50に各種情報を送信する。提供部135は、取得部131により取得された各種情報に基づいて、種々の情報を提供する。提供部135は、生成部132により生成された各種情報に基づいて、種々の情報を提供する。
【0112】
提供部135は、学習部133により学習された各種情報に基づいて、種々の情報を提供する。提供部135は、学習部133により学習されたモデルに基づいて、種々の情報を提供する。提供部135は、処理部134により処理された各種情報に基づいて、種々の情報を提供する。例えば、提供部135は、情報を端末装置10に送信する。
【0113】
提供部135は、処理部134により抽出(検索)されたオブジェクトIDを端末装置10や情報提供装置50へ提供する。提供部135は、処理部134が検索により抽出したオブジェクトIDを情報提供装置50へ提供する。提供部135は、処理部134により抽出されたオブジェクトIDをクエリに対応するベクトルを示す情報として、端末装置10や情報提供装置50に提供する。
【0114】
提供部135は、処理部134により抽出された類似オブジェクトに関する情報を提供する。提供部135は、類似オブジェクトに関する情報を所定のユーザが利用する端末装置10に提供する。提供部135は、クエリの送信元へ検索結果を提供する。例えば、1の例では、提供部135は、対象クエリの類似オブジェクトとして抽出したオブジェクトを示す情報を、検索の要求元へ提供する。情報処理装置100は、検索要求を行ったユーザが利用する端末装置10へ対象クエリの類似オブジェクトを示す情報を送信する。
【0115】
〔4.情報処理のフロー〕
次に、
図6及び
図7を用いて、各情報処理のフローについて説明する。
図6及び
図7は、実施形態に係る情報処理の一例を示すフローチャートである。具体的には、
図6は、実施形態に係る生成処理の一例を示すフローチャートである。
図7は、実施形態に係る検索処理の一例を示すフローチャートである。
【0116】
〔4-1.生成処理のフロー〕
まず、
図6に示す処理例について説明する。
図6に示すように、情報処理装置100は、データ検索の対象となる複数のオブジェクトを対象とするインデックスと、データ検索での検索クエリ用のクエリ用オブジェクトと、複数のオブジェクトを検索対象として検索を行う場合に要求される第1精度を示す基準情報とを取得する(ステップS101)。
【0117】
情報処理装置100は、クエリ用オブジェクトを用いて複数のオブジェクトを対象とした検索における正解となるオブジェクトを示す正解検索結果を生成する(ステップS102)。
【0118】
情報処理装置100は、インデックスを用いて複数のオブジェクトのうちクエリ用オブジェクトに対応する近傍のオブジェクトを抽出する抽出処理を、検索に関するパラメータの値を変動させて繰り返し実行し、抽出処理の結果と正解検索結果との比較に基づく第2精度が第1精度との差が所定の条件を満たした際のパラメータの値と、クエリ用オブジェクトとを対応付けることにより、パラメータの値を推定するモデルの学習に用いる学習用データを生成する(ステップS103)。
【0119】
〔4-2.検索処理のフロー〕
次に、検索処理のフローについて、
図7を一例として説明する。
図7は、実施形態に係る情報処理の一例を示すフローチャートである。具体的には、
図7は、グラフデータを用いた検索処理の一例を示すフローチャートである。なお、
図7に示す検索処理には、選択処理も含まれる。以下に説明する検索処理は、情報処理装置100によって行われる。また、以下でいうオブジェクトは、ノードと読み替えてもよい。なお、情報処理装置100によるグラフデータを用いた検索は下記に限らず、種々の手順により行われてもよい。
【0120】
ここでは、近傍集合N(G,y)は、ノードyに付与されているエッジにより関連付けられている近傍のオブジェクトの集合である。例えば、近傍集合N(G,y)は、ノードyからの出力エッジが連結されたオブジェクト(ノード)の集合である。「G」は、所定のグラフデータ(例えば、グラフGR11、GR21等)であってもよい。例えば、情報処理装置100は、k近傍検索処理を実行する。
【0121】
例えば、情報処理装置100は、超球の半径rを∞(無限大)に設定し(ステップS300)、既存のオブジェクト集合から集合Sを抽出する(ステップS301)。例えば、情報処理装置100は、起点ノードとして決定(選択)されたオブジェクト(ノード)を集合Sとして抽出してもよい。また、例えば、超球とは、検索範囲を示す仮想的な球である。なお、ステップS301において抽出された集合Sに含まれるオブジェクト(ノード)は、検索結果(抽出候補)の集合Rの初期集合にも含められる。また、ステップS301において抽出された集合Sに含まれるオブジェクト(ノード)は、集合Cに含められてもよい。集合Cは、重複検索を回避するために便宜上設けられるものであり、処理開始時には空集合に設定されてもよい。
【0122】
次に、情報処理装置100は、集合Sに含まれるオブジェクトの中で、検索クエリオブジェクトをyとするとオブジェクトyとの距離が最も短いオブジェクトを抽出し、オブジェクトsとする(ステップS302)。例えば、
図1の例では、情報処理装置100は、オブジェクトyであるクエリQE1に対応する起点ノードであるノードN2等が含まれる集合Sから、一のノードをオブジェクトs(対象ノード)として抽出する。次に、情報処理装置100は、オブジェクトsを集合Sから除外する(ステップS303)。例えば、
図1の例では、情報処理装置100は、起点ノードであるノードN2を集合Sから除外する。
【0123】
次に、情報処理装置100は、オブジェクトsとオブジェクトyとの距離d(s,y)がr(1+ε)を超えるか否かを判定する(ステップS304)。ここで、εは拡張要素であり、r(1+ε)は、探索範囲(この範囲内のノードのみを探索する。検索範囲よりも大きくすることで精度を高めることができる)の半径を示す値である。オブジェクトsとオブジェクトyとの距離d(s,y)がr(1+ε)を超える場合(ステップS304:Yes)、情報処理装置100は、集合Rをオブジェクトyの近傍集合として出力し(ステップS305)、処理を終了する。
【0124】
オブジェクトsと検索クエリオブジェクトyとの距離d(s,y)がr(1+ε)を超えない場合(ステップS304:No)、情報処理装置100は、オブジェクトsの近傍集合N(G,s)の要素であるオブジェクトの中から集合Cに含まれないオブジェクトを、所定の基準に基づいて一つ選択し、選択したオブジェクトuを、集合Cに格納する(ステップS306)。例えば、
図1の例では、情報処理装置100は、ノードN2の連結ノードであるノードN1、N43等のうち、クエリQE1と最も近いノード(例えばノードN43)をオブジェクトuとして選択する。
【0125】
次に、情報処理装置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の判定(処理)を行う。
【0126】
次に、情報処理装置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の判定(処理)を行う。
【0127】
オブジェクト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の判定(処理)を行う。
【0128】
集合Rに含まれるオブジェクト数がksを超える場合(ステップS311:Yes)、情報処理装置100は、集合Rに含まれるオブジェクトの中でオブジェクトyとの距離が最も長い(遠い)オブジェクトを、集合Rから除外する(ステップS312)。
【0129】
次に、情報処理装置100は、集合Rに含まれるオブジェクト数がksと一致するか否かを判定する(ステップS313)。集合Rに含まれるオブジェクト数がksと一致しない場合(ステップS313:No)、情報処理装置100は、ステップS315の判定(処理)を行う。また、集合Rに含まれるオブジェクト数がksと一致する場合(ステップS313:Yes)、情報処理装置100は、集合Rに含まれるオブジェクトの中でオブジェクトyとの距離が最も長い(遠い)オブジェクトと、オブジェクトyとの距離を、新たなrに設定する(ステップS314)。
【0130】
そして、情報処理装置100は、オブジェクトsの近傍集合N(G,s)の要素であるオブジェクトから閾値に対応する個数のオブジェクトを選択したか否かを判定する(ステップS315)。例えば、
図1の例では、情報処理装置100は、ノードN2の対象ノードとした繰り返し処理において、関数FC1の出力値「e
p」である閾値TH1に対応する数だけノード(判定対象ノード)を選択したかを判定する。オブジェクトsの近傍集合N(G,s)の要素であるオブジェクトから閾値に対応する個数のオブジェクトを選択していない場合(ステップS315:No)、情報処理装置100は、ステップS306に戻って処理を繰り返す。
【0131】
オブジェクト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の処理を行ってもよい。
【0132】
集合Sが空集合でない場合(ステップS316:No)、情報処理装置100は、ステップS302に戻って処理を繰り返す。また、集合Sが空集合である場合(ステップS316:Yes)、情報処理装置100は、集合Rを出力し、処理を終了する(ステップS317)。例えば、
図1の例では、情報処理装置100は、集合Rに含まれるノードN2、N43、N1等をクエリQE1(入力オブジェクトy)に対応する検索結果として出力する。
【0133】
情報処理装置100は、学習用データ生成時の検索処理を実行においては、集合Rに含まれるオブジェクトを精度算出用のデータとして収集する。また、例えば、情報処理装置100は、ユーザからの検索要求に応じて検索処理を実行した場合、集合Rに含まれるオブジェクト(ノード)を検索クエリ(入力オブジェクトy)に対応する検索結果として、検索要求を行ったユーザが利用する端末装置10等へ提供してもよい。
【0134】
〔5.効果〕
上述してきたように、実施形態に係る情報処理装置100は、取得部131と、第1生成部(実施形態では生成部132)と、第2生成部(実施形態では生成部132)とを有する。取得部131は、ノデータ検索の対象となる複数のオブジェクトを対象とするインデックスと、データ検索での検索クエリ用のクエリ用オブジェクトと、複数のオブジェクトを検索対象として検索を行う場合に要求される第1精度を示す基準情報とを取得する。生成部132は、インデックスを用いて複数のオブジェクトのうちクエリ用オブジェクトに対応する近傍のオブジェクトを抽出する抽出処理を、検索に関するパラメータの値を変動させて繰り返し実行し、抽出処理の結果と正解検索結果との比較に基づく第2精度が第1精度との差が所定の条件を満たした際のパラメータの値と、クエリ用オブジェクトとを対応付けることにより、パラメータの値を推定するモデルの学習に用いる学習用データを生成する。
【0135】
このように、実施形態に係る情報処理装置100は、インデックスを用いる際のパラメータを推定するモデルを生成するための学習用データを、所望の精度を満たすようにパラメータの値を調整することにより生成することができる。したがって、情報処理装置100は、インデックスのパラメータの値をクエリに応じて推定するモデルを生成可能にすることができる。
【0136】
また、実施形態に係る情報処理装置100において、取得部131は、近似近傍検索に用いられるインデックスを取得する。
【0137】
このように、実施形態に係る情報処理装置100は、近似近傍検索に用いられるインデックスを用いる際のパラメータを推定するモデルを生成するための学習用データを、所望の精度を満たすようにパラメータの値を調整することにより生成することができる。したがって、情報処理装置100は、インデックスのパラメータの値をクエリに応じて推定するモデルを生成可能にすることができる。
【0138】
また、実施形態に係る情報処理装置100において、取得部131は、複数のオブジェクトがエッジで連結されたグラフインデックスをインデックスとして取得する。
【0139】
このように、実施形態に係る情報処理装置100は、複数のオブジェクトがエッジで連結されたグラフインデックスを用いる際のパラメータを推定するモデルを生成するための学習用データを、所望の精度を満たすようにパラメータの値を調整することにより生成することができる。したがって、情報処理装置100は、インデックスのパラメータの値をクエリに応じて推定するモデルを生成可能にすることができる。
【0140】
また、実施形態に係る情報処理装置100において、生成部132は、抽出処理の結果の精度が高く変化の方向にパラメータの値を段階的に変更して抽出処理を繰り返し実行し、第2精度が第1精度との差が所定の条件を満たした際のパラメータの値と、クエリ用オブジェクトとを対応付けることにより、学習用データを生成する。
【0141】
このように、実施形態に係る情報処理装置100は、抽出処理の結果の精度が高く変化の方向にパラメータの値を段階的に変更して抽出処理を繰り返し実行することにより、効率的に学習用データを生成することができる。したがって、情報処理装置100は、インデックスのパラメータの値をクエリに応じて推定するモデルを生成可能にすることができる。
【0142】
また、実施形態に係る情報処理装置100において、生成部132は、パラメータの値を段階的に増加させて抽出処理を繰り返し実行し、第2精度が第1精度との差が所定の条件を満たした際のパラメータの値と、クエリ用オブジェクトとを対応付けることにより、学習用データを生成する。
【0143】
このように、実施形態に係る情報処理装置100は、パラメータの値を段階的に増加させて抽出処理を繰り返し実行することにより、効率的に学習用データを生成することができる。したがって、情報処理装置100は、インデックスのパラメータの値をクエリに応じて推定するモデルを生成可能にすることができる。
【0144】
また、実施形態に係る情報処理装置100において、取得部131は、学習に用いるオブジェクト群から選択されるオブジェクトであるクエリ用オブジェクトと、クエリ用オブジェクトとして選択されたオブジェクトをオブジェクト群から除いた複数のオブジェクトを対象とするインデックスとを取得する。
【0145】
このように、実施形態に係る情報処理装置100は、学習に用いるオブジェクト群からクエリを選択することにより、効率的に学習用データを生成することができる。したがって、情報処理装置100は、インデックスのパラメータの値をクエリに応じて推定するモデルを生成可能にすることができる。
【0146】
また、実施形態に係る情報処理装置100において、取得部131は、オブジェクト群のうちランダムに選択されるオブジェクトであるクエリ用オブジェクトを取得する。
【0147】
このように、実施形態に係る情報処理装置100は、オブジェクト群のうちランダムにクエリを選択することにより、効率的に学習用データを生成することができる。したがって、情報処理装置100は、インデックスのパラメータの値をクエリに応じて推定するモデルを生成可能にすることができる。
【0148】
また、実施形態に係る情報処理装置100において、取得部131は、学習に用いるオブジェクト群である複数のオブジェクトを対象とするインデックスと、オブジェクト群以外のオブジェクトであるクエリ用オブジェクトとを取得する。
【0149】
このように、実施形態に係る情報処理装置100は、オブジェクト群以外からクエリを選択することにより、クエリとして適切な情報を選択することにより、高品質な学習用データを生成することができる。したがって、情報処理装置100は、インデックスのパラメータの値をクエリに応じて推定するモデルを生成可能にすることができる。
【0150】
また、実施形態に係る情報処理装置100において、取得部131は、オブジェクト群とは異なるクエリ用オブジェクト群からクエリ用オブジェクトを取得する。
【0151】
このように、実施形態に係る情報処理装置100は、オブジェクト群とは異なるクエリ用オブジェクト群からクエリを選択することにより、クエリとして適切な情報を選択することにより、高品質な学習用データを生成することができる。したがって、情報処理装置100は、インデックスのパラメータの値をクエリに応じて推定するモデルを生成可能にすることができる。
【0152】
また、実施形態に係る情報処理装置100は、学習部133を有する。学習部133は、学習用データを用いた機械学習によりモデルを生成する。
【0153】
このように、実施形態に係る情報処理装置100は、学習用データを用いた機械学習によりモデルを生成することにより、インデックスのパラメータの値をクエリに応じて推定するモデルを生成することができる。
【0154】
また、実施形態に係る情報処理装置100において、学習部133は、検索クエリとして用いられるデータを入力として、入力されたデータに対応するパラメータの値を示す情報を出力するモデルを生成する。
【0155】
このように、実施形態に係る情報処理装置100は、検索クエリとして用いられるデータを入力として、入力されたデータに対応するパラメータの値を示す情報を出力するモデルを生成することにより、インデックスのパラメータの値をクエリに応じて推定するモデルを生成することができる。
【0156】
また、実施形態に係る情報処理装置100において、学習部133は、入力されたデータに対応するパラメータの値を示す分類結果を出力する分類モデルであるモデルを生成する。
【0157】
このように、実施形態に係る情報処理装置100は、入力されたデータに対応するパラメータの値を示す分類結果を出力する分類モデルであるモデルを生成することにより、インデックスのパラメータの値をクエリに応じて推定するモデルを生成することができる。
【0158】
また、実施形態に係る情報処理装置100において、学習部133は、学習用データに含まれる一のクエリ用オブジェクトを入力した場合に、一のクエリ用オブジェクトに対応付けられたパラメータの値が該当する分類結果を出力するようにモデルを学習する。
【0159】
このように、実施形態に係る情報処理装置100は、学習用データに含まれる一のクエリ用オブジェクトを入力した場合に、一のクエリ用オブジェクトに対応付けられたパラメータの値が該当する分類結果を出力するようにモデルを学習することにより、インデックスのパラメータの値をクエリに応じて推定するモデルを生成することができる。
【0160】
また、実施形態に係る情報処理装置100において、学習部133は、入力されたデータに対応するパラメータの値を出力するモデルを生成する。
【0161】
このように、実施形態に係る情報処理装置100は、入力されたデータに対応するパラメータの値を出力するモデルを生成することにより、インデックスのパラメータの値をクエリに応じて推定するモデルを生成することができる。
【0162】
また、実施形態に係る情報処理装置100において、学習部133は、学習用データに含まれる一のクエリ用オブジェクトを入力した場合に、一のクエリ用オブジェクトに対応付けられたパラメータの値を出力するようにモデルを学習する。
【0163】
このように、実施形態に係る情報処理装置100は、学習用データに含まれる一のクエリ用オブジェクトを入力した場合に、一のクエリ用オブジェクトに対応付けられたパラメータの値を出力するようにモデルを学習することにより、インデックスのパラメータの値をクエリに応じて推定するモデルを生成することができる。
【0164】
また、実施形態に係る情報処理装置100は、検索処理部(実施形態では処理部134)を有する。処理部134は、モデルを用いた推論結果を用いた検索処理を実行する。
【0165】
このように、実施形態に係る情報処理装置100は、モデルを用いた推論結果を用いた検索処理を実行することにより、クエリに応じて推定したインデックスのパラメータの値を用いた検索処理を実行することができる。
【0166】
また、実施形態に係る情報処理装置100において、処理部134は、モデルの出力に基づいてパラメータの値を設定し、検索処理を実行する。
【0167】
このように、実施形態に係る情報処理装置100は、モデルの出力に基づいてパラメータの値を設定し、検索処理を実行することにより、クエリに応じて推定したインデックスのパラメータの値を用いた検索処理を実行することができる。
【0168】
また、実施形態に係る情報処理装置100において、取得部131は、処理対象となる検索クエリである対象クエリを取得する。処理部134は、対象クエリをモデルに入力し、モデルの出力に対応する値にパラメータの値を設定し、検索処理を実行する。
【0169】
このように、実施形態に係る情報処理装置100は、対象クエリをモデルに入力し、モデルの出力に対応する値にパラメータの値を設定し、検索処理を実行することにより、クエリに応じて推定したインデックスのパラメータの値を用いた検索処理を実行することができる。
【0170】
〔6.ハードウェア構成〕
また、上述した実施形態に係る情報処理装置100や端末装置10は、例えば
図8に示すような構成のコンピュータ1000によって実現される。以下、情報処理装置100を例に挙げて説明する。
図8は、ハードウェア構成の一例を示す図である。コンピュータ1000は、出力装置1010、入力装置1020と接続され、演算装置1030、一次記憶装置1040、二次記憶装置1050、出力I/F(Interface)1060、入力I/F1070、ネットワークI/F1080がバス1090により接続された形態を有する。
【0171】
演算装置1030は、一次記憶装置1040や二次記憶装置1050に格納されたプログラムや入力装置1020から読み出したプログラム等に基づいて動作し、各種の処理を実行する。演算装置1030は、例えばCPU(Central Processing Unit)、MPU(Micro Processing Unit)、ASIC(Application Specific Integrated Circuit)やFPGA(Field Programmable Gate Array)等により実現される。
【0172】
一次記憶装置1040は、RAM(Random Access Memory)等、演算装置1030が各種の演算に用いるデータを一次的に記憶するメモリ装置である。また、二次記憶装置1050は、演算装置1030が各種の演算に用いるデータや、各種のデータベースが登録される記憶装置であり、ROM(Read Only Memory)、HDD(Hard Disk Drive)、SSD(Solid State Drive)、フラッシュメモリ等により実現される。二次記憶装置1050は、内蔵ストレージであってもよいし、外付けストレージであってもよい。また、二次記憶装置1050は、USBメモリやSD(Secure Digital)メモリカード等の取り外し可能な記憶媒体であってもよい。また、二次記憶装置1050は、クラウドストレージ(オンラインストレージ)やNAS(Network Attached Storage)、ファイルサーバ等であってもよい。
【0173】
出力I/F1060は、ディスプレイ、プロジェクタ、及びプリンタ等といった各種の情報を出力する出力装置1010に対し、出力対象となる情報を送信するためのインターフェイスであり、例えば、USB(Universal Serial Bus)やDVI(Digital Visual Interface)、HDMI(登録商標)(High Definition Multimedia Interface)といった規格のコネクタにより実現される。また、入力I/F1070は、マウス、キーボード、キーパッド、ボタン、及びスキャナ等といった各種の入力装置1020から情報を受信するためのインターフェイスであり、例えば、USB等により実現される。
【0174】
また、出力I/F1060及び入力I/F1070はそれぞれ出力装置1010及び入力装置1020と無線で接続してもよい。すなわち、出力装置1010及び入力装置1020は、ワイヤレス機器であってもよい。
【0175】
また、出力装置1010及び入力装置1020は、タッチパネルのように一体化していてもよい。この場合、出力I/F1060及び入力I/F1070も、入出力I/Fとして一体化していてもよい。
【0176】
なお、入力装置1020は、例えば、CD(Compact Disc)、DVD(Digital Versatile Disc)、PD(Phase change rewritable Disk)等の光学記録媒体、MO(Magneto-Optical disk)等の光磁気記録媒体、テープ媒体、磁気記録媒体、又は半導体メモリ等から情報を読み出す装置であってもよい。
【0177】
ネットワークI/F1080は、ネットワークNを介して他の機器からデータを受信して演算装置1030へ送り、また、ネットワークNを介して演算装置1030が生成したデータを他の機器へ送信する。
【0178】
演算装置1030は、出力I/F1060や入力I/F1070を介して、出力装置1010や入力装置1020の制御を行う。例えば、演算装置1030は、入力装置1020や二次記憶装置1050からプログラムを一次記憶装置1040上にロードし、ロードしたプログラムを実行する。
【0179】
例えば、コンピュータ1000が情報処理装置100として機能する場合、コンピュータ1000の演算装置1030は、一次記憶装置1040上にロードされたプログラムを実行することにより、制御部130の機能を実現する。また、コンピュータ1000の演算装置1030は、ネットワークI/F1080を介して他の機器から取得したプログラムを一次記憶装置1040上にロードし、ロードしたプログラムを実行してもよい。また、コンピュータ1000の演算装置1030は、ネットワークI/F1080を介して他の機器と連携し、プログラムの機能やデータ等を他の機器の他のプログラムから呼び出して利用してもよい。
【0180】
〔7.その他〕
また、上記実施形態及び変形例において説明した各処理のうち、自動的に行われるものとして説明した処理の全部または一部を手動的に行うこともでき、あるいは、手動的に行われるものとして説明した処理の全部または一部を公知の方法で自動的に行うこともできる。この他、上記文書中や図面中で示した処理手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。例えば、各図に示した各種情報は、図示した情報に限られない。
【0181】
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的形態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。
【0182】
また、上述してきた実施形態及び変形例は、処理内容を矛盾させない範囲で適宜組み合わせることが可能である。
【0183】
また、上述してきた「部(section、module、unit)」は、「手段」や「回路」などに読み替えることができる。例えば、取得部は、取得手段や取得回路に読み替えることができる。
【符号の説明】
【0184】
1 情報処理システム
100 情報処理装置
121 学習用データ記憶部
122 モデル情報記憶部
130 制御部
131 取得部
132 生成部
133 学習部
134 処理部(検索処理部)
135 提供部
10 端末装置
50 情報提供装置
N ネットワーク