(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-09-19
(45)【発行日】2024-09-30
(54)【発明の名称】検索データベースを構築するための方法、装置、デバイス及び記憶媒体
(51)【国際特許分類】
G06F 16/906 20190101AFI20240920BHJP
【FI】
G06F16/906
(21)【出願番号】P 2022567637
(86)(22)【出願日】2022-03-16
(86)【国際出願番号】 CN2022081154
(87)【国際公開番号】W WO2023019933
(87)【国際公開日】2023-02-23
【審査請求日】2022-12-26
(31)【優先権主張番号】202110937110.0
(32)【優先日】2021-08-16
(33)【優先権主張国・地域又は機関】CN
(73)【特許権者】
【識別番号】512015127
【氏名又は名称】バイドゥ オンライン ネットワーク テクノロジー(ペキン) カンパニー リミテッド
(74)【代理人】
【識別番号】100099623
【氏名又は名称】奥山 尚一
(74)【代理人】
【識別番号】100125380
【氏名又は名称】中村 綾子
(74)【代理人】
【識別番号】100142996
【氏名又は名称】森本 聡二
(74)【代理人】
【識別番号】100166268
【氏名又は名称】田中 祐
(74)【代理人】
【氏名又は名称】池本 理絵
(72)【発明者】
【氏名】イン,ジエ
(72)【発明者】
【氏名】ファン,ペン
【審査官】成瀬 博之
(56)【参考文献】
【文献】米国特許出願公開第2018/0101570(US,A1)
【文献】特開2018-055618(JP,A)
【文献】特開2011-257970(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 16/00-16/958
(57)【特許請求の範囲】
【請求項1】
データセットを取得し、前記データセットを第1のデータセットと第2のデータセットとに分割するステップであって、前記第1のデータセット内のデータ量は、前記第2のデータセット内のデータ量よりも小さいステップと、
前記第1のデータセット内のデータをクラスタリングして、少なくとも1つの一次クラスタリングセンターを得るステップと、
前記第1のデータセット内のデータと当該データに最も近い一次クラスタリングセンターとの残差を計算して、前記第1のデータセット内の
各データ
に対応する残差ベクトルからなる残差ベクトル空間をクラスタリングして、少なくとも1つの対応する二次クラスタリングセンターを得るステップと、
前記第1のデータセット内のデータと前記一次クラスタリングセンター及び前記二次クラスタリングセンターとの間の残差に基づいて、前記第1のデータセットに対応するコードブックを得るステップと、
前記第1のデータセットに対応するコードブック
におけるクラスタリングセンターのIDに基づいて、前記第2のデータセット
内の特徴ベクトルを識別して前記
第2のデータセットに対応するコードブックを得るステップと、
を含む、検索データベースを構築するための方法。
【請求項2】
前記第1のデータセット内のデータと前記一次クラスタリングセンター及び前記二次クラスタリングセンターとの間の残差に基づいて前記第1のデータセットに対応するコードブックを得るステップは、
前記第1のデータセット内での各第1のデータについて、前記第1のデータに最も近い一次クラスタリングセンターと二次クラスタリングセンターとの間の残差に基づいて、前記第1のデータセットに対応する第2の残差ベクトル空間を得るステップと、
前記第2の残差ベクトル空間を量子化して、前記第1のデータセットに対応するコードブックを得るステップと、
を含む、請求項
1に記載の方法。
【請求項3】
前記第2の残差ベクトル空間を量子化して前記第1のデータセットに対応するコードブックを得るステップは、
前記第2の残差ベクトル空間を第1のプリセット数の部分空間に分割するステップと、
前記第1のプリセット数の部分空間内での各部分空間をそれぞれクラスタリングして、第2のプリセット数の空間クラスタリングセンターを得るステップと、
前記空間クラスタリングセンターの識別番号IDをそれぞれマーキングして、各部分空間のコードブックを得るステップと、
前記各部分空間のコードブックを直積して、前記第1のデータセットに対応するコードブックを得るステップと、
を含む、請求項
2に記載の方法。
【請求項4】
前記第1のデータセットに対応するコードブック
におけるクラスタリングセンターのIDに基づいて前記第2のデータセット
内の特徴ベクトルを識別して前記
第2のデータセットに対応するコードブックを得るステップは、
前記第2のデータセット内での各第2のデータについて、前記第2のデータに最も近い一次クラスタリングセンターと二次クラスタリングセンターとの間の残差に基づいて、各第2のデータに対応する残差ベクトルを得るステップと、
前記残差ベクトルを第1のプリセット数の部分空間に分割するステップと、
前記第1のプリセット数の部分空間内での各部分空間について、前記部分空間内の残差ベクトルと前記部分空間内の空間クラスタリングセンターとの間の距離を計算するステップと、
前記部分空間内の残差ベクトルに最も近い空間クラスタリングセンターのIDで前記第2のデータセット内での各第2のデータをマーキングして、前記
第2のデータセットに対応するコードブックを得るステップと、
を含む、請求項
3に記載の方法。
【請求項5】
前記
第2のデータセット内での各第2のデータについて、前記第2のデータに最も近い一次クラスタリングセンターと二次クラスタリングセンターとの間の残差に基づいて、各第2のデータに対応する残差ベクトルを得る前に、前記方法は、
前記第2のデータと前記一次クラスタリングセンター及び前記二次クラスタリングセンターとの間の距離を計算するステップと、
計算結果に基づいて、前記第2のデータに最も近い一次クラスタリングセンターと二次クラスタリングセンターを決定するステップと、
をさらに含む、請求項
4に記載の方法。
【請求項6】
前記第2のデータと前記一次クラスタリングセンター及び前記二次クラスタリングセンターとの間の距離を計算するステップは、
前記第2のデータと前記一次クラスタリングセンターとの間の第1の距離を計算するステップと、
前記一次クラスタリングセンターと前記二次クラスタリングセンターとの間の第2の距離と前記第1の距離との間が三角不等式を満たしていないことに応答して、剪定操作を実行するステップと、
を含
み、前記三角不等式は、次の形式で表し、
d(Ox,Oy)≦d(Ox,Oz)+d(Oz,Oy)
ここで、Ox、Oy、Ozは、前記第2のデータ、前記一次クラスタリングセンター及び前記二次クラスタリングセンターを表し、dは、両者間の距離を表す、請求項
5に記載の方法。
【請求項7】
前記第2のデータと前記一次クラスタリングセンター及び前記二次クラスタリングセンターとの間の距離を計算するステップは、
前記一次クラスタリングセンターと前記二次クラスタリングセンターとの間の第2の距離と前記第1の距離との間が三角不等式を満たしていることに応答して、前記第2のデータと前記二次クラスタリングセンターとの間の距離を計算するステップ
をさらに含む、請求項
6に記載の方法。
【請求項8】
被検索データを取得するステップと、
前記被検索データと検索データベース内の一次クラスタリングセンターとの間の距離を計算して、プリセット条件を満たしている第3のプリセット数の一次クラスタリングセンターを得るステップであって、前記検索データベースは、請求項1~
7のいずれか一項に記載の方法で得られるステップと、
前記被検索データと前記第3のプリセット数の一次クラスタリングセンターにおける各一次クラスタリングセンターの下の二次クラスタリングセンターとの間の距離を計算して、プリセット条件を満たしている第4のプリセット数の二次クラスタリングセンターを得るステップと、
前記検索データベース内の前記データセットに対応するコードブックに基づいて、前記第4のプリセット数の二次クラスタリングセンターにおける各二次クラスタリングセンターに対応するサンプルデータを順次取得するステップと、
前記被検索データと前記サンプルデータとの間の距離を計算し、計算結果に基づいて、第5のプリセット数のサンプルデータを返すステップと、
を含む、検索方法。
【請求項9】
データセットを取得し、前記データセットを第1のデータセットと第2のデータセットとに分割するように構成される第1の取得モジュールであって、前記第1のデータセット内のデータ量は、前記第2のデータセット内のデータ量よりも小さい第1の取得モジュールと、
前記第1のデータセット内のデータをクラスタリングして、少なくとも1つの一次クラスタリングセンターを得るように構成される第1のクラスタリングモジュールと、
前記第1のデータセット内のデータと当該データに最も近い一次クラスタリングセンターとの残差を計算して、前記第1のデータセット内の
各データ
に対応する残差ベクトルからなる残差ベクトル空間をクラスタリングして、少なくとも1つの対応する二次クラスタリングセンターを得るように構成される第2のクラスタリングモジュールと、
前記第1のデータセット内のデータと前記一次クラスタリングセンター及び前記二次クラスタリングセンターとの間の残差に基づいて、前記第1のデータセットに対応するコードブックを得るように構成される取得モジュールと、
前記第1のデータセットに対応するコードブック
におけるクラスタリングセンターのIDに基づいて、前記第2のデータセット
内の特徴ベクトルを識別して前記
第2のデータセットに対応するコードブックを得るように構成される訓練モジュールと、
を備える、検索データベースを構築するための装置。
【請求項10】
前記取得モジュールは、
前記第1のデータセット内での各第1のデータについて、前記第1のデータに最も近い一次クラスタリングセンターと二次クラスタリングセンターとの間の残差に基づいて、前記第1のデータセットに対応する第2の残差ベクトル空間を得るように構成される第1の取得サブモジュールと、
前記第2の残差ベクトル空間を量子化して、前記第1のデータセットに対応するコードブックを得るように構成される量子化サブモジュールと、
を備える、請求項
9に記載の装置。
【請求項11】
前記量子化サブモジュールは、
前記第2の残差ベクトル空間を第1のプリセット数の部分空間に分割するように構成される分割ユニットと、
前記第1のプリセット数の部分空間内での各部分空間をそれぞれクラスタリングして、第2のプリセット数の空間クラスタリングセンターを得るように構成されるクラスタリングユニットと、
前記空間クラスタリングセンターの識別番号IDをそれぞれマーキングして、各部分空間のコードブックを得るように構成されるマーキングユニットと、
前記各部分空間のコードブックを直積して、前記第1のデータセットに対応するコードブックを得るように構成される直積ユニットと、
を備える、請求項1
0に記載の装置。
【請求項12】
前記訓練モジュールは、
前記第2のデータセット内での各第2のデータについて、前記第2のデータに最も近い一次クラスタリングセンターと二次クラスタリングセンターとの間の残差に基づいて、各第2のデータに対応する残差ベクトルを得るように構成される第2の取得サブモジュールと、
前記残差ベクトルを第1のプリセット数の部分空間に分割するように構成される分割サブモジュールと、
前記第1のプリセット数の部分空間内での各部分空間について、前記部分空間内の残差ベクトルと前記部分空間内の空間クラスタリングセンターとの間の距離を計算するように構成される第2の計算サブモジュールと、
前記部分空間内の残差ベクトルに最も近い空間クラスタリングセンターのIDで前記第2のデータセット内での各第2のデータをマーキングして、前記データセットに対応するコードブックを得るように構成される第3の取得サブモジュールと、
を備える、請求項1
1に記載の装置。
【請求項13】
前記訓練モジュールは、
前記第2のデータと前記一次クラスタリングセンター及び前記二次クラスタリングセンターとの間の距離を計算するように構成される第3の計算サブモジュールと、
前記第3の計算サブモジュールの計算結果に基づいて前記第2のデータに最も近い一次クラスタリングセンターと二次クラスタリングセンターを決定するように構成される決定サブモジュールと、
をさらに備える、請求項1
2に記載の装置。
【請求項14】
前記第3の計算サブモジュールは、
前記第2のデータと前記一次クラスタリングセンターとの間の第1の距離を計算するように構成される第1の計算ユニットと、
前記一次クラスタリングセンターと前記二次クラスタリングセンターとの間の第2の距離と前記第1の距離との間が三角不等式を満たしていないことに応答して、剪定操作を実行するように構成される剪定ユニットと、
を備え
、前記三角不等式は、次の形式で表し、
d(Ox,Oy)≦d(Ox,Oz)+d(Oz,Oy)
ここで、Ox、Oy、Ozは、前記第2のデータ、前記一次クラスタリングセンター及び前記二次クラスタリングセンターを表し、dは、両者間の距離を表す、請求項1
3に記載の装置。
【請求項15】
前記第3の計算サブモジュールは、
前記一次クラスタリングセンターと前記二次クラスタリングセンターとの間の第2の距離と前記第1の距離との間が三角不等式を満たしていることに応答して、前記第2のデータと前記二次クラスタリングセンターとの間の距離を計算するように構成される第2の計算ユニットをさらに備える、請求項1
4に記載の装置。
【請求項16】
被検索データを取得するように構成される第2の取得モジュールと、
前記被検索データと検索データベース内の一次クラスタリングセンターとの間の距離を計算して、プリセット条件を満たしている第3のプリセット数の一次クラスタリングセンターを得るように構成される第1の計算モジュールであって、前記検索データベースは、請求項1~
7のいずれか一項に記載の方法で得られる第1の計算モジュールと、
前記被検索データと前記第3のプリセット数の一次クラスタリングセンターにおける各一次クラスタリングセンターの下の二次クラスタリングセンターとの間の距離を計算して、プリセット条件を満たしている第4のプリセット数の二次クラスタリングセンターを得るように構成される第2の計算モジュールと、
前記検索データベース内のデータセットに対応するコードブックに基づいて、前記第4のプリセット数の二次クラスタリングセンターにおける各二次クラスタリングセンターに対応するサンプルデータを順次取得するように構成される第3の取得モジュールと、
前記被検索データと前記サンプルデータとの間の距離を計算し、計算結果に基づいて、第5のプリセット数のサンプルデータを返すように構成される第3の計算モジュールと、
を備える、検索装置。
【請求項17】
少なくとも1つのプロセッサと、前記少なくとも1つのプロセッサに通信可能に接続されるメモリと、を備える電子デバイスであって、
前記メモリには、前記少なくとも1つのプロセッサによって実行可能な指令が記憶され、前記指令は、前記少なくとも1つのプロセッサが請求項1~
8のいずれか一項に記載の方法を実行できるように、前記少なくとも1つのプロセッサによって実行される電子デバイス。
【請求項18】
コンピュータに請求項1~
8のいずれか一項に記載の方法を実行させるためのコンピュータ指令が記憶された非一時的なコンピュータ可読記憶媒体。
【請求項19】
プロセッサによって実行されると、請求項1~
8のいずれか一項に記載の方法を実現するコンピュータプログラ
ム。
【発明の詳細な説明】
【技術分野】
【0001】
<関連出願の相互参照>
本特許出願は、2021年08月16日に提出された、出願番号が202110937110.0であり、発明の名称が「検索データベースを構築するための方法、装置、デバイス及び記憶媒体」である中国特許出願に基づく優先権を主張し、当該出願の全文を引用により本出願に組み込む。
【0002】
本開示は、人工知能の技術分野に関し、具体的には、知能推薦及び深層学習の技術分野に関し、特に、検索データベースを構築するための方法、装置、デバイス及び記憶媒体に関する。
【背景技術】
【0003】
CNN(Convolutional Neural Network、畳み込みニューラル ネットワーク)の幅広い適用に伴い、CNN特徴に適用される基本的な検索技術ANN(Approximate Nearest Neighbor、近似最近傍検索)も急速に開発されている。大規模なデータセットの場合、現在の業界での主流の検索アルゴリズムは、HNSW(Hierarchical Navigable Small World)、IVF(Inverted File System)などがある。ただし、HNSWアルゴリズムは、計算量が大きいため、多くのメモリを必要とし、IVFアルゴリズムは、クラスタリングセンターの数が多く、反復回数が多いため、総合計算量が指数関数的成長に近い。
【発明の概要】
【課題を解決するための手段】
【0004】
本開示は、検索データベースを構築するための方法、装置、デバイス及び記憶媒体を提供する。
【0005】
本開示の第1の態様によれば、検索データベースを構築するための方法を提供し、当該方法は、データセットを取得し、データセットを第1のデータセットと第2のデータセットに分割するステップであって、第1のデータセット内のデータ量は、第2のデータセット内のデータ量よりも小さいステップと、第1のデータセット内のデータをクラスタリングして、少なくとも1つの一次クラスタリングセンターを得るステップと、第1のデータセット内のデータと当該データに最も近い一次クラスタリングセンターとの残差を計算して、第1のデータセット内の各データに対応する残差ベクトルからなる残差ベクトル空間をクラスタリングして、少なくとも1つの対応する二次クラスタリングセンターを得るステップと、第1のデータセット内のデータと一次クラスタリングセンター及び二次クラスタリングセンターとの間の残差に基づいて、第1のデータセットに対応するコードブックを得るステップと、第1のデータセットに対応するコードブックにおけるクラスタリングセンターのIDに基づいて、第2のデータセット内の特徴ベクトルを識別して、第2のデータセットに対応するコードブックを得るステップと、を含む。
【0006】
本開示の第2の態様によれば、検索方法を提供し、当該検索方法は、被検索データを取得するステップと、被検索データと検索データベース内の一次クラスタリングセンターとの間の距離を計算し、プリセット条件を満たしている第3のプリセット数の一次クラスタリングセンターを得るステップであって、検索データベースは、第1の態様のいずれかの実現方法で説明された方法により得られるステップと、被検索データと第3のプリセット数の一次クラスタリングセンターにおける各一次クラスタリングセンターの下の二次クラスタリングセンターとの間の距離を計算して、プリセット条件を満たしている第4のプリセット数の二次クラスタリングセンターを得るステップと、検索データベース内のデータセットに対応するコードブックに基づいて、第4のプリセット数の二次クラスタリングセンターにおける各二次クラスタリングセンターに対応するサンプルデータを順次取得するステップと、被検索データとサンプルデータとの間の距離を計算し、計算結果に基づいて、第5のプリセット数のサンプルデータを返すステップと、を含む。
【0007】
本開示の第3の態様によれば、検索データベースを構築するための装置を提供し、当該装置は、データセットを取得し、データセットを第1のデータセットと第2のデータセットに分割するように構成される第1の取得モジュールであって、第1のデータセット内のデータ量は、第2のデータセット内のデータ量よりも小さい第1の取得モジュールと、第1のデータセット内のデータをクラスタリングして、少なくとも1つの一次クラスタリングセンターを得るように構成される第1のクラスタリングモジュールと、第1のデータセット内のデータと当該データに最も近い一次クラスタリングセンターとの残差を計算して、第1のデータセット内の各データに対応する残差ベクトルからなる残差ベクトル空間をクラスタリングして、少なくとも1つの対応する二次クラスタリングセンターを得るように構成される第2のクラスタリングモジュールと、第1のデータセット内のデータと一次クラスタリングセンター及び二次クラスタリングセンターとの間の残差に基づいて、第1のデータセットに対応するコードブックを得るように構成される取得モジュールと、第1のデータセットに対応するコードブックにおけるクラスタリングセンターのIDに基づいて、第2のデータセット内の特徴ベクトルを識別して、第2のデータセットに対応するコードブックを得るように構成される訓練モジュールと、を備える。
【0008】
本開示の第4の態様によれば、検索装置を提供し、当該検索装置は、被検索データを取得するように構成される第2の取得モジュールと、被検索データと検索データベース内の一次クラスタリングセンターとの間の距離を計算して、プリセット条件を満たしている第3のプリセット数の一次クラスタリングセンターを得るように構成される第1の計算モジュールであって、検索データベースは、第1の態様のいずれかの実現方法で説明された方法により得られる第1の計算モジュールと、被検索データと第3のプリセット数の一次クラスタリングセンターにおける各一次クラスタリングセンターの下の二次クラスタリングセンターとの間の距離を計算して、プリセット条件を満たしている第4のプリセット数の二次クラスタリングセンターを得るように構成される第2の計算モジュールと、検索データベース内のデータセットに対応するコードブックに基づいて、第4のプリセット数の二次クラスタリングセンターにおける各二次クラスタリングセンターに対応するサンプルデータを順次取得するように構成される第3の取得モジュールと、被検索データとサンプルデータとの間の距離を計算し、計算結果に基づいて、第5のプリセット数のサンプルデータを返すように構成される第3の計算モジュールと、を備える。
【0009】
本開示の第5の態様によれば、電子デバイスを提供し、当該電子デバイスは、少なくとも1つのプロセッサと、少なくとも1つのプロセッサに通信可能に接続されるメモリと、を備え、メモリには、少なくとも1つのプロセッサによって実行可能な指令が記憶され、前記指令は、少なくとも1つのプロセッサが第1の態様又は第2の態様のいずれかの実現方法で説明された方法を実行できるように、少なくとも1つのプロセッサによって実行される。
【0010】
本開示の第6の態様によれば、コンピュータに第1の態様又は第2の態様のいずれかの実現方法で説明された方法を実行させるために使用されるコンピュータ指令が記憶された非一時的なコンピュータ可読記憶媒体を提供する。
【0011】
本開示の第7の態様によれば、プロセッサによって実行されると、第1の態様又は第2の態様のいずれかの実現方法で説明された方法を実現するコンピュータプログラムを提供する。
【0012】
本明細書で説明された内容は、本開示の実施例の主要又は重要な特徴を特定することを意図しておらず、本開示の範囲を限定するためにも使用されないことを理解すべきである。本開示の他の特徴は、以下の説明により容易に理解され得る。
【図面の簡単な説明】
【0013】
図面は、本スキームをよりよく理解するために使用され、本開示を限定するものではない。
【0014】
【
図1】本開示が適用され得る例示的なシステムアーキテクチャ図である。
【
図2】本開示による検索データベースを構築するための方法の一実施例のフローチャートである。
【
図3】本開示による検索データベースを構築するための方法の別の実施例のフローチャートである。
【
図4】
図3に示される検索データベースを構築するための方法の訓練ステップの分解フローチャートである。
【
図5】本開示による検索方法の一実施例のフローチャートである。
【
図6】本開示による検索データベースを構築するための装置の一実施例の構造概略図である。
【
図7】本開示による検索装置の一実施例の構造概略図である。
【
図8】本開示の実施例に係る検索データベースを構築するための方法を実現するために使用される電子デバイスのブロック図である。
【発明を実施するための形態】
【0015】
以下、本開示の例示的な実施例について、図面を参照して説明し、それには、理解を容易にするために本開示の実施例の様々な詳細が含まれており、それらが単なる例示的であると見なされるべきである。したがって、当業者は、本開示の範囲及び精神から逸脱することなく、本明細書に記載された実施例の様々な変更及び修正を行うことができることを認識すべきである。同様に、明確かつ簡潔にするために、以下の説明では、周知の機能及び構造の説明を省略する。
【0016】
なお、矛盾しない場合は、本開示の実施例及び実施例の特徴は、互いに組み合わせることができる。以下、図面を参照し、実施例と併せて本開示を詳細に説明する。
【0017】
図1は、本開示の検索データベースを構築するための方法又は検索データベースを構築するための装置を適用できる実施例の例示的なシステムアーキテクチャ100を示す。
【0018】
図1に示すように、システムアーキテクチャ100は、端末装置101、102、103、ネットワーク104及びサーバ105を含み得る。ネットワーク104は、端末装置101、102、103とサーバ105との間の通信リンクの媒体を提供するために使用される。ネットワーク104は、有線、無線通信リンク又は光ファイバケーブルなどの様々な接続タイプを含み得る。
【0019】
ユーザは、端末装置101、102、103を使用して、ネットワーク104を介してサーバ105と対話して情報などを受信又は送信することができる。端末装置101、102、103には、様々なクライアントアプリケーションがインストールされてもよい。
【0020】
端末装置101、102、103は、ハードウェアであってもよいし、ソフトウェアであってもよい。端末装置101、102、103がハードウェアである場合、それらは、スマートフォン、タブレットコンピュータ、ラップトップコンピュータ及びデスクトップコンピュータなどを含むが、これらに限定されない様々な電子デバイスであってもよい。端末装置101、102、103がソフトウェアである場合、それらは、上記電子デバイスにインストールされてもよい。それは、複数のソフトウェア又はソフトウェアモジュールとして実現されてもよいし、単一のソフトウェア又はソフトウェアモジュールとして実現されてもよい。ここでは特に制限はない。
【0021】
サーバ105は、様々なサービスを提供することができる。例えば、サーバ105は、端末装置101、102、103から取得したデータセットを分析及び処理し、処理結果(例えば、データセットに対応するコードブック)を生成することができる。
【0022】
なお、サーバ105は、ハードウェアであってもよいし、ソフトウェアであってもよい。サーバ105がハードウェアである場合、複数のサーバで構成される分散サーバクラスタとして実現されてもよいし、単一のサーバとして実現されてもよい。サーバ105がソフトウェアである場合、複数のソフトウェア又はソフトウェアモジュール(例えば、分散サービスを提供するために使用される)として実現されてもよいし、単一のソフトウェア又はソフトウェアモジュールとして実現されてもよい。ここでは特に制限はない。
【0023】
なお、本開示の実施例が提供する検索データベースを構築するための方法は、一般にサーバ105によって実行され、それに応じて、検索データベースを構築するための装置は、一般にサーバ105に設置される。
【0024】
図1の端末装置、ネットワーク及びサーバの数は、単なる例示的であることを理解すべきである。実現のニーズに応じて、任意の数の端末装置、ネットワーク及びサーバを有することができる。
【0025】
図2を参照し続けると、
図2は、本開示による検索データベースを構築するための方法の一実施例のフロー200を示す。当該検索データベースを構築するための方法は、以下のステップを含む。
【0026】
ステップ201:データセットを取得し、データセットを第1のデータセットと第2のデータセットに分割する。
【0027】
本実施例では、検索データベースを構築するための方法の実行本体(例えば、
図1に示されるサーバ105)は、データセットを取得することができる。当該データセットは、様々な方法で取得された元のデータを含み得、元のデータ内のデータは、画像、ビデオ及び/又はオーディオなどであってもよく、次に、各元のデータの特徴を抽出して、元のデータセットに対応する特徴セット、すなわち上記データセットを得る。データセット内のデータ量は、一般に千億又は兆のレベルに達する可能性があり、そのうちの各データは、一般に多次元である。
【0028】
上記実行本体は、データセットを取得した後、データセットを第1のデータセットと第2のデータセットに分割し、例えば、任意の時点でデータセットをサンプリングすることにより、第1のデータセットを得、次に、第1のデータセットを除くデータセットの一部を第2のデータセットとして使用することができる。なお、第1のデータセット内のデータ量は、第2のデータセット内のデータ量よりもはるかに少なく、例えば、データセット内のデータ量が1億の場合、第1のデータセット内のデータ量は、500万になる可能性がある。
【0029】
ステップ202:第1のデータセット内のデータをクラスタリングして、少なくとも1つの一次クラスタリングセンターを得る。
【0030】
本実施例では、上記実行本体は、クラスタリングアルゴリズムを利用して、第1のデータセット内のデータをクラスタリングして少なくとも1つの一次クラスタリングセンターを得ることができる。クラスタリングアルゴリズムとは、ラベル付けされていない大量のデータをいくつかのカテゴリに自動的に分割する方法を指し、教師なし学習法に属し、それは、サンプル間の距離又は類似性(親和性)に基づいて、似ているほど、差異が小さいサンプルを1つのクラス(クラスター)にグループ化し、最後に、複数のクラスターを形成し、各クラスターのセンター、すなわちクラスタリングセンターを得ることができ、得られたクラスタリングセンターは、そのカバー範囲内のすべてのデータに関連しており、すべてのデータの平均ベクトルである。クラスタリングセンターのベクトルは、その下のデータ分布を完全に説明することができ、異なるクラスタリングセンター間にはある程度の差別がある。
【0031】
オプションで、K-Means(K平均)クラスタリングアルゴリズムを使用して、第1のデータセット内のデータをクラスタリングすることにより、対応する一次部分空間及び対応する少なくとも1つの一次クラスタリングセンターを得ることができる。具体的には、まず、K値、すなわち希望するクラスターの数を設定し、次に、第1のデータセットからセントロイド(クラスタリングセンター)としてK個のデータポイントをランダムに選択し、次に、第1のデータセットの各点について、その点と各セントロイドとの間の距離(ユークリッド距離など)を計算し、あるセントロイドに近いものを、当該セントロイドが属するセットに分割する。すべてのデータをセットにグループ化した後、合計K個のセットがあり、次に、各セットのセントロイドを再計算し、新しく計算されたセントロイドと元のセントロイドとの間の距離が設定された特定のしきい値よりも小さい場合(再計算されたセントロイドの位置があまり変化せず、安定又は収束する傾向があることを示す)、クラスタリングが所望の結果に達すると見なされ得、アルゴリズムは、終了するが、新しいセントロイドと元のセントロイドとの間の距離が大きく変化する場合、安定するまで、上記ステップを反復する必要がある。もちろん、第1のデータセット内のデータをクラスタリングするために、他のクラスタリングアルゴリズムも選択することができ、本開示はこれを具体的に限定しない。
【0032】
一次部分空間内のデータが後で再度グループ化されるため、本ステップでは、一次部分空間内のデータを細かく分割する必要はなく、異なる一次クラスタリングセンターに、ある程度の差別があることを確保すればよい。
【0033】
ステップ203:一次クラスタリングセンターに基づいて、第1のデータセット内のデータをクラスタリングして、少なくとも1つの対応する二次クラスタリングセンターを得る。
【0034】
本実施例では、上記実行本体は、ステップ202で得られた一次クラスタリングセンターに基づいて、第1のデータセット内のデータを再びクラスタリングして、対応する二次部分空間及び少なくとも1つの対応する二次クラスタリングセンターを得ることができる。ここで、二次部分空間内のデータ分布と一次部分空間内のデータ分布は、似ており、二次クラスタリングセンターの複数のサブセットは、各部分空間を正確に説明することができる。
【0035】
一例として、第1のデータセット内の第1のデータとそれに最も近い一次クラスタリングセンターとの間の残差ベクトルを計算して、各第1のデータに対応する残差ベクトルを得ることができ、上記各第1のデータに対応する残差ベクトルは、残差ベクトル空間を構成し、残差ベクトル空間は、データとクラスタリングセンターの相対的な位置分布を説明する。次に、K-Meansクラスタリングアルゴリズムを使用して当該残差ベクトル空間をクラスタリングして、新しい空間内のデータ分布を説明し、それにより少なくとも1つの対応する二次クラスタリングセンターを得る。
【0036】
なお、一次部分空間内では、同じクラスタリングセンターに属するデータは、二次部分空間で任意のクラスタリングセンターに属することができ、二次部分空間内で同じクラスタリングセンターに属する残差ベクトルは、異なる一次部分空間のクラスタリングセンターに由来する可能性がある。一次部分空間と二次部分空間では、いずれも同じクラスタリングセンターに属するデータは、高度に類似していると見なされる。
【0037】
例えば、データ量が4億のデータセットで、一次部分空間Aの数が5000である場合、各部分空間のサンプルの平均総数は、約80000であり、二次部分空間Bは、5000の部分空間に分割されると仮定する。Aの部分空間
【数1】
の場合、その下のすべてのサンプルは、
【数2】
に属することができ、
【数3】
は、
【数4】
のサブセットであり、各サンプルはいずれも、クラスタリングセンターペア、すなわち
【数5】
で識別することができる。このとき、訓練コストは、2*5000のクラスタリングセンターであり、
【数6】
に比べて、コストは、大幅に削減される。また、クラスタリングセンターを階層化することにより、データベース構築プロセスにおける計算量を削減することができるため、データベース構築の効率と検索の効率を向上させることができる。
【0038】
ステップ204:第1のデータセット内のデータと一次クラスタリングセンター及び二次クラスタリングセンターとの間の残差に基づいて、第1のデータセットに対応するコードブックを得る。
【0039】
本実施例では、上記実行本体は、第1のデータセット内のデータと一次クラスタリングセンター及び二次クラスタリングセンターとの間の残差に基づいて、第1のデータセットに対応するコードブックを得ることができる。一例として、第1のデータセット内の第1のデータが属する一次クラスタリングセンター及び二次クラスタリングセンターを計算し、次に、第1のデータセット内の第1のデータと一次クラスタリングセンター及び二次クラスタリングセンターとの間の残差を計算することにより、新しい特徴空間(残差ベクトル空間)を得ることができ、次に、この新しい特徴空間内でそれを量子化し、新しい特徴空間内での特徴の値の範囲が大幅に縮小するため、量子化損失も大幅に削減することができる。
【0040】
オプションで、量子化方法は、PQ量子化(Product Quantization、積量子化)であってもよく、PQ量子化は、古典的なANNアルゴリズムに属し、PQ量子化は、記憶量を削減し、計算量を削減し、計算量を削減することができる。新しい特徴空間に対してPQ量子化を実行して、第1のデータセットに対応するコードブックを得ることができる。PQ量子化を使用する場合、通常は4分の1量子化が使用される。
【0041】
ステップ205:第1のデータセットに対応するコードブックに基づいて、第2のデータセットを訓練して、データセットに対応するコードブックを得る。
【0042】
本実施例では、上記実行本体は、第1のデータセットに対応するコードブックに基づいて、第2のデータセットを訓練して、データセットに対応するコードブックを得ることができる。すなわち、上記実行本体は、第1のデータセットに対応するコードブックにおけるクラスタリングセンターのID(Identity Document、識別番号)で第2のデータセット内の特徴ベクトルを識別することができるため、検索プロセス中に、元の特徴ベクトルをロードする必要はないため、検索プロセス中に必要なメモリを削減することができる。
【0043】
本開示の実施例が提供する検索データベースを構築するための方法では、まず、データセットを取得し、データセットを第1のデータセットと第2のデータセットに分割し、次に、第1のデータセット内のデータをクラスタリングして、少なくとも1つの一次クラスタリングセンターを得、次に、一次クラスタリングセンターに基づいて第1のデータセット内のデータをクラスタリングして、少なくとも1つの対応する二次クラスタリングセンターを得、そして、第1のデータセット内のデータと一次クラスタリングセンター及び二次クラスタリングセンターとの間の残差に基づいて、第1のデータセットに対応するコードブックを得、最後に、第1のデータセットに対応するコードブックに基づいて第2のデータセットを訓練して、データセットに対応するコードブックを得る。本実施例における検索データベースを構築するための方法は、反転インデックス法に属し、当該方法は、特徴ベクトル空間を空間的に分割することにより、訓練時間を短縮することができ、それにより、得られたクラスタリングセンターは、データ分布をよりよく説明することができ、さらに、新しい特徴空間を量子化することにより、量子化損失を削減することができ、検索プロセス中に必要なメモリを削減することができ、また、当該方法は、複数のデータベース構築モードをサポートし、リアルタイム/日/週/月レベルのインデックス更新をサポートするため、再現率が高く、スループットが高く、レイテンシーが低く、メモリが低い基本的な検索能力を提供することができる。
【0044】
本開示の技術的解決手段では、関連するユーザの個人情報の収集、記憶、使用、加工、送信、提供及び開示などの処理はいずれも、関連する法律と法規の規定に適合しており、公序良俗に違反しない。
【0045】
図3を参照し続けると、
図3は、本開示による検索データベースを構築するための方法の別の実施例のフロー300を示す。当該検索データベースを構築するための方法は、以下のステップを含む。
【0046】
ステップ301:データセットを取得し、データセットを第1のデータセットと第2のデータセットに分割する。
【0047】
ステップ302:第1のデータセット内のデータをクラスタリングして、少なくとも1つの一次クラスタリングセンターを得る。
【0048】
ステップ301~302は、基本的に前述の実施例のステップ201~202と同じであり、具体的な実現方法については、ステップ201~202の前述の説明を参照することができ、ここでは繰り返さない。
【0049】
ステップ303:第1のデータセット内での各第1のデータについて、第1のデータに最も近い一次クラスタリングセンターの残差を計算して、第1のデータセットに対応する第1の残差ベクトル空間を得る。
【0050】
本実施例では、第1のデータセット内での各第1のデータについて、検索データベースを構築するための方法の実行本体(例えば、
図1に示されるサーバ105)は、それに最も近い一次クラスタリングセンターの残差を計算することができるため、第1のデータセットに対応する第1の残差ベクトル空間を得ることができ、当該残差ベクトル空間は、データとクラスタリングセンターの相対的な位置分布を説明する。ここで、それに最も近い一次クラスタリングセンターは、距離計算結果によって決定することができる。
【0051】
ステップ304:第1の残差ベクトル空間をクラスタリングして、少なくとも1つの対応する二次クラスタリングセンターを得る。
【0052】
本実施例では、上記実行本体は、ステップ303で得られた第1の残差ベクトル空間をクラスタリングして、少なくとも1つの対応する二次クラスタリングセンターを得ることができる。具体的には、K-Meansクラスタリングアルゴリズムを採用して第1の残差ベクトル空間をクラスタリングすることができる。一次クラスタリングセンターと二次クラスタリングセンターは、データ空間全体を複数の部分空間に分割し、すべての一次クラスタリングセンターは、二次クラスタリングセンターを共有する。
【0053】
第1のデータセット内のデータをクラスタリングすることにより、一次クラスタリングセンター及び二次クラスタリングセンターを得ることができるため、大規模なデータセットをより細かく空間的に分割することができ、クラスタリングセンターのベクトルは、その下のすべてのデータをよりよく表すことができ、さらにデータの分布状況をよりよく説明することができる。
【0054】
ステップ305:第1のデータセット内での各第1のデータについて、第1のデータに最も近い一次クラスタリングセンターと二次クラスタリングセンターとの間の残差に基づいて、第1のデータセットに対応する第2の残差ベクトル空間を得る。
【0055】
本実施例では、第1のデータセット内での各第1のデータについて、上記実行本体は、各第1のデータに最も近い一次クラスタリングセンターと二次クラスタリングセンターとの間の残差に基づいて、第1のデータセットに対応する第2の残差ベクトル空間を得ることができる。例えば、対応する第2の残差ベクトル空間を得るために、各第1のデータに最も近い一次クラスタリングセンターと二次クラスタリングセンターとの間の残差を計算することができる。
【0056】
ステップ306:第2の残差ベクトル空間を量子化して、第1のデータセットに対応するコードブックを得る。
【0057】
本実施例では、上記実行本体は、ステップ305で得られた第2の残差ベクトル空間を量子化して、第1のデータセットに対応するコードブックを得ることができる。オプションで、量子化方法は、PQ量子化であってもよく、通常は、4分の1量子化を使用し、PQ量子化損失は、各特徴次元内で特徴値とクラスタリングセンターの差値として表され、サンプル特徴は各次元の値の範囲が大きい場合、それを示すために固定数のクラスタリングセンターを使用すると、量子化損失の増加を必然的にもたらすため、本ステップでは、第2の残差ベクトル空間を量子化するため、特徴の値の範囲を縮小することができ、さらに量子化損失を縮小することができる。PQ量子化は、記憶量を削減し、計算量を削減し、計算量を削減することができる。
【0058】
本実施例のいくつかのオプションの実施形態では、ステップ306は、第2の残差ベクトル空間を第1のプリセット数の部分空間に分割することと、第1のプリセット数の部分空間内での各部分空間をそれぞれクラスタリングして、第2のプリセット数の空間クラスタリングセンターを得ることと、空間クラスタリングセンターの識別番号IDをそれぞれマーキングして、各部分空間のコードブックを得ることと、各部分空間のコードブックを直積して、第1のデータセットに対応するコードブックを得ることと、を含む。ここで、第1のプリセット数と第2のプリセット数は、実際の状況に応じて設定されてもよく、本開示はこれを具体的に限定しない。
【0059】
具体的には、N個の訓練サンプルがあり、各サンプルの次元Dが64であると仮定する。各サンプルをM=8セグメントに分割し、各セグメントをK=256クラスにクラスタリングして、M*K個のクラスタリングセンターを得、各クラスタリングセンターの次元は、D/Mであり、これらのクラスタリングセンターは、コードブックと呼ばれ、訓練してコードブックを得、それを保存する。各サブセグメントMについて、K個のクラスタリングセンターから最も近いクラスタリングセンターU(M)を見つける。各クラスの対応するサブクラスのラベルリストを記憶する。このように訓練が完了すると、N個のサンプルに対して、最後に、K*M個のクラスタリングセンターとN*M個のサンプルに対応するクラスタリングセンターのラベルのみが保存されるため、データの記憶メモリを大幅に削減し、計算量及び計算量を削減することができる。
【0060】
ステップ307:第1のデータセットに対応するコードブックに基づいて、第2のデータセットを訓練して、データセットに対応するコードブックを得る。
【0061】
ステップ307は、前述の実施例のステップ205と基本的に同じであり、具体的な実現方法については、ステップ205の前述の説明を参照することができ、ここでは繰り返さない。
【0062】
図3から分かるように、
図2に対応する実施例と比較して、本実施例における検索データベースを構築するための方法は、二次クラスタリングセンターを得、第1のデータセットに対応するコードブックを得るプロセスを強調するため、データセットをより細かく空間的に分割するため、検索のレイテンシーを減少させ、検索の再現率を向上させ、メモリを節約することができる。
【0063】
図4を参照し続けると、
図4は、
図3に示される検索データベースを構築するための方法の訓練ステップの分解フロー400を示す。当該訓練ステップは、次のように分解される。
【0064】
ステップ401:第2のデータと一次クラスタリングセンター及び二次クラスタリングセンターとの間の距離を計算する。
【0065】
本実施例では、前記第2のデータセット内での各第2のデータについて、各第2のデータと各一次クラスタリングセンター及び各二次クラスタリングセンターとの間の距離を計算し、ここで、当該距離は、ユークリッド距離(L2距離)又はコサイン距離(COS距離)であってもよく、ユークリッド距離又はコサイン距離の計算方法は、従来技術であるため、ここでは繰り返さない。
【0066】
本実施例のいくつかのオプションの実施形態では、ステップ401は、第2のデータと一次クラスタリングセンターとの間の第1の距離を計算することと、一次クラスタリングセンターと二次クラスタリングセンターとの間の第2の距離と第1の距離との間が三角不等式を満たしていないことに応答して、剪定操作を実行することと、を含む。
【0067】
本実施例では、L2/COS距離空間の場合、任意の3点は、三角不等式を満たし、第2のデータと一次クラスタリングセンターとの間の第1の距離を計算した後、一次クラスタリングセンターと二次クラスタリングセンターとの間の距離が既知であるため、三角不等式に従って剪定操作を実行することができ、すなわち、三角不等式に従って、第2のデータと各部分空間の上限を予測することができ、すべての部分空間を特定の規則従ってソートすることができ、距離の上限に従って剪定することができるため、総合計算量を大幅に削減することができる。三角不等式は、次の形式で表すことができる。
【0068】
【0069】
ここで、
【数8】
は、空間内の任意の3点、すなわち上記の第2のデータ、一次クラスタリングセンター及び二次クラスタリングセンターを表し、dは、任意の2点間の距離を表す。
【0070】
1,000万個のSIFT1Bデータセットで検証された当該剪定は、ベクトル計算の94%をカットすることができるため、データベースの構築時間を大幅に短縮することができる。さらに、当該剪定方法は、訓練と検索プロセス中に任意のサンプルと部分空間との間の距離を計算する必要があるプロセスで再利用することができる。
【0071】
本実施例のいくつかのオプションの実施形態では、ステップ401は、一次クラスタリングセンターと二次クラスタリングセンターとの間の第2の距離と第1の距離との間が三角不等式を満たしていることに応答して、第2のデータと二次クラスタリングセンターとの間の距離を計算することをさらに含む。すなわち、一次クラスタリングセンターと二次クラスタリングセンターとの間の第2の距離と第1の距離との間が三角不等式を満たしている場合にのみ、第2のデータと二次クラスタリングセンターとの間の距離を計算することができる。第1の距離と第2の距離が三角不等式を満たしているかどうかを判断することにより、計算量を削減することができる。
【0072】
ステップ402:計算結果に基づいて、第2のデータに最も近い一次クラスタリングセンターと二次クラスタリングセンターを決定する。
【0073】
本実施例では、ステップ401の計算結果に基づいて、第2のデータに最も近い一次クラスタリングセンターと二次クラスタリングセンターを決定する。ステップ401の計算結果が小さいほど距離が近いため、最も近い一次クラスタリングセンター及び二次クラスタリングセンターを決定することができる。
【0074】
ステップ403:第2のデータセット内での各第2のデータについて、第2のデータに最も近い一次クラスタリングセンターと二次クラスタリングセンターとの間の残差に基づいて、各第2のデータに対応する残差ベクトルを得る。
【0075】
本実施例では、第2のデータセット内での各第2のデータについて、第2のデータに最も近い一次クラスタリングセンターと二次クラスタリングセンターを決定した後、第2のデータとそれに最も近い一次クラスタリングセンター及び二次クラスタリングセンターとの間の残差を計算することができるため、各第2のデータに対応する残差ベクトルを得ることができる。
【0076】
ステップ404:残差ベクトルを第1のプリセット数の部分空間に分割する。
【0077】
本実施例では、ステップ403で得られた残差ベクトルを第1のプリセット数の部分空間に分割することができ、ここで、第1のプリセット数は、実際の状況に応じて設定されてもよい。
【0078】
ステップ405:第1のプリセット数の部分空間内での各部分空間について、部分空間内の残差ベクトルと部分空間内の空間クラスタリングセンターとの間の距離を計算する。
【0079】
本実施例では、第1のプリセット数の部分空間内での各部分空間について、各部分空間内の残差ベクトルと部分空間内の空間クラスタリングセンターとの間の距離を計算することができるため、当該部分空間内の残差ベクトルに最も近い空間クラスタリングセンターを決定し、当該クラスタリングセンターのIDを記録することができる。
【0080】
ステップ406:部分空間内の残差ベクトルに最も近い空間クラスタリングセンターのIDで第2のデータセット内での各第2のデータをマーキングして、データセットに対応するコードブックを得る。
【0081】
本実施例では、ステップ405で決定された部分空間内の残差ベクトルに最も近い空間クラスタリングセンターのIDで第2のデータセット内での各第2のデータをマーキングすることができるため、データセットに対応するコードブックを得ることができる。
【0082】
図4からわかるように、当該訓練方法では、第1のデータセット内での各クラスタリングセンターの識別子で第2のデータセット内での第2のデータをマーキングすることができるため、検索プロセス中に、元の特徴ベクトルをロードする必要はないため、検索プロセスに必要なメモリを大幅に削減することができる。
【0083】
図5を参照し続けると、
図5は、本開示による検索方法の一実施例のフロー500を示す。当該検索方法は、以下のステップを含む。
【0084】
ステップ501:被検索データを取得する。
【0085】
本実施例では、検索方法の実行本体(例えば、
図1に示されるサーバ105)は、被検索データを取得することができる。ここで、被検索データは、画像、ビデオ及び/又はオーディオであってもよい。オプションで、上記実行本体は、被検索データを取得した後、よりよく検索するために、被検索データの特徴を抽出し、抽出された特徴を正規化処理する。
【0086】
ステップ502:被検索データと検索データベース内の一次クラスタリングセンターとの間の距離を計算して、プリセット条件を満たしている第3のプリセット数の一次クラスタリングセンターを得る。
【0087】
本実施例では、上記実行本体は、被検索データと検索データベース内での各一次クラスタリングセンターとの間の距離を計算し、計算結果に基づいて、昇順でソートするなどを実行することができるため、プリセット条件を満たしている第3のプリセット数の一次クラスタリングセンターを得ることができ、ここで、第3のプリセット数は、実際の状況に応じて設定されてもよく、例えば、第3のプリセット数を10に設定し、すなわち、昇順ソートの結果に従って、10個の最も近い一次クラスタリングセンターを選択し、選択されなかった部分空間は後続の検索プロセスでアクセスされないため、計算量を削減し、時間を削減することができる。ここで、検索データベースは、前述の実施例における方法で得られる。
【0088】
ステップ503:被検索データと第3のプリセット数の一次クラスタリングセンターにおける各一次クラスタリングセンターの下の二次クラスタリングセンターとの間の距離を計算して、プリセット条件を満たしている第4のプリセット数の二次クラスタリングセンターを得る。
【0089】
本実施例では、被検索データに最も近い第3のプリセット数の一次クラスタリングセンターを決定した後、上記実行本体は、被検索データと第3のプリセット数の一次クラスタリングセンターにおける各一次クラスタリングセンターの下の二次クラスタリングセンターとの間の距離を計算し、計算結果実を昇順でソートするなどを実行することができるため、プリセット条件を満たしている第4のプリセット数の二次クラスタリングセンターを得ることができ、例えば、第4のプリセット数を20に設定し、すなわち、昇順ソートの結果に従って、最も近い20個の二次クラスタリングセンターを選択し、一次クラスタリングセンターの数が10である場合、この時点で合計10*20=200個の二次クラスタリングセンターが得られる。
【0090】
ステップ504:検索データベース内のデータセットに対応するコードブックに基づいて、第4のプリセット数の二次クラスタリングセンターにおける各二次クラスタリングセンターに対応するサンプルデータを順次取得する。
【0091】
本実施例では、上記実行本体は、検索データベース構築する際に得られたデータセットに対応するコードブックに基づいて、優先度付きキューで、最も近い二次クラスタリングセンターから開始し、対応するサンプルデータを順次取り出すことができる。
【0092】
ステップ505:被検索データとサンプルデータとの間の距離を計算し、計算結果に基づいて、第5のプリセット数のサンプルデータを返す。
【0093】
本実施例では、上記実行本体は、被検索データとステップ504で取り出されたサンプルデータとの間の距離を計算し、計算結果をソートして、第5のプリセット数のサンプルデータを返すことができる。第5のプリセット数は、実際の状況に応じて設定されてもよく、第5のプリセット数を200に設定すると仮定すると、上記実行本体は、ソート結果に基づいて、被検索データに最も近い最初の200個のサンプルデータを返す。
【0094】
本開示の実施例が提供する検索方法では、まず、被検索データを取得し、次に、被検索データと検索データベース内の一次クラスタリングセンターとの間の距離を計算して、プリセット条件を満たしている第3のプリセット数の一次クラスタリングセンターを得、次に、被検索データと第3のプリセット数の一次クラスタリングセンターにおける各一次クラスタリングセンターの下の二次クラスタリングセンターとの間の距離を計算して、プリセット条件を満たしている第4のプリセット数の二次クラスタリングセンターを得、検索データベース内のデータセットに対応するコードブックに基づいて、第4のプリセット数の二次クラスタリングセンターにおける各二次クラスタリングセンターに対応するサンプルデータを順次取得し、最後に、被検索データとサンプルデータとの間の距離を計算し、計算結果に基づいて、第5のプリセット数のサンプルデータを返す。本実施例における検索方法は、予め構築された検索データベースに基づいて検索することができるため、検索再現率を向上させ、検索レイテンシーを減少させることができるため、検索効率を向上させることができる。
【0095】
さらに
図6を参照すると、上記各図に示される方法の実現として、本開示は、検索データベースを構築するための装置の一実施例を提供し、当該装置の実施例は、
図2に示される方法の実施例に対応し、当該装置は、具体的には、様々な電子デバイスに適用され得る。
【0096】
図6に示すように、本実施例の検索データベースを構築するための装置600は、第1の取得モジュール601、第1のクラスタリングモジュール602、第2のクラスタリングモジュール603、取得モジュール604及び訓練モジュール605を含む。ここで、第1の取得モジュール601は、データセットを取得し、データセットを第1のデータセットと第2のデータセットに分割するように構成され、ここで、第1のデータセット内のデータ量は、第2のデータセット内のデータ量よりも小さく、第1のクラスタリングモジュール602は、第1のデータセット内のデータをクラスタリングして、少なくとも1つの一次クラスタリングセンターを得るように構成され、第2のクラスタリングモジュール603は、一次クラスタリングセンターに基づいて第1のデータセット内のデータをクラスタリングして、少なくとも1つの対応する二次クラスタリングセンターを得るように構成され、取得モジュール604は、第1のデータセット内のデータと一次クラスタリングセンター及び二次クラスタリングセンターとの間の残差に基づいて、第1のデータセットに対応するコードブックを得るように構成され、訓練モジュール605は、第1のデータセットに対応するコードブックに基づいて、第2のデータセットを訓練して、データセットに対応するコードブックを得るように構成される。
【0097】
本実施例では、検索データベースを構築するための装置600において、第1の取得モジュール601、第1のクラスタリングモジュール602、第2のクラスタリングモジュール603、取得モジュール604及び訓練モジュール605の具体的な処理及びそれによる技術的効果については、
図2の対応する実施例におけるステップ201~205の関連する説明をそれぞれ参照することができ、ここでは繰り返さない。
【0098】
本実施例のいくつかのオプションの実現方法では、第2のクラスタリングモジュールは、第1のデータセット内での各第1のデータについて、第1のデータに最も近い一次クラスタリングセンターの残差を計算して、第1のデータセットに対応する第1の残差ベクトル空間を得るように構成される第1の計算サブモジュールと、第1の残差ベクトル空間をクラスタリングして、少なくとも1つの対応する二次クラスタリングセンターを得るように構成されるクラスタリングサブモジュールと、を含む。
【0099】
本実施例のいくつかのオプションの実現方法では、取得モジュールは、第1のデータセット内での各第1のデータについて、第1のデータに最も近い一次クラスタリングセンターと二次クラスタリングセンターとの間の残差に基づいて、第1のデータセットに対応する第2の残差ベクトル空間を得るように構成される第1の取得サブモジュールと、第2の残差ベクトル空間を量子化して、第1のデータセットに対応するコードブックを得るように構成される量子化サブモジュールと、を含む。
【0100】
本実施例のいくつかのオプションの実現方法では、量子化サブモジュールは、第2の残差ベクトル空間を第1のプリセット数の部分空間に分割するように構成される分割ユニットと、第1のプリセット数の部分空間内での各部分空間をそれぞれクラスタリングして、第2のプリセット数の空間クラスタリングセンターを得るように構成されるクラスタリングユニットと、空間クラスタリングセンターの識別番号IDをそれぞれマーキングして、各部分空間のコードブックを得るように構成されるマーキングユニットと、各部分空間のコードブックを直積して、第1のデータセットに対応するコードブックを得るように構成される直積ユニットと、を含む。
【0101】
本実施例のいくつかのオプションの実現方法では、訓練モジュールは、第2のデータセット内での各第2のデータについて、第2のデータに最も近い一次クラスタリングセンターと二次クラスタリングセンターとの間の残差に基づいて、各第2のデータに対応する残差ベクトルを得るように構成される第2の取得サブモジュールと、残差ベクトルを第1のプリセット数の部分空間に分割するように構成される分割サブモジュールと、第1のプリセット数の部分空間内での各部分空間について、部分空間内の残差ベクトルと部分空間内の空間クラスタリングセンターとの間の距離を計算するように構成される第2の計算サブモジュールと、部分空間内の残差ベクトルに最も近い空間クラスタリングセンターのIDで第2のデータセット内での各第2のデータをマーキングして、データセットに対応するコードブックを得るように構成される第3の取得サブモジュールと、を含む。
【0102】
本実施例のいくつかのオプションの実現方法では、訓練モジュールは、第2のデータと一次クラスタリングセンター及び二次クラスタリングセンターとの間の距離を計算するように構成される第3の計算サブモジュールと、第3の計算サブモジュールの計算結果に基づいて、第2のデータに最も近い一次クラスタリングセンターと二次クラスタリングセンターを決定するように構成される決定サブモジュールと、をさらに含む。
【0103】
本実施例のいくつかのオプションの実現方法では、第3の計算サブモジュールは、第2のデータと一次クラスタリングセンターとの間の第1の距離を計算するように構成される第1の計算ユニットと、一次クラスタリングセンターと二次クラスタリングセンターとの間の第2の距離と第1の距離との間が三角不等式を満たしていないことに応答して、剪定操作を実行するように構成される剪定ユニットと、を含む。
【0104】
本実施例のいくつかのオプションの実現方法では、第3の計算サブモジュールは、一次クラスタリングセンターと二次クラスタリングセンターとの間の第2の距離と第1の距離との間が三角不等式を満たしていることに応答して、第2のデータと二次クラスタリングセンターとの間の距離を計算するように構成される第2の計算ユニットをさらに含む。
【0105】
さらに
図7を参照すると、上記各図に示される方法の実現として、本開示は、検索装置の一実施例を提供し、当該装置の実施例は、
図5に示される方法の実施例に対応し、当該装置は、具体的には、様々な電子デバイスに適用され得る。
【0106】
図7に示すように、本実施例の検索装置700は、第2の取得モジュール701、第1の計算モジュール702、第2の計算モジュール703、第3の取得モジュール704及び第3の計算モジュール705を含む。ここで、第2の取得モジュール701は、被検索データを取得するように構成され、第1の計算モジュール702は、被検索データと検索データベース内の一次クラスタリングセンターとの間の距離を計算して、プリセット条件を満たしている第3のプリセット数の一次クラスタリングセンターを得るように構成され、第2の計算モジュール703は、被検索データと第3のプリセット数の一次クラスタリングセンターにおける各一次クラスタリングセンターの下の二次クラスタリングセンターとの間の距離を計算して、プリセット条件を満たしている第4のプリセット数の二次クラスタリングセンターを得るように構成され、第3の取得モジュール704は、検索データベース内のデータセットに対応するコードブックに基づいて、第4のプリセット数の二次クラスタリングセンターにおける各二次クラスタリングセンターに対応するサンプルデータを順次取得するように構成され、第3の計算モジュール705は、被検索データとサンプルデータとの間の距離を計算し、計算結果に基づいて、第5のプリセット数のサンプルデータを返すように構成される。
【0107】
本実施例では、検索装置700において、第2の取得モジュール701、第1の計算モジュール702、第2の計算モジュール703、第3の取得モジュール704及び第3の計算モジュール705の具体的な処理及びそれによる技術的効果は、
図5の対応する実施例におけるステップ501~505の関連する説明をそれぞれ参照することができ、ここでは繰り返さない。
【0108】
本開示の実施例によれば、本開示はさらに、電子デバイス、可読記憶媒体及びコンピュータプログラム製品を提供する。
【0109】
図8は、本開示の実施例を実施するために使用され得る例示的な電子デバイス800の概略ブロック図を示す。電子デバイスは、ラップトップコンピュータ、デスクトップコンピュータ、ワークステーション、パーソナルデジタルアシスタント、サーバ、ブレード サーバ、大型コンピュータ、及び他の適切なコンピュータなどの様々な形式のデジタルコンピュータを表すことを目的としている。電子デバイスは、パーソナルデジタルプロセッサ、携帯電話、スマートフォン、ウェアラブル デバイス及び他の同様のコンピューティングデバイスなどの様々な形式のモバイルデバイスを表すこともできる。本明細書で示されるコンポーネント、それらの接続及び関係、及びそれらの機能は、単なる例であり、本明細書で説明及び/又は要求される本開示の実現を限定することを意図するものではない。
【0110】
図8に示すように、デバイス800は、読み取り専用メモリ(ROM)802に記憶されたコンピュータプログラム又は記憶ユニット808からランダムアクセスメモリ(RAM)803にロードされたコンピュータプログラムに基づいて、様々な適切な動作及び処理を実行することができる計算ユニット801を含む。RAM803には、デバイス800の動作に必要な様々なプログラム及びデータも記憶されていてもよい。計算ユニット801、ROM802及びRAM803は、バス804を介して互いに接続されている。入力/出力(I/O)インターフェース805もバス804に接続されている。
【0111】
デバイス800における、キーボード、マウスなどの入力ユニット806と、様々なタイプのディスプレイ、スピーカなどの出力ユニット807と、磁気ディスク、光ディスクなどの記憶ユニット808と、ネットワークカード、モデム、無線通信トランシーバなどの通信ユニット809と、を含む複数のコンポーネントは、I/Oインターフェース805に接続されている。通信ユニット809は、デバイス800がインターネットなどのコンピュータネットワーク及び/又は様々な電気通信ネットワークを介して他のデバイスと情報/データを交換することを可能にする。
【0112】
計算ユニット801は、処理及び計算能力を有する様々な汎用及び/又は専用の処理コンポーネントであってもよい。計算ユニット801のいくつかの例は、セントラルプロセッシングユニット(CPU)、グラフィックスプロセッシングユニット(GPU)、様々な専用人工知能(AI)計算チップ、機械学習モデルアルゴリズムを実行する様々な計算ユニット、デジタルシグナルプロセッサ(DSP)、及び任意の適切なプロセッサ、コントローラ、マイクロコントローラなどを含むが、これらに限定されない。計算ユニット801は、上述したそれぞれの方法及び処理、例えば、検索データベースを構築するための方法又は検索方法を実行する。例えば、いくつかの実施例では、検索データベースを構築するための方法又は検索方法は、記憶ユニット808などの機械可読媒体に有形的に含まれるコンピュータソフトウェアプログラムとして実現されてもよい。いくつかの実施例では、コンピュータプログラムの一部又は全部は、ROM802及び/又は通信ユニット809を介してデバイス800にロード及び/又はインストールされてもよい。コンピュータプログラムがRAM803にロードされて計算ユニット801によって実行されると、上述した検索データベースを構築するための方法又は検索方法の1つ又は複数のステップを実行することができる。あるいは、他の実施例では、計算ユニット801は、他の任意の適切な方法で(例えば、ファームウェアにより)検索データベースを構築するための方法又は検索方法を実行するように構成され得る。
【0113】
本明細書で説明したシステム及び技術の様々な実施形態は、デジタル電子回路システム、集積回路システム、フィールドプログラマブルゲートアレイ(FPGA)、特定用途向け集積回路(ASIC)、特定用途向け標準製品(ASSP)、システムオンチップ(SOC)、ロードプログラマブルロジックデバイス(CPLD)、コンピュータハードウェア、ファームウェア、ソフトウェア、及び/又はそれらの組み合わせで実現されてもよい。これらの様々な実施形態は、少なくとも1つのプログラマブルプロセッサを含むプログラマブルシステムで実行及び/又は解釈することが可能な1つ又は複数のコンピュータプログラムで実施されてもよく、当該プログラマブルプロセッサは、記憶システム、少なくとも1つの入力装置、及び少なくとも1つの出力装置から、データ及び指令を受信し、データ及び指令を当該記憶システム、当該少なくとも1つの入力装置、及び当該少なくとも1つの出力装置に送信することが可能な専用又は汎用プログラマブルプロセッサであってもよい。
【0114】
本開示の方法を実施するためのプログラムコードは、1つ又は複数のプログラミング言語の任意の組み合わせで書くことができる。これらのプログラムコードは、プロセッサ又はコントローラによって実行されると、フローチャート及び/又はブロック図に規定された機能/動作が実施されるように、汎用コンピュータ、専用コンピュータ又は他のプログラマブルデータ処理装置のプロセッサ又はコントローラに提供されてもよい。プログラムコードは、完全に機械上で実行されることも、部分的に機械上で実行されることも、スタンドアロンソフトウェアパッケージとして部分的に機械上で実行されながら部分的にリモート機械上で実行されることも、又は完全にリモート機械又はサーバ上で実行されることも可能である。
【0115】
本開示の文脈において、機械可読媒体は、指令実行システム、装置又はデバイスによって使用される、又は指令実行システム、装置又はデバイスと組み合わせて使用されるためのプログラムを含む又は記憶することができる有形の媒体であってもよい。機械可読媒体は、機械可読信号媒体又は機械可読記憶媒体であってもよい。機械可読媒体は、電子、磁気、光学、電磁気、赤外線、又は半導体システム、装置又はデバイス、又は上記の内容の任意の適切な組み合わせを含み得るが、これらに限定されない。機械可読記憶媒体のより具体的な例は、1つ又は複数のワイヤに基づく電気接続、ポータブルコンピュータディスク、ハードディスク、ランダムアクセスメモリ(RAM)、読み取り専用メモリ(ROM)、消去可能プログラマブル読み取り専用メモリ(EPROM又はフラッシュメモリ)、光ファイバ、ポータブルコンパクトディスク読み取り専用メモリ(CD-ROM)、光学記憶装置、磁気記憶装置、又は上記の内容の任意の適切な組み合わせを含む。
【0116】
ユーザとの対話を提供するために、コンピュータ上で、ここで説明されるシステム及び技術を実施することができ、当該コンピュータは、ユーザに情報を表示するためのディスプレイ装置(例えば、CRT(陰極線管)又はLCD(液晶ディスプレイ)モニタ)と、キーボード及びポインティングデバイス(例えば、マウス又はトラックボール)と、を有し、ユーザは、当該キーボード及び当該ポインティングデバイスを介して入力をコンピュータに提供することができる。他の種類の装置は、ユーザとの対話を提供するために使用されることもでき、例えば、ユーザに提供されるフィードバックは、任意の形式のセンシングフィードバック(例えば、視覚フィードバック、聴覚フィードバック、又は触覚フィードバック)であってもよく、任意の形式(音響入力と、音声入力と、触覚入力とを含む)でユーザからの入力を受信することができる。
【0117】
ここで説明されるシステム及び技術は、バックエンドコンポーネントを含む計算システム(例えば、データサーバとして)、又はミドルウェアコンコンポーネントを含む計算システム(例えば、アプリケーションサーバ)、又はフロントエンドコンポーネントを含む計算システム(例えば、ユーザがここで説明されるシステム及び技術の実施形態と対話するために使用され得るグラフィカルユーザインターフェース又はウェブブラウザを有するユーザコンピュータ)、又はこのようなバックエンドコンポーネント、ミドルウェアコンコンポーネント、又はフロントエンドコンポーネントの任意の組み合わせを含む計算システムで実施されてもよい。システムのコンポーネントは、任意の形式又は媒体のデジタルデータ通信(例えば、通信ネットワーク)によって互いに接続されてもよい。通信ネットワークの例は、ローカルエリアネットワーク(LAN)と、ワイドエリアネットワーク(WAN)と、インターネットと、を含む。
【0118】
コンピュータシステムは、クライアントとサーバを含み得る。クライアントとサーバは、一般に、互いに離れており、通常に通信ネットワークを介して対話する。クライアントとサーバの関係は、対応するコンピュータ上で実行され、互いにクライアント-サーバ関係を有するコンピュータプログラムによって生成される。サーバは、クラウドサーバ、分散システムサーバ、又はブロックチェーンと組み合わせたサーバであってもよい。
【0119】
上記に示される様々な形式のフローを使用して、ステップを再ソート、追加又は削除することができることを理解すべきである。例えば、本開示に記載された各ステップは、並列に実行されてもよいし、順次的に実行されてもよいし、異なる順序で実行されてもよいが、本開示に開示された技術的解決手段が所望の結果を実現することができる限り、本明細書では限定されない。
【0120】
上記の具体的な実施形態は、本開示の保護範囲を限定するものではない。当業者は、設計要求と他の要因に基づいて、様々な修正、組み合わせ、サブコンビネーション、及び代替を行うことができることを理解すべきである。任意の本開示の精神と原則内で行われる修正、同等の置換、及び改善などはいずれも、本開示の保護範囲内に含まれなければならない。