説明

高精度な類似検索システム

【課題】高精度な類似検索を実現する。
【解決手段】
pivot決定部によって登録用データからpivotを決定し、生データを取得し、前記生データから特徴量を抽出し、前記特徴量同士の距離或いは類似度としてスコアを計算し、前記pivotに対する前記スコアを用いて索引用ベクトルを生成し、前記索引用ベクトル同士の距離或いは類似度としてΔスコアを計算し、学習用データを用いて、回帰係数を含むnon−pivot毎のパラメータを学習し、検索用データと前記non−pivotとの前記Δスコアと前記回帰係数を用いて、ロジスティック回帰により事後確率の大きい順に前記non−pivotの選択順序を決定し、前記検索用データと前記登録用データとの前記スコアを基に、検索結果を出力する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、入力された非構造化データに類似するものを検索する方法およびシステムに関する。
【背景技術】
【0002】
入力された画像、動画、音楽、文書、バイナリデータ、生体情報などの非構造化データに対して、それに類似する非構造化データを検索することを類似検索と呼ぶ。類似検索は、一般には、生の非構造化データ(以後、生データと呼ぶ)から、距離計算(或いは類似度計算)のために用いられる特徴量と呼ばれる情報を抽出し、特徴量同士の不一致度合いを示す距離が小さいもの(或いは、特徴量同士の一致度合いを示す類似度が大きいもの)ほど類似していると見なすことで行なわれる。特徴量同士の距離(或いは類似度)をスコアと呼ぶ。
【0003】
例えば、検索時に入力された生データ(以後、検索用データと呼ぶ)とデータベースに登録されている生データ(以後、登録用データと呼ぶ)との距離(或いは類似度)を計算し、距離が小さい順(或いは類似度が大きい順)にk個登録用データを選択し、それらに関する情報を検索結果として出力する方法(k−Nearest Neighbor Search)や、距離(或いは類似度)が閾値rより小さい(或いは大きい)登録用データに関する情報を検索結果として出力する方法(Range Search)がある。
【0004】
このとき、登録用データの総数をNとすると、全ての登録用データに対してスコアを計算する場合、N回のスコア計算が必要となる。一般に、スコア計算には大きな時間が必要とされるので、登録用データ数Nが増加すれば、それにほぼ比例して検索時間がかかるようになる。これに対して、あらかじめ登録用データ同士のスコアを計算しておき、これを用いてスコアを計算する登録用データの選択順序を決定し、途中で登録用データとのスコアの計算を止めることで、スコアを計算する回数を削減する距離索引(Distance−based Indexing)が提案されている。
【0005】
例えば、E.CHAVEZ,K.FIGUEROA and G.NAVARRO,“Effective Proximity Retrieval by Ordering Permutations,”IEEE Trans. on Pattern Analysis and Machine Intelligence,Vol.30,No.9,pp.1647−1658(2008)(非特許文献1)では、検索前にN個の登録用データから、例えばランダムに、M個(M<N)の登録用データ(以後、pivotと呼ぶ)を選択し、各登録用データと各pivotとの距離を計算し、これを用いて検索時に用いるベクトル(以後、第1の索引用ベクトルと呼ぶ)を登録用データ毎に求めておき、検索時には入力された検索用データと各pivotとの距離を計算して検索用データの第2の索引用ベクトルを求めた後、第1と第2の索引用ベクトル同士の距離の小さい順となるように残りの登録用データ(以後、non−pivotと呼ぶ)の選択順序を決定している。索引用ベクトルとして、非特許文献1では距離の小さい順にpivotのIDを並べたベクトルを求めている。
【先行技術文献】
【非特許文献】
【0006】
【非特許文献1】E.CHAVEZ,K.FIGUEROA and G.NAVARRO,“Effective Proximity Retrieval by Ordering Permutations,”IEEE Trans. on Pattern Analysis and Machine Intelligence,Vol.30,No.9,pp.1647−1658(2008)
【発明の概要】
【発明が解決しようとする課題】
【0007】
非特許文献1では、第1と第2の索引用ベクトル同士の距離の小さい順となるようにnon−pivotとの選択順序を決定している。しかしながら、この方法では、途中でnon−pivotとのスコアの計算を止めたときに、検索用データからのスコアが閾値rより小さいにも関わらず、スコアが計算されずに終わる(即ち、検索漏れとなる)non−pivotの個数の期待値を減らすという観点、即ち、検索の精度という観点で改良の余地があった。
【0008】
本発明の目的は、スコアが計算されずに検索漏れとなるnon−pivotの個数の期待値を理論的に最小化することにある。
【課題を解決するための手段】
【0009】
上記目的を達成するために、登録用データからpivotを決定するpivot決定部と、生データを取得する生データ取得部と、前記生データから特徴量を抽出する特徴量抽出部と、前記特徴量同士の距離或いは類似度としてスコアを計算するスコア計算部と、前記pivotに対する前記スコアを用いて索引用ベクトルを生成する索引用ベクトル生成部と、前記索引用ベクトル同士の距離或いは類似度としてΔスコアを計算するΔスコア計算部と、学習用データを用いて、回帰係数を含むnon−pivot毎のパラメータを学習するnon−pivot毎パラメータ学習部と、入力された検索用データと前記non−pivotとの前記Δスコアと前記回帰係数を用いて、ロジスティック回帰により事後確率の大きい順に前記non−pivotの選択順序を決定するnon−pivot選択順序決定部と、前記検索用データと前記登録用データとの前記スコアを基に、検索結果を出力する検索結果出力部と、前記登録用データの前記特徴量と、前記登録用データのうちどれが前記pivotであるかが記されたpivot情報と、前記non−pivot毎の前記索引用ベクトルから構成されるインデックスと、前記non−pivot毎のパラメータを保持するデータベースを持つことを特徴とする。
【発明の効果】
【0010】
本発明によれば、non−pivot毎の回帰係数を用いて、ロジスティック回帰により、事後確率の大きい順にnon−pivotの選択順序を決定する。このようにすることで、検索用データからのスコアが閾値rより小さいにも関わらず、スコアが計算されずに検索漏れとなるnon−pivotの個数の期待値を理論的に最小化することが可能となる。その結果、精度が大幅に向上するという効果が得られる。
【図面の簡単な説明】
【0011】
【図1】本発明の第一の実施形態の機能構成を示すブロック図である。
【図2】本発明の第一、第二の実施形態のハードウェア構成を示すブロック図である。
【図3】本発明の第一の実施形態の登録処理を示すフロー図である。
【図4】本発明の第一、第二の実施形態の補助情報生成処理を示すフロー図である。
【図5】本発明の第一の実施形態の検索処理を示すフロー図である。
【図6】特徴量空間とインデックスを示す概略図である。
【図7】本発明の第二の実施形態の機能構成を示すブロック図である。
【図8】本発明の第二の実施形態の登録処理を示すフロー図である。
【図9】本発明の第二の実施形態の検索処理を示すフロー図である。
【発明を実施するための形態】
【実施例1】
【0012】
以下、図面を参照して、1つ目の実施形態について説明する。
【0013】
本実施形態の類似検索システムは、ユーザが画像を入力し、システムがサーバ端末内のデータベースから類似する画像を検索する類似画像検索システムである。画像の代わりに動画、音楽、文書、バイナリデータなどの非構造化データを用いるようにしても良い。本実施形態の類似検索システムでは、画像の特徴量としてカラーヒストグラムを用い、スコアとして特徴量同士のユークリッド距離を用いる。
【0014】
本実施形態の類似検索システムでは、あらかじめN個の登録データからM個をpivotとして選択する。pivotの選択方法としては、例えばランダムに選ぶ方法がある。次に、残りの各登録データ(各non−pivot)と各pivotとのスコアを計算し、これを基に検索時に用いる第1の索引用ベクトルをnon−pivot毎に求める。検索時には、入力された検索用データと各pivotとのスコアを計算し、これを基に検索用データの第2の索引用ベクトルを求める。索引用ベクトルは、各non−pivotと検索用データの位置関係を、直接スコアを求めることなく知る手がかりとなるベクトルである。一般に、検索用データと各登録用データとのスコア計算には大きな時間が必要とされるが、索引用ベクトル同士の距離(或いは類似度)(以後、Δスコアと呼ぶ)を用いてnon−pivotの選択順序を決定し、non−pivotとのスコア計算をT(<N−M)回行った後(Tは、あらかじめシステム管理者などが定めた上限値)、non−pivotとのスコア計算を途中で止めることで、スコアを計算する回数を削減する(即ち高速に検索を行う)ことが可能となる。
索引用ベクトルとしては、各pivotとのスコアで構成されるベクトル(以後、スコアベクトルと呼ぶ)であっても良いし、距離(或いは類似度)の小さい順(或いは大きい順)にpivotのIDを並べたベクトル(以後、順列ベクトルと呼ぶ)であっても良い。各non−pivotの第1の索引用ベクトルをまとめたものを、インデックスと呼ぶ。
【0015】
図6に、特徴量空間における検索用データQと各登録用データX、X、・・・、Xの例を示す。但し、X、X、・・・、Xはpivot、XM+1、XM+2、・・・、Xはnon−pivotを表す。ここでは2つのクラスタが形成されており、お互いのクラスタは大きく離れている。また、特徴量の次元数は非常に高く、特徴量同士のスコアを計算するのに大きな時間がかかる。
【0016】
図6(a1)(a2)に、索引用ベクトルとしてそれぞれスコアベクトル、順列ベクトルを用いた場合における検索用データの第2の索引用ベクトルと、インデックスの例を示す。但し、スコアとしては特徴量同士のユークリッド距離を用いている。
【0017】
例えば、図6(a1)では、XM+1とXとのスコアは70となっており、XM+1のスコアベクトルSM+1は、SM+1=(70,28,1053,・・・,43)となっている。また、図6(a2)では、XM+1と各pivotとのスコアの中で、最も小さいスコアを実現したpivotがXとなっており、XM+1のは、TM+1=(X,XM−1,・・・,Xとなっている。
【0018】
また、Δスコア(索引用ベクトル同士の距離或いは類似度)としては、索引用ベクトルとしてスコアベクトルを用いた場合では、例えば市街地距離、ユークリッド距離などが考えられ、順列ベクトルを用いた場合では、例えばSpearman Rhoなどが考えられる。また、上述した距離を距離としてとり得る値の最大値から差し引いたものなどを、類似度として用いるようにしても良い。
【0019】
例えば、索引用ベクトルとしてスコアベクトルを用い、Δスコアとしてユークリッド距離を用いた場合、検索用データのスコアベクトルS、登録用データXのスコアベクトルSとのユークリッド距離をD(S,S)とすると、
【0020】
【数1】

【0021】
で表される。ここで、S(z)はスコアベクトルSにおけるz番目の要素を表す。図6(a1)の場合では、D(S,SM+1)=(78−70)+(95−28)+・・・+(39−43)と計算できる。
【0022】
また、索引用ベクトルとして順列ベクトルを用い、ΔスコアとしてSpearman Rhoを用いた場合、検索用データの順列ベクトルT、登録用データXの順列ベクトルTとのSpearman RhoをDρ(T,T)とすると、
【0023】
【数2】

【0024】
で表される。ここで、T(z)は順列ベクトルTにおけるz番目の要素の添え字の数字を表す。例えば、T=(X,X,X,・・・,Xであれば、T(1)=2、T(2)=M、T(3)=1、・・・、T(M)=3である。また、T−1(i)は要素Xが順列ベクトルTの中で何番目の要素であるかを表す。例えば、T=(X,X,X,・・・,Xであれば、T−1(1)=2、T−1(2)=3、T−1(3)=M、・・・、T−1(M)=1である。図6(a2)の場合では、Dρ(T,TM+1)=(1−3)+(2−1)+・・・+(M−M)と計算できる。
【0025】
本実施形態の類似検索システムの第1の特徴は、各non−pivotの索引用ベクトルサイズ(索引用ベクトルの次元数)を、あらかじめ用意しておいたデータ(学習用データ)を用いて、検索前に一意に決定(学習)する点にある。但し、索引用ベクトルサイズを学習する方法の詳細については、後述する。
【0026】
図6(b1)(b2)に、索引用ベクトルとしてそれぞれスコアベクトル、順列ベクトルを用いた場合において、学習したnon−pivot毎の索引用ベクトルサイズの分だけ、索引用ベクトルを持つようにしたときのインデックスの例を示す。このとき、索引用ベクトルとしてスコアベクトルを用いる場合は、スコアベクトルとしてはスコアの小さい順、或いは大きい順にスコアベクトルサイズ分の要素を持つように配列し直し、該当するスコアがどのpivotに対するものかが分かるように、同じ長さの順列ベクトルも保持するようにしておく。
【0027】
例えば、図6(b1)では、XM+1のスコアベクトルサイズは3と学習されており、スコアベクトルSM+1=(28,43,70)を順列ベクトルTM+1=(X,X,Xと合わせて保持しておく。図6(b2)では、XM+1の順列ベクトルサイズは2と学習されており、順列ベクトルTM+1は、TM+1=(X,Xとなっている。図6(b1)(b2)において、塗り潰されている箇所はデータベースに保存しない。
【0028】
このように、本実施例では、学習用データを用いて、non−pivot毎に索引用ベクトルサイズを学習し、各non−pivotの索引用ベクトルは、当該non−pivotの索引用ベクトルサイズの分だけ保存する。このようにすることで、non−pivot毎に索引用ベクトルサイズを減らすことが可能となる。その結果、データベースに保存するインデックスのサイズを減らすことができるため、システムの軽量化が実現できるという効果が得られる。但し、索引用ベクトルサイズを学習する方法の詳細については、後述する。
【0029】
尚、この場合におけるΔスコアは、索引用ベクトルとしてスコアベクトルを用い、Δスコアとしてユークリッド距離を用いた場合、検索用データのスコアベクトルS、登録用データXのスコアベクトルS(順列ベクトルはT、スコアベクトルサイズはZ)とのユークリッド距離をD(S,S,T,Z)とすると、
【0030】
【数3】

【0031】
で表される。図6(b1)の場合では、D(S,SM+1,T,Z)=(95−28)+(39−43)+・・・+(78−70)と計算できる。
【0032】
また、索引用ベクトルとして順列ベクトルを用い、ΔスコアとしてSpearman Rhoを用いた場合、検索用データの順列ベクトルT、登録用データXの順列ベクトルT(順列ベクトルサイズはZ)とのSpearman RhoをDρ(T,T,Z)とすると、
【0033】
【数4】

【0034】
で表される。図6(a2)の場合では、Dρ(T,TM+1,Z)=(1−3)+(2−1)と計算できる。
【0035】
このように、本実施例では検索用データとnon−pivotとの、索引用ベクトルサイズ分のΔスコア(即ち、Z次元ベクトル同士の距離)を計算する。このようにすることで、pivotの数(M個)分のΔスコア(即ち、M次元ベクトル同士の距離)を計算する場合と比べて、Δスコアの計算時間が短くて済む。その結果、速度が向上するという効果が得られる。
【0036】
本実施形態の類似検索システムの第2の特徴は、このようにして各non−pivotに対するΔスコアΔSq,M+1、・・・、Δq,Nが得られた後、ロジスティック回帰を用いて、検索用データからのスコアsq,iが閾値rより小さいという事後確率P(sq,i<r|ΔSq,i)(M+1≦i≦N)の大きい順にnon−pivotの選択順序を決定する点にある。事後確率P(sq,i<r|ΔSq,i)は、ベイズの定理を用いて以下のように変形できる。
【0037】
【数5】

但し、σ( )はロジスティックシグモイド関数であり、aは、
【0038】
【数6】

【0039】
である。ロジスティックシグモイド関数σ( )は単調増加の関数であるため、aの大きい順にnon−pivotの選択順序を決定すれば、事後確率P(sq,i<r|ΔSq,i)の大きい順にnon−pivotの選択順序を決定できることになる。aは、ロジスティック回帰を用いて求めることができる。ロジスティック回帰では、aを、
【0040】
【数7】

【0041】
と近似的に求める。wi,1とwi,0は、non−pivot毎のロジスティック回帰の回帰係数である(M+1≦i≦N)。回帰係数としては、non−pivot共通の値を用いる方法も考えられるが、回帰係数は厳密にはnon−pivot毎に異なる値をとるため、non−pivot毎の回帰係数を用いた方が、aをより厳密に求めることが可能となる。また、数7より、aはΔスコアΔSq,iに対して1回の掛け算と1回の足し算を行うことで近似的に求めることができるので、aの計算にはほとんど時間がかからない。回帰係数は、索引用ベクトルサイズと同様、あらかじめ用意しておいたデータ(学習用データ)を用いて、検索前に一意に決定(学習)しておく。但し、回帰係数を学習する方法の詳細については、後述する。
【0042】
ここで、各non−pivotに対するΔスコアΔSq,M+1、・・・、ΔSq,Nの集合をΔとし、その後、選択順序がe(1≦e≦N−M)番目と決定されたnon−pivotをXm(e)(M+1≦m(e)≦N)とすると、non−pivotとのスコアをT(<N−M)回計算した後、検索用データからのスコアが閾値rより小さいにも関わらず、スコアが計算されずに終わる(即ち、検索漏れとなる)non−pivotの個数の期待値は、
【0043】
【数8】

【0044】
と表せる。但し、2行目から3行目の近似は、non−pivotXm(e)の事後確率に最も大きな影響を与えるのは、Xm(e)に対するΔスコアΔSq,m(e)であることを用いている。数8は、まだスコアの計算を行っていないnon−pivotXm(e)の事後確率P(sq,m(e)<r|ΔSq,m(e))の総和で近似できているが、この総和は事後確率P(sq,m(e)<r|ΔSq,m(e))の大きい順にnon−pivotとのスコアをT回計算したときに最小化することができる。
【0045】
従って、本実施例では、non−pivot毎の回帰係数を用いて、ロジスティック回帰により、事後確率の大きい順にnon−pivotの選択順序を決定するが、このようにすることで、検索用データからのスコアが閾値rより小さいにも関わらず、スコアが計算されずに検索漏れとなるnon−pivotの個数の期待値を理論的に最小化することが可能となる。その結果、精度が大幅に向上するという効果が得られる。但し、回帰係数を学習する方法の詳細については、後述する。
【0046】
図1に本実施形態の類似検索システムの構成例を示す。本実施形態では、生データは画像である。
【0047】
このシステムは、ユーザから取得した登録情報をサーバ端末へ送信する登録端末100と、登録情報を保存し、登録情報から補助情報を生成し、登録情報と補助情報を用いて検索用の生データに対する類似検索を行なうサーバ端末200と、ユーザが入力した検索用の生データをサーバ端末200に送信するクライアント端末300と、ネットワーク400から構成される。
【0048】
登録端末100とサーバ端末200とクライアント端末300は、それぞれ1台でも良いし、複数台存在しても良い。また、登録端末100はサーバ端末200と同一の端末であっても良いし、クライアント端末300と同一の端末であっても良い。また、登録端末100は無くても良い。また、サーバ端末200はクライアント端末300と同一の端末であっても良い。ネットワーク400は、WANやLANなどのネットワーク、USBやIEEE1394などを用いた機器間の通信、或いは携帯電話網やBlueToothなどの無線通信を用いても良い。
【0049】
例えば、登録端末100は企業内の複数のPC、サーバ端末200は企業が運用するデータセンタ内の1台のサーバ、クライアント端末300は複数のユーザの個人PC、ネットワーク400はインターネットとする構成にし、企業内の従業員が画像の登録を行うようにする運用が考えられる。このとき、登録端末100をデータセンタ内のサーバにして、サーバ管理者が画像の登録を行うようにしても良い。または、登録端末100をユーザの個人PCにして、ユーザが画像の登録を行うようにしても良い。または、登録端末100を持たずに、サーバ端末200がインターネットから自動的に収集するようにしても良い。または、登録端末100とサーバ端末200とクライアント端末300をユーザの個人PCにして、個人PC内で画像の登録、補助情報生成、検索を行うようにしても良い。
【0050】
登録端末100は、生データを取得する生データ取得部101と、通信I/F102とから構成される。
【0051】
サーバ端末200は、N個の登録用データの中からM個のpivotを決定するpivot決定部201と、生データから特徴量を抽出する特徴量抽出部202と、特徴量同士の距離(或いは類似度)としてスコアを計算するスコア計算部203と、non−pivotまたは検索用データのpivotに対するスコアを用いて索引用ベクトルを生成する索引用ベクトル生成部204と、索引用ベクトル同士の距離(或いは類似度)(以後、Δスコアと呼ぶ)を計算するΔスコア計算部205と、学習用データを用いて、non−pivot毎のパラメータを学習するnon−pivot毎パラメータ学習部206と、入力された検索用データとnon−pivotとのΔスコアを用いて前記non−pivotの選択順序を決定するnon−pivot選択順序決定部207と、検索用データと登録用データとのスコアを基に、検索結果を出力する検索結果出力部208と、通信I/F209と、データベース210とから構成される。
【0052】
データベース210は、マスタデータ220を保持する。マスタデータ220は、各登録ユーザの登録情報230と、補助情報240を保持する。登録情報230は、登録用データ毎に、登録用データID231と、生データ232と、特徴量233を保持する。補助情報240は、登録用データのうちどれがpivotであるかが記されたpivot情報241と、インデックス242と、non−pivot毎のパラメータ250を保持する。インデックス242は、non−pivot毎に、索引用ベクトル243を保持する。non−pivot毎のパラメータ250は、non−pivot毎に、索引用ベクトルサイズ251と、ロジスティック回帰で用いる回帰係数252を保持する。
【0053】
クライアント端末300は、生データを取得する生データ取得部301と、通信I/F302とから構成される。
【0054】
図2に、本実施形態における登録端末100、サーバ端末200、クライアント端末300のハードウェア構成を示す。これらの端末は、図のようにCPU500と、メモリ501と、HDD502と、入力装置503と、出力装置504と、通信装置505とから構成することができる。
【0055】
図3に、本実施形態における登録の処理手順およびデータの流れを示す。
【0056】
登録端末100は、ユーザから登録用の生データを取得する(ステップS101)。
【0057】
登録端末100は、登録用の生データをサーバ端末200に送信する(ステップS102)。
【0058】
サーバ端末200は、登録用の生データから登録用の特徴量を抽出する(ステップS103)。
【0059】
サーバ端末200は、登録用データに固有の登録用データID231と、登録用の生データ232と、登録用の特徴量233とから構成される登録情報230を、データベース210に保存する(ステップS104)。
【0060】
図4に、本実施形態における補助情報生成の処理手順およびデータの流れを示す。本処理は、登録処理を行なってから検索処理を行なうまでの間に行なう。例えば、登録直後、或いは登録を行なった日の夜間に行なうなどの方法が考えられる。また、本処理は補助情報を新規生成する場合と、前回の補助情報生成時以来、追加された登録用データの分について補助情報を更新する場合の2通りの場合がある。
【0061】
サーバ端末200は、補助情報を新規生成する場合は各登録用ユーザの登録情報230を、補助情報を更新する場合は追加された登録情報230をデータベース210から取得する(ステップS201)。
【0062】
サーバ端末200は、補助情報を新規生成する場合、N個の登録情報230の生データ232の中からM個のpivotを新たに決定する(ステップS202)。補助情報を更新する場合は、このステップを省略し、追加された登録情報230の生データ232をnon−pivotとする。pivotの決定方法は、ランダムに選択する方法や、pivotを選択するたびに、それまでに決定したpivotとのスコア或いはΔスコアの総和が最小(或いは最大)となるものをpivotとする、などの方法がある。
【0063】
サーバ端末200は、補助情報を新規生成する場合はN−M個の各non−pivotに対して、補助情報を更新する場合は追加された各non−pivotに対して、各pivotとのスコアを求めて索引用ベクトル243を生成する。(ステップS203)。
【0064】
サーバ端末200は、補助情報を新規生成する場合はN−M個の各non−pivotに対して、補助情報を更新する場合は追加された各non−pivotに対して、索引用ベクトルサイズ251とロジスティック回帰で用いる回帰係数252で構成されるパラメータ250を、あらかじめ用意しておいたデータ(学習用データ)を用いて一意に決定(学習)する(ステップS204)。索引用ベクトルサイズ251と回帰係数252で構成されるパラメータ250の学習方法の詳細は後述する。
【0065】
サーバ端末200は、補助情報を新規生成する場合は登録用データのうちどれがpivotであるかが記されたpivot情報241と、N−M個の各non−pivotの索引用ベクトル243から構成されるインデックス242と、学習したnon−pivot毎の索引用ベクトルサイズ251と回帰係数252で構成されるパラメータ250とを補助情報240として、データベース210に保存する。補助情報を更新する場合は生成された索引用ベクトル243をデータベース210のインデックス242に追加し、学習したnon−pivot毎の索引用ベクトルサイズ251と回帰係数252をパラメータ250に追加する。このとき、各non−pivotの索引用ベクトル243は、当該non−pivotの索引用ベクトルサイズ251の分を保存、或いは追加する(ステップS205)。
【0066】
図5に、本実施形態における検索の処理手順およびデータの流れを示す。
【0067】
サーバ端末200は、データベース210からマスタデータ220を取得する(ステップS301)。
【0068】
クライアント端末300は、ユーザから検索用の生データを取得する(ステップS302)。
【0069】
クライアント端末300は、検索用の生データをサーバ端末200に送信する(ステップS303)。
【0070】
サーバ端末200は、検索用の生データから検索用の特徴量を抽出する(ステップS304)。
【0071】
サーバ端末200は、検索用データと各pivotとのスコアを計算する(ステップS305)。
【0072】
サーバ端末200は、検索用データと各pivotとのスコアを基に、検索用データの索引用ベクトルを生成する(ステップS306)。
【0073】
サーバ端末200は、検索用データの索引用ベクトルと、non−pivot毎の索引用ベクトルから構成されるインデックス242と、non−pivot毎の索引用ベクトルサイズ251を用いて、検索用データとnon−pivotとのΔスコアを、各non−pivotに対して計算する(ステップS307)。
【0074】
サーバ端末200は、各non−pivotに対するΔスコアΔSq,M+1、・・・、Δq,Nを基に、non−pivot毎のロジスティック回帰の回帰係数wi,1とwi,0を用いて、検索用データからのスコアsq,iが閾値rより小さい事後確率P(sq,i<r|ΔSq,i)(M+1≦i≦N)と単調増加の関係にある値aを数7によって求め、aの大きい順にnon−pivotの選択順序を決定する。(ステップS308)。
【0075】
サーバ端末200は、検索用データとnon−pivotとのスコア計算回数tを0に初期化する(ステップS309)。
【0076】
サーバ端末200は、検索用データとステップS308で決定したnon−pivotの選択順序に従って選択したnon−pivotとのスコアを計算する(ステップS310)。
【0077】
サーバ端末200は、検索用データとnon−pivotとのスコア計算回数tを1増やす(ステップS311)。
【0078】
サーバ端末200は、検索用データとnon−pivotとのスコア計算回数tが上限値T以下であればステップS310に、上限値Tより大きければステップS313に進む(ステップS312)。
【0079】
サーバ端末200は、クライアント端末300に検索結果の生データ232を送信する(ステップS313)。このとき、スコアの小さい順(或いは大きい順)にk個登録用データを選択し、それらを検索結果とする方法(k−Nearest Neighbor Search)を採用しても良いし、スコアが閾値rより小さい(或いは大きい)登録用データを検索結果とする方法(Range Search)を採用しても良い。
【0080】
クライアント端末300は、検索結果の生データ232を表示する(ステップS314)。
【0081】
以下、ステップS204において、各non−pivotに対して索引用ベクトルサイズ251と回帰係数252で構成されるパラメータ250を学習データを用いて学習する方法について、その詳細を述べる。学習用データとしては、パラメータを学習する当該non−pivot以外のN−1個のnon−pivotを用いても良いし、或いは登録用データとは別にあらかじめ用意しておいたデータを用いても良い。
【0082】
まず、索引用ベクトルサイズZをある値に固定したときの回帰係数wi,1、wi,0の学習方法を述べる。学習用データをQ、Q、・・・、QN’とする(N’は学習用データの個数)。また、学習用データQj(1≦j≦N’)とnon−pivotX(M+1≦i≦N)とのΔスコアをΔSj,iとし、各学習用データQj(1≦j≦N’)のnon−pivotXに対するΔスコアの集合を、
【0083】
【数9】

【0084】
とする。
【0085】
例えば、索引用ベクトルとしてスコアベクトルを用い、Δスコアとしてユークリッド距離を用いた場合は、ΔSj,iはD(Sqj,S,T,Z)と表すことができ(Sqjは学習用データQのスコアベクトル)、数3によって計算できる。索引用ベクトルとして順列ベクトルを用い、ΔスコアとしてSpearman Rhoを用いた場合、ΔSj,iはDρ(Tqj,T,Z)であり(Tqjは学習用データQの順列ベクトル)、数4によって計算できる。
【0086】
さらに、学習用データQj(1≦j≦N’)とnon−pivotX(M+1≦i≦N)とのスコアsj,iが閾値rより小さい場合に1、それ以外の場合に0をとるラベルをLjiとし、各学習用データQj(1≦j≦N’)のnon−pivotXに対するラベルの集合を、
【0087】
【数10】

【0088】
とする。
【0089】
またさらに、non−pivotXの回帰係数を、wi,1、wi,0を並べて、
【0090】
【数11】

【0091】
とベクトルの形で表すことにする。本実施例では、non−pivotXに対するΔスコアの集合ΔSとラベルの集合Lを回帰係数wの学習に用いる。
【0092】
回帰係数の学習方法としては、最大事後確率(Maximum A Posterior)推定、最尤(Maximum Likelihood)推定を用いる方法がある。non−pivotXに対するΔスコアの集合ΔSとラベルの集合Lを用いて、最大事後確率推定により回帰係数wを学習する場合、
【0093】
【数12】

【0094】
とパラメータwMAPを求め、これを学習結果とする。但し、2行目から4行目の変形にかけてはベイズの定理を用いており、4行目から5行目の変形にかけてはΔSとwが互いに独立である(即ち、P(ΔS|w)=P(ΔS))と仮定している。5行目から6行目の変形にかけてはP(ΔS)がwによらず一定であることを用いている。また、argmax f(x)はf(x)を最大にするxを示す。最尤推定により回帰係数wを学習する場合、
【0095】
【数13】

【0096】
とパラメータwMLを求め、これを学習結果とする。
【0097】
数12と数13に示されているように、最大事後確率推定では、回帰係数wの事前確率P(w)も考慮して回帰係数を学習する点が最尤推定と異なる。このように、最大事後確率推定では回帰係数の事前確率を考慮することで、学習用データの数が少ない場合においても、最尤推定より頑健に回帰係数を学習できるという特長を持っている。特に、本実施例では、1をとるラベルLjiの数(即ち、non−pivotXと類似している学習用データQの数)が一般には非常に少ないため、最尤推定では回帰係数を適切に学習できない可能性がある。このような場合でも、最大事後確率推定であれば回帰係数をより適切に学習できる。
【0098】
P(L|ΔS,w)は、
【0099】
【数14】

【0100】
と求めることができる。但し、1行目から2行目にかけてはラベルLjiが、学習用データQとnon−pivotXとのスコアsj,iが閾値rより小さい場合に1、それ以外の場合に0をとり、ΔスコアΔSj,iに依存することを用いている。また、aj,iは、
【0101】
【数15】

【0102】
であり、前述のロジスティック回帰を用いることで、
【0103】
【数16】

【0104】
と求めることができる。
【0105】
P(w)は、例えば平均ベクトル0、分散共分散行列Σの正規分布を仮定し、
【0106】
【数17】

【0107】
と求める方法がある。Σは適当な値をあらかじめ設定する方法や、学習用データを基に経験ベイズ法を用いて自動的に決定する方法などがある。また、0以外の平均ベクトルを用いても良いし、分布モデルとして指数分布やガンマ分布など、正規分布以外のものを用いても良い。
【0108】
このとき、最大事後確率推定或いは最尤推定によって求める(即ち、数16或いは数17を最大化する)回帰係数wMAP或いはwMLは、例えばニュートン−ラフソン法を用いて算出できる。これは、回帰係数wの最大事後確率推定値wMAP或いは最尤推定値wMLを、以下の手順で逐次的に求める手法である。
1.wの初期値w(0)を適当に設定する。例えば、w(0)=0とする。τ←0とする。
2.以下のようにw(τ+1)を求める。τは逐次計算の回数である。
【0109】
【数18】

【0110】
但し、E(w(τ))は事後確率、或いは尤度の負の対数をとったものである。∇は微分演算子ベクトルである。これを誤差関数と呼ぶ。最大事後確率推定の場合は、
【0111】
【数19】

【0112】
であり、最尤推定の場合は、
【0113】
【数20】

【0114】
である。また、∇E(w(τ))、∇∇E(w(τ))はそれぞれE(w(τ))の1階微分の列ベクトル、2階微分の行列である。例えば、最大事後確率推定の場合において、数14、数16、数17を用いた場合、
【0115】
【数21】

【0116】
【数22】

【0117】
のように求めることができる。但し、
【0118】
【数23】

【0119】
【数24】

【0120】
である。
3.w(τ+1)と(w(τ))との差が十分小さい、或いはτがある一定値を超えたらw(τ+1)をwMAP或いはwMLとして終了する。そうでなければ、τ←τ+1として、2.に戻る。
【0121】
次に、索引用ベクトルサイズZの学習方法を述べる。これは、索引用ベクトルサイズZを様々な値(例えば、1からMまでの値)に変えて上記の操作を行い、その中で誤差関数がなるべく小さくなるwMAP或いはwMLとそれを実現したZを、学習結果とすれば良い。このようにすれば、精度の観点で最も優れたパラメータを求めることが可能となる。
【0122】
或いは、インデックスのサイズがある一定値以下となるうち、誤差関数のnon−pivotに対する総和がなるべく小さくなるように、non−pivot毎のパラメータを学習するようにしても良い。これは、インデックスのサイズがある一定値以下となる範囲内で、各non−pivotのZを様々な値に変えてみて、誤差関数のnon−pivotに対する総和が最も大きくなるときのwMAPとそれを実現したZを学習結果とすれば良い(M+1≦i≦N)。このようにすることで、補助情報のサイズに要求値を設けたとき、それを満たす範囲内で精度の観点で最も優れた性能を実現することが可能となる。
【0123】
また、本実施例では、ラベルLji(1≦j≦N’,M+1≦i≦N)を求めるために計(N−M)×N’個のスコアを計算する必要があり、一般にはこれに大きな時間がかかる。そこで、non−pivot毎に、各学習用データ(N’個)とのΔスコアを求め、その小さい順にν’(<N’)個の学習用データを選択し(ν’は、あらかじめシステム管理者などが定めた値)、それらを学習に用いるようにしても良い。Δスコアが小さい学習用データはnon−pivotと類似している可能性が高いため、このようにすることでラベルLjiの数が1をとる(即ち、non−pivotXと類似している)学習用データQがなるべく減らないようにしつつ、学習に必要なスコアの計算回数を計(N−M)×ν’個まで減らすことが可能となる。その結果、学習が高速に行えるようになる、という効果が得られる。
【0124】
また、例えば図6のように登録用データが特徴量空間上で幾つかのクラスタを形成している場合、索引用ベクトルサイズなどのパラメータは各クラスタで似た、或いは同じ値をとる可能性がある。
【0125】
従って、本実施例では、non−pivotに対してクラスタリングを行い、得られたクラスタ毎にパラメータの一部或いは全部が共通となるように、non−pivot毎のパラメータを学習するようにしても良い。クラスタリングの手法としては、最短距離法、最長距離法、群平均法、ウォード法などの階層的手法を用いても良いし、K平均法などの非階層的手法を用いても良い。このようにクラスタ毎に共通のパラメータを学習することで、パラメータのサイズを減らすことが可能となる。その結果、システムのさらなる軽量化が実現できるという効果が得られる。
【0126】
また、本実施例において登録用データを学習用データとして用いる場合、登録用データが追加されたとき、学習用データの索引用ベクトルサイズが小さいためにパラメータの学習がうまく行えなくなる可能性がある。しかしながら、上記のようにクラスタ毎に共通のパラメータを学習すれば、登録用データが追加されたときにおいても、当該登録用データが属するクラスタに共通のパラメータを用いることで、容易にパラメータの学習を行うことが可能となる。
【実施例2】
【0127】
以下、図面を参照して、2つ目の実施形態について説明する。本実施形態の類似検索システムは、認証を試みるユーザ(以後、認証ユーザ)が生体情報を入力し、システムがクライアント端末内のデータベースから類似する生体情報を検索することで、認証ユーザがデータベースに登録されているユーザ(以後、登録ユーザ)のうち誰か(或いは誰でもないか)を識別し、その結果に基づいて認証を行なう生体識別システムである。
【0128】
図7に本実施形態の生体識別システムの構成例を示す。ここでは、図1と異なる点について述べる。本実施形態では、生データは生体情報である。
【0129】
このシステムは、ユーザから取得した生体情報の特徴量をサーバ端末へ送信する登録端末100と、登録情報を保存し、登録情報から補助情報を生成し、登録情報と補助情報を用いて認証用の特徴量に対する生体識別を行なうサーバ端末200と、グループIDとユーザが入力した認証用の特徴量をサーバ端末200に送信するクライアント端末300と、ネットワーク400から構成される。
【0130】
例えば、企業内の情報アクセス制御システム、或いは勤怠管理システムであれば、登録端末100は企業内の複数のPC、サーバ端末200は企業が運用するデータセンタ内の1台のサーバ、クライアント端末300は複数の従業員のPC、ネットワーク400はインターネットとする構成にする方法が考えられる。また、企業内の入退室管理システムであれば、登録端末100とサーバ端末200とクライアント端末300を同一の入退室管理装置とする構成にする方法が考えられる。グループID221は、ユーザの所属する事業所に固有の値となるようにしても良いし、クライアント端末300毎、或いは拠点毎に固有の値となるように設定しても良い。前者の場合、ユーザが認証時にグループIDを入力する運用が考えられる。後者の場合、ユーザは認証時にグループIDを入力しなくても良い。
【0131】
登録端末100は、グループIDとユーザ名を取得するグループID・ユーザ名取得部103と、生データから特徴量を抽出する特徴量抽出部104をさらに持つ。
【0132】
サーバ端末200は、特徴量抽出部202を持たず、グループ絞込み部209aを持ち、グループID毎にマスタデータ220を持つ。マスタデータ220は、グループID221を持つ。登録情報230は、生データ232を持たず、登録用データ毎にユーザ名234を持つ。
【0133】
生体情報の特徴量としては、例えば指紋であればマニューシャ、虹彩であれば虹彩コード、声紋であればケプストラムなどが考えられる。また、2つの生体情報同士のスコアとしては、指紋であれば対応するマニューシャの数や割合、虹彩であればハミング距離、声紋であればマハラノビス距離などが考えられる。
【0134】
クライアント端末300は、グループIDを取得するグループID取得部303と、生データから特徴量を抽出する特徴量抽出部304をさらに持つ。
【0135】
本実施形態における登録端末100、サーバ端末200、クライアント端末300のハードウェア構成は図2と同じである。
【0136】
図8に、本実施形態における登録処理の処理手順およびデータの流れを示す。図8のステップS101は、図3のステップS101と同じである。
【0137】
登録端末100は、ユーザからグループIDとユーザ名を取得する(ステップS101a)。
【0138】
登録端末100は、登録用の生データから登録用の特徴量を抽出する(ステップS102a)。
【0139】
登録端末100は、グループIDとユーザ名と登録用の特徴量をサーバ端末200に送信する(ステップS103a)。
【0140】
サーバ端末200は、当該グループIDに対応するマスタデータ220がデータベース210にあれば、登録用データに固有の登録用データID231と、ユーザ名234と、登録用の特徴量233とから構成される登録情報230を、そのマスタデータ220に追加する。マスタデータ220がなければ、当該グループID221と、登録用データに固有の登録用データID231と、ユーザ名234と、登録用の特徴量233とから構成される登録情報230を新しく作成する(ステップS104a)。
【0141】
本実施形態における補助情報生成処理の処理手順およびデータの流れは図4と同じである。但し、グループID毎に本処理を行う。登録情報230の数Nと、pivotの数MはグループID毎に異なっていても良い。
【0142】
図9に、本実施形態における検索処理の処理手順およびデータの流れを示す。図9のステップS302、S305〜S312、S314は、図3のステップS302、S305〜S312、S314と同じである。
【0143】
サーバ端末200は、データベース210からグループID毎にマスタデータ220を取得する(ステップS301a)。
【0144】
クライアント端末300は、ユーザからグループIDを取得する(ステップS302a)。グループIDは、クライアント端末300毎、或いは拠点毎に固有の値になるようにしても良く、この場合はユーザから取得しなくても良い。
【0145】
クライアント端末300は、検索用の生データから検索用の特徴量を抽出する(ステップS303a)。
【0146】
クライアント端末300は、グループIDと検索用の特徴量をサーバ端末200に送信する(ステップS304a)。
【0147】
サーバ端末200は、取得したグループIDに対応するマスタデータを検索対象とする。以後のステップでは検索対象としたマスタデータについて行う(ステップS305a)。
【0148】
このように、本実施例ではグループIDを用いた登録用データの絞込みを行う。これによって、スコアを計算する登録用データの数を大幅に減らすことが可能となる。その結果、速度が一層向上するという効果が得られる。
【0149】
サーバ端末200は、クライアント端末300に検索結果の登録用データに対応するユーザ名234を送信する(ステップS313a)。
【0150】
クライアント端末300は、検索結果の登録用データに対応するユーザ名234を表示する(ステップS314a)。
【産業上の利用可能性】
【0151】
本発明は、画像、動画、音楽、文書、バイナリデータ、生体情報などの非構造化データの類似検索を行なう任意のアプリケーションに対して適用可能である。例えば、類似画像検索システム、類似動画検索システム、類似音楽検索システム、類似文書検索システム、ファジーハッシュを用いた類似ファイル検索システム、情報アクセス制御システム、勤怠管理システム、入退室管理システムなどへの適用が可能である。
【符号の説明】
【0152】
100 登録端末
101 生データ取得部
102 通信I/F
103 グループID・ユーザ名取得部
104 特徴量抽出部
200 サーバ端末
201 pivot決定部
202 特徴量抽出部
203 スコア計算部
204 索引用ベクトル生成部
205 Δスコア計算部
206 non−pivot毎パラメータ学習部
207 non−pivot選択順序決定部
208 検索結果出力部
209 通信I/F
209a グループ絞込み部
210 データベース
220 マスタデータ
221 グループID
230 登録情報
231 登録用データID
232 生データ
233 特徴量
234 ユーザ名
240 補助情報
241 pivot情報
242 インデックス
250 non−pivot毎のパラメータ
251 索引用ベクトルサイズ
252 回帰係数
300 クライアント端末
301 生データ取得部
302 通信I/F
303 グループID取得部
304 特徴量抽出部
400 ネットワーク
500 CPU
501 メモリ
502 HDD
503 入力装置
504 出力装置
505 通信装置

【特許請求の範囲】
【請求項1】
登録用データからpivotを決定するpivot決定部と、
生データを取得する生データ取得部と、
前記生データから特徴量を抽出する特徴量抽出部と、
前記特徴量同士の距離或いは類似度としてスコアを計算するスコア計算部と、
前記pivotに対する前記スコアを用いて索引用ベクトルを生成する索引用ベクトル生成部と、
前記索引用ベクトル同士の距離或いは類似度としてΔスコアを計算するΔスコア計算部と、
学習用データを用いて、回帰係数を含むnon−pivot毎のパラメータを学習するnon−pivot毎パラメータ学習部と、
検索用データと前記non−pivotとの前記Δスコアと前記回帰係数を用いて、ロジスティック回帰により事後確率の大きい順に前記non−pivotの選択順序を決定するnon−pivot選択順序決定部と、
前記検索用データと前記登録用データとの前記スコアを基に、検索結果を出力する検索結果出力部と、
前記登録用データの前記特徴量と、前記登録用データのうちどれが前記pivotであるかが記されたpivot情報と、前記non−pivot毎の前記索引用ベクトルから構成されるインデックスと、前記non−pivot毎のパラメータを保持するデータベースを持つ
ことを特徴とする類似検索システム。
【請求項2】
前記non−pivot毎パラメータ学習部は、
索引用ベクトルサイズを含むnon−pivot毎のパラメータを学習する
ことを特徴とする請求項1に記載の類似検索システム。
【請求項3】
前記non−pivot毎パラメータ学習部は、
誤差関数がなるべく小さくなるように、前記索引用ベクトルサイズを含むnon−pivot毎の前記パラメータを学習する
ことを特徴とする請求項2に記載の類似検索システム。
【請求項4】
前記non−pivot毎パラメータ学習部は、
前記インデックスのサイズがある一定値以下となるうち、誤差関数の前記non−pivotに対する総和がなるべく小さくなるように、前記索引用ベクトルサイズを含むnon−pivot毎の前記パラメータを学習する
ことを特徴とする請求項2に記載の類似検索システム。
【請求項5】
前記non−pivot毎パラメータ学習部は、
最大事後確率推定により前記non−pivot毎の前記パラメータを学習する
ことを特徴とする請求項1ないし4に記載の類似検索システム。
【請求項6】
前記non−pivot毎パラメータ学習部は、
最尤推定により前記non−pivot毎の前記パラメータを学習する
ことを特徴とする請求項1ないし5に記載の類似検索システム。
【請求項7】
前記non−pivot毎パラメータ学習部は、
前記non−pivot毎に、前記学習用データとのΔスコアを計算し、前記Δスコアを用いて学習に用いる前記学習用データを選択する
ことを特徴とする請求項1ないし6に記載の類似検索システム。
【請求項8】
前記non−pivot毎パラメータ学習部は、
前記学習用データとして前記登録用データを用いる
ことを特徴とする請求項1ないし7に記載の類似検索システム。
【請求項9】
前記non−pivot毎パラメータ学習部は、
前記学習用データとして前記登録用データとは別にあらかじめ用意しておいたデータを用いる
ことを特徴とする請求項1ないし7に記載の類似検索システム。
【請求項10】
前記non−pivot毎パラメータ学習部は、
前記non−pivotに対してクラスタリングを行い、得られたクラスタ毎に前記パラメータの一部或いは全部が共通となるように、前記non−pivot毎の前記パラメータを学習する
ことを特徴とする請求項1ないし9に記載の類似検索システム。
【請求項11】
前記索引用ベクトル生成部は、
前記索引用ベクトルとして順列ベクトルを生成する
ことを特徴とする請求項1ないし10に記載の類似検索システム。
【請求項12】
前記索引用ベクトル生成部は、
前記索引用ベクトルとしてスコアベクトルを生成する
ことを特徴とする請求項1ないし10に記載の類似検索システム。
【請求項13】
グループIDを用いて前記登録用データの絞込みを行うグループ絞込み部を持ち、
前記データベースは、
前記グループIDを保持する
ことを特徴とする請求項1ないし12に記載の類似検索システム。
【請求項14】
登録端末によって、クライアント端末から送信された生データに対して類似検索を行うサーバ端末における高精度な類似検索方法において、
前記生データから抽出した特徴量で構成される登録用データを生成し、
前記登録用データからpivotを選択し、
前記特徴量同士の距離或いは類似度として定義したスコアを計算し、
前記pivotに対する前記スコアを用いて索引用ベクトルを生成し、
前記索引用ベクトル同士の距離或いは類似度として定義したΔスコアを計算し、
予め用意された学習用データを用いて、前記登録用データから前記pivotとして選択されなかったnon−pivot毎の回帰係数を含むパラメータを学習し、
入力された検索用データと前記non−pivotとの前記Δスコアと前記回帰係数を用いて、ロジスティック回帰により事後確率の大きい順に前記non−pivotの選択順序を決定し、
前記検索用データと前記登録用データとの前記スコアを基に、検索結果を出力し、
前記登録用データの前記特徴量と、前記登録用データのうちどれが前記pivotであるかが記されたpivot情報と、前記non−pivot毎の前記索引用ベクトルから構成されるインデックスと、前記non−pivot毎のパラメータをデータベースに保持することを特徴とする高精度な類似検索方法。
【請求項15】
前記選択順序の決定の際に、前記学習用データを用いて、前記回帰係数を含むnon−pivot毎のパラメータを学習し、前記検索用データと前記non−pivotとの前記Δスコアと前記回帰係数を用いて、ロジスティック回帰により事後確率の大きい順に前記non−pivotの選択順序を決定することを特徴とする請求項14に記載の高精度な類似検索方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate


【公開番号】特開2012−178095(P2012−178095A)
【公開日】平成24年9月13日(2012.9.13)
【国際特許分類】
【出願番号】特願2011−41268(P2011−41268)
【出願日】平成23年2月28日(2011.2.28)
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.Bluetooth
【出願人】(000005108)株式会社日立製作所 (27,607)
【Fターム(参考)】