(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024027035
(43)【公開日】2024-02-29
(54)【発明の名称】情報処理装置、情報処理方法、及び情報処理プログラム
(51)【国際特許分類】
G06F 16/906 20190101AFI20240221BHJP
【FI】
G06F16/906
【審査請求】未請求
【請求項の数】22
【出願形態】OL
(21)【出願番号】P 2022129736
(22)【出願日】2022-08-16
【新規性喪失の例外の表示】特許法第30条第2項適用申請有り 公開日 令和3年10月22日 令和4年9月2日時点における本願に関連するソフトウェアを公開するページその1 https://github.com/yahoojapan/NGT/tree/097b129880e8728e133ee5af2da0a3d3f140fb97 公開日 令和4年8月10日 令和4年9月2日時点における本願に関連するソフトウェアを公開するページその2 https://github.com/yahoojapan/NGT/tree/979a9af8310d19e2a5b9a0c7b66cba6f116c25bf
(71)【出願人】
【識別番号】500257300
【氏名又は名称】LINEヤフー株式会社
(74)【代理人】
【識別番号】110002147
【氏名又は名称】弁理士法人酒井国際特許事務所
(72)【発明者】
【氏名】岩崎 雅二郎
【テーマコード(参考)】
5B175
【Fターム(参考)】
5B175FA01
5B175FA03
5B175KA12
(57)【要約】
【課題】処理に用いる基準を適切に決定する。
【解決手段】本願に係る情報処理装置は、取得部と、処理部とを有する。取得部は、クラスタリングの対象となる複数のオブジェクトを示すオブジェクト情報と、所定の処理における複数の基準を示す基準情報とを取得する。処理部は、取得部により取得された基準情報が示す複数の基準を処理開始時点の候補基準とし、複数のオブジェクトのうち一部のオブジェクトを処理開始時点のオブジェクト群として、オブジェクト群を対象とした候補基準の各々を用いた所定のクラスタリング手法による複数のクラスタリング結果に応じて、候補基準のうち一部の基準を候補基準として残す基準として選択し、他の基準を候補基準から除外する選択処理を実行することにより、複数の基準のうち一の基準に対応する基準を、所定の処理に用いる基準である対象基準として決定する。
【選択図】
図1
【特許請求の範囲】
【請求項1】
クラスタリングの対象となる複数のオブジェクトを示すオブジェクト情報と、所定の処理における複数の基準を示す基準情報とを取得する取得部と、
前記取得部により取得された前記基準情報が示す前記複数の基準を処理開始時点の候補基準とし、前記複数のオブジェクトのうち一部のオブジェクトを処理開始時点のオブジェクト群として、前記オブジェクト群を対象とした前記候補基準の各々を用いた所定のクラスタリング手法による複数のクラスタリング結果に応じて、前記候補基準のうち一部の基準を前記候補基準として残す基準として選択し、他の基準を前記候補基準から除外する選択処理を実行することにより、前記複数の基準のうち一の基準に対応する基準を、前記所定の処理に用いる基準である対象基準として決定する処理部と、
を備えることを特徴とする情報処理装置。
【請求項2】
前記処理部は、
前記オブジェクト群を対象とした前記候補基準の各々を用いたk-meansに関する手法による前記複数のクラスタリング結果に応じて、前記候補基準のうち前記一部の基準を前記候補基準として選択する前記選択処理を実行する
ことを特徴とする請求項1に記載の情報処理装置。
【請求項3】
前記処理部は、
前記選択処理後に、前記複数のオブジェクトのうち前記オブジェクト群に含まれないオブジェクトを前記オブジェクト群に追加することにより、前記オブジェクト群を増加させ前記選択処理を繰り返すことにより、前記対象基準を決定する
ことを特徴とする請求項1に記載の情報処理装置。
【請求項4】
前記処理部は、
前記選択処理後に、前記複数のオブジェクトのうち所定数のオブジェクトを前記オブジェクト群に追加することにより、前記オブジェクト群を増加させ前記選択処理を繰り返す
ことを特徴とする請求項3に記載の情報処理装置。
【請求項5】
前記処理部は、
前記オブジェクト群の数に1よりも大きい係数を乗算した値のオブジェクトを前記オブジェクト群に追加することにより、前記オブジェクト群を増加させ前記選択処理を繰り返す
ことを特徴とする請求項4に記載の情報処理装置。
【請求項6】
前記処理部は、
前記候補基準が1つになるまで前記選択処理を繰り返すことにより、前記対象基準を決定する
ことを特徴とする請求項1に記載の情報処理装置。
【請求項7】
前記処理部は、
前記候補基準の各々に基づく前記オブジェクト群のクラスタリング結果に応じて、前記候補基準のうち、前記クラスタリングに関する評価が高い方から順に前記一部の基準を前記候補基準として選択する前記選択処理を実行する
ことを特徴とする請求項1に記載の情報処理装置。
【請求項8】
前記処理部は、
前記候補基準の各々に基づく前記オブジェクト群のクラスタリング結果に応じて、前記候補基準のうち、前記クラスタリングに関する誤差が小さい方から順に前記一部の基準を前記候補基準として選択する前記選択処理を実行する
ことを特徴とする請求項7に記載の情報処理装置。
【請求項9】
前記処理部は、
前記候補基準のうち、所定の関数に基づく所定の数の基準を残すことにより、前記候補基準に含まれる基準の数を減らす前記選択処理を実行する
ことを特徴とする請求項1に記載の情報処理装置。
【請求項10】
前記処理部は、
前記選択処理の度に前記所定の数を減少させる前記所定の関数に基づく前記所定の数の基準を前記候補基準として選択することにより、前記候補基準に含まれる基準の数を減らす前記選択処理を実行する
ことを特徴とする請求項9に記載の情報処理装置。
【請求項11】
前記処理部は、
前記複数のオブジェクトの一部である第1オブジェクト群を対象としてクラスタリングすることにより、前記複数の基準の各々に対応する複数の第1クラスタリング結果を生成し、生成した前記複数の第1クラスタリング結果を用いて、前記複数の基準のうち前記クラスタリングに関する評価が高い方から順に第1数の基準を、第1候補基準として選択する第1の選択処理を実行し、前記第1の選択処理により選択された前記第1候補基準の各々に基づいて、前記複数のオブジェクトのうち前記第1オブジェクト群以外のオブジェクトを前記第1オブジェクト群に追加した第2オブジェクト群を対象としてクラスタリングすることにより、前記第1候補基準の各々に対応する複数の第2クラスタリング結果を生成し、生成した前記複数の第2クラスタリング結果を用いて、前記第1候補基準のうち前記クラスタリングに関する評価が高い方から順に前記第1数よりも少ない第2数の基準を、第2候補基準として選択する第2の選択処理を実行することにより、前記対象基準を決定する
ことを特徴とする請求項1に記載の情報処理装置。
【請求項12】
前記処理部は、
前記第2候補基準の各々に基づいて、前記複数のオブジェクトのうち前記第2オブジェクト群以外のオブジェクトを前記第2オブジェクト群に追加することにより更新した前記第2オブジェクト群を対象としてクラスタリングすることにより、前記第2候補基準の各々に対応する前記複数の第2クラスタリング結果を生成し、生成した前記複数の第2クラスタリング結果を用いて、前記第2候補基準のうち前記クラスタリングに関する評価が高い方から順に数を減らした更新後の前記第2数の基準を、前記第2候補基準として選択することにより、前記第2候補基準を更新する第3の選択処理を実行することにより、前記対象基準を決定する
ことを特徴とする請求項11に記載の情報処理装置。
【請求項13】
前記処理部は、
前記第3の選択処理を繰り返すことにより、前記対象基準を決定する
ことを特徴とする請求項12に記載の情報処理装置。
【請求項14】
前記処理部は、
前記第2候補基準が1つになるまで前記第3の選択処理を繰り返すことにより、前記対象基準を決定する
ことを特徴とする請求項12に記載の情報処理装置。
【請求項15】
前記取得部は、
前記クラスタリングにおける複数のセントロイド群の各々に対応する前記複数の基準を示す基準情報を取得し、
前記処理部は、
前記複数のセントロイド群の各々を用いた前記複数のクラスタリング結果に応じて、前記選択処理を実行する
ことを特徴とする請求項1に記載の情報処理装置。
【請求項16】
前記処理部は、
前記候補基準が1つになるまで前記選択処理を繰り返すことにより、前記所定の処理に用いるセントロイド群を決定する
ことを特徴とする請求項14に記載の情報処理装置。
【請求項17】
前記取得部は、
直積量子化の最適化における複数の回転行列の各々に対応する前記複数の基準を示す基準情報を取得し、
前記処理部は、
前記複数の回転行列の各々を用いた前記複数のクラスタリング結果に応じて、前記選択処理を実行する
ことを特徴とする請求項1に記載の情報処理装置。
【請求項18】
前記処理部は、
前記基準情報が示す回転行列を前記複数の回転行列の各々の初期回転行列として前記選択処理を実行する
ことを特徴とする請求項17に記載の情報処理装置。
【請求項19】
前記処理部は、
前記複数の回転行列の各々の最適化を含む前記選択処理を実行する
ことを特徴とする請求項18に記載の情報処理装置。
【請求項20】
前記取得部は、
データ検索の対象となる前記複数のオブジェクトを示すオブジェクト情報を取得し、
前記処理部は、
前記データ検索での前記クラスタリングに用いる前記対象基準を決定する
ことを特徴とする請求項1に記載の情報処理装置。
【請求項21】
コンピュータが実行する情報処理方法であって、
クラスタリングの対象となる複数のオブジェクトを示すオブジェクト情報と、所定の処理における複数の基準を示す基準情報とを取得する取得工程と、
前記取得工程により取得された前記基準情報が示す前記複数の基準を処理開始時点の候補基準とし、前記複数のオブジェクトのうち一部のオブジェクトを処理開始時点のオブジェクト群として、前記オブジェクト群を対象とした前記候補基準の各々を用いた所定のクラスタリング手法による複数のクラスタリング結果に応じて、前記候補基準のうち一部の基準を前記候補基準として残す基準として選択し、他の基準を前記候補基準から除外する選択処理を実行することにより、前記複数の基準のうち一の基準に対応する基準を、前記所定の処理に用いる基準である対象基準として決定する処理工程と、
を含むことを特徴とする情報処理方法。
【請求項22】
クラスタリングの対象となる複数のオブジェクトを示すオブジェクト情報と、所定の処理における複数の基準を示す基準情報とを取得する取得手順と、
前記取得手順により取得された前記基準情報が示す前記複数の基準を処理開始時点の候補基準とし、前記複数のオブジェクトのうち一部のオブジェクトを処理開始時点のオブジェクト群として、前記オブジェクト群を対象とした前記候補基準の各々を用いた所定のクラスタリング手法による複数のクラスタリング結果に応じて、前記候補基準のうち一部の基準を前記候補基準として残す基準として選択し、他の基準を前記候補基準から除外する選択処理を実行することにより、前記複数の基準のうち一の基準に対応する基準を、前記所定の処理に用いる基準である対象基準として決定する処理手順と、
をコンピュータに実行させることを特徴とする情報処理プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、情報処理装置、情報処理方法、及び情報処理プログラムに関する。
【背景技術】
【0002】
従来、種々の情報をクラスタリング(分類)する技術が提供されている。例えば、種々の情報を効率的に探索(検索)するために、対象となる情報をクラスタリングし、クラスタリングした結果が用いられている。
【先行技術文献】
【特許文献】
【0003】
【発明の概要】
【発明が解決しようとする課題】
【0004】
しかしながら、上記の従来技術では、改善の余地がある。上記の従来技術では、k-means等により検索対象となるオブジェクト等をクラスタリングしているものの、例えばクラスタリング等の処理に関する複数の基準がある場合にどの基準を採用するかを決定するかについては考慮されていない。そのため、処理に用いる基準を適切に決定することが望まれている。
【0005】
本願は、上記に鑑みてなされたものであって、処理に用いる基準を適切に決定する情報処理装置、情報処理方法、及び情報処理プログラムを提供することを目的とする。
【課題を解決するための手段】
【0006】
本願に係る情報処理装置は、クラスタリングの対象となる複数のオブジェクトを示すオブジェクト情報と、所定の処理における複数の基準を示す基準情報とを取得する取得部と、前記取得部により取得された前記基準情報が示す前記複数の基準を処理開始時点の候補基準とし、前記複数のオブジェクトのうち一部のオブジェクトを処理開始時点のオブジェクト群として、前記オブジェクト群を対象とした前記候補基準の各々を用いた所定のクラスタリング手法による複数のクラスタリング結果に応じて、前記候補基準のうち一部の基準を前記候補基準として残す基準として選択し、他の基準を前記候補基準から除外する選択処理を実行することにより、前記複数の基準のうち一の基準に対応する基準を、前記所定の処理に用いる基準である対象基準として決定する処理部と、を備えたことを特徴とする。
【発明の効果】
【0007】
実施形態の一態様によれば、処理に用いる基準を適切に決定することができるという効果を奏する。
【図面の簡単な説明】
【0008】
【
図1】
図1は、実施形態に係る情報処理の一例を示す図である。
【
図2】
図2は、実施形態に係る情報処理システムの構成例を示す図である。
【
図3】
図3は、実施形態に係る情報処理装置の構成例を示す図である。
【
図4】
図4は、実施形態に係るオブジェクト情報記憶部の一例を示す図である。
【
図5】
図5は、実施形態に係る情報処理の一例を示すフローチャートである。
【
図6】
図6は、回転行列を用いた処理の一例を示す概念図である。
【
図7】
図7は、対象基準の決定処理の一例を示す図である。
【
図8】
図8は、情報処理装置の機能を実現するコンピュータの一例を示すハードウェア構成図である。
【発明を実施するための形態】
【0009】
以下に、本願に係る情報処理装置、情報処理方法、及び情報処理プログラムを実施するための形態(以下、「実施形態」と呼ぶ)について図面を参照しつつ詳細に説明する。なお、この実施形態により本願に係る情報処理装置、情報処理方法、及び情報処理プログラムが限定されるものではない。また、以下の各実施形態において同一の部位には同一の符号を付し、重複する説明は省略される。
【0010】
(実施形態)
〔1.実施形態〕
〔1-1.情報処理〕
図1を用いて、実施形態に係る情報処理の一例について説明する。
図1は、実施形態に係る情報処理の一例を示す図である。以下では、画像に関する情報をクラスタリング(分類)の対象となるオブジェクトとした場合を一例として説明する。なお、クラスタリング(分類)の対象は、クラスタリング処理が実行可能な対象であればどのようなものであってもよく、画像に限らず、例えば動画や音声等の任意の種別が採用可能である。例えば、オブジェクトは、所定の対象(情報)がベクトル化された多次元(数百次元、数千次元等)のベクトルである。例えば、オブジェクトは、所定の対象(情報)から抽出された局所特徴量のであってもよい。
【0011】
図1では、情報処理装置100(
図3参照)は、例えば数十億等の単位の膨大なオブジェクトを対象にクラスタリング処理を行うために、クラスタリング処理で用いる基準を決定する。以下では、クラスタリング処理で用いる基準として、クラスタリングでのシードとなるセントロイド集合(「セントロイド群」ともいう)を情報処理装置100が決定する場合を一例として説明する。なお、決定対象となる基準は、セントロイド集合に限らず、様々な処理に用いられる任意の基準が採用可能である。例えば、基準は回転行列であってもよいが、この点については後述する。
【0012】
〔1-1-1.処理例〕
ここから、
図1を用いて処理の詳細を説明する。まず、以下に示す処理の説明に先だって前提を簡単に説明する。例えば、十億個のオブジェクト(ベクトル)をk-means法(「k-means」や「kmeans」と記載する場合がある)やk-means++法(「k-means++」や「kmeans++」と記載する場合がある)等を、単純に実行するだけでは実用的な時間で処理を完了することが現状では難しい場合がある。また、クラスタリング対象となる複数のオブジェクト(「オブジェクトセット」ともいう)を、1つのシード(セントロイド集合)だけを用いてクラスタリングを行う場合、そのシードが対象とするオブジェクトセットのクラスタリングに適していない場合、適切にオブジェクトがクラスタリングされた結果を得ることが難しい。
【0013】
そこで、情報処理装置100は、以下に示すような複数のシード(セントロイド集合)を処理開始時点の候補シード(候補セントロイド集合)とし、クラスタリング結果を基に候補シードから一部のシードを候補シードに残す基準として選択し、他の基準を前記候補基準から除外する選択処理により、徐々に候補を絞り込む。また、情報処理装置100は、処理開始時点では、対象とするオブジェクトセットのうち、一部のオブジェクト群をクラスタリングし、選択処理を行うたびに、徐々のオブジェクトを追加したオブジェクト群を対象として選択処理を行う。例えば、以下で説明する例では、クラスタリング対象となるオブジェクトセット(「オブジェクトセットOS1」とする)に十億個のオブジェクト(ベクトル)が含まれる。
【0014】
情報処理装置100は、複数のシードを複数の基準として取得する。情報処理装置100は、s個(「候補数s」ともいう)の初期シード集合S={S0、S1、…}を生成する。
図1では、情報処理装置100は、各々が複数のセントロイドからなるシードである7個のセントロイド集合S0、S1、S2、S3、S4、S5、S6を生成する。なお、セントロイド集合S0、S1、S2、S3、S4、S5、S6を区別せずに説明する場合、セントロイド集合Sxと記載する場合がある。ここで、Sx={C0、C1、C2…Ck}(kは任意の数)である。すなわち、セントロイド集合Sxは、セントロイドC0、C1、C2…Ckの複数のセントロイド(セントロイド群)からなる。なお、セントロイドC0、C1、C2…Ckを区別せずに説明する場合、セントロイドCと記載する場合がある。例えば、各セントロイドCはベクトルデータである。
【0015】
情報処理装置100は、任意の手法によりセントロイド集合Sxの各々を生成する。例えば、情報処理装置100は、k-means法やk-means++法の一般的な生成方法により各セントロイド集合Sxを生成する。例えば、情報処理装置100は、ランダムにデータをクラスタに割り振り、その平均を初期セントロイドとしたり、ランダムにデータを選択してクラスタにしたりすること等により、各セントロイド集合Sxを生成する。
図1では、セントロイド集合S0、S1、S2、S3、S4、S5、S6の各々を生成する。
【0016】
なお、セントロイド集合Sxに含まれるセントロイドCの個数(kの値)は、任意の値であってもよい。例えば、セントロイド集合Sxに含まれるセントロイドCの個数は、オプションにより設定可能であってもよい。例えば、セントロイド集合Sxに含まれるセントロイドCの個数は、オブジェクトセットOS1のサイズに応じて決定されてもよい。例えば、各セントロイド集合Sxに含まれるセントロイドCの個数は、オブジェクトセットOS1のサイズに比例させ、オブジェクトの数が多い程多くしてもよい。また、各セントロイド集合Sxに含まれるセントロイドCの個数は、同じであってもよいし、異なってもよい。各セントロイド集合Sxについて、kの値は同じであってもよいし、異なってもよい。
【0017】
また、セントロイド集合Sxの個数(例えばsの値)は、7は一例に過ぎず、7以外の任意の値であってもよい。例えば、セントロイド集合Sxの個数は、オプションにより設定可能であってもよい。例えば、セントロイド集合Sxの個数は、オブジェクトセットOS1のサイズに応じて決定されてもよい。セントロイド集合Sxの個数は、オブジェクトセットOS1のサイズに比例させ、オブジェクトの数が多い程多くしてもよい。
【0018】
情報処理装置100は、
図1に示すように、オブジェクトセットOS1のうち一部のオオブジェクトを処理開始時点のオブジェクト群(「第1オブジェクト群D0」ともいう)を対象として取得する(ステップST01)。情報処理装置100は、オブジェクトセットOS1からd個(「対象数d」ともいう)のオブジェクトをランダムに選択することにより、第1オブジェクト群D0を取得する。例えば対象数dは、オプションにより設定可能であり、数万、数十万などの任意の数が設定されてもよい。
【0019】
情報処理装置100は、初期シード集合S、すなわちセントロイド集合S0、S1、S2、S3、S4、S5、S6を処理開始時点の候補セントロイド集合とし、候補セントロイド集合から一部のセントロイド集合を選択する選択処理(「第1の選択処理」ともいう)を実行する。まず、情報処理装置100は、第1オブジェクト群D0を対象として、セントロイド集合S0、S1、S2、S3、S4、S5、S6の各々を用いたクラスタリング処理により、セントロイド集合S0、S1、S2、S3、S4、S5、S6の各々に対応する7個の第1クラスタリング結果を生成する(ステップST02)。
【0020】
例えば、情報処理装置100は、k-meansに関する手法により、第1クラスタリング結果を生成する。なお、k-meansに関する手法は、k-meansに関するものであれば、k-means法やk-means++法等の任意の手法であってもよい。なお、以下では、情報処理装置100は、k-meansに関する手法として、kmeansを用いるものとする。このように、情報処理装置100は、対象とする全データ(オブジェクトセットOS1)から対象数dのデータをランダムに取得し、初期シード集合Sの各要素(セントロイド集合Sx)を用いて、個別にkmeansを実行し、セントロイド集合S*を取得する。
【0021】
例えば、情報処理装置100は、第1オブジェクト群D0を対象として、セントロイド集合S0を用いたクラスタリング処理により、セントロイド集合S0に対応する第1クラスタリング結果RS01を生成する。例えば、情報処理装置100は、第1クラスタリング結果RS01の生成処理において、セントロイド集合S0の各セントロイドCの値を更新することにより、セントロイド集合S0*を取得する。
【0022】
同様に、情報処理装置100は、第1オブジェクト群D0を対象として、セントロイド集合S1~S6の各々を用いたクラスタリング処理により、セントロイド集合S1~S6の各々に対応する第1クラスタリング結果RS01~RS61の各々を生成する。例えば、情報処理装置100は、第1クラスタリング結果RS01~RS61の各々の生成処理において、セントロイド集合S0~S6の各々の各セントロイドCの値を更新することにより、セントロイド集合S0*~S6*の各々を取得する。
【0023】
情報処理装置100は、取得されたセントロイド集合S*のそれぞれの量子化誤差を算出し、誤差が小さい方から順にソートし、候補数sを式#1「s × ks」(ksは1未満の値)で更新し、誤差が小さい方から上位s個のセントロイド集合を初期シード集合Sとする(ステップST03)。
【0024】
例えばksを「0.5」とした場合、式#1により「3.5(=7×0.5)」と算出され、四捨五入した場合、候補数sは「4」に更新される。なお、ksの値は一例に過ぎず、1より小さい値であれば、任意の値が設定可能である。情報処理装置100は、セントロイド集合S0*~S6*のうち、量子化誤差が小さい方から1位~4位のセントロイド集合を候補セントロイド集合として残すセントロイド集合として選択する。
【0025】
図1では、量子化誤差が小さい方から1位~4位のセントロイド集合は、セントロイド集合S1、S2、S4、S6であるため、情報処理装置100は、セントロイド集合S1、S2、S4、S6を候補セントロイド集合として残すセントロイド集合として選択し、残りのセントロイド集合S0、S3、S5を候補セントロイド集合から除外する。この場合、更新後の初期シード集合Sには、セントロイド集合S1、S2、S4、S6の4個のセントロイド集合が含まれる。例えば、情報処理装置100は、セントロイド集合S1、S2、S4、S6を第1候補セントロイド集合として選択する。
【0026】
そして、情報処理装置100は、対象数dを式#2「d × kd」(kdは1より大きい値)で更新する。例えば、kdを「1.2」とした場合、式#2により対象数dを1.2倍にとし、対象とするオブジェクトの数を増加させる。なお、kdの値は一例に過ぎず、1より大きい値であれば、任意の値が設定可能である。
【0027】
情報処理装置100は、
図1に示すように、オブジェクトセットOS1のうち更新後の対象数dのオブジェクトを含むオブジェクト群(「第2オブジェクト群D1」ともいう)を対象として取得する(ステップST11)。なお、情報処理装置100は、任意の方法により第2オブジェクト群D1を取得する。例えば、情報処理装置100は、毎回ランダムにd個のデータをランダムに取得してもよいし、増加分のみランダムに取得して前回のデータ(オブジェクト群)に追加してもよい。
【0028】
例えば、情報処理装置100は、オブジェクトセットOS1から更新後の対象数dのオブジェクトをランダムに選択することにより、第2オブジェクト群D1を取得する。また、情報処理装置100は、更新後の対象数dから更新前の対象数dを減算することにより値(「追加数」ともいう)を算出し、オブジェクトセットOS1のうち、第1オブジェクト群D0に含まれないオブジェクトから追加数だけオブジェクトをランダムに選択し、選択した追加数のオブジェクトを第1オブジェクト群D0に追加することにより、第2オブジェクト群D1を取得する。
【0029】
情報処理装置100は、更新後の初期シード集合Sに含まれるセントロイド集合S1、S2、S4、S6を第1候補セントロイド集合とし、第1候補セントロイド集合から一部のセントロイド集合を選択する選択処理(「第2の選択処理」ともいう)を実行する。まず、情報処理装置100は、第2オブジェクト群D1を対象として、セントロイド集合S1、S2、S4、S6の各々を用いたクラスタリング処理により、セントロイド集合S1、S2、S4、S6の各々に対応する4個の第2クラスタリング結果を生成する(ステップST12)。
【0030】
例えば、情報処理装置100は、k-meansに関する手法により、第2クラスタリング結果を生成する。例えば、情報処理装置100は、第2オブジェクト群D1を対象として、セントロイド集合S1を用いたクラスタリング処理により、セントロイド集合S1に対応する第2クラスタリング結果RS12を生成する。例えば、情報処理装置100は、第2クラスタリング結果RS12の生成処理において、セントロイド集合S1の各セントロイドCの値を更新することにより、セントロイド集合S1*を取得する。
【0031】
同様に、情報処理装置100は、第2オブジェクト群D1を対象として、セントロイド集合S2、S4、S6の各々を用いたクラスタリング処理により、セントロイド集合S2、S4、S6の各々に対応する第2クラスタリング結果RS22、RS42、RS62の各々を生成する。例えば、情報処理装置100は、第2クラスタリング結果RS22、RS42、RS62の各々の生成処理において、セントロイド集合S2、S4、S6の各々の各セントロイドCの値を更新することにより、セントロイド集合S2*、S4*、S6*の各々を取得する。
【0032】
情報処理装置100は、取得されたセントロイド集合S*のそれぞれの量子化誤差を算出し、誤差が小さい方から順にソートし、候補数sを式#1「s × ks」(ksは1未満の値)で更新し、誤差が小さい方から上位s個のセントロイド集合を初期シード集合Sとする(ステップST13)。
【0033】
図1では、上記の式#1により候補数sは「3」に更新される。情報処理装置100は、セントロイド集合S1*、S2*、S4*、S6*のうち、量子化誤差が小さい方から1位~3位のセントロイド集合を候補セントロイド集合として残すセントロイド集合として選択する。
【0034】
図1では、量子化誤差が小さい方から1位~3位のセントロイド集合は、セントロイド集合S2、S4、S6であるため、情報処理装置100は、セントロイド集合S2、S4、S6を候補セントロイド集合として残すセントロイド集合として選択し、残りのセントロイド集合S1を候補セントロイド集合から除外する。この場合、更新後の初期シード集合Sには、セントロイド集合S2、S4、S6の3個のセントロイド集合が含まれる。例えば、情報処理装置100は、セントロイド集合S2、S4、S6を第2候補セントロイド集合として選択する。
【0035】
そして、情報処理装置100は、対象数dを式#2「d × kd」で更新する。情報処理装置100は、
図1に示すように、オブジェクトセットOS1のうち更新後の対象数dのオブジェクトを含むオブジェクト群(「更新後の第2オブジェクト群D2」ともいう)を対象として取得する(ステップST21)。なお、情報処理装置100は、任意の方法により更新後の第2オブジェクト群D2を取得する。例えば、情報処理装置100は、オブジェクトセットOS1から更新後の対象数dのオブジェクトをランダムに選択することにより、更新後の第2オブジェクト群D2を取得する。また、情報処理装置100は、更新後の対象数dから更新前の対象数dを減算することにより値(追加数)を算出し、オブジェクトセットOS1のうち、第2オブジェクト群D1に含まれないオブジェクトから追加数だけオブジェクトをランダムに選択し、選択した追加数のオブジェクトを第2オブジェクト群D1に追加することにより、更新後の第2オブジェクト群D2を取得する。
【0036】
情報処理装置100は、更新後の初期シード集合Sに含まれるセントロイド集合S2、S4、S6を第2候補セントロイド集合とし、第2候補セントロイド集合から一部のセントロイド集合を選択する選択処理(「第3の選択処理」ともいう)を実行する。まず、情報処理装置100は、更新後の第2オブジェクト群D2を対象として、セントロイド集合S2、S4、S6の各々を用いたクラスタリング処理により、セントロイド集合S2、S4、S6の各々に対応する3個の第2クラスタリング結果を生成する(ステップST22)。
【0037】
例えば、情報処理装置100は、k-meansに関する手法により、第2クラスタリング結果を生成する。例えば、情報処理装置100は、更新後の第2オブジェクト群D2を対象として、セントロイド集合S2を用いたクラスタリング処理により、セントロイド集合S2に対応する第2クラスタリング結果RS23を生成する。例えば、情報処理装置100は、第2クラスタリング結果RS22の生成処理において、セントロイド集合S2の各セントロイドCの値を更新することにより、セントロイド集合S2*を取得する。
【0038】
同様に、情報処理装置100は、更新後の第2オブジェクト群D2を対象として、セントロイド集合S4、S6の各々を用いたクラスタリング処理により、セントロイド集合S4、S6の各々に対応する更新後の第2クラスタリング結果RS43、RS63の各々を生成する。例えば、情報処理装置100は、更新後の第2クラスタリング結果RS43、RS63の各々の生成処理において、セントロイド集合S4、S6の各々の各セントロイドCの値を更新することにより、セントロイド集合S4*、S6*の各々を取得する。
【0039】
情報処理装置100は、取得されたセントロイド集合S*のそれぞれの量子化誤差を算出し、誤差が小さい方から順にソートし、候補数sを式#1「s × ks」(ksは1未満の値)で更新し、誤差が小さい方から上位s個のセントロイド集合を初期シード集合Sとする(ステップST23)。
【0040】
図1では、式#1により候補数sは「1」に更新される。情報処理装置100は、セントロイド集合S2*、S4*、S6*のうち、量子化誤差が小さい方から1位のセントロイド集合を候補セントロイド集合として残すセントロイド集合として選択する。
【0041】
図1では、量子化誤差が小さい方から1位のセントロイド集合は、セントロイド集合S4であるため、情報処理装置100は、セントロイド集合S4を候補セントロイド集合として残すセントロイド集合として選択し、残りのセントロイド集合S2、S6を候補セントロイド集合から除外する。この場合、更新後の初期シード集合Sには、セントロイド集合S4の1個のセントロイド集合が含まれる。
【0042】
情報処理装置100は、更新後の初期シード集合S、すなわち候補セントロイド集合の要素が1つとなり、対象数dが上限値に達している場合、初期シード集合Sに残っているセントロイド集合を対象基準に決定して、処理を中断する。例えば、上限値は、対象とするオブジェクトセットに含まれるオブジェクト数以下の任意の値が設定される。
図1では、更新後の第2オブジェクト群D2のオブジェクトの数が上限値を超えているものとする。この場合、情報処理装置100は、更新後の初期シード集合S、すなわち候補セントロイド集合がセントロイド集合S4の1つであり、対象数dが上限値に達しているため、セントロイド集合S4を対象基準に決定して、処理を中断する。
【0043】
図1では、情報処理装置100は、更新後の第2オブジェクト群D2に新たなオブジェクトが追加されたオブジェクト群(「第3オブジェクト群D3」ともいう)を対象として取得する(ステップST31)。第3オブジェクト群D3は、オブジェクトセットOS1全体であってもよい。そして、情報処理装置100は、第3オブジェクト群D3を対象として、対象基準として決定したセントロイド集合S4を用いたクラスタリング処理により、セントロイド集合S4に対応するクラスタリング結果を生成する(ステップST32)。例えば、情報処理装置100は、第3オブジェクト群D3を対象としたクラスタリング処理において、セントロイド集合S4の各セントロイドCの値を更新する。
【0044】
上述したように、情報処理装置100は、複数のセントロイド集合から一のセントロイド集合をクラスタリングに用いるセントロイド集合に決定することにより、処理に用いる基準を適切に決定することができる。また、情報処理装置100は、複数のセントロイド集合から決定したセントロイド集合を用いることで、適切にクラスタリング処理を実行することができる。このように、情報処理装置100は、複数の基準から決定した基準を用いることで、適切にクラスタリング処理を実行することができる。したがって、情報処理装置100は、適切なクラスタリングを可能にすることができる。
【0045】
一般的に、量子化グラフを生成するときに大量のデータをkmeansでクラスタリングする。このような場合、データが多ければ多いほど検索精度が向上するが、より処理時間を要する。例えば、kmeansはセントロイドへのデータの割り当てとセントロイドの算出を繰り返し行うことで徐々にクラスタリングの精度が向上する。そこで、情報処理装置100は、繰り返しの初期ではデータを少なくして処理を高速化し、徐々にデータを増やすことで精度が高く、かつ、処理時間を抑制することができる。
【0046】
また、kmeansでは初期のセントロイドの設定によって最終的な精度が大きく異なる。そこで、情報処理装置100は、異なる初期セントロイドでkmeansを行い、最終的に最も量子化誤差が小さくなった、クラスタリング結果を採用する。しかし、この様な場合、異なる初期セントロイドの数だけ処理時間が掛け算で増大する。そこで、情報処理装置100は、初期のデータ数が少ない間は多数の初期セントロイドでkmeansを行い、データ数を増やす時に量子化誤差が大きいもの(候補)を捨てていく(除外する)ことで、処理時間の増加を抑えることができる。なお、個々のkmeansは特許出願1等に開示されるようなグラフインデックスを用いたクラスタリングでもよい。また、情報処理装置100は、上述したクラスタリング処理を階層的に実行することにより、階層クラスタリングの各階層で行うことも可能である。例えば、情報処理装置100は、最初のクラスタリング処理により得られた各第1クラスタに属するオブジェクトをさらに分類し複数の第2クラスタに分割することにより、階層クラスタリングの各階層で行ってもよい。
【0047】
〔1-1-1.適用範囲について〕
クラスタリング対象となるオブジェクトは種々の処理の対象であってもよい。例えば、オブジェクトは、データ検索の対象であってもよい。すなわち、情報処理装置100が実行するクラスタリング処理により生成された情報は、データ検索に用いられてもよい。例えば、セントロイド集合S4を用いてクラスタリングされたクラスタが特許文献1に開示されるグループ(ブロブ)として用いられてもよい。また、セントロイド集合S4を用いてクラスタリングされたクラスタが量子化の単位となるクラスタ(量子化クラスタ)として用いられてもよい。
【0048】
なお、クラスタリング処理により生成された情報の用途は、データ検索に限らず、クラスタリング結果を利用可能な処理であれば、どのような処理に利用されてもよい。すなわち、情報処理装置100が実行するクラスタリング処理は、そのクラスタリング処理の結果が利用可能な任意の処理に適用可能である。また、クラスタリング処理による情報の生成自体が目的であってもよい。例えば、情報処理装置100は、クラスタリングに関する情報を用いてサービスを提供するサービス提供装置へクラスタリング処理の結果を提供してもよい。
【0049】
〔1-2.情報処理システムの構成〕
図4に示すように、情報処理システム1は、端末装置10と、情報提供装置50と、情報処理装置100とが含まれる。端末装置10と、情報提供装置50と、情報処理装置100とは所定のネットワークNを介して、有線または無線により通信可能に接続される。
図4は、第1の実施形態に係る情報処理システムの構成例を示す図である。なお、
図4に示した情報処理システム1には、複数台の端末装置10や、複数台の情報提供装置50や、複数台の情報処理装置100が含まれてもよい。
【0050】
端末装置10は、ユーザによって利用される情報処理装置である。端末装置10は、ユーザによる種々の操作を受け付ける。なお、以下では、端末装置10をユーザと表記する場合がある。すなわち、以下では、ユーザを端末装置10と読み替えることもできる。なお、上述した端末装置10は、例えば、スマートフォンや、タブレット型端末や、ノート型PC(Personal Computer)や、デスクトップPCや、携帯電話機や、PDA(Personal Digital Assistant)等により実現される。
【0051】
情報提供装置50は、ユーザ等に種々の情報提供を行うための情報が格納された情報処理装置である。例えば、情報提供装置50は、ウェブサーバ等の種々の外部装置から収集した文字情報等に基づくオブジェクトIDが格納される。例えば、情報提供装置50は、ユーザ等に画像検索サービスを提供する情報処理装置である。例えば、情報提供装置50は、画像検索サービスを提供するための各情報が格納される。例えば、情報提供装置50は、画像検索サービスの対象となる画像に対応するベクトル情報を情報処理装置100に提供する。また、情報提供装置50は、クエリを情報処理装置100に送信することにより、情報処理装置100からクエリに対応する画像を示すオブジェクトID等を受信する。
【0052】
情報処理装置100は、情報処理を実行するコンピュータである。情報処理装置100は、クラスタリングに関する処理を実行する。情報処理装置100は、クラスタリングに関する処理を実行する。情報処理装置100は、複数の基準を処理開始時点の候補基準とし、複数のオブジェクトのうち一部のオブジェクトを処理開始時点のオブジェクト群として、オブジェクト群を対象とした候補基準の各々を用いた所定のクラスタリング手法による複数のクラスタリング結果を生成する。情報処理装置100は、候補基準のうち一部の基準を候補基準として残す基準として選択し、他の基準を候補基準から除外する選択処理を実行することにより、複数の基準のうち一の基準に対応する基準を、所定の処理に用いる基準である対象基準として決定する。
【0053】
情報処理装置100は、検索サービスを提供してもよい。例えば、情報処理装置100は、端末装置10からクエリ(検索クエリ)を受信すると、検索クエリに類似する対象(オブジェクト)を検索し、検索結果を端末装置に提供する。また、例えば、情報処理装置100が端末装置に提供するデータは、画像情報等のデータ自体であってもよいし、URL(Uniform Resource Locator)等の対応するデータを参照するための情報であってもよい。また、検索クエリや検索対象(オブジェクト)は、画像、音声、テキストデータなど、如何なる種類のデータであってもよい。
【0054】
〔1-3.情報処理装置の構成〕
次に、
図3を用いて、実施形態に係る情報処理装置100の構成について説明する。
図3は、実施形態に係る情報処理装置100の構成例を示す図である。
図3に示すように、情報処理装置100は、通信部110と、記憶部120と、制御部130とを有する。なお、情報処理装置100は、情報処理装置100の管理者等から各種操作を受け付ける入力部(例えば、キーボードやマウス等)や、各種情報を表示するための表示部(例えば、液晶ディスプレイ等)を有してもよい。
【0055】
(通信部110)
通信部110は、例えば、NIC(Network Interface Card)等によって実現される。そして、通信部110は、ネットワーク(例えば
図2中のネットワークN)と有線または無線で接続され、端末装置10や情報提供装置50との間で情報の送受信を行う。
【0056】
(記憶部120)
記憶部120は、例えば、RAM(Random Access Memory)、フラッシュメモリ(Flash Memory)等の半導体メモリ素子、または、ハードディスク、光ディスク等の記憶装置によって実現される。実施形態に係る記憶部120は、
図3に示すように、オブジェクト情報記憶部121と、クラスタリング情報記憶部122と、量子化情報記憶部123と、コードブック情報記憶部124と、グラフ情報記憶部125とを有する。
【0057】
(オブジェクト情報記憶部121)
実施形態に係るオブジェクト情報記憶部121は、オブジェクトに関する各種情報を記憶する。例えば、オブジェクト情報記憶部121は、オブジェクトIDやベクトルデータを記憶する。
図4は、実施形態に係るオブジェクト情報記憶部の一例を示す図である。
図4に示すオブジェクト情報記憶部121は、「オブジェクトID」、「ベクトル情報」といった項目が含まれる。
【0058】
「オブジェクトID」は、オブジェクトを識別するための識別情報を示す。また、「ベクトル情報」は、オブジェクトIDにより識別されるオブジェクトに対応するベクトル情報を示す。すなわち、
図4の例では、オブジェクトを識別するオブジェクトIDに対して、オブジェクトに対応するベクトルデータ(ベクトル情報)が対応付けられて登録されている。
【0059】
例えば、
図4の例では、オブジェクトID「N1」により識別されるオブジェクト(対象)は、「10,24,51,2・・・」の多次元のベクトル情報が対応付けられることを示す。
【0060】
なお、オブジェクト情報記憶部121は、上記に限らず、目的に応じて種々の情報を記憶してもよい。
【0061】
(クラスタリング情報記憶部122)
実施形態に係るクラスタリング情報記憶部122は、クラスタリングに関する各種情報を記憶する。クラスタリング情報記憶部122は、クラスタリングに用いる対象基準の決定処理に関する情報を記憶する。例えば、クラスタリング情報記憶部122は、一の基準を用いて生成されたクラスタリングの結果を示す情報を記憶する。
【0062】
クラスタリング情報記憶部122は、所定の処理における複数の基準を示す基準情報を記憶する。クラスタリング情報記憶部122は、クラスタリングにおける複数の基準を示す基準情報を記憶する。例えば、クラスタリング情報記憶部122は、複数の基準である複数のセントロイド群の各々を示す情報を記憶する。クラスタリング情報記憶部122は、直積量子化の最適化における複数の基準を示す基準情報を記憶する。例えば、クラスタリング情報記憶部122は、複数の基準である複数の回転行列の各々を示す情報を記憶する。
【0063】
クラスタリング情報記憶部122は、複数の基準から一の基準を対象基準として決定するまでの処理過程を示す情報を記憶する。クラスタリング情報記憶部122は、第1の選択処理の結果を示す情報を記憶する。クラスタリング情報記憶部122は、第2の選択処理の結果を示す情報を記憶する。クラスタリング情報記憶部122は、第3の選択処理の結果を示す情報を記憶する。例えば、クラスタリング情報記憶部122は、対象基準として選択されたセントロイド群を用いたクラスタリング処理の結果を示す情報を記憶する。例えば、クラスタリング情報記憶部122は、対象基準として選択されたセントロイド集合S4を用いたクラスタリング処理の結果を示す情報を記憶する。
【0064】
クラスタリング情報記憶部122は、対象基準を用いて生成されたクラスタリングの結果を示す情報を記憶する。例えば、クラスタリング情報記憶部122は、対象基準として決定された一のセントロイド群を用いて生成されたクラスタリングの結果を示す情報を記憶する。例えば、クラスタリング情報記憶部122は、対象基準として決定された一の回転行列を用いて生成されたクラスタリングの結果を示す情報を記憶する。
【0065】
なお、クラスタリング情報記憶部122は、上記に限らず、目的に応じて種々の情報を記憶してもよい。
【0066】
(量子化情報記憶部123)
実施形態に係る量子化情報記憶部123は、量子化に関する各種情報を記憶する。量子化情報記憶部123には、「オブジェクトID」、「量子化情報」といった項目を有する。例えば、量子化情報記憶部123には、セントロイド集合S4を用いてクラスタリングされたクラスタごとに量子化した情報を記憶する。
【0067】
「オブジェクトID」は、オブジェクトを識別するための識別情報を示す。「量子化情報」は、各オブジェクトの量子化されたベクトルの情報を示す。例えば、「量子化情報」には、「要素」、「コードブックID」といった情報が含まれる。「要素」は、対応するオブジェクトのベクトルにおける配置を示す。例えば、各オブジェクトのベクトルは4分割され、各分割された部分ベクトルがコードブックにより量子化されることを示す。なお、分割数は4に限られない。「コードブックID」は、各要素(部分ベクトル)に対応するコードブックを識別するための情報を示す。
【0068】
なお、コードブックを用いた量子化については、特許文献1等の従来技術により適宜実行されればよく、詳細な説明は省略する。また、量子化情報記憶部123は、上記に限らず、目的に応じて種々の情報を記憶してもよい。
【0069】
(コードブック情報記憶部124)
実施形態に係るコードブック情報記憶部124は、コードブックに関する各種情報を記憶する。例えば、コードブック情報記憶部124は、コードブックIDや各コードブックのベクトル情報を記憶する。例えば、コードブック情報記憶部124は、各コードブックとベクトルとの対応付けを示すルックアップテーブルを記憶する。
【0070】
コードブック情報記憶部124は、4分割された部分ベクトルの各々を量子化するために用いるコードブック等を記憶する。なお、コードブックは、特許文献1等の従来技術で開示されるような情報であり、詳細な説明は省略する。また、コードブック情報記憶部124は、上記に限らず、目的に応じて種々の情報を記憶してもよい。例えば、コードブック情報記憶部124は、各コードブックと検索クエリとの差分(距離)を示す情報を記憶してもよい。
【0071】
(グラフ情報記憶部125)
実施形態に係るグラフ情報記憶部125は、グラフに関する各種情報を記憶する。例えば、グラフ情報記憶部125は、検索処理に用いられるグラフを記憶する。グラフ情報記憶部125は、エッジ及びそのエッジで接続(連結)される接続対象を特定するための情報(ID等の識別情報)等を記憶する。なお、接続対象は、グループ(ブロブ等)、オブジェクト等の任意の対象が採用可能である。情報処理装置100は、データ検索の対象となる複数のオブジェクトに関する接続対象をグラフ構造化したグラフインデックス(グラフ)を用いた検索処理を実行する。
【0072】
例えば、グラフ情報記憶部125は、オブジェクト間をエッジで連結したグラフ(「オブジェクトグラフ」ともいう)が検索に用いられる場合、オブジェクトグラフを記憶する。この場合、グラフ情報記憶部125は、各オブジェクトに所定数の近傍のオブジェクトが連結されたオブジェクトグラフが記憶される。なお、情報処理装置100は、オブジェクトグラフを生成してもよいし、外部装置からオブジェクトグラフを取得してもよい。例えば、オブジェクトグラフは、k近傍グラフ(k-nearest neighbor graph)である。例えば、オブジェクトグラフは、検索処理に利用可能なグラフであれば、グラフ生成に関する種々の技術を適宜用いて生成されればよく、詳細な説明は省略する。
【0073】
また、例えば、グラフ情報記憶部125は、グループ(ブロブ)間を連結したグラフ(「グループ連結グラフ」ともいう)が検索に用いられる場合、グループ連結グラフを記憶する。この場合、グラフ情報記憶部125は、各グループに所定数の近傍のグループが連結されたグループ連結グラフが記憶される。なお、情報処理装置100は、グループ連結グラフを生成してもよいし、外部装置からグループ連結グラフを取得してもよい。
【0074】
例えば、グラフ情報記憶部125は、各グループ(ブロブ)のセントロイドに所定数の近傍のグループ(ブロブ)のセントロイドが連結されたグループ連結グラフが記憶される。例えば、グループ(ブロブ)のセントロイド間を連結したグループ連結グラフは、例えば各セントロイド間の距離に応じて所定数の近傍のセントロイドが連結されることにより生成される。例えば、グループ連結グラフは、k近傍グラフ(k-nearest neighbor graph)である。例えば、グループ連結グラフは、検索処理に利用可能なグラフであれば、グラフ生成に関する種々の技術を適宜用いて生成されればよく、詳細な説明は省略する。
【0075】
なお、グラフ情報記憶部125は、上記に限らず、目的に応じて種々の情報を記憶してもよい。例えば、グラフ情報記憶部125は、各接続対象間を連結するエッジの長さが記憶されてもよい。すなわち、グラフ情報記憶部125は、接続対象間の距離を示す情報が記憶されてもよい。上記データ構造は一例に過ぎず、グラフ情報記憶部125は、上記に限らず、種々のデータ構造によりグラフ情報を記憶してもよい。
【0076】
また、グラフは、クエリを入力とし、グラフ中のエッジを辿ることにより接続対象を探索し、クエリに類似する接続対象を抽出し出力するプログラムモジュールを含んでもよい。すなわち、グラフは、グラフを用いて検索処理を行うプログラムモジュールとしての利用が想定されるものであってもよい。例えば、グラフは、クエリとしてベクトルデータが入力された場合に、そのベクトルデータに類似するベクトルデータに対応する接続対象をグラフ中から抽出し、出力するプログラムであってもよい。例えば、グラフは、クエリ画像に対応する類似画像を検索するプログラムモジュールとして利用されるデータであってもよい。例えば、グラフは、入力されたクエリに基づいて、グラフにおいてそのクエリに類似する接続対象を抽出し、出力するよう、コンピュータを機能させる。
【0077】
(制御部130)
図3の説明に戻って、制御部130は、コントローラ(controller)であり、例えば、CPU(Central Processing Unit)やMPU(Micro Processing Unit)やGPU(Graphics Processing Unit)等によって、情報処理装置100内部の記憶装置に記憶されている各種プログラム(情報処理プログラムの一例に相当)がRAMを作業領域として実行されることにより実現される。また、制御部130は、コントローラであり、例えば、ASIC(Application Specific Integrated Circuit)やFPGA(Field Programmable Gate Array)等の集積回路により実現される。
【0078】
図3に示すように、制御部130は、取得部131と、生成部132と、検索処理部133と、提供部134とを有し、以下に説明する情報処理の機能や作用を実現または実行する。なお、制御部130の内部構成は、
図3に示した構成に限られず、後述する情報処理を行う構成であれば他の構成であってもよい。
【0079】
(取得部131)
取得部131は、各種情報を取得する。例えば、取得部131は、記憶部120から各種情報を取得する。例えば、取得部131は、オブジェクト情報記憶部121や、クラスタリング情報記憶部122や、量子化情報記憶部123や、コードブック情報記憶部124や、グラフ情報記憶部125等から各種情報を取得する。また、取得部131は、各種情報を外部の情報処理装置から取得する。取得部131は、端末装置10や情報提供装置50から各種情報を取得する。
【0080】
取得部131は、クラスタリングの対象となる複数のオブジェクトを示すオブジェクト情報を取得する。取得部131は、データ検索の対象となる複数のオブジェクトを示すオブジェクト情報を取得する。取得部131は、所定の処理における複数の基準を示す基準情報を取得する。取得部131は、所定の処理における複数の基準を示す基準情報を取得する。取得部131は、クラスタリングにおける複数のセントロイド群の各々に対応する複数の基準を示す基準情報を取得する。取得部131は、直積量子化の最適化における複数の回転行列の各々に対応する複数の基準を示す基準情報を取得する。
【0081】
取得部131は、データ検索の対象となる複数のオブジェクトに対する検索クエリを取得する。例えば、取得部131は、画像検索に関する検索クエリを取得する。例えば、取得部131は、利用する端末装置10からクエリを取得する。例えば、取得部131は、利用する端末装置10からクエリを受け付けた情報提供装置50からクエリを取得する。取得部131は、グラフを取得する。例えば、情報処理装置100は、情報提供装置50等の外部装置からグラフを取得してもよい。
【0082】
(生成部132)
生成部132は、オブジェクト等のクラスタリング対象のクラスタリングに関する各種処理を実行する処理部である。生成部132は、各種情報を生成する。例えば、生成部132は、記憶部120に記憶された情報(データ)から各種情報(データ)を生成する。例えば、生成部132は、オブジェクト情報記憶部121や、クラスタリング情報記憶部122や、量子化情報記憶部123や、コードブック情報記憶部124や、グラフ情報記憶部125等に記憶された情報(データ)から各種情報を生成する。生成部132は、グラフ情報記憶部125に示すようなグラフを生成してもよい。
【0083】
生成部132は、取得部131により取得された基準情報が示す複数の基準を処理開始時点の候補基準とし、複数のオブジェクトのうち一部のオブジェクトを処理開始時点のオブジェクト群として、オブジェクト群を対象とした候補基準の各々を用いた所定のクラスタリング手法による複数のクラスタリング結果に応じて、候補基準のうち一部の基準を候補基準として残す基準として選択し、他の基準を候補基準から除外する選択処理を実行する。
【0084】
生成部132は、選択処理により、複数の基準のうち一の基準に対応する基準を、所定の処理に用いる基準である対象基準として決定する。生成部132は、選択処理により、複数の基準のうち一の基準に対応する基準を、クラスタリングに用いる基準である対象基準として決定する。生成部132は、選択処理により、複数の基準のうち一の基準に対応する基準を、直積量子化の最適化に用いる基準である対象基準として決定する。生成部132は、オブジェクト群を対象とした候補基準の各々を用いたk-meansに関する手法による複数のクラスタリング結果に応じて、候補基準のうち一部の基準を候補基準として選択する選択処理を実行する。
【0085】
生成部132は、選択処理後に、複数のオブジェクトのうちオブジェクト群に含まれないオブジェクトをオブジェクト群に追加することにより、オブジェクト群を増加させ選択処理を繰り返すことにより、対象基準を決定する。生成部132は、選択処理後に、複数のオブジェクトのうち所定数のオブジェクトをオブジェクト群に追加することにより、オブジェクト群を増加させ選択処理を繰り返す。
【0086】
生成部132は、オブジェクト群の数に1よりも大きい係数を乗算した値のオブジェクトをオブジェクト群に追加することにより、オブジェクト群を増加させ選択処理を繰り返す。生成部132は、候補基準が1つになるまで選択処理を繰り返すことにより、対象基準を決定する。
【0087】
生成部132は、候補基準の各々に基づくオブジェクト群のクラスタリング結果に応じて、候補基準のうち、クラスタリングに関する評価が高い方から順に一部の基準を候補基準として選択する選択処理を実行する。生成部132は、候補基準の各々に基づくオブジェクト群のクラスタリング結果に応じて、候補基準のうち、クラスタリングに関する誤差が小さい方から順に一部の基準を候補基準として選択する選択処理を実行する。
【0088】
生成部132は、候補基準のうち、所定の関数に基づく所定の数の基準を残すことにより、候補基準に含まれる基準の数を減らす選択処理を実行する。生成部132は、選択処理の度に所定の数を減少させる所定の関数に基づく所定の数の基準を候補基準として選択することにより、候補基準に含まれる基準の数を減らす選択処理を実行する。
【0089】
生成部132は、複数のオブジェクトの一部である第1オブジェクト群を対象としてクラスタリングすることにより、複数の基準の各々に対応する複数の第1クラスタリング結果を生成し、生成した複数の第1クラスタリング結果を用いて、複数の基準のうちクラスタリングに関する評価が高い方から順に第1数の基準を、第1候補基準として選択する第1の選択処理を実行する。生成部132は、第1の選択処理により選択された第1候補基準の各々に基づいて、複数のオブジェクトのうち第1オブジェクト群以外のオブジェクトを第1オブジェクト群に追加した第2オブジェクト群を対象としてクラスタリングすることにより、第1候補基準の各々に対応する複数の第2クラスタリング結果を生成し、生成した複数の第2クラスタリング結果を用いて、第1候補基準のうちクラスタリングに関する評価が高い方から順に第1数よりも少ない第2数の基準を、第2候補基準として選択する第2の選択処理を実行する。生成部132は、第1の選択処理及び第2の選択処理を実行することにより、対象基準を決定する。
【0090】
生成部132は、第2候補基準の各々に基づいて、複数のオブジェクトのうち第2オブジェクト群以外のオブジェクトを第2オブジェクト群に追加することにより更新した第2オブジェクト群を対象としてクラスタリングすることにより、第2候補基準の各々に対応する複数の第2クラスタリング結果を生成し、生成した複数の第2クラスタリング結果を用いて、第2候補基準のうちクラスタリングに関する評価が高い方から順に数を減らした更新後の第2数の基準を、第2候補基準として選択することにより、第2候補基準を更新する第3の選択処理を実行する。生成部132は、第3の選択処理を実行することにより、対象基準を決定する。生成部132は、第3の選択処理を繰り返すことにより、対象基準を決定する。生成部132は、第2候補基準が1つになるまで第3の選択処理を繰り返すことにより、対象基準を決定する。
【0091】
生成部132は、複数のセントロイド群の各々を用いた複数のクラスタリング結果に応じて、選択処理を実行する。生成部132は、候補基準が1つになるまで選択処理を繰り返すことにより、クラスタリングに用いるセントロイド群を決定する。
【0092】
生成部132は、複数の回転行列の各々を用いた複数のクラスタリング結果に応じて、選択処理を実行する。生成部132は、基準情報が示す回転行列を複数の回転行列の各々の初期回転行列として選択処理を実行する。生成部132は、複数の回転行列の各々の最適化を含む選択処理を実行する。生成部132は、データ検索でのクラスタリングに用いる対象基準を決定する。
【0093】
生成部132は、決定した対象基準を用いてクラスタリング処理を実行することによりクラスタリング情報を生成する。生成部132は、対象基準として決定したセントロイド群を用いてクラスタリング処理を実行することによりクラスタリング情報を生成する。生成部132は、対象基準として決定したセントロイド群を用いて複数のオブジェクトを分類することにより、クラスタリング情報を生成する。生成部132は、グラフを利用したデータ検索で用いるクラスタリングを示すクラスタリング情報を生成する。
【0094】
生成部132は、グラフ情報記憶部125、量子化情報記憶部123、コードブック情報記憶部124に記憶される情報を生成してもよい。なお、情報処理装置100が量子化情報記憶部123、コードブック情報記憶部124、グラフ情報記憶部125等に記憶される情報を、情報提供装置50等の外部装置から取得する場合、生成部132は、量子化情報記憶部123、コードブック情報記憶部124、グラフ情報記憶部125等に記憶される情報を生成しなくてもよい。
【0095】
(検索処理部133)
検索処理部133は、オブジェクトに関する検索サービスを提供する。検索処理部133は、各種情報を探索する。検索処理部133は、各種情報を検索する。例えば、検索処理部133は、グラフを探索することにより、オブジェクトを検索する。例えば、検索処理部133は、取得部131により取得されたクエリが取得された場合、グラフを探索することにより、クエリに類似するオブジェクトを検索する。例えば、検索処理部133は、グラフを探索することにより、クエリに類似するオブジェクトを抽出する。なお、情報処理装置100は、検索サービスを提供しない場合、検索処理部133を有しなくてもよい。
【0096】
検索処理部133は、検索処理において各種情報を選択する。検索処理部133は、検索処理において各種情報を抽出する。検索処理部133は、検索処理において各種情報を判定する。検索処理部133は、検索処理において各種情報を決定する。検索処理部133は、検索処理において各種情報を変更する。検索処理部133は、検索処理において各種情報を更新する。
【0097】
検索処理部133は、上述したようなクラスタリングにより生成された情報を用いて、オブジェクトの検索処理を実行可能であれば、どのような手法により検索処理を行ってもよい。例えば、検索処理部133は、特許文献1に開示されるような検索フローに基づいて、検索処理を実行する。検索処理部133は、データ検索の対象となる複数のオブジェクトに関する接続対象をグラフ構造化したグラフインデックス(グラフ)を用いた検索処理を実行する。
【0098】
例えば、検索処理部133は、データ検索の対象となる複数のオブジェクトをグラフ構造化したオブジェクトグラフを用いた検索処理を実行する。検索処理部133は、データ検索の対象であるオブジェクトがベクトル化され、ノードとして連結されたオブジェクトグラフを用いて近傍検索を行う。検索処理部133は、オブジェクトを検索対象として、オブジェクトグラフを辿って与えられた検索クエリ(ベクトル)の近傍のオブジェクトを探索する。検索処理部133は、検索処理により、抽出する近傍のオブジェクトの数として指定された所定数(検索数)のオブジェクトを、検索クエリの近傍のオブジェクトとして抽出する。
【0099】
例えば、検索処理部133は、データ検索の対象となる複数のオブジェクトをクラスタリング(グルーピング)したクラスタ(グループ)をグラフ構造化したグループ連結グラフを用いた検索処理を実行する。検索処理部133は、データ検索の対象であるオブジェクトが分類されたグループ(ブロブ)がエッジで連結されたグループ連結グラフを用いて近傍検索を行う。検索処理部133は、グループ連結グラフの各グループ(ブロブ)に属するオブジェクトを検索対象のオブジェクトとして、グループ連結グラフを辿って与えられた検索クエリ(ベクトル)の近傍のオブジェクトを探索する。検索処理部133は、検索処理により、抽出する近傍のオブジェクトの数として指定された所定数(検索数)のオブジェクトを、検索クエリの近傍のオブジェクトとして抽出する。
【0100】
(提供部134)
提供部134は、各種情報を提供する。例えば、提供部134は、端末装置10や情報提供装置50に各種情報を送信する。例えば、提供部134は、検索クエリに対応するオブジェクトIDを検索結果として提供する。提供部134は、検索結果を端末装置10へ送信する。提供部134は、検索処理部133により検索されたオブジェクトIDを、検索クエリに対応する検索結果として端末装置10へ提供する。
【0101】
また、提供部134は、検索処理部133により検索されたオブジェクトIDを情報提供装置50へ提供してもよい。例えば、提供部134は、検索処理部133が検索により抽出したオブジェクトIDを情報提供装置50へ提供する。提供部134は、検索処理部133により抽出されたオブジェクトIDをクエリに対応するベクトルを示す情報として情報提供装置50に提供する。
【0102】
〔1-4.情報処理のフロー〕
次に、
図5を用いて、実施形態に係る情報処理システム1による情報処理の手順について説明する。
図5は、実施形態に係る情報処理の一例を示すフローチャートである。
【0103】
図5に示すように、情報処理装置100は、クラスタリングの対象となる複数のオブジェクトを示すオブジェクト情報を取得する(ステップST101)。情報処理装置100は、所定の処理における複数の基準を示す基準情報を取得する(ステップST102)。
【0104】
情報処理装置100は、基準情報が示す複数の基準を処理開始時点の候補基準とし、複数のオブジェクトのうち一部のオブジェクトを処理開始時点のオブジェクト群として、オブジェクト群を対象とした候補基準の各々を用いた所定のクラスタリング手法による複数のクラスタリング結果に応じて、候補基準のうち一部の基準を候補基準として残す基準として選択し、他の基準を候補基準から除外する選択処理を実行する(ステップST103)。
【0105】
情報処理装置100は、複数の基準のうち一の基準に対応する基準を、所定の処理に用いる基準である対象基準として決定する(ステップST104)。
【0106】
〔1-5.回転行列の例〕
上述したように、決定対象となる基準は、セントロイド群に限らず、様々な基準であってもよく、例えば、基準は回転行列であってもよい。この点について、以下一例を記載する。
【0107】
以下に決定処理の対象となる基準の一例として示す回転行列は、例えばベクトル空間(単に「空間」ともいう)を回転し直積量子化を最適化するために用いられる。例えば、回転行列は、特許文献1に示すような直積量子化の最適化に用いられる。なお、直積量子化や後述する部分ベクトル等については、特許文献1等に開示されており従来技術であるため、詳細についての説明は省略する。
【0108】
例えば、情報処理装置100は、複数の回転行列から一の回転行列を、直積量子化の最適化に用いる対象基準(対象回答行列)として決定する。なお、回転行列を用いた空間の回転は距離不変である。例えば、情報処理装置100は、回転行列を用いて、空間を回転することで部分ベクトル単位の分散を均等化させる。情報処理装置100は、均等化された部分ベクトル空間をクラスタリングすることで量子化誤差を最小化する。
【0109】
以下、回転行列の算出例について、
図6を参照しつつ説明する。
図6は、回転行列を用いた処理の一例を示す概念図である。以下では、情報処理装置100を処理主体として説明するが、回転行列の算出処理は、情報処理装置100が行ってもよいし、情報処理装置100以外の回転行列を算出する装置が行ってもよい。
【0110】
例えば、回転行列の算出処理は、以下に示すような処理A及び処理Bを含む。以下では、回転行列Rを算出対象として説明する。
【0111】
(回転行列の算出処理)
処理A:量子化(Coarse Quantization)により対象ベクトル集合から残差ベクトル集合を算出
処理B:初期値としてランダムな回転行列Rを設定し、以下の処理a~fの順で実行
処理a:残差ベクトル集合を回転行列Rで回転
処理b:残差ベクトルを分割して部分ベクトル集合を生成
処理c:部分ベクトル空間ごとにクラスタリング(量子化誤差を最小化)
処理d:各部分ベクトル空間のクラスタのセントロイドを用いて量子化ベクトルを生成
処理e:残差ベクトル集合から量子化ベクトル集合への回転行列を特異値分解で算出し、回転行列Rを更新
処理f:指定繰り返し回数に達するまで処理aに戻る
【0112】
図6では、回転行列Rの算出を概念的に示す。なお、
図6中の丸(ドット)の各々が各オブジェクトの残差ベクトルに対応する。なお、
図6では、残差ベクトルに対応する丸(ドット)の一部のみを図示する。
図6中のR
0、R
1、R
2は、回転行列Rの更新を示し、回転行列Rは、回転行列R
0が初期値(初期回転行列)に設定され、回転行列R
1、回転行列R
2の順に更新されることを示す。初期回転行列は、ランダムな回転行列である。例えば、情報処理装置100は、ランダムな要素で生成した行列から回転成分を抽出して初期回転行列を生成してもよい。
【0113】
まず、情報処理装置100は、概念
図DT11に示す空間を回転行列R
0により回転させ、概念
図DT12に示す空間に変換する(処理aに対応)。情報処理装置100は、残差ベクトルを分割して部分ベクトル集合を生成する(処理bに対応)。情報処理装置100は、概念
図DT13に示すように、量子化誤差を最小化するように残差ベクトル(オブジェクト)をクラスタリングする(処理cに対応)。情報処理装置100は、概念
図DT14に示すように、各部分ベクトル空間のクラスタのセントロイドを用いて量子化ベクトルを生成し(処理dに対応)、回転行列R
1を算出する(処理eに対応)。例えば、情報処理装置100は、残差ベクトル集合から量子化ベクトル集合への回転行列Rを特異値分解で算出することにより、回転行列Rを、回転行列R
0から回転行列R
1に更新する。
【0114】
次に、情報処理装置100は、概念
図DT21に示す空間を回転行列R
1により回転させ、概念
図DT22に示す空間に変換する(処理aに対応)。情報処理装置100は、残差ベクトルを分割して部分ベクトル集合を生成する(処理bに対応)。情報処理装置100は、概念
図DT23に示すように、量子化誤差を最小化するように残差ベクトル(オブジェクト)をクラスタリングする(処理cに対応)。情報処理装置100は、概念
図DT24に示すように、各部分ベクトル空間のクラスタのセントロイドを用いて量子化ベクトルを生成し(処理dに対応)、回転行列R
2を算出する(処理eに対応)。例えば、情報処理装置100は、残差ベクトル集合から量子化ベクトル集合への回転行列Rを特異値分解で算出することにより、回転行列Rを、回転行列R
1から回転行列R
2に更新する。
【0115】
〔1-5-1.処理例〕
ここから、情報処理装置100が実行する回転行列の決定処理例を説明する。まず、処理の説明に先立って前提を説明する。例えば、初期回転行列により精度が変動し、複数の初期回転行列での最適化には時間を要するという課題がある。そこで、情報処理装置100は、以下に示すようにデータを段階的に増加させて、複数の回転行列から用いる回転行列を決定する処理である回転行列決定処理を実行する。例えば、回転行列決定処理は、以下に示すような処理#1~#3を含む。
【0116】
(回転行列決定処理)
処理#1:O個のベクトルをロード
処理#2:M+1個の回転行列の各々を初期化
処理#3:入力ベクトルを徐々に増やして繰り返し
(初期個数の係数:S、個数拡大の係数:X)
処理#3-1:残差ベクトルを算出
処理#3-2:回転行列数分の繰り返し
処理#3-2-1:ベクトルを回転行列で回転
処理#3-2-2:部分空間の最大I回でkmeansを行いコードブック生成
処理#3-2-3:コードブックを使ってベクトルから量子化ベクトルを生成
処理#3-2-4:回転前ベクトルと回転後の量子化ベクトルから回転行列の算出
処理#3-3:量子化誤差が大きい回転行列を削除
【0117】
例えば、上述した回転行列決定処理において、処理#3-2-1~処理#3-2-4の処理は、規定回数分繰り返される。また、処理#3-3でいう量子化誤差は、元のベクトルと直積量子化した量子化ベクトルとの誤差を意味する。以下、上述した回転行列決定処理の一例について、
図7を参照しつつ説明する。
図7は、対象基準の決定処理の一例を示す図である。なお、上述した点については、適宜説明を省略する。例えば、
図1において説明した処理と同様の点については説明を省略する。
【0118】
なお、
図7に示す例では、各回転行列の更新を、カンマ等の区切り文字で区切られる各添え字(下付き文字)にうち、2つ目の添え字により示す。すなわち、回転行列の2つ目の添え字の数が、更新の回数を示す。例えば、2つ目の添え字が0である回転行列(例えば回転行列R
M,0等)が初期回転行列に対応する。また、2つ目の添え字が1である回転行列が1回更新された後の回転行列に対応する。例えば、回転行列R
M,1は、初期回転行列R
M,0が更新された回転行列R
Mに対応し、初期回転行列から1回更新されたことを示す。回転行列の各々について、更新回数を区別せずに説明する場合、2つ目の添え字を除いた態様で記載する。例えば、初期回転行列R
M,0、1回更新後の回転行列R
M,1、2回更新後の回転行列R
M,2等を区別せずに説明する場合、回転行列R
Mと記載する。
【0119】
情報処理装置100は、複数の回転行列を、処理開始時点の複数の基準(「初期回転行列」ともいう)として取得する。情報処理装置100は、s(=M+1)個(「候補数s」ともいう)の初期回転行列集合Set={R
0、R
1、R
2…R
M}を生成する。
図7では、情報処理装置100は、各々が複数の回転行列であるM+1個の回転行列R
0、R
1、R
2…R
Mを生成する。なお、回転行列R
0、R
1、R
2…R
M等を区別せずに説明する場合、添え字無しの回転行列Rと記載する場合がある。
【0120】
また、初期回転行列として用いられる回転行列Rの個数(例えばsの値)は、初期回転行列が複数となる数であれば、任意の値であってもよい。すなわち、sの値は、2以上であれば任意の値であってもよく、Mは1以上の値であれば任意の値であってもよい。例えば、初期回転行列として用いられる回転行列Rの個数は、オプションにより設定可能であってもよい。例えば、初期回転行列として用いられる回転行列Rの個数は、オブジェクトセットOS1のサイズに応じて決定されてもよい。初期回転行列として用いられる回転行列Rの個数は、オブジェクトセットOS1のサイズに比例させ、オブジェクトの数が多い程多くしてもよい。
【0121】
情報処理装置100は、
図7に示すように、オブジェクトセットOS1のうち一部のオオブジェクトを処理開始時点のオブジェクト群(第1オブジェクト群D10)を対象として取得する(ステップST201)。情報処理装置100は、O個のオブジェクトからなるオブジェクトセットOS1からd(=O×S)個(「対象数d」ともいう)のオブジェクトをランダムに選択することにより、第1オブジェクト群D10を取得する。例えば、オブジェクトセットOS1に含まれるオブジェクトの個数Oに乗算される係数Sは、初期個数の係数である。係数Sは、オプションにより設定可能であり、1未満の任意の数が設定される。
【0122】
情報処理装置100は、初期回転行列集合Set、すなわち回転行列R0、R1、R2…RMを処理開始時点の候補回転行列(「候補回転行列CR」ともいう)とし、候補回転行列から一部の回転行列を選択する選択処理(第1の選択処理)を実行する。まず、情報処理装置100は、第1オブジェクト群D10を対象として、回転行列R0、R1、R2…RMの各々について行列最適化の処理を実行する(ステップST202)。例えば、情報処理装置100は、行列最適化に関する任意の手法により、候補回転行列CRに含まれる各回転行列Rの各々について行列最適化の処理を実行する。例えば、情報処理装置100は、上述した処理#3-1、処理#3-2の処理により回転行列Rの各々を更新する。
【0123】
例えば、情報処理装置100は、行列最適化RS201に示すように、回転行列R0,0について行列最適化の処理を実行することにより、回転行列R0を回転行列R0,1に更新する。情報処理装置100は、行列最適化RS202に示すように、回転行列R1,0について行列最適化の処理を実行することにより、回転行列R1を回転行列R1,1に更新する。情報処理装置100は、行列最適化RS203、RS204等に示すように、回転行列R2,0~RM,0についても同様に行列最適化の処理を実行することにより、回転行列R2~RMの各々の回転行列R2,1~RM,1に更新する。これにより、情報処理装置100は、行列最適化の処理により1回目の更新が行われたR0~RMの各々を取得する。
【0124】
情報処理装置100は、取得された回転行列R
0,1~R
M,1の各々について、量子化誤差を算出し、誤差が小さい方から順にソートし、候補数sを上述した式#1で更新し、誤差が小さい方から上位s個の回転行列を初期回転行列集合Setとする(ステップST203)。
図7では、例えば、情報処理装置100は、候補数sを「3」に更新する。情報処理装置100は、候補回転行列CRのうち、量子化誤差が小さい方から1位~3位の回転行列を候補回転行列CRとして残す回転行列として選択する。
【0125】
図7では、量子化誤差が小さい方から1位~3位の回転行列は、回転行列R
1、R
2、R
Mであるため、情報処理装置100は、回転行列R
1、R
2、R
Mを候補回転行列CRとして残す回転行列として選択し、残りの回転行列R
0等を候補回転行列CRから除外する。この場合、更新後の初期回転行列集合Setには、回転行列R
1、R
2、R
Mの3個の回転行列が含まれる。例えば、情報処理装置100は、回転行列R
1、R
2、R
Mを候補回転行列CRとして選択する。
【0126】
そして、情報処理装置100は、対象数dを更新する。
図7では、情報処理装置100は、対象数dに係数Xを乗算することにより、対象数dを更新する。例えば、情報処理装置100は、「O×S×X」により対象数dを更新する。係数Xは、個数拡大の係数である。係数Xは、オプションにより設定可能であり、1より大きい任意の数が設定される。
【0127】
情報処理装置100は、
図7に示すように、オブジェクトセットOS1のうち更新後の対象数d(=O×S×X)個のオブジェクトを含むオブジェクト群(第2オブジェクト群D11)を対象として取得する(ステップST211)。なお、情報処理装置100は、任意の方法により第2オブジェクト群D11を取得する。例えば、情報処理装置100は、毎回ランダムにd個のデータをランダムに取得してもよいし、増加分のみランダムに取得して前回のデータ(オブジェクト群)に追加してもよい。
【0128】
情報処理装置100は、更新後の初期回転行列集合Set、回転行列R1、R2、RMを第1候補回転行列とし、第1候補回転行列から一部の回転行列を選択する選択処理(第2の選択処理)を実行する。まず、情報処理装置100は、第2オブジェクト群D11を対象として、回転行列R1、R2、RMの各々について行列最適化の処理を実行する(ステップST212)。例えば、情報処理装置100は、上述した処理#3-1、処理#3-2の処理により候補回転行列CRに含まれる回転行列Rの各々を更新する。情報処理装置100は、行列最適化RS212に示すように、回転行列R1,1について行列最適化の処理を実行することにより、回転行列R1を回転行列R1,2に更新する。情報処理装置100は、行列最適化RS213に示すように、回転行列R2,1について行列最適化の処理を実行することにより、回転行列R2を回転行列R2,2に更新する。情報処理装置100は、行列最適化RS214に示すように、回転行列RM,1について行列最適化の処理を実行することにより、回転行列R2を回転行列RM,2に更新する。これにより、情報処理装置100は、行列最適化の処理により2回目の更新が行われた回転行列R1、R2、RMの各々を取得する。
【0129】
情報処理装置100は、取得された回転行列R
1,2、R
2,2、R
M,2の各々について、量子化誤差を算出し、誤差が小さい方から順にソートし、候補数sを上述した式#1で更新し、誤差が小さい方から上位s個の回転行列を初期回転行列集合Setとする(ステップST213)。
図7では、情報処理装置100は、候補数sを「2」に更新する。情報処理装置100は、候補回転行列CRのうち、量子化誤差が小さい方から1位、2位の回転行列を候補回転行列CRとして残す回転行列として選択する。
【0130】
図7では、量子化誤差が小さい方から1位、2位の回転行列は、回転行列R
2、R
Mであるため、情報処理装置100は、回転行列R
2、R
Mを候補回転行列CRとして残す回転行列として選択し、残りの回転行列R
1を候補回転行列CRから除外する。この場合、更新後の初期回転行列集合Setには、回転行列R
2、R
Mの2個の回転行列が含まれる。例えば、情報処理装置100は、回転行列R
2、R
Mを候補回転行列CRとして選択する。
【0131】
そして、情報処理装置100は、対象数dを更新する。
図7では、情報処理装置100は、対象数dにXを乗算することにより、対象数dを更新する。例えば、情報処理装置100は、「O×S×X×X」により対象数dを更新する。
【0132】
情報処理装置100は、
図7に示すように、オブジェクトセットOS1のうち更新後の対象数d(=O×S×X
2)個のオブジェクトを含むオブジェクト群(更新後の第2オブジェクト群D12)を対象として取得する(ステップST221)。なお、情報処理装置100は、任意の方法により更新後の第2オブジェクト群D12を取得する。例えば、情報処理装置100は、毎回ランダムにd個のデータをランダムに取得してもよいし、増加分のみランダムに取得して前回のデータ(オブジェクト群)に追加してもよい。
【0133】
情報処理装置100は、更新後の初期回転行列集合Set、回転行列R2、RMを第2候補回転行列とし、第2候補回転行列から一部の回転行列を選択する選択処理(第3の選択処理)を実行する。まず、情報処理装置100は、更新後の第2オブジェクト群D12を対象として、回転行列R2、RMの各々について行列最適化の処理を実行する(ステップST222)。例えば、情報処理装置100は、上述した処理#3-1、処理#3-2の処理により候補回転行列CRに含まれる回転行列Rの各々を更新する。情報処理装置100は、行列最適化RS223に示すように、回転行列R2,2について行列最適化の処理を実行することにより、回転行列R2を回転行列R2,3に更新する。情報処理装置100は、行列最適化RS224に示すように、回転行列RM,2について行列最適化の処理を実行することにより、回転行列R2を回転行列RM,3に更新する。これにより、情報処理装置100は、行列最適化の処理により3回目の更新が行われたR2、RMの各々を取得する。
【0134】
情報処理装置100は、取得された回転行列R
2,3、R
M,3の各々について、量子化誤差を算出し、誤差が小さい方から順にソートし、候補数sを上述した式#1で更新し、誤差が小さい方から上位s個の回転行列を初期回転行列集合Setとする(ステップST223)。
図7では、情報処理装置100は、候補数sを「1」に更新する。情報処理装置100は、候補回転行列CRのうち、量子化誤差が小さい方から1位の回転行列を候補回転行列CRとして残す回転行列として選択する。
【0135】
図7では、量子化誤差が小さい方から1位の回転行列は、回転行列R
2であるため、情報処理装置100は、回転行列R
2を候補回転行列CRとして残す回転行列として選択し、残りの回転行列R
Mを候補回転行列CRから除外する。この場合、更新後の初期回転行列集合Setには、回転行列R
2の1個の回転行列が含まれる。
【0136】
情報処理装置100は、更新後の初期回転行列集合Set、すなわち候補回転行列CRの要素が1つとなっている場合、初期回転行列集合Setに残っている回転行列を対象基準に決定して、処理を中断する。
図7では、情報処理装置100は、更新後の初期回転行列集合Set、すなわち候補回転行列CRが回転行列R
2の1つであるため、回転行列R
2を対象基準に決定して、処理を中断する。
【0137】
図7では、情報処理装置100は、更新後の第2オブジェクト群D12に新たなオブジェクトが追加されたオブジェクト群(第3オブジェクト群D13)を対象として取得する(ステップST231)。
図7に示すように、情報処理装置100は、オブジェクトセットOS1のうち更新後の対象数d(=O×S×X
3)個のオブジェクトを含む第3オブジェクト群D13を対象として取得する。第3オブジェクト群D13は、オブジェクトセットOS1全体であってもよい。そして、情報処理装置100は、第3オブジェクト群D13を対象として、対象基準として決定した回転行列R
4を用いた行列最適化の処理を実行する(ステップST232)。例えば、情報処理装置100は、上述した処理#3-1、処理#3-2の処理により回転行列R
2を更新する。情報処理装置100は、行列最適化RS233に示すように、回転行列R
2,3について行列最適化の処理を実行することにより、回転行列R
2を更新する。情報処理装置100は、回転行列R
2により直積量子化の最適化を実行する。
【0138】
上述したように、情報処理装置100は、複数の回転行列から一の回転行列を直積量子化の最適化に用いる回転行列に決定することにより、処理に用いる基準を適切に決定することができる。また、情報処理装置100は、複数の回転行列から決定した回転行列を用いることで、適切に直積量子化の最適化処理を実行することができる。このように、情報処理装置100は、複数の基準から決定した基準を用いることで、適切に直積量子化の最適化処理を実行することができる。したがって、情報処理装置100は、適切な直積量子化の最適化を可能にすることができる。
【0139】
〔2.効果〕
上述してきたように、実施形態に係る情報処理装置100は、取得部131と、処理部(実施形態では生成部132)とを有する。取得部131は、クラスタリングの対象となる複数のオブジェクトを示すオブジェクト情報と、所定の処理における複数の基準を示す基準情報とを取得する。処理部は、取得部131により取得された基準情報が示す複数の基準を処理開始時点の候補基準とし、複数のオブジェクトのうち一部のオブジェクトを処理開始時点のオブジェクト群として、オブジェクト群を対象とした候補基準の各々を用いた所定のクラスタリング手法による複数のクラスタリング結果に応じて、候補基準のうち一部の基準を候補基準として残す基準として選択し、他の基準を候補基準から除外する選択処理を実行することにより、複数の基準のうち一の基準に対応する基準を、所定の処理に用いる基準である対象基準として決定する。
【0140】
このように、実施形態に係る情報処理装置100は、候補基準のうち一部の基準を候補基準として残す基準として選択し、他の基準を候補基準から除外する選択処理を実行することにより、複数の基準のうち一の基準に対応する基準を、所定の処理に用いる基準である対象基準として決定することにより、処理に用いる基準を適切に決定することができる。
【0141】
また、実施形態に係る情報処理装置100において、処理部は、オブジェクト群を対象とした候補基準の各々を用いたk-meansに関する手法による複数のクラスタリング結果に応じて、候補基準のうち一部の基準を候補基準として選択する選択処理を実行する。
【0142】
このように、実施形態に係る情報処理装置100は、k-meansに関する手法による複数のクラスタリング結果に応じて、候補基準のうち一部の基準を候補基準として選択する選択処理を実行することにより、処理に用いる基準を適切に決定することができる。
【0143】
また、実施形態に係る情報処理装置100において、処理部は、選択処理後に、複数のオブジェクトのうちオブジェクト群に含まれないオブジェクトをオブジェクト群に追加することにより、オブジェクト群を増加させ選択処理を繰り返すことにより、対象基準を決定する。
【0144】
このように、実施形態に係る情報処理装置100は、選択処理後に、複数のオブジェクトのうちオブジェクト群に含まれないオブジェクトをオブジェクト群に追加することにより、オブジェクト群を増加させ選択処理を繰り返し、対象基準を決定することにより、処理に用いる基準を適切に決定することができる。
【0145】
また、実施形態に係る情報処理装置100において、処理部は、選択処理後に、複数のオブジェクトのうち所定数のオブジェクトをオブジェクト群に追加することにより、オブジェクト群を増加させ選択処理を繰り返す。
【0146】
このように、実施形態に係る情報処理装置100は、選択処理後に、複数のオブジェクトのうち所定数のオブジェクトをオブジェクト群に追加することにより、オブジェクト群を増加させ選択処理を繰り返すことにより、処理に用いる基準を適切に決定することができる。
【0147】
また、実施形態に係る情報処理装置100において、処理部は、オブジェクト群の数に1よりも大きい係数を乗算した値のオブジェクトをオブジェクト群に追加することにより、オブジェクト群を増加させ選択処理を繰り返す。
【0148】
このように、実施形態に係る情報処理装置100は、オブジェクト群の数に1よりも大きい係数を乗算した値のオブジェクトをオブジェクト群に追加することにより、オブジェクト群を増加させ選択処理を繰り返すことにより、処理に用いる基準を適切に決定することができる。
【0149】
また、実施形態に係る情報処理装置100において、処理部は、候補基準が1つになるまで選択処理を繰り返すことにより、対象基準を決定する。
【0150】
このように、実施形態に係る情報処理装置100は、候補基準が1つになるまで選択処理を繰り返し、対象基準を決定することにより、処理に用いる基準を適切に決定することができる。
【0151】
また、実施形態に係る情報処理装置100において、処理部は、候補基準の各々に基づくオブジェクト群のクラスタリング結果に応じて、候補基準のうち、クラスタリングに関する評価が高い方から順に一部の基準を候補基準として選択する選択処理を実行する。
【0152】
このように、実施形態に係る情報処理装置100は、候補基準の各々に基づくオブジェクト群のクラスタリング結果に応じて、候補基準のうち、クラスタリングに関する評価が高い方から順に一部の基準を候補基準として選択する選択処理を実行することにより、処理に用いる基準を適切に決定することができる。
【0153】
また、実施形態に係る情報処理装置100において、処理部は、候補基準の各々に基づくオブジェクト群のクラスタリング結果に応じて、候補基準のうち、クラスタリングに関する誤差が小さい方から順に一部の基準を候補基準として選択する選択処理を実行する。
【0154】
このように、実施形態に係る情報処理装置100は、候補基準の各々に基づくオブジェクト群のクラスタリング結果に応じて、候補基準のうち、クラスタリングに関する誤差が小さい方から順に一部の基準を候補基準として選択する選択処理を実行することにより、処理に用いる基準を適切に決定することができる。
【0155】
また、実施形態に係る情報処理装置100において、処理部は、候補基準のうち、所定の関数に基づく所定の数の基準を残すことにより、候補基準に含まれる基準の数を減らす選択処理を実行する。
【0156】
このように、実施形態に係る情報処理装置100は、候補基準のうち、所定の関数に基づく所定の数の基準を残すことにより、候補基準に含まれる基準の数を減らす選択処理を実行することにより、処理に用いる基準を適切に決定することができる。
【0157】
また、実施形態に係る情報処理装置100において、処理部は、選択処理の度に所定の数を減少させる所定の関数に基づく所定の数の基準を候補基準として選択することにより、候補基準に含まれる基準の数を減らす選択処理を実行する。
【0158】
このように、実施形態に係る情報処理装置100は、選択処理の度に所定の数を減少させる所定の関数に基づく所定の数の基準を候補基準として選択することにより、候補基準に含まれる基準の数を減らす選択処理を実行することにより、処理に用いる基準を適切に決定することができる。
【0159】
また、実施形態に係る情報処理装置100において、処理部は、複数のオブジェクトの一部である第1オブジェクト群を対象としてクラスタリングすることにより、複数の基準の各々に対応する複数の第1クラスタリング結果を生成し、生成した複数の第1クラスタリング結果を用いて、複数の基準のうちクラスタリングに関する評価が高い方から順に第1数の基準を、第1候補基準として選択する第1の選択処理を実行し、第1の選択処理により選択された第1候補基準の各々に基づいて、複数のオブジェクトのうち第1オブジェクト群以外のオブジェクトを第1オブジェクト群に追加した第2オブジェクト群を対象としてクラスタリングすることにより、第1候補基準の各々に対応する複数の第2クラスタリング結果を生成し、生成した複数の第2クラスタリング結果を用いて、第1候補基準のうちクラスタリングに関する評価が高い方から順に第1数よりも少ない第2数の基準を、第2候補基準として選択する第2の選択処理を実行することにより、対象基準を決定する。
【0160】
このように、実施形態に係る情報処理装置100は、第1の選択処理及び第2の選択処理を実行し候補基準の次第に減らすことにより、処理に用いる基準を適切に決定することができる。
【0161】
また、実施形態に係る情報処理装置100において、処理部は、第2候補基準の各々に基づいて、複数のオブジェクトのうち第2オブジェクト群以外のオブジェクトを第2オブジェクト群に追加することにより更新した第2オブジェクト群を対象としてクラスタリングすることにより、第2候補基準の各々に対応する複数の第2クラスタリング結果を生成し、生成した複数の第2クラスタリング結果を用いて、第2候補基準のうちクラスタリングに関する評価が高い方から順に数を減らした更新後の第2数の基準を、第2候補基準として選択することにより、第2候補基準を更新する第3の選択処理を実行することにより、対象基準を決定する。
【0162】
このように、実施形態に係る情報処理装置100は、第3の選択処理を実行し候補基準の次第に減らすことにより、処理に用いる基準を適切に決定することができる。
【0163】
また、実施形態に係る情報処理装置100において、処理部は、第3の選択処理を繰り返すことにより、対象基準を決定する。
【0164】
このように、実施形態に係る情報処理装置100は、第3の選択処理を繰り返し実行し候補基準の次第に減らすことにより、処理に用いる基準を適切に決定することができる。
【0165】
また、実施形態に係る情報処理装置100において、処理部は、第2候補基準が1つになるまで第3の選択処理を繰り返すことにより、対象基準を決定する。
【0166】
このように、実施形態に係る情報処理装置100は、第2候補基準が1つになるまで第3の選択処理を繰り返すことにより、処理に用いる基準を適切に決定することができる。
【0167】
また、実施形態に係る情報処理装置100において、取得部131は、クラスタリングにおける複数のセントロイド群の各々に対応する複数の基準を示す基準情報を取得する。処理部は、複数のセントロイド群の各々を用いた複数のクラスタリング結果に応じて、選択処理を実行する。
【0168】
このように、実施形態に係る情報処理装置100は、複数のセントロイド群の各々を用いた複数のクラスタリング結果に応じて、選択処理を実行することにより、処理に用いる基準を適切に決定することができる。
【0169】
また、実施形態に係る情報処理装置100において、処理部は、候補基準が1つになるまで選択処理を繰り返すことにより、クラスタリングに用いるセントロイド群を決定する。
【0170】
このように、実施形態に係る情報処理装置100は、クラスタリングに用いるセントロイド群を決定することにより、クラスタリングに用いる基準を適切に決定することができる。
【0171】
また、実施形態に係る情報処理装置100において、取得部131は、直積量子化の最適化における複数の回転行列の各々に対応する複数の基準を示す基準情報を取得する。処理部は、複数の回転行列の各々を用いた複数のクラスタリング結果に応じて、選択処理を実行する。
【0172】
このように、実施形態に係る情報処理装置100は、複数の回転行列の各々を用いた複数のクラスタリング結果に応じて、選択処理を実行することにより、直積量子化の最適化に用いる基準を適切に決定することができる。
【0173】
また、実施形態に係る情報処理装置100において、処理部は、基準情報が示す回転行列を複数の回転行列の各々の初期回転行列として選択処理を実行する。
【0174】
このように、実施形態に係る情報処理装置100は、複数の回転行列の各々の初期回転行列として選択処理を実行することにより、処理に用いる基準を適切に決定することができる。
【0175】
また、実施形態に係る情報処理装置100において、処理部は、複数の回転行列の各々の最適化を含む選択処理を実行する。
【0176】
このように、実施形態に係る情報処理装置100は、複数の回転行列の各々の最適化を含む選択処理を実行することにより、処理に用いる基準を適切に決定することができる。
【0177】
また、実施形態に係る情報処理装置100において、取得部131は、データ検索の対象となる複数のオブジェクトを示すオブジェクト情報を取得する。処理部は、データ検索でのクラスタリングに用いる対象基準を決定する。
【0178】
このように、実施形態に係る情報処理装置100は、データ検索でのクラスタリングに用いる対象基準を決定することにより、処理に用いる基準を適切に決定することができる。
【0179】
〔3.ハードウェア構成〕
上述してきた各実施形態に係る情報処理装置100は、例えば
図8に示すような構成のコンピュータ1000によって実現される。
図8は、情報処理装置の機能を実現するコンピュータの一例を示すハードウェア構成図である。コンピュータ1000は、CPU1100、RAM1200、ROM(Read Only Memory)1300、HDD(Hard Disk Drive)1400、通信インターフェイス(I/F)1500、入出力インターフェイス(I/F)1600、及びメディアインターフェイス(I/F)1700を有する。
【0180】
CPU1100は、ROM1300またはHDD1400に格納されたプログラムに基づいて動作し、各部の制御を行う。ROM1300は、コンピュータ1000の起動時にCPU1100によって実行されるブートプログラムや、コンピュータ1000のハードウェアに依存するプログラム等を格納する。
【0181】
HDD1400は、CPU1100によって実行されるプログラム、及び、かかるプログラムによって使用されるデータ等を格納する。通信インターフェイス1500は、ネットワークNを介して他の機器からデータを受信してCPU1100へ送り、CPU1100が生成したデータをネットワークNを介して他の機器へ送信する。
【0182】
CPU1100は、入出力インターフェイス1600を介して、ディスプレイやプリンタ等の出力装置、及び、キーボードやマウス等の入力装置を制御する。CPU1100は、入出力インターフェイス1600を介して、入力装置からデータを取得する。また、CPU1100は、生成したデータを入出力インターフェイス1600を介して出力装置へ出力する。
【0183】
メディアインターフェイス1700は、記録媒体1800に格納されたプログラムまたはデータを読み取り、RAM1200を介してCPU1100に提供する。CPU1100は、かかるプログラムを、メディアインターフェイス1700を介して記録媒体1800からRAM1200上にロードし、ロードしたプログラムを実行する。記録媒体1800は、例えばDVD(Digital Versatile Disc)、PD(Phase change rewritable Disk)等の光学記録媒体、MO(Magneto-Optical disk)等の光磁気記録媒体、テープ媒体、磁気記録媒体、または半導体メモリ等である。
【0184】
例えば、コンピュータ1000が実施形態に係る情報処理装置100として機能する場合、コンピュータ1000のCPU1100は、RAM1200上にロードされたプログラムを実行することにより、制御部130の機能を実現する。コンピュータ1000のCPU1100は、これらのプログラムを記録媒体1800から読み取って実行するが、他の例として、他の装置からネットワークNを介してこれらのプログラムを取得してもよい。
【0185】
以上、本願の実施形態のいくつかを図面に基づいて詳細に説明したが、これらは例示であり、発明の開示の行に記載の態様を始めとして、当業者の知識に基づいて種々の変形、改良を施した他の形態で本発明を実施することが可能である。
【0186】
〔4.その他〕
また、上記実施形態において説明した各処理のうち、自動的に行われるものとして説明した処理の全部または一部を手動的に行うこともでき、あるいは、手動的に行われるものとして説明した処理の全部または一部を公知の方法で自動的に行うこともできる。この他、上記文書中や図面中で示した処理手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。例えば、各図に示した各種情報は、図示した情報に限られない。
【0187】
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的形態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。
【0188】
また、上述してきた各実施形態に記載された各処理は、処理内容を矛盾させない範囲で適宜組み合わせることが可能である。
【0189】
また、上述してきた「部(section、module、unit)」は、「手段」や「回路」などに読み替えることができる。例えば、取得部は、取得手段や取得回路に読み替えることができる。
【符号の説明】
【0190】
1 情報処理システム
10 端末装置
50 情報提供装置
100 情報処理装置
120 記憶部
121 オブジェクト情報記憶部
122 クラスタリング情報記憶部
123 量子化情報記憶部
124 コードブック情報記憶部
125 グラフ情報記憶部
130 制御部
131 取得部
132 生成部(処理部)
133 検索処理部
134 提供部