IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 東芝メモリ株式会社の特許一覧

<>
  • 特開-方法および情報処理装置 図1
  • 特開-方法および情報処理装置 図2
  • 特開-方法および情報処理装置 図3
  • 特開-方法および情報処理装置 図4
  • 特開-方法および情報処理装置 図5
  • 特開-方法および情報処理装置 図6
  • 特開-方法および情報処理装置 図7
  • 特開-方法および情報処理装置 図8
  • 特開-方法および情報処理装置 図9
  • 特開-方法および情報処理装置 図10
  • 特開-方法および情報処理装置 図11
  • 特開-方法および情報処理装置 図12
  • 特開-方法および情報処理装置 図13
  • 特開-方法および情報処理装置 図14
  • 特開-方法および情報処理装置 図15
  • 特開-方法および情報処理装置 図16
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024043899
(43)【公開日】2024-04-02
(54)【発明の名称】方法および情報処理装置
(51)【国際特許分類】
   G06F 16/903 20190101AFI20240326BHJP
   G06F 16/906 20190101ALI20240326BHJP
【FI】
G06F16/903
G06F16/906
【審査請求】未請求
【請求項の数】8
【出願形態】OL
(21)【出願番号】P 2022149134
(22)【出願日】2022-09-20
(71)【出願人】
【識別番号】318010018
【氏名又は名称】キオクシア株式会社
(74)【代理人】
【識別番号】110002147
【氏名又は名称】弁理士法人酒井国際特許事務所
(72)【発明者】
【氏名】宮下 大輔
(72)【発明者】
【氏名】池田 泰我
(72)【発明者】
【氏名】出口 淳
【テーマコード(参考)】
5B175
【Fターム(参考)】
5B175FA03
5B175HB03
(57)【要約】
【課題】クエリ応答の速度と探索の精度とが向上する方法および情報処理装置を提供すること。
【解決手段】方法は、クエリの入力を受け付けることと、複数の第1オブジェクトのうちの1つをクエリとニューラルネットワークモデルに基づいて選択することと、を含む。複数の第1オブジェクトのそれぞれは第1メモリに格納された第1データの群のうちの1つまたは複数の第1データに関連付けられている。方法は、さらに、選択した1つの第1オブジェクトである第2オブジェクトが関連付けられた1つまたは複数の第1データである1つまたは複数の第2データとクエリとの距離の指標を演算することを含む。方法は、さらに、指標に基づいて第1データの群のうちのクエリに最も近い第1データである第3データを特定することを含む。
【選択図】図8
【特許請求の範囲】
【請求項1】
クエリの入力を受け付けることと、
第1メモリに格納された第1データの群のうちの1つまたは複数の第1データにそれぞれが関連付けられた複数の第1オブジェクトのうちの1つを前記クエリとニューラルネットワークモデルとに基づいて選択することと、
選択した前記1つの第1オブジェクトである第2オブジェクトが関連付けられた1つまたは複数の第1データである1つまたは複数の第2データと前記クエリとの距離の指標を演算することと、
前記指標に基づいて前記第1データの群のうちの前記クエリに最も近い第1データである第3データを特定することと、
を含む方法。
【請求項2】
前記複数の第1オブジェクトのそれぞれは、前記第1データの群のうちのそれぞれ異なる1つまたは複数の第1データの組に関連付けられ、
前記特定することは、前記1つまたは複数の第2データのうちの前記クエリとの距離が最も近い第2データを前記第3データとして特定することである、
請求項1に記載の方法。
【請求項3】
前記複数の第2データを前記第1メモリから前記第1メモリよりも高速な動作が可能な第2メモリに転送することを含み、
前記演算することは、前記第2メモリ内の前記複数の第2データのそれぞれと前記クエリとの距離の指標を演算することを含む、
請求項2に記載の方法。
【請求項4】
前記複数の第1オブジェクトのそれぞれに関連付けられた前記複数の第1データは、前記第1メモリのアドレス空間内の連続するエリアに配置される、
請求項3に記載の方法。
【請求項5】
前記ニューラルネットワークモデルは、前記クエリが入力された場合に前記第1データの群のうちの前記クエリに最も近い第1データを含む可能性に対応したスコアを第1オブジェクト毎に出力するように構成され、
前記選択することは、前記第1オブジェクト毎のスコアに基づき、前記可能性が最も高い第1オブジェクトを選択することを含む、
請求項2から請求項4の何れか一項に記載の方法。
【請求項6】
前記複数の第1オブジェクトのそれぞれは、前記第1データの群のうちのそれぞれ異なる1つの第1データに関連付けられ、
前記第1データの群は、グラフを構成し、
前記特定することは、前記1つの第2データをエントリポイントとした探索を前記グラフに基づいて行うことで前記第3データを特定することである、
請求項1に記載の方法。
【請求項7】
前記ニューラルネットワークモデルは、前記クエリが入力された場合に前記第3データまでのホップ数が最小である可能性に対応したスコアを第1オブジェクト毎に出力するように構成され、
前記選択することは、第1オブジェクト毎のスコアに基づき、前記可能性が最も高い第1データに関連付けられた第1オブジェクトを選択することを含む、
請求項6に記載の方法。
【請求項8】
第1データの群が格納された第1メモリと、
クエリの入力を受け付け、
前記第1データの群のうちの1つまたは複数の第1データにそれぞれが関連付けられた複数の第1オブジェクトのうちの1つを前記クエリとニューラルネットワークモデルに基づいて選択し、
選択した前記1つの第1オブジェクトである第2オブジェクトが関連付けられた1つまたは複数の第1データである1つまたは複数の第2データと前記クエリとの距離の指標を演算し、
前記指標に基づいて前記第1データの群のうちの前記クエリに最も近い第1データである第3データを特定する、
ように構成されたプロセッサと、
を備える情報処理装置。
【発明の詳細な説明】
【技術分野】
【0001】
本実施形態は、方法および情報処理装置に関する。
【背景技術】
【0002】
従来、入力データであるクエリに対して類似したデータを探索し、その結果を出力する情報処理を行う方法または装置がある。このような方法または装置において、入力されたクエリに対して結果を出力するための情報処理にかかるクエリ応答の速度と探索の精度とが求められる。クエリ応答の速度と探索の精度とを両立するための近傍探索のアルゴリズムとして、複数の異種(heterogeneous)のメモリを用いた近似近傍探索(Approximate Nearest Neighbor Search : ANNS)アルゴリズムが知られている。
【先行技術文献】
【特許文献】
【0003】
【非特許文献1】Jie Ren, Minjia Zhang, and Dong Li, “HM-ANN: Efficient Billion-Point Nearest Neighbor Search on Heterogeneous Memory”, [online], [retrieved on 2021-10-12], retrieved from the Internet: <URL: http://pasalabs.org/papers/2020/NeurIPS20_HM_ANN.pdf>
【発明の概要】
【発明が解決しようとする課題】
【0004】
一つの実施形態は、クエリ応答の速度と探索の精度とが向上する方法および情報処理装置を提供することを目的とする。
【課題を解決するための手段】
【0005】
一つの実施形態によれば、方法は、クエリの入力を受け付けることと、複数の第1オブジェクトのうちの1つをクエリとニューラルネットワークモデルに基づいて選択することと、を含む。複数の第1オブジェクトのそれぞれは第1メモリに格納された第1データの群のうちの1つまたは複数の第1データに関連付けられている。方法は、さらに、選択した1つの第1オブジェクトである第2オブジェクトが関連付けられた1つまたは複数の第1データである1つまたは複数の第2データとクエリとの距離の指標を演算することを含む。方法は、さらに、指標に基づいて第1データの群のうちのクエリに最も近い第1データである第3データを特定することを含む。
【図面の簡単な説明】
【0006】
図1】第1の実施形態にかかる情報処理装置のハードウェア構成の一例を示す模式的な図。
図2】第1の実施形態にかかるSSDが記憶する情報の一例を示す模式的な図。
図3】第1の実施形態にかかるプロセッサが実行する近傍探索を説明するための模式的な図。
図4】第1の実施形態にかかる複数のクラスタと或るクエリとの位置関係の一例を説明するための模式的な図。
図5】第1の実施形態にかかるDRAMが記憶する情報の一例を示す模式的な図。
図6】第1の実施形態にかかるニューラルネットワークモデルの構成の一例を示す模式的な図。
図7】第1の実施形態にかかるニューラルネットワークモデルのトレーニング方法の一例を説明するフローチャート。
図8】第1の実施形態にかかる近傍探索の方法の一例を説明するフローチャート。
図9】第1の実施形態の変形例にかかるSSDが記憶するデータDの配置例を示す模式的な図。
図10】第2の実施形態にかかる情報処理装置が備えるSSDが記憶する情報の一例を示す模式的な図。
図11】第2の実施形態のグラフ情報によって定義されるグラフの一例を示す模式的な図。
図12】第2の実施形態のエントリポイントの選択方法の一例を説明するための模式的な図。
図13】第2の実施形態にかかるDRAMが記憶する情報の一例を示す模式的な図。
図14】第2の実施形態にかかるニューラルネットワークモデルの構成の一例を示す模式的な図。
図15】第2の実施形態にかかるニューラルネットワークモデルのトレーニング方法の一例を説明するフローチャート。
図16】第2の実施形態にかかる近傍探索の方法の一例を説明するフローチャート。
【発明を実施するための形態】
【0007】
実施形態にかかる近傍探索の方法は、例えば、プロセッサと、第1メモリと、第2メモリと、を備える情報処理装置で実行される。第1メモリは、第2メモリよりも大きな容量を有するメモリである。第2メモリは、第1メモリよりも高速な動作が可能なメモリである。以下では、実施形態にかかる近傍探索が、第1メモリとしてSSD(Solid State Drive)を備え、第2メモリとしてDRAM(Dynamic Random Access Memory)を備えるコンピュータにおいて実施される例を説明する。
【0008】
なお、実施形態にかかる近傍探索の方法は、ネットワークで相互に接続された2以上の情報処理装置の協働によって実行されてもよい。また、実施形態にかかる近傍探索は、第1メモリとしてNAND型のフラッシュメモリデバイスなどのストレージ媒体を備え、第2メモリとしてDRAMを備え、プロセッサを備える記憶装置において実行されてもよい。
【0009】
以下に添付図面を参照して、実施形態にかかる方法および情報処理装置を詳細に説明する。なお、これらの実施形態により本発明が限定されるものではない。
【0010】
(第1の実施形態)
図1は、第1の実施形態にかかる情報処理装置のハードウェア構成の一例を示す模式的な図である。
【0011】
情報処理装置1は、プロセッサ2、第1メモリの一例であるSSD3、第2メモリの一例であるDRAM4、I/О(Input/Output)回路5、およびこれらを電気的に接続するバス6を備えるコンピュータである。なお、第1メモリおよび第2メモリはこれらに限定されない。例えば第1メモリは、任意のストレージメモリであってもよい。第1メモリは、UFS(Universal Flash Storage)デバイスまたは磁気ディスク装置であってもよい。
【0012】
プロセッサ2は、コンピュータプログラムに従って所定の演算を実行する。プロセッサ2は、例えばCPU(Central Processing Unit)やGPU(Graphics Processing Unit)である。情報処理装置1に入力データであるクエリが入力されると、プロセッサ2は、SSD3およびDRAM4を利用して、入力されたクエリに基づく所定の演算を実行する。
【0013】
SSD3は、DRAM4よりも大きな容量を有するストレージメモリである。SSD3は、ストレージ媒体としてNAND型のフラッシュメモリを備える。
【0014】
DRAM4は、SSD3よりも容量が小さいが、SSD3よりも高速な動作が可能である。ここで、動作は、データの書き込み動作やデータの読み出し動作を含む。
【0015】
I/О回路5は、入出力機器が接続され得るインタフェース装置である。入出力機器は、例えば、入力装置、表示装置、ネットワーク機器、またはプリンタなどである。
【0016】
図2は、第1の実施形態にかかるSSD3が記憶する情報の一例を示す模式的な図である。
【0017】
SSD3には、データDの群が格納される。各データDの種類は特定の種類に限定されない。各データDは、N(ただしNは1以上の整数)個の要素を有する。換言すると、各データDは、N次元のベクトルである。各データDは、画像、文書、またはこれら以外の任意の種類のデータ、またはこれらのデータから生成されたデータである。一例では、各データDは、画像から抽出されたN個の特徴量である。別の一例では、各データDは、それぞれ異なるユーザによるN個のカテゴリに分類される商品の購買履歴である。全データDおよび後述されるクエリQで要素数Nは共通である。
【0018】
情報処理装置1にクエリが入力されると、プロセッサ2は、SSD3に格納されたデータDの群のうちから入力されたクエリまでの距離が最も近いデータDを探索する。
【0019】
本明細書において距離は、データ間の類似度を表す尺度である。距離は、数学的には、例えばユークリッド距離である。なお、距離の数学的な定義はユークリッド距離に限定されない。また、距離の評価に使用される指標は、ユークリッド距離などに限らず、距離に対応する限り任意の指標が使用され得る。ここでは一例として、内積値が距離に対応した指標として使用される。内積値は、距離が近いほど大きな値をとる。
【0020】
第1の実施形態では、SSD3内のデータDの群は、複数のクラスタにカテゴライズされている。各クラスタは、互いの距離が近い2以上のデータDをグループ化した、データDのサブグループである。なお、データDを1つしか含まないクラスタがあってもよい。各クラスタは、第1の実施形態の第1オブジェクトの一例である。
【0021】
図3は、第1の実施形態にかかるプロセッサ2が実行する近傍探索を説明するための模式的な図である。SSD3にはデータDの群としてデータD0~D21が格納されていることとし、本図には、N次元空間におけるデータD0~D21の位置が描画されている。なお、ここでは理解しやすくするために、データDは2次元のベクトルであることとしている。
【0022】
データD0~D21のうち、データD0~D9がクラスタ#0としてグループ化されている。データD7,D8,D10~D17がクラスタ#1としてグループ化されている。データD8,D9,D18~D21がクラスタ#2としてグループ化されている。
【0023】
グループ化は、任意の方法で実行され得るが、典型的にはデータD間の距離に基づいて実行される。例えば、データDが存在するN次元の空間を格子状に区切って、各格子内のデータDのセットによって1つのリストが設定されてもよい。これによって、互いの距離が近い2以上のデータDを1つのリストとしてグループ化することが可能である。以降、説明をわかりやすくするためにグループ内のデータDが互いに距離が近いことを想定して説明を行うが、このことは本発明に必ずしも必要ではない。
【0024】
なお、1つのデータDはいずれか1つのクラスタのみに属してもよい。または、図3のデータD7~D9のそれぞれのように、1つのデータDは2以上のクラスタに重複して属してもよい。
【0025】
クエリが入力された場合、プロセッサ2は、まず、全クラスタのうちのクエリに最も近いデータが属するクラスタを特定する。そして、プロセッサ2は、特定したクラスタに属する全てのデータDをSSD3からDRAM4に転送する。そして、プロセッサ2は、DRAM4内で各データDとクエリとの間の距離の指標を演算し、各指標に基づいてクエリに最も近いデータを特定する。
【0026】
例えば、第1の実施形態と比較される技術として、SSDなどのアクセスに大きな時間を要するストレージメモリ内のデータに対してグラフベースの近傍探索を行う方法がある。この方法を、第1の比較例と表記する。第1の比較例によれば、クエリに最も近いデータを特定するために、候補データをグラフに沿って選択しながら、候補データを選択する毎に候補データとクエリとの距離の指標が算出される。グラフに沿って新たな候補データを選択する処理は、「ホップ」とも称される。
【0027】
しかしながら、第1の比較例によれば、新たな候補データが選択される毎に、換言するとホップ毎に、選択した候補データをSSDなどのストレージメモリからワークエリアである高速メモリ、例えばDRAM、に転送する処理が起きる。よって、クエリに最も近いデータの特定に多大な時間を要する。
【0028】
第1の実施形態によれば、クエリQに最も近いデータDが属するクラスタを構成する全てのデータDが一括にSSD3からDRAM4に転送される。DRAM4へのアクセスに要する時間は、SSD3へのアクセスに要する時間に比べて少ない。よって、クエリQに最も近いデータDの特定に要する時間が短縮される。つまり、第1の実施形態によれば、クエリ応答の速度が向上する。
【0029】
図4は、第1の実施形態にかかる複数のクラスタと或るクエリとの位置関係の一例を説明するための模式的な図である。
【0030】
図4に示す例では、データD0~D21のうちクエリQに最も近いデータはクラスタ#1に属するデータD10である。
【0031】
ここで、第1の実施形態と比較される別の技術として、第2の比較例を説明する。第2の比較例によれば、1つの代表点がクラスタ毎に設定される。代表点は、クラスタに属する全てのデータから選択された1つのデータであってもよいし、クラスタの中心または重心に相当する新たなデータであってもよい。クエリに最も近いデータが属するクラスタは、そのデータのクラスタ毎の代表点からの距離に基づいて特定される。例えば、クエリに最も近い代表点が設定されるクラスタが、クエリに最も近いデータが属するクラスタとして特定される。
【0032】
しかしながら、クエリに最も近い代表点が設定されるクラスタが、クエリに最も近いデータが属するクラスタと異なるケースが起こり得る。クエリに最も近いデータが属するクラスタと異なるクラスタが誤ってクエリに最も近いデータが属するクラスタとして特定された場合、クエリに最も近いデータを特定することができない。
【0033】
図4に示す例において、クラスタ#0の重心C0がクラスタ#0の代表点として設定され、クラスタ#1の重心C1がクラスタ#1の代表点として設定されるケースを考える。クラスタ#1の重心C1よりもクラスタ#0の重心C0のほうがクエリQに近いため、第2の比較例によれば、クラスタ#0がクエリQに最も近いデータが属するクラスタとして特定される。そして、クラスタ#0に属するデータのうちのクエリQに最も近いデータD7が、全てのデータのうちのクエリQに最も近いデータとして誤検出される。つまり、第2の比較例によれば、推定を誤るケースがある。
【0034】
第1の実施形態では、データDの群のうちのクエリQに最も近いデータであるデータD10が属するクラスタ#1をクエリに最も近いデータが属するクラスタとして特定するために、トレーニング済みのニューラルネットワークモデル(後述するニューラルネットワークモデル43)が使用される。トレーニング済みのニューラルネットワークモデルを用いてクエリQに最も近いデータDであるデータD10が属するクラスタを特定することで、第2の比較例の説明で述べた推定の誤りを抑制する、つまり、探索の精度を向上させる。
【0035】
図5は、第1の実施形態にかかるDRAM4が記憶する情報の一例を示す模式的な図である。
【0036】
DRAM4には、探索プログラム41およびモデル情報42がロードされる。探索プログラム41およびモデル情報42は、任意の不揮発性メモリ(例えばSSD3)に予め格納されている。プロセッサ2は、所定の処理(例えば探索プログラム41の起動指示など)に応じて探索プログラム41およびモデル情報42をDRAM4にロードする。
【0037】
プロセッサ2は、DRAM4にロードされた探索プログラム41に従ってクエリに最も近いデータの探索を行う。
【0038】
モデル情報42は、ニューラルネットワークモデル43の構成を記録した情報である。モデル情報42は、例えば、複数のノードの定義と、ノード間の接続関係の定義と、バイアスと、を含む。モデル情報42では、各ノードには、活性化関数とトレーニング済みの重みが関連付けられている。プロセッサ2は、探索の際に、DRAM4にロードされたモデル情報42を用いることで、ニューラルネットワークモデル43としての演算を行い、これによってクエリQに最も近いデータが属するクラスタの特定を行う。
【0039】
図6は、第1の実施形態にかかるニューラルネットワークモデル43の構成の一例を示す模式的な図である。なお、本図の例では、データDおよびクエリQは4次元のベクトルであり、4つの要素を有していることとする。また、SSD3内のデータDの群は4つのクラスタ#0~#3にグループ化されていることとする。
【0040】
図6に示すニューラルネットワークモデル43において、円形の図形はノードを示し、ノード間を接続する線分はエッジを示す。ニューラルネットワークモデル43は、一例として、入力層と、2つの隠れ層と、出力層と、を備える。
【0041】
入力層は、クエリQを構成する要素の数に対応した数のノード、つまり4個のノード、を含む。入力層の4個のノードのそれぞれは、クエリQの4個の要素q0~q3のうちのひとつと一対一に関連付けられており、関連付けられた要素の入力を受け付ける。
【0042】
出力層は、クラスタの数に対応した数のノード、つまり4個のノード、を含む。出力層が備える4個のノードのそれぞれは、クラスタ#0~#3のうちのひとつと一対一に関連付けられており、関連付けられたクラスタにかかるスコアを出力する。
【0043】
スコアは、各ノードに対応するクラスタがクエリQに最も近いデータが属するクラスタに該当する確率に対応する。ここでは一例として、スコアが高いほど、そのスコアを出力したノードに対応するクラスタがクエリQに最も近いデータが属するクラスタに該当する確率が高いこととする。なお、スコアと当該確率との関係はこれに限定されない。
【0044】
プロセッサ2は、入力層にクエリQを入力する。そして、プロセッサ2は、隠れ層および出力層の各ノードにおいて、バイアスおよび前の層のノードからの各入力値に対して重みを乗じ、重みが乗じられた後の各値の総和に対して活性化関数を適用し、活性化関数の適用によって得られた値を出力する。
【0045】
プロセッサ2は、出力層からスコアをクラスタ毎に取得し、最も大きいスコアが出力されたノードに対応するクラスタを、クエリQに最も近いデータが属するクラスタとして特定する。
【0046】
以降、クラスタ#X(ただし図6の例ではXは0から3までの整数)に対応付けられたノードから出力されたスコアを、クラスタ#Xのスコア、と表記する。
【0047】
なお、図6に示すニューラルネットワークモデル43は、あくまでも一例である。ニューラルネットワークモデル43が備える層の数、隠れ層のノードの数、ノード間の接続関係、各ノードでの演算方法、などは設計者によって種々に変形され得る。
【0048】
図7は、第1の実施形態にかかるニューラルネットワークモデル43のトレーニング方法の一例を説明するフローチャートである。なお、本図に示す一連の処理は、情報処理装置1において実行されてもよいし、他の任意のコンピュータにおいて実行されてもよい。なお、本図に示す一連の処理は、SSD3に格納されているデータDの群と同じ群にアクセス可能なコンピュータにおいて実行される。ここでは一例として、情報処理装置1において本図に示す一連の処理が実行されることとして説明する。
【0049】
まず、プロセッサ2は、多数のサンプルクエリを生成する(S101)。プロセッサ2は、例えば、乱数生成プログラムなどに基づき、ある数のクエリから、より多数のサンプルクエリを生成する。なお、サンプルクエリの生成方法はこれに限定されない。
【0050】
続いて、プロセッサ2は、サンプルクエリに最も近いデータが属するクラスタを、サンプルクエリ毎に特定する(S102)。例えば、プロセッサ2は、各サンプルクエリと各データDとの距離を演算し、これによって各サンプルクエリに最も近いデータDを特定する。そして、プロセッサ2は、特定したデータDが属するクラスタを特定する。
【0051】
なお、S102の処理は、教師データを作成するための処理である。よって、S102の処理には正確性が求められる。図7に示す一連の処理は、実際のクエリQに対する近傍探索の前に予め実行される。つまり、図7に示す一連の処理は、高速に完了することは求められていない。したがって、プロセッサ2は、S102の処理に対しては、サンプルクエリに最も近いデータが属するクラスタを正確に求めるために必要な時間をかけることができる。
【0052】
S102に続いて、プロセッサ2は、多数得られた、サンプルクエリと、サンプルクエリに最も近いデータが属するクラスタと、の対を教師データとして用いてニューラルネットワークモデル43のトレーニングを実行する(S103)。これによって、ノード毎の重みが確定し、モデル情報42が生成される。そして、トレーニングが完了する。
【0053】
図8は、第1の実施形態にかかる近傍探索の方法の一例を説明するフローチャートである。プロセッサ2が探索プログラム41に従って本図に示す一連の処理を実行する。
【0054】
情報処理装置1にクエリQが入力されると、プロセッサ2は、クエリQを受け付けて(S201)、クエリQをニューラルネットワークモデル43に入力する(S202)。
【0055】
プロセッサ2は、ニューラルネットワークモデル43から出力されたクラスタ毎のスコアに基づき、スコアが最も高いクラスタを選択する(S203)。そして、プロセッサ2は、選択したクラスタに属する全てのデータDをSSD3からDRAM4に転送する(S204)。
【0056】
プロセッサ2は、DRAM4内の各データDとクエリQとの内積を演算する(S205)。なお、2つのデータ間の内積は、2つのデータ間の距離に対応する指標の一例である。2つのデータ間の距離が近いほど、2つのデータ間の内積の値が大きくなる。なお、2つのデータ間の距離に対応する指標としては、内積に限定されない。
【0057】
プロセッサ2は、DRAM4内の各データDとクエリQとの内積値に基づき、DRAM4内のデータDのうちのクエリQに最も近いデータDを特定し、特定したデータDを探索結果として出力する(S206)。例えば、距離の指標として内積が使用されるケースでは、プロセッサ2は、最も大きい内積値が得られたデータDを検索結果として出力する。そして、近傍探索の一連の処理が終了する。
【0058】
このように、第1の実施形態によれば、プロセッサ2は、クエリQの入力を受け付けて、ニューラルネットワークモデル43に基づいて1つのクラスタを選択する。プロセッサ2は、選択したクラスタを構成する各データDとクエリQとの距離の指標を演算する。プロセッサ2は、選択したクラスタを構成する各データDとクエリQとの距離の指標に基づき、選択したクラスタを構成するデータDのうちのクエリQに最も近いデータDを、SSD3内のデータDの群のうちのクエリQに最も近いデータDとして特定する。
【0059】
よって、クエリ応答の速度と探索の精度とを共に高くすることができる。
【0060】
また、第1の実施形態では、プロセッサ2は、ニューラルネットワークモデル43に基づいて選択したクラスタをSSD3からDRAM4に転送し、DRAM4内の各データDとクエリQとの距離の指標を演算する。
【0061】
よって、クエリ応答の速度を向上させることができる。
【0062】
また、第1の実施形態では、ニューラルネットワークモデル43は、クエリQが入力された場合にSSD3内のデータDの群のうちのクエリQに最も近いデータDを含む可能性に対応したスコアをクラスタ毎に出力するように構成されている。プロセッサ2は、ニューラルネットワークモデル43にクエリQを入力し、ニューラルネットワークモデル43から出力されるクラスタ毎のスコアに基づき、クエリQに最も近いデータDを含む可能性が最も高いクラスタを選択する。
【0063】
よって、クエリ応答の精度を向上させることができる。
【0064】
(第1の実施形態の変形例)
上述した第1の実施形態では、ひとつのクラスタに属する全てのデータDが一括にSSD3からDRAM4に転送される。各クラスタに属する全てのデータDの転送に要する時間をできるだけ抑制するために、各クラスタに属するデータDのセットは、SSD3がプロセッサ2に提供するアドレス空間における連続するエリアに配置されてもよい。
【0065】
図9は、第1の実施形態の変形例にかかるSSD3が記憶するデータDの配置例を示す模式的な図である。本図に示す例によれば、クラスタ#jは、データDi~Di+3のセットによって構成され、データDi~Di+3のセットはSSD3のアドレス空間における連続したエリアに配置される。クラスタ#j+1は、データDi+4~Di+7のセットによって構成され、データDi+4~Di+7のセットはSSD3のアドレス空間における連続したエリアに配置される。クラスタ#j+2は、データDi+8~Di+11のセットによって構成され、データDi+8~Di+11のセットはSSD3のアドレス空間における連続したエリアに配置される。
【0066】
このような構成により、プロセッサ2は、アドレス空間における位置とサイズとを含む1つのリードコマンドをSSD3に発行するだけで、所望のクラスタを構成する全てのデータDを取得することができる。よって、所望のクラスタに属する全てのデータDのSSD3からDRAM4への転送に要する時間を抑制することが可能となる。
【0067】
(第2の実施形態)
前述したように、SSDなどのストレージメモリに格納されたデータの群を探索範囲としたグラフベースの近傍探索では、ホップ毎にストレージメモリから揮発性メモリへの転送が発生する。よって、ホップ数が多いほど、探索に要する時間が長い。
【0068】
第2の実施形態では、グラフベースの近傍探索において、必要なホップ数を出来るだけ少なくすることで、探索に要する時間を抑制する。第2の実施形態にかかる情報処理装置を情報処理装置1aと表記する。また、以降の説明では、第1の実施形態と異なる事項について説明し、第1の実施形態と同じ事項については説明を省略するかまたは簡略的に説明する。
【0069】
図10は、第2の実施形態にかかる情報処理装置1aが備えるSSD3が記憶する情報の一例を示す模式的な図である。
【0070】
第1の実施形態と同様、SSD3には、データDの群が格納される。また、SSD3には、データD間の接続を定義するグラフ情報31が格納される。グラフ情報31は、設計者または所定のコンピュータプログラムによって予め生成される。
【0071】
図11は、第2の実施形態のグラフ情報31によって定義されるグラフの一例を示す模式的な図である。SSD3にはデータDの群としてデータD0~D20が格納されていることとする。
【0072】
第2の実施形態にかかるグラフの一例として、データD0~D20のそれぞれをノードとしたグラフ32が構成されている。データD0~D20のそれぞれは、データD0~D20の全てに対して、1以上のエッジおよび0以上のデータDを介して接続されている。エッジは、ホップ可能な経路である。
【0073】
グラフ32は、黒丸で示すノードを複数含む。黒丸は、エントリポイント候補を示す。エントリポイント候補とは、エントリポイント、つまり探索の起点となり得るノードをいう。ここでは一例として、データD3、データD8、データD11、およびデータD18が、エントリポイント候補とされている。例えばデータDの群のうちからランダムに選択された複数のデータDがエントリポイント候補として設定される。なお、エントリポイント候補の設定方法はこれに限定されない。
【0074】
第2の実施形態では、プロセッサ2は、複数のエントリポイント候補のうちから、探索に要するホップ数ができるだけ少なくなるようにエントリポイントを選択する。なお、エントリポイント候補は、第2の実施形態にかかる第1オブジェクトの一例である。
【0075】
図12は、第2の実施形態のエントリポイントの選択方法の一例を説明するための模式的な図である。
【0076】
図12の例では、データD16がクエリQに最も近いデータに該当する。よって、データD18がエントリポイントとして選択された場合、最少回数のホップ、具体的にはデータD18からデータD15およびデータD15からデータD16の2回のホップ、でデータD16を特定することが可能である。プロセッサ2は、このような最少回数のホップでクエリQに最も近いデータの特定が可能なエントリポイント候補を推定する。
【0077】
ここで、第2の実施形態と比較される技術として、第3の比較例を説明する。第3の比較例によれば、各エントリポイント候補とクエリQとの距離に基づいてエントリポイントとして使用するエントリポイント候補が選択される。
【0078】
図12の例では、クエリQに最も近いエントリポイント候補は、データD18ではなくデータD11である。よって、第3の比較例によれば、データD11がエントリポイントとして選択される。データD11がエントリポイントとして選択された場合、データD16をクエリQに最も近いデータとして特定するためには、データD11からデータD12、データD12からデータD13、データD13からデータD14、データD14からデータD15、およびデータD15からデータD16の、5回のホップが必要である。つまり、第3の比較例によれば、クエリQに最も近いデータの特定に要するホップの回数が多くなるケースがある。
【0079】
第2の実施形態によれば、プロセッサ2は、最少回数のホップでクエリQに最も近いデータD16の特定が可能なエントリポイント候補を特定するために、トレーニング済みのニューラルネットワークモデル(後述するニューラルネットワークモデル43a)を使用する。
【0080】
図13は、第2の実施形態にかかるDRAM4が記憶する情報の一例を示す模式的な図である。
【0081】
DRAM4には、探索プログラム41aおよびモデル情報42aがロードされる。
【0082】
プロセッサ2は、DRAM4にロードされた探索プログラム41aに従ってクエリに最も近いデータの探索を行う。
【0083】
モデル情報42aは、ニューラルネットワークモデル43aの構成を記録した情報である。プロセッサ2は、探索の際に、DRAM4にロードされたモデル情報42aを用いることで、ニューラルネットワークモデル43aとしての演算を行い、これによって最少回数のホップでクエリQに最も近いデータD16の特定が可能なエントリポイント候補の推定を行う。
【0084】
図14は、第2の実施形態にかかるニューラルネットワークモデル43aの構成の一例を示す模式的な図である。なお、本図の例では、データDおよびクエリQは4次元のデータであり、4つの要素を有していることとする。また、データD3、データD8、データD11、およびデータD18が、エントリポイント候補とされていることとする。
【0085】
図14に示す例では、ニューラルネットワークモデル43aは、一例として、入力層と、2つの隠れ層と、出力層と、を備える。
【0086】
入力層は、クエリQを構成する要素の数に対応した数のノード、つまり4個のノード、を含む。入力層の4個のノードのそれぞれは、クエリQの4個の要素q0~q3のうちのひとつと一対一に関連付けられており、関連付けられた要素の入力を受け付ける。
【0087】
出力層は、エントリポイント候補に対応した数のノード、つまり4個のノード、を含む。出力層が備える4個のノードのそれぞれは、4つのエントリポイント候補、つまりデータD3、データD8、データD11、およびデータD18、のうちのひとつと一対一に関連付けられており、関連付けられたエントリポイント候補にかかるスコアを出力する。
【0088】
第2の実施形態では、スコアは、各ノードに対応するエントリポイント候補が最少回数のホップでクエリQに最も近いデータD16の特定が可能なエントリポイントに該当する確率に対応する。ここでは一例として、スコアが高いほど、そのスコアを出力したノードに対応するエントリポイント候補が最少回数のホップでクエリQに最も近いデータD16の特定が可能なエントリポイントに該当する確率が高いこととする。なお、スコアと当該確率との関係はこれに限定されない。
【0089】
プロセッサ2は、入力層にクエリQを入力する。そして、プロセッサ2は、隠れ層および出力層の各ノードにおいて、バイアスおよび前の層のノードからの各入力値に対して重みを乗じ、重みが乗じられた後の各値の総和に対して活性化関数を適用し、活性化関数の適用によって得られた値を出力する。そして、プロセッサ2は、出力層からスコアをクラスタ毎に取得し、最も大きいスコアが出力されたノードに対応するエントリポイント候補を、最少回数のホップでクエリQに最も近いデータD16の特定が可能なエントリポイントとして特定する。
【0090】
以降、エントリポイント候補としてのデータD3、データD8、データD11、およびデータD18を、エントリポイント候補D3、エントリポイント候補D8、エントリポイント候補D11、およびエントリポイント候補D18と表記する。また、エントリポイント候補DX(Xは0以上の整数、ただし図14の例ではXは3、8、11、または18)に対応付けられたノードから出力されたスコアを、エントリポイント候補DXのスコア、と表記する。
【0091】
なお、図14に示すニューラルネットワークモデル43aは、あくまでも一例である。ニューラルネットワークモデル43aが備える層の数、隠れ層のノードの数、ノード間の接続関係、各ノードでの演算方法、などは設計者によって種々に変形され得る。
【0092】
図15は、第2の実施形態にかかるニューラルネットワークモデル43aのトレーニング方法の一例を説明するフローチャートである。なお、本図に示す一連の処理は、情報処理装置1aにおいて実行されてもよいし、他の任意のコンピュータにおいて実行されてもよい。なお、本図に示す一連の処理は、SSD3に格納されているデータDの群と同じ群にアクセス可能なコンピュータにおいて実行される。ここでは一例として、情報処理装置1aにおけるプロセッサ2が本図に示す一連の処理を実行することとして説明する。
【0093】
まず、プロセッサ2は、第1の実施形態と同様の方法で、多数のサンプルクエリを生成する(S301)。
【0094】
続いて、プロセッサ2は、サンプルクエリに最も近いデータDまでのホップ数が最も少ないエントリポイント候補をサンプルクエリ毎に特定する(S302)。プロセッサ2は、サンプルクエリに最も近いデータDまでのホップ数が最も少ないエントリポイント候補を正確に求めるために、時間をかけることが許容される。
【0095】
S302に続いて、プロセッサ2は、多数得られた、サンプルクエリと、サンプルクエリに最も近いデータDまでのホップ数が最も少ないエントリポイント候補と、の対を教師データとして用いてニューラルネットワークモデル43aのトレーニングを実行する(S303)。これによって、ノード毎の重みが確定し、モデル情報42aが生成される。そして、トレーニングが完了する。
【0096】
図16は、第2の実施形態にかかる近傍探索の方法の一例を説明するフローチャートである。プロセッサ2が探索プログラム41aに従って本図に示す一連の処理を実行する。
【0097】
情報処理装置1aにクエリQが入力されると、プロセッサ2は、クエリQを受け付けて(S401)、クエリQをニューラルネットワークモデル43aに入力する(S402)。
【0098】
プロセッサ2は、ニューラルネットワークモデル43aから出力されたエントリポイント候補毎のスコアに基づき、スコアが最も高いエントリポイント候補をエントリポイントとして選択する(S403)。そして、プロセッサ2は、選択したエントリポイントを起点としてSSD3内のデータDの群を探索範囲としてグラフベースの近傍探索を実行する。これによって、プロセッサ2は、SSD3内のデータDの群のうちのクエリQに最も近いデータDを探索する(S404)。
【0099】
具体的には、プロセッサ2は、選択したエントリポイントを最初の候補データとして選択し、候補データとクエリQとの距離の指標を算出する。そして、プロセッサ2は、選択したエントリポイントを起点としてグラフに沿ってホップを行って、ホップによって特定した新たな候補データとクエリQとの距離の指標を算出する。そして、プロセッサ2は、ホップ前後で候補データとクエリQとの距離の指標を比較し、ホップによってクエリQに近づいたか否かを判定する。プロセッサ2は、ホップと、候補データとクエリQとの距離の指標の算出と、ホップ前後の距離の指標の比較と、を繰り返すことで、SSD3内のデータDの群のうちのクエリQに最も近いデータDを探索する。
【0100】
プロセッサ2は、探索によって得られたデータDを探索結果として出力する(S405)。そして、近傍探索の一連の処理が終了する。
【0101】
このように、第2の実施形態によれば、プロセッサ2は、クエリQの入力を受け付けて、ニューラルネットワークモデル43aに基づいて1つのエントリポイントを選択する。プロセッサ2は、エントリポイントを起点としてSSD3内のデータDの群を探索範囲としてグラフベースの近傍探索を実行する。プロセッサ2は、近傍探索により、SSD3内のデータDの群のうちのクエリQに最も近いデータDとして特定する。
【0102】
よって、クエリ応答の速度と探索の精度とを共に高くすることができる。
【0103】
また、第2の実施形態によれば、ニューラルネットワークモデル43aは、クエリQが入力された場合にSSD3内のデータDの群のうちのクエリQに最も近いデータDまでのホップ数が最小である可能性に対応したスコアをエントリポイント候補毎に出力するように構成されている。プロセッサ2は、ニューラルネットワークモデル43aにクエリQを入力し、ニューラルネットワークモデル43aから出力されるエントリポイント候補毎のスコアに基づき、クエリQに最も近いデータDまでのホップ数が最小である可能性が最も高いエントリポイント候補をエントリポイントとして選択する。
【0104】
よって、クエリ応答の速度を向上させることができる。
【0105】
第1の実施形態、第1の実施形態の変形例、および第2の実施形態として説明したように、実施形態によれば、近傍探索の方法は、クエリQの入力を受け付けることと、複数の第1オブジェクトのうちの1つをクエリQとニューラルネットワークモデル43,43aに基づいて選択することと、を含む。複数の第1オブジェクトのそれぞれはSSD3に格納されたデータDの群のうちの1つまたは複数のデータDに関連付けられている。近傍探索の方法は、さらに、選択した1つの第1オブジェクトが関連付けられた1つまたは複数のデータDからデータDとクエリとの距離の指標を演算することを含む。方法は、さらに、指標に基づいてデータDの群のうちのクエリQに最も近いデータDを特定することを含む。
【0106】
よって、クエリ応答の速度と探索の精度とを共に高くすることができる。
【0107】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【0108】
1,1a 情報処理装置、2 プロセッサ、3 SSD、4 DRAM、5 バス、31 グラフ情報、32 グラフ、41,41a 探索プログラム、42,42a モデル情報、43,43a ニューラルネットワークモデル。
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15
図16