(57)【特許請求の範囲】
【請求項１】
複数の学習用特徴ベクトルを入力し、その中から複数のペアを選択する学習ペア選択部と、
変換行列を用いて前記学習用特徴ベクトルを変換した上で、当該変換された学習用ベクトルをビットコードに変換するビットコード変換部と、
前記複数のペアについての、前記学習ペア選択部に入力された前記学習用特徴ベクトルの距離と前記ビットコード変換部で変換された前記ビットコードの距離との相違の、全ての前記ペアについての和を示すコスト関数を計算するコスト関数計算部と、
前記ビットコード変換部にて用いる前記変換行列の要素を選択して、選択した要素を置換候補で置換することで、前記変換行列を更新する変換行列更新部と、
を備え、
前記ビットコード変換部は、変換行列更新部で更新された変換行列を用いて、前記学習用特徴ベクトルを変換した上で、当該変換された学習用ベクトルをビットコードに変換し、
前記コスト関数計算部は、前記変換行列更新部によって前記変換行列の要素が前記置換候補で置換されたときに、前記コスト関数に基づいて、前記置換候補及びもとの前記要素の中から、ひとつを選択することで、前記要素を確定し、
前記変換行列更新部が前記要素を順に変えて選択し、そのつど前記コスト関数計算部が選択された前記要素を確定することで、前記最終的に最適な前記変換行列を確定し、
前記置換候補は、前記ビットコード変換部による前記変換行列を用いた変換処理が高速になるように特定される
ことを特徴とする特徴変換装置。
【請求項２】
前記コスト関数計算部は、前記要素を前記置換候補の各々で置換したときの前記コスト関数の変化量を計算し、前記変化量に応じて、前記置換候補及びもとの前記要素の中からひとつを選択することを特徴とする請求項１に記載の特徴変換装置。
【請求項３】
前記ペアについての、前記学習ペア選択部に入力された前記学習用特徴ベクトルの距離は、Ｌ１ノルム、Ｌ２ノルム、又はベクトル間角度のいずれかに基づく距離であることを特徴とする請求項１又は２に記載の特徴変換装置。
【請求項４】
前記ペアについての、前記ビットコード変換部で変換された前記ビットコードの距離は、ハミング距離に基づく距離であることを特徴とする請求項１ないし３のいずれか一項に記載の特徴変換装置。
【請求項５】
前記変換行列の要素は整数に限定されており、前記置換候補も整数に限定されていることを特徴とする請求項１ないし４のいずれか一項に記載の特徴変換装置。
【請求項６】
前記変換行列の要素は、−１、０、１のいずれかに限定されており、前記置換候補も−１、０、１のいずれかに限定されていることを特徴とする請求項５に記載の特徴変換装置。
【請求項７】
前記変換行列は、非０の要素の数が所定の範囲内に限定されており、前記置換候補は、前記変換行列の非０の要素の数を前記所定の範囲内に保つよう特定されていることを特徴とする請求項１ないし６のいずれか一項に記載の特徴変換装置。
【請求項８】
前記変換行列の要素は、２のべき乗に限定されており、前記置換候補も２のべき乗に限定されていることを特徴とする請求項５に記載の特徴変換装置。
【請求項９】
前記学習ペア選択部は、入力された前記複数の学習用特徴ベクトルの中から任意にペアを選択することを特徴とする請求項１ないし８のいずれか一項に記載の特徴変換装置。
【請求項１０】
前記学習ペア選択部は、前記学習用特徴ベクトルの距離に基づいて、入力された前記複数の学習用特徴ベクトルの中からペアを選択することを特徴とする請求項１ないし８のいずれか一項に記載の特徴変換装置。
【請求項１１】
前記学習ペア選択部は、所定の距離以下のペアと前記所定の距離以上のペアの組数が所定の割合になるように、入力された前記複数の学習用特徴ベクトルの中からペアを選択することを特徴とする請求項１０に記載の特徴変換装置。
【請求項１２】
前記学習ペア選択部は、距離の頻度が一様又は特定の分布になるように、入力された前記複数の学習用特徴ベクトルの中からペアを選択することを特徴とする請求項１０に記載の特徴変換装置。
【請求項１３】
前記学習ペア選択部は、最も遠い距離関係にあるペアと最も近い距離関係にあるペアの組数が所定の割合になるように、入力された前記複数の学習用特徴ベクトルの中からペアを選択することを特徴とする請求項１０に記載の特徴変換装置。
【請求項１４】
前記コスト関数計算部は、前記変換行列更新部によって前記変換行列の要素が置換候補で置換される前の変換行列を用いてされた前記コスト関数の計算の結果を、前記変換行列更新部によって前記変換行列の要素が置換候補で置換された後の変換行列のコスト関数の計算に流用することを特徴とする請求項１ないし１３のいずれか一項に記載の特徴変換装置。
【請求項１５】
請求項１ないし１４のいずれか一項に記載の特徴変換装置と、類似ベクトル検索部とを備えた類似情報探索装置であって、
前記ビットコード変換部は、前記確定された最適な変換行列を用いて前記複数の学習用特徴ベクトルを複数のビットコードに変換し、
前記ビットコード変換部は、入力特徴ベクトルが与えられたときに、前記確定された最適な変換行列を用いて当該入力特徴ベクトルをビットコードに変換し、
前記類似ベクトル検索部は、
前記ビットコード変換部にて前記複数の学習ベクトルから変換された前記複数のビットコードを保管するビットコード保管部と、
前記ビットコード変換部にて前記入力特徴ベクトルから変換された前記ビットコードを入力して、近傍探索によって、前記ビットコード保管部に保管された前記複数のビットコードの中から、前記入力特徴ベクトルから変換されたビットコードに類似するビットコードを探索する近傍探索部と、
を備えたことを特徴とする類似情報探索装置。
【請求項１６】
特徴ベクトルをビットコードに変換するためのコード化パラメータとして変換行列を出力するコード化パラメータ生成方法であって、
複数の学習用特徴ベクトルの中から複数のペアを選択する第１ステップと、
所定の拘束条件の下で、変換行列を初期化する第２ステップと、
前記複数のペアについての、前記学習用特徴ベクトルの距離と前記学習用特徴ベクトルから前記初期化された変換行列を用いて変換されたビットコードの距離との相違の和を示すコスト関数を計算する第３ステップと、
前記変換行列の要素の中から置換対象とする要素を選択する第４ステップと、
前記第４ステップで選択された要素を特定の置換候補で置換する第５ステップと、
前記第５ステップで前記選択された要素が前記置換候補で置換された前記変換行列を用いて、前記コスト関数を計算する第６ステップと、
前記選択された要素をそれに対応する前記置換候補のすべてで置換したか否かを判断して、前記選択された要素をそれに対応する前記置換候補のすべてで置換していない場合には前記第５ステップに戻る第７ステップと、
前記第７ステップにおいて、前記選択された要素をそれに対応する前記置換候補のすべてで置換したと判断された場合に、前記置換候補のうち、計算されたコスト関数が最も小さかった置換候補で、選択されている要素を確定することで、最適変換行列を暫定的に確定する第８ステップと、
前記第８ステップにて暫定的に確定された前記最適変換行列が収束しているか否かを判断し、収束していないと判断した場合には前記第４ステップに戻る第９ステップと、
前記第８ステップにて暫定的に確定された前記最適変換行列が収束していると判断した場合に、暫定的に確定された前記最適変換行列を最終的に確定された最適変換行列として出力する第１０ステップと、
を含むことを特徴とするコード化パラメータ生成方法。
【請求項１７】
請求項１６に記載のコード化パラメータ生成方法をコンピュータに実行させるためのコンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、類似情報探索のために変換行列を用いて特徴ベクトルをビットコードに変換する特徴変換装置及びそれを含む類似情報探索装置に関する。
【背景技術】
【０００２】
画像検索、音声認識、文章検索、パターン認識などの類似情報探索技術では、ある情報を他の情報と類似度を評価する処理に特徴ベクトルが用いられている。特徴ベクトルとは、画像、音声、文章などの情報を、計算機で扱いやすいように変換したものである。特徴ベクトルはＤ次元のベクトルで表される。例えば、画像Ａの特徴ベクトルと、画像Ｂの特徴ベクトルの距離が小さければ、それらの画像は類似しているとみなすことができる。同様に、音声波形Ｃの特徴ベクトルと、音声波形Ｄの特徴ベクトルの距離が小さければ、それらの音声波形は類似しているとみなすことができる。画像検索、音声認識、文章検索、パターン認識等の類似情報探索技術では、このように特徴ベクトルを比較することで、情報同士の類似度を評価している。
【０００３】
特徴ベクトル間の距離の尺度としては、Ｌ１ノルム、Ｌ２ノルム、ベクトル間角度などが用いられる。これらの尺度は、特徴ベクトル
【数１】
0005258915.tif 000002
について、次式（１）〜（３）によって計算できる。
Ｌ１ノルム
【数２】
0005258915.tif 000003
Ｌ２ノルム
【数３】
0005258915.tif 000004
ベクトル間角度
【数４】
0005258915.tif 000005
【０００４】
類似情報探索技術では、大量の情報（用途によっては数億になることもある）の中から特定の情報（入力情報）に類似する情報が探索される。そこで、入力情報の特徴ベクトルに対して、大量の情報の特徴ベクトルの中から最も似ているｋ個の特徴ベクトルを高速に検索する最近傍探索技術と呼ばれる技術が研究されている。最近傍探索技術としては、ｋ−近傍探索や、近似ｋ−近傍探索が知られている。
【０００５】
ｋ−近傍探索は、大量の特徴ベクトルの中から、最も距離が近いｋ個の特徴ベクトルを高速に検索する技術である。ｋ−近傍探索の代表的な手法としてｋ−ｄｔｒｅｅが挙げられる（例えば、非特許文献１を参照）。近似ｋ−近傍探索も大量の特徴ベクトルの中から、最も距離が近いｋ個の特徴ベクトルを高速に検索する技術であるが、誤りを許すことで、ｋ−近傍探索よりもはるかに高速な（数百〜数千倍程度）処理を実現できる。近似ｋ−近傍探索の代表的な手法として、ＬＳＨが挙げられる（例えば、非特許文献２を参照）。
【０００６】
近年では、計算機が扱う情報の大規模化が進んでおり、類似情報探索技術においても大量かつ高次元の特徴ベクトルを扱うことが多くなった。そこで、次の二点が深刻な問題となっている。
【０００７】
第一の問題は、２つの特徴ベクトル
【数５】
0005258915.tif 000006
の距離の計算が非常に遅いということである。例えば、Ｌ２ノルムの二乗を距離の尺度として用いる場合、
【数６】
0005258915.tif 000007
であるから、Ｄ回の引き算、Ｄ回の乗算、Ｄ−１回の加算が必要である。多くの場合、特徴ベクトルは単精度実数（浮動小数）で表現されるため、この計算負荷は非常に高くなる。特徴ベクトルが高次元になれば、この計算負荷はさらに高くなる。また、扱う特徴ベクトルの数が大量になれば、この距離計算を大量に行わなければならないため、計算負荷はさらに高くなる。そのため、ｋ−近傍探索アルゴリズムを適用しても、十分な速度が得られないことが多くなっている。
【０００８】
第二の問題は、大量のメモリを消費するということである。特徴ベクトルを４バイトの単精度実数で表現する場合、Ｄ次元の特徴ベクトルは４Ｄバイトのメモリを消費する。特徴ベクトルが高次元になるほど、このメモリ消費量は高くなる。特徴ベクトルの数が多くなれば、その分メモリを消費することになる。特徴ベクトルがメインメモリに入りきらない場合は、ハードディスクなどの二次領域に特徴ベクトルを格納しなければならなくなるが、二次領域を用いた場合、処理速度は劇的に低下してしまう。
【０００９】
そこで近年、特徴ベクトルをバイナリビットコード化することにより、これら２つの問題を解決する手法が提案されている。代表的な手法として、ランダム・プロジェクション（Random Projection、例えば非特許文献３を参照）、ベリー・スパース・ランダム・プロジェクション（Very Sparse Random Projection、例えば非特許文献４を参照）、及びスペクトラル・ハッシング（Spectral Hashing、例えば非特許文献５を参照）がある。
【００１０】
これらの手法では、Ｄ次元の特徴ベクトルを、ｄビットのバイナリビットコードに変換する。この変換は、もともとの空間における距離が、変換後の空間におけるハミング距離と強く相関するように行われる（例えば、非特許文献３を参照。特に、１１２１ページのＬｅｍｍａ３．２には、もともとの空間における距離と、変換後の空間におけるハミング距離とが強く相関する根拠について記載されている。）。ハミング距離とは、２つのビットコードのうち、異なるビットの数を数えたものである。この計算は、２つのコードのｘｏｒをとった後に１が立っているビット数を数えるだけなので、非常に高速に行うことができる。多くの場合、数十〜数百倍程度の高速化が可能である。また、もともと４Ｄバイト必要であったメモリを、ｄ／８バイトまで削減できる。これにより、メモリを数十〜数百分の一に節約できる。
【００１１】
多くのビットコード化アルゴリズムは次式（４）のように一般的な形で記述できる。
【数７】
0005258915.tif 000008
ここで、ｘは特徴ベクトル（Ｄ次元）であり、Ｗは変換行列（Ｄ行ｄ列）であり、ｂはバイアス（ｄ次元）であり、ｙはビットコード（ｄ次元）であり、ｆ（ｚ）は非線形関数であり、ｓｇｎ（ｚ）は符号関数（値が負なら−１、正なら１を返す関数）である。式（４）より、ｙの要素は＋１か−１のどちらかになる。そこで、＋１を「１」、−１を「０」として並べたものをビットコードとする。
【００１２】
ランダム・プロジェクションの場合は、Ｗの要素として、平均がゼロで分散が１の正規分布からサンプリングしたものを用いる。バイアスｂは、ゼロベクトル、事前に集めておいた特徴ベクトルの平均値、又は中央値とする。また、非線形関数をｆ（ｚ）＝ｚと定義する。
【００１３】
ベリー・スパース・ランダム・プロジェクションの場合は、Ｗの要素を｛−１，０， １｝から｛１／２＊ｓｑｒｔ（Ｄ），１−１／ｓｑｒｔ（Ｄ），１／２＊ｓｑｒｔ（Ｄ）｝の確率で選ぶ。ここで、Ｄは特徴ベクトルの次元数である。また、バイアスｂは、ゼロベクトル、事前に集めておいた特徴ベクトルの平均値、又は中央値とする。また、非線形関数をｆ（ｚ）＝ｚと定義する。Ｗが非常に疎（スパース）（例えば、１２８次元の特徴ベクトルの場合は、９割程度が０）になるので、高速に計算が可能である。
【００１４】
スペクトラル・ハッシングの場合は、事前に集めておいた特徴ベクトル（訓練集合）に主成分分析を適用し、求めた主成分軸をＷの列ベクトルとする。また、訓練集合の平均をｂとする。非線形関数ｆ（ｚ）には、三角関数を用いる。スペクトラル・ハッシングの場合は、学習に基づいているため、より短いビットコードが生成可能である。
【先行技術文献】
【非特許文献】
【００１５】
【非特許文献１】J. L. Bentley. Multidimensional binary search trees used for associative searching. Communications of the ACM, 18(9):509-517, 1975.
【非特許文献２】Indyk, Piotr.; Motwani, Rajeev. (1998). , "Approximate Nearest Neighbors: Towards Removing the Curse of Dimensionality.". Proceedings of 30th Symposium on Theory of Computing.
【非特許文献３】Michel X. Goemans, avid P. Williamson, "Improved approximation algorithms for maximum cut and satisfiability problems using semidefinite programming", Journal of the ACM Volume 42 ,  Issue 6  (November 1995) Pages: 1115 - 1145
【非特許文献４】Ping Li, Trevor J. Hastie, Kenneth W. Church, "very sparse random projections", KDD '06 Proceedings of the 12th ACM SIGKDD international conference on Knowledge discovery and data mining (2006)
【非特許文献５】Y. Weiss, A. Torralba, R. Fergus., "Spectral Hashing",Advances in Neural Information Processing Systems, 2008.
【発明の概要】
【発明が解決しようとする課題】
【００１６】
しかしながら、上記の従来のバイナリビットコード化手法には、以下の問題がある。第一の問題は、従来手法はビットコード化が遅いという問題である。即ち、Ｄ次元のベクトルをｄビットのコードに変換する場合には、式（４）のＷＴｘの計算にはＤ×ｄ回の乗算と、Ｄ×（ｄ−１）回の加算が必要である。従って、従来手法では距離計算を高速化することはできるものの、その前段の処理であるビットコード化がボトルネックとなってしまう。これは、特徴ベクトルの次元数Ｄが増えるほど深刻となる。特に、リアルタイムにビットコード化が必要な場合、例えばリアルタイム画像検索やリアルタイム音声認識に適用する場合には非常に不便である。
【００１７】
第二の問題は、ビットコードが長くなるという問題である。即ち、乱数に基づいてＷを構成する場合、特徴ベクトルの分布を考慮していないため、十分な性能を得るためには長いビットコードが必要になる。
【００１８】
上記の従来のバイナリビットコード化手法のうち、ランダム・プロジェクションには第一及び第二の問題があり、ベリー・スパース・ランダム・プロジェクションには第二の問題があり、スペクトラル・ハッシングには、第一の問題がある。
【００１９】
本発明は、上記の問題点に鑑みてなされたものであり、特徴ベクトルのビットコード化が高速で、かつ短いビットコードを生成できる特徴変換装置を提供することを目的とする。
【課題を解決するための手段】
【００２０】
上記従来の課題を解決するために、本発明の特徴変換装置は、複数の学習用特徴ベクトルを入力し、その中から複数のペアを選択する学習ペア選択部と、変換行列を用いて前記学習用特徴ベクトルを変換した上で、当該変換された学習用ベクトルをビットコードに変換するビットコード変換部と、前記複数のペアについての、前記学習ペア選択部に入力された前記学習用特徴ベクトルの距離と前記ビットコード変換部で変換された前記ビットコードの距離との相違の、全ての前記ペアについての和を示すコスト関数を計算するコスト関数計算部と、前記ビットコード変換部にて用いる前記変換行列の要素を選択して、選択した要素を置換候補で置換することで、前記変換行列を更新する変換行列更新部とを備えた構成を有している。そして、前記ビットコード変換部は、変換行列更新部で更新された変換行列を用いて、前記学習用特徴ベクトルを変換した上で、当該変換された学習用ベクトルをビットコードに変換し、前記コスト関数計算部は、前記変換行列更新部によって前記変換行列の要素が前記置換候補で置換されたときに、前記置換候補及びもとの前記要素の中から、所定の方法に基づいてひとつを選択することで、前記要素を確定する。前記変換行列更新部が前記要素を順に変えて選択し、そのつど前記コスト関数計算部が選択された前記要素を確定することで、前記最終的に最適な前記変換行列が確定される。前記置換候補は、前記ビットコード変換部による前記変換行列を用いた変換処理が高速になるように特定される。
【００２１】
この構成により、変換行列が学習に基づいて最適化されるため、生成されるビットコードは短くなる。更に、最終的に確定される最適変換行列の要素は、ビットコード変換部によるビットコード変換処理が高速になるように確定されているので、この最適変換行列を用いることで高速にビットコード変換を行うことができる。また、変換行列更新部が要素を順に変えて選択し、そのつどコスト関数計算部が当該選択された要素を確定するという手法により最適変換行列を求めるので、コスト関数が非線形であって微分不可能であっても、効果的にコスト関数を減少させることができる。これにより、ビットコード変換部で変換されたビットコードの距離によって、学習ペア選択部に入力された学習用特徴ベクトルの距離を十分な精度で近似できるようになる。よって、短いビットコードでも、最近傍探索において十分な性能を発揮できるようになる。
【００２２】
上記の特徴変換装置において、前記コスト関数計算部は、前記要素を前記置換候補の各々で置換したときの前記コスト関数の変化量を計算し、前記変化量に応じて、前記置換候補及びもとの前記要素の中からひとつを選択してよい。
【００２３】
この構成により、コスト関数の変化量に基づいて要素が確定されるので、好適に要素を確定することができる。例えば、コスト関数計算部は、コスト関数の変化量を最小にする置換候補でもって要素を確定してよい。なお、コスト関数の変化量とは、選択された要素をある置換候補で置換する前のコスト関数と置換した後のコスト関数との差分値である。
【００２４】
上記の特徴変換装置において、前記ペアについての、前記学習ペア選択部に入力された前記学習用特徴ベクトルの距離は、Ｌ１ノルム、Ｌ２ノルム、又はベクトル間角度のいずれかに基づく距離であってよい。
【００２５】
また、上記の特徴変換装置において、前記ペアについての、前記ビットコード変換部で変換された前記ビットコードの距離は、ハミング距離に基づく距離であってよい。
【００２６】
また、上記の特徴変換装置において、前記変換行列の要素は整数に限定されており、前記置換候補も整数に限定されていてよい。
【００２７】
この構成により、ビットコード変換部によるビットコード変換処理をより高速化できる。
【００２８】
また、上記の特徴変換装置において、前記変換行列の要素は、−１、０、１のいずれかに限定されており、前記置換候補も−１、０、１のいずれかに限定されていてよい。
【００２９】
この構成により、ビットコード変換部での変換行列を用いた変換において掛け算が不要となるので、ビットコード変換処理をより高速化できる。
【００３０】
また、上記の特徴変換装置において、前記変換行列は、非０の要素の数が所定の範囲内に限定されており、前記置換候補は、前記変換行列の非０の要素の数を前記所定の範囲内に保つよう特定されていてよい。
【００３１】
この構成により、変換行列を疎（スパース）にできるので、ビットコード変換部での変換行列を用いた処理をさらに高速化できる。なお、上記の所定の範囲の大きさは、幅１の範囲であってもよい。即ち、非０の要素の数が具体的な数に固定されていてもよい。
【００３２】
また、上記の特徴変換装置において、前記変換行列の要素は、２のべき乗に限定されており、前記置換候補も２のべき乗に限定されていてよい。
【００３３】
この構成により、ビットコード変換部での変換行列を用いた変換においてビットシフトの手法を用いることが可能になり、ビットコード変換処理をより高速化できる。
【００３４】
また、上記の特徴量変換装置において、前記学習ペア選択部は、入力された前記複数の学習用特徴ベクトルの中から任意にペアを選択してよい。
【００３５】
この構成により、高い精度で近似が可能なビットコードに変換するための変換行列を好適に求めることができる。
【００３６】
また、上記の特徴変換装置において、前記学習ペア選択部は、前記学習用特徴ベクトルの距離に基づいて、入力された前記複数の学習用特徴ベクトルの中からペアを選択してよい。
【００３７】
この構成により、ビットコード変換部で変換されたビットコードの距離によって、学習ペア選択部に入力された学習用特徴ベクトルの距離をより十分な精度で近似できるようになる。よって、より短いビットコードでも、最近傍探索において十分な性能を発揮できるようになる。
【００３８】
また、上記の特徴変換装置において、前記学習ペア選択部は、所定の距離以下のペアと前記所定の距離以上のペアの組数が所定の割合になるように、入力された前記複数の学習用特徴ベクトルの中からペアを選択してよい。
【００３９】
また、上記の特徴変換装置において、前記学習ペア選択部は、距離の頻度が一様又は特定の分布になるように、入力された前記複数の学習用特徴ベクトルの中からペアを選択してよい。
【００４０】
また、上記の特徴変換装置において、前記学習ペア選択部は、最も遠い距離関係にあるペアと最も近い距離関係にあるペアの組数が所定の割合になるように、入力された前記複数の学習用特徴ベクトルの中からペアを選択してよい。
【００４１】
また、上記の特徴変換装置において、前記コスト関数計算部は、前記変換行列更新部によって前記変換行列の要素が置換候補で置換される前の変換行列を用いてされた前記コスト関数の計算の結果を、前記変換行列更新部によって前記変換行列の要素が置換候補で置換された後の変換行列のコスト関数の計算に流用してよい。
【００４２】
この構成により、最適変換行列を求める演算を高速化できる。
【００４３】
本発明の類似情報探索装置は、上記のいずれかの特徴変換装置と、類似ベクトル検索部とを備えた類似情報探索装置であって、前記ビットコード変換部は、前記確定された最適な変換行列を用いて前記複数の学習用特徴ベクトルを複数のビットコードに変換し、前記ビットコード変換部は、入力特徴ベクトルが与えられたときに、前記確定された最適な変換行列を用いて当該入力特徴ベクトルをビットコードに変換し、前記類似ベクトル検索部は、前記ビットコード変換部にて前記複数の学習ベクトルから変換された前記複数のビットコードを保管するビットコード保管部と、前記ビットコード変換部にて前記入力特徴ベクトルから変換された前記ビットコードを入力して、近傍探索によって、前記ビットコード保管部に保管された前記複数のビットコードの中から、前記入力特徴ベクトルから変換されたビットコードに類似するビットコードを探索する近傍探索部とを備えた構成を有している。
【００４４】
本発明のコード化パラメータ生成方法は、特徴ベクトルをビットコードに変換するためのコード化パラメータとして変換行列を出力するコード化パラメータ生成方法であって、複数の学習用特徴ベクトルの中から複数のペアを選択する第１ステップと、所定の拘束条件の下で、変換行列を初期化する第２ステップと、前記複数のペアについての、前記学習用特徴ベクトルの距離と前記学習用特徴ベクトルから前記初期化された変換行列を用いて変換されたビットコードの距離との相違の和を示すコスト関数を計算する第３ステップと、前記変換行列の要素の中から置換対象とする要素を選択する第４ステップと、前記第４ステップで選択された要素を特定の置換候補で置換する第５ステップと、前記第５ステップで前記選択された要素が前記置換候補で置換された前記変換行列を用いて、前記コスト関数を計算する第６ステップと、前記選択された要素をそれに対応する前記置換候補のすべてで置換したか否かを判断して、前記選択された要素をそれに対応する前記置換候補のすべてで置換していない場合には前記第５ステップに戻る第７ステップと、前記第７ステップにおいて、前記選択された要素をそれに対応する前記置換候補のすべてで置換したと判断された場合に、前記置換候補のうち、計算されたコスト関数が最も小さかった置換候補で、選択されている要素を確定することで、最適変換行列を暫定的に確定する第８ステップと、前記第８ステップにて暫定的に確定された前記最適変換行列が収束しているか否かを判断し、収束していないと判断した場合には前記第４ステップに戻る第９ステップと、前記第８ステップにて暫定的に確定された前記最適変換行列が収束していると判断した場合に、暫定的に確定された前記最適変換行列を最終的に確定された最適変換行列として出力する第１０ステップとを含んでいる。
【００４５】
本発明のコンピュータ・プログラムは、上記のコード化パラメータ生成方法をコンピュータに実行させるためのコンピュータ・プログラムである。
【発明の効果】
【００４６】
本発明によれば、ビットコード変換を高速化でき、かつ短いビットコードを生成できる変換行列を生成することができる。
【図面の簡単な説明】
【００４７】
【図１】本発明の実施の形態におけるエンコーダ部の構成を示すブロック図
【図２】本発明の実施の形態における類似情報探索装置の構成を示すブロック図
【図３】本発明の実施の形態のおける学習ベクトルとそのペアを概念的に示す図
【図４】本発明の実施の形態における最適変換行列の決定方法の概要を示すフロー図
【図５】本発明の実施の形態における最適変換行列の決定方法の具体例１において置換候補特定部で特定される置換候補を示す図
【図６】本発明の実施の形態における最適変換行列の決定方法の具体例２において置換候補特定部で特定される置換候補を示す図
【図７】本発明の実施の形態における最適変換行列の決定方法の具体例１において置換候補特定部で特定される置換候補を示す図
【図８】本発明の実施の形態における特徴ベクトルをビットコードに変換する処理を示す図
【図９】本発明の実施の形態におけるビットコードに変換する前の特徴ベクトルＸＡと特徴ベクトルＸＢの間の距離を求める処理を示す図
【図１０】本発明の実施の形態における特徴ベクトルＸＡ及びＸＢをビットコードに変換して、ビットコードＹＡ及びＹＢとした上で、それらのハミング距離を求める処理を示す図
【図１１】本発明の実施の形態における変換行列において選択された要素とコスト関数との関係を示す図
【図１２】本発明の実施の形態における変換行列Ｗ中の選択された要素を第ｎ番目の置換候補に置換したときの、ビットコードＹを求める処理を示す図
【図１３】本発明の実施の形態における図１２の状態から、選択された要素ｗ１，１が第（ｎ＋１）番目の置換候補で置換されたときのビットコードＹを求める処理を示す図
【図１４】本発明の実施の形態における選択された要素ｗ１，１が第（ｎ＋１）番目の置換候補で置換されたときの、ハミング距離を求める処理を示す図
【発明を実施するための形態】
【００４８】
以下、本発明を実施するための形態について説明する。なお、本明細書において、「ビットコード化」と「ビットコード変換」とは同じ意味として用いる。
【００４９】
図２は、本発明の実施の形態の類似情報探索装置の構成を示すブロック図である。図２に示すように、類似情報探索装置１００は、エンコーダ部１０１と類似特徴ベクトル検索部１０２とを備えている。エンコーダ部１０１は、単精度実数の特徴ベクトルをビットコードに変換する。エンコーダ部１０１は、本発明の特徴変換装置に相当する。類似特徴ベクトル検索部１０２は、ｋ−最近傍探索によって、入力特徴ベクトルに対するｋ個の類似ベクトルを探索する。
【００５０】
図１は、エンコーダ部１０１の構成を示すブロック図である。エンコーダ部１０１は、コード化パラメータ生成部１０と、ビットコード変換部２０を備えている。コード化パラメータ生成部１０は、学習用の特徴ベクトルｔを用いて、単精度実数の特徴ベクトルをビットコードに変換する際に必要なパラメータを生成して、ビットコード変換部２０に出力する。具体的には、コード化パラメータ生成部１０は、コード化パラメータとして、ビットコード変換に用いる変換行列Ｗを求める。ビットコード変換部２０は、コード化パラメータ生成部１０で生成されたパラメータを用いて、特徴ベクトルをビットコード化する。
【００５１】
類似特徴ベクトル検索部１０２は、ビットコード保管部３０と、ｋ−最近傍検索部４０と、距離計算部５０とを備えている。ビットコード保管部３０には、ビットコード化された複数の特徴ベクトル（以下、ビットコード化された特徴ベクトルを単に「ビットコード」という。）が保存されている。類似特徴ベクトル検索部１０２は、入力情報と類似する情報を探す際には、入力情報の特徴ベクトルから変換されたビットコードと類似するビットコードをビットコード保管部３０に保管された複数のビットコードの中から検索する。このビットコード保管部３０には、エンコーダ部１０１のビットコード変換部２０で変換されたビットコードが保管される。また、入力情報の特徴ベクトルもビットコード変換部２０でビットコードに変換される。
【００５２】
入力情報のビットコードは、ｋ−最近傍探索部４０に入力される。ｋ−最近傍探索部４０は、この入力情報のビットコードと類似するビットコードをビットコード保管部３０に保管されている複数のビットコードの中から探索して、類似ベクトルとして出力する。距離計算部５０は、ｋ−最近傍探索部４０において類似するビットコードを探索する際のビットコード同士の距離を計算して、ｋ−最近傍探索部４０に提供する。
【００５３】
本発明は、エンコーダ部１０１に特徴を有し、特に、ビットコード変換部２０にて特徴ベクトルをビットコードに変換する際に用いるコード化パラメータ（変換行列Ｗ）を生成するコード化パラメータ生成部１０に特徴を有する。コード化パラメータ生成部１０について説明をする前に、以下の定義をする。
【００５４】
まず、変換前の特徴ベクトルを次式（５）のように定義する。
【数８】
0005258915.tif 000009
式（５）において、Ｄは特徴ベクトルの次元数である。
【００５５】
変換後のビットコードを次式（６）のように定義する。
【数９】
0005258915.tif 000010
式（６）において、ｄはビットコードのビット長である。これは、ｙがｄ次元のベクトルであり、ｙの各要素は０もしくは１の値のみを取るという意味である。すなわち、ｙはビットコードであると解釈できる。
【００５６】
変換行列を次式（７）のように定義する。
【数１０】
0005258915.tif 000011
【００５７】
ビットコード化を次式（８）のように定義する。
【数１１】
0005258915.tif 000012
【００５８】
変換前の特徴空間における類似度（正規化コサイン距離）を次式（９）のように定義する。
【数１２】
0005258915.tif 000013
なお、変換前の特徴空間における類似度の尺度として、Ｌ１ノルムやＬ２ノルムなど、他の尺度を用いてもよい。例えば、上式（３）の角度θを円周率πで正規化したものを用いてもよい。
【００５９】
変換後の特徴空間における類似度（正規化ハミング距離）を次式（１０）のように定義する。
【数１３】
0005258915.tif 000014
なお、式（１０）において、ｈ（）はハミング距離を求める関数である。
【００６０】
式（９）及び式（１０）から明らかなように、正規化コサイン距離及び正規化ハミング距離は、０から１の範囲の値を取るように正規化されている。距離の値が小さいほど特徴が類似しており、大きいほど特徴が類似していないことを表している。
【００６１】
以下、エンコーダ部１０１、特にコード化パラメータ生成部１０の構成について説明する。コード化パラメータ生成部１０は、学習ペア選択部１１と、学習ペア保持部１２と、変換行列初期化部１３と、拘束条件格納部１４と、置換候補特定部１５と、変換行列更新部１６と、コスト関数計算部１７と、判定収束部１８とを備えている。
【００６２】
学習ペア選択部１１には、複数の学習用の特徴ベクトル（以下、単に「学習ベクトル」という。）が入力される。学習ベクトルは、次式（１１）のように定義される。
【数１４】
0005258915.tif 000015
式（１１）においてＮ、即ち学習ベクトルの数は、例えば１万とすることができる。
【００６３】
学習用ペア選択部１１は、入力された複数の学習ベクトルの中から、ペアを選択する。図３は、学習ベクトルとそのペアを概念的に示す図である。学習用ペア選択部１１で選択するペアの数は多いほうがよい。学習用ペア選択部１１は、例えば次の選び方でペアを選択する。まず、学習用ペア選択部１１は、入力された複数の学習ベクトルの全ての組合せをペアとして選択することができる。また、学習用ペア選択部１１は、入力された複数の学習ベクトルの中から所定数のペアをランダムに選択することもできる。
【００６４】
さらに、学習用ペア選択部１１は、距離に依存するようにペアを選択することもできる。例えば、学習用ペア選択部１１は、距離が最も遠いペアと距離が最も近いペアを均等に選ぶことができる。また、学習用ペア選択部１１は、距離の頻度が一様になるようにペアを選んでもよい。さらに、学習用ペア選択部１１は、一定の距離ｄ＿ｔｈ以下のペアと、ｄ＿ｔｈ以上のペアの数が均等になるように選んでもよい。
【００６５】
学習ペア選択部１１にて選択された学習ベクトルのペアは学習ペア保持部１２に保持される。学習ペア保持部１２に保持されている学習ベクトルの各ペアは、コスト関数計算部１７に出力され、コスト関数計算部１７でコスト関数を計算するのに用いられる。
【００６６】
コスト関数計算部１７で計算されるコスト関数は、次式（１２）のように定義される。
【数１５】
0005258915.tif 000016
ここで、集合Ｐは学習ペア保持部１２から入力された学習ベクトルのペアの集合である。
【００６７】
コスト関数計算部１７は、ｆ（Ｗ）を最小化するようなＷを求める。即ち、コスト関数計算部１７は、変換前の空間におけるコサイン距離と、変換後の空間におけるハミング距離がなるべく一致するようなＷを求める。このときに必要なビットコード変換は、ビットコード変換部２０が行う。
【００６８】
一般的には、関数ｙ（ｘ）を最小にするｘを求める場合には、関数ｙ（ｘ）を微分することで変曲点のｘを求める等の手法が用いられるが、式（１２）に示すように、本実施の形態のコスト関数ｆ（Ｗ）は微分不可能であり、従って、一般的な最適化手法を適用することができない。そこで、本実施の形態のコード化パラメータ生成部１０は、後述する方法でｆ（Ｗ）を最小化し、そのときの変換行列Ｗを最適変換行列として、ビットコード変換部２０に出力する。
【００６９】
最適変換行列を求めるための構成を説明する。変換行列初期化部１３は、拘束条件格納部１４に格納されている拘束条件の下で、変換行列Ｗを初期化して、変換行列更新部１６に出力する。拘束条件格納部１４には、変換行列初期化部１３にて変換行列を初期化する際、及び置換候補特定部１５にて変換行列の要素を置換するための置換候補を特定する際の、変換行列の要素に課される拘束条件を格納している。
【００７０】
置換候補特定部１５は、変換行列中の選択された要素に対する置換候補を特定して、変換行列更新部１６に出力する。変換行列更新部１６は、変換行列初期化部１４から入力された初期化された変換行列をコスト関数計算部１７に出力する。変換行列更新部１６は、また、初期化された変換行列Ｗの要素の中から置換対象とする要素を選択して、選択した要素を置換候補特定部１５で特定された置換候補で置換して、コスト関数計算部１７に出力する。変換行列更新部１６は、さらに、収束判定部１８から未収束である旨の報告を受けると、その暫定的に確定された変換行列Ｗについて、新たな置換対象要素を選択して、置換候補特定部１５で特定された置換候補で置換する。
【００７１】
コスト関数計算部１７は、変換行列更新部１６から入力された変換行列を用いて、式（１２）によってコストを計算する。また、コスト関数計算分１７は、選択された要素が複数の置換候補でそれぞれ置換されてなる複数の変換行列によってそれぞれ計算されたコストを比較して、最も低いコストが計算された際に用いた変換行列を、暫定的に最適変換行列として確定し、これを変換行列更新部１６に戻す。なお、コスト関数計算部１７は、選択された要素を置換候補の各々で置換したときのコスト関数の変化量を計算し、その変化量に応じて、置換候補及びもとの要素の中からひとつを選択することで暫定的に最適変換行列として確定してもよい。この構成により、コスト関数の変化量に基づいて要素が確定されるので、好適に要素を確定することができる。例えば、コスト関数計算部は、コスト関数の変化量を最小にする置換候補でもって要素を確定してよい。なお、コスト関数の変化量とは、選択された要素をある置換候補で置換する前のコスト関数と置換した後のコスト関数との差分値である。
【００７２】
収束判定部１８は、暫定的に確定された最適変換行列で計算されたコストに基づいて、最適変換行列が収束しているか否かを判断する。収束判定部１８は、例えば暫定的に確定された最適変換行列で計算されたコストが所定の閾値を下回っている場合に、収束していると判断してもよいし、暫定的に確定された最適変換行列で計算されたコストの変化量が所定の閾値を下回った場合に、収束していると判断してもよい。
【００７３】
収束判定部１８は、最適変換行列が収束していると判断する場合には、暫定的に確定された最適変換行列を最終的に確定された最適変換行列として、ビットコード変換部２０に出力する。収束判定部１８は、最適変換行列が収束していないと判断する場合には、変換行列行進部１６に対して、暫定的に確定された最適変換行列に対して、再度、そのうちの要素を選択して、選択した要素を置換候補に従って置換するよう指示する。
【００７４】
図４は、最適変換行列の決定方法の概要を示すフロー図である。図４を参照して、最適変換行列の決定方法の概要を説明する。まず、変換行列初期化部１３が、拘束条件格納部１４に格納されている拘束条件の下で、変換行列Ｗを初期化して、変換行列更新部１６に出力する（ステップＳ４１）。変換行列更新部１６は、まず、変換行列初期化部１４から入力された初期化された変換行列をコスト関数計算部１７に出力し、コスト関数計算部１７は、この初期化された変換行列を用いて、式（１２）によってコストを計算する（ステップＳ４２）。
【００７５】
次に、変換行列更新部１６は、変換行列Ｗの要素の中から置換対象とする要素を選択する（ステップＳ４３）。変換行列更新部１６は、選択した要素を置換候補特定部１５で特定された置換候補で置換して、コスト関数計算部１７に出力する（ステップＳ４４）。コスト関数計算部１７は、選択された要素が置換された変換行列Ｗを用いて、コストを計算する（ステップＳ４５）。
【００７６】
次に、置換候補行列更新部１６は、置換候補特定部１５で特定された置換候補のうち、まだコスト計算を行っていない置換候補があるか否かを判断する（ステップＳ４６）。まだコスト計算を行っていない置換候補がある場合には（ステップＳ４６でＹＥＳ）、ステップＳ４４に戻って、選択されている要素を他の置換候補で置換して、ステップＳ４５にてコスト計算を行なう。
【００７７】
こうして置換候補特定部１５にて特定されたすべての置換候補についてコスト計算をすると（ステップＳ４６でＮＯ）、コスト関数計算部１７は、それらの置換候補のうち計算されたコストが最も小さかった置換候補で、選択されている要素を確定する（ステップＳ４７）。これによって最適変換行列が暫定的に確定される。収束判定部１８は、変換行列が暫定的に確定された後に、その確定された変換行列で計算されたコストの値に基づいて、変換行列が収束したか否かを判断する（ステップＳ４８）。収束していない場合には（ステップＳ４８でＮＯ）、収束判定部１８は、暫定的に確定された変換行列を変換行列更新部１６に出力するとともに、変換行列更新部１６に再度の置換対象候補の選択をするよう指示する。即ち、このとき処理はステップＳ４３に戻って、ステップＳ４３からステップＳ４８の処理を繰り返す。
【００７８】
ステップＳ４３からステップＳ４８の処理を繰り返して、ステップＳ４８で収束したと判断されたときは、収束判定部１８は、最後にステップＳ４７で確定された変換行列Ｗを最終的に確定された最適変換行列として出力する（ステップＳ４９）。
【００７９】
以下、上記で概要を説明した最適変換行列の決定方法の具体例を説明する。以下では、図４を引用して、具体例の処理が対応する図４中のステップを明示する。
【００８０】
（最適変換行列の決定方法の具体例１）
具体例１のコード化パラメータ生成部１０では、拘束条件格納部１４には、拘束条件として、次式（１３）が格納されている。ここで、ｗｉ，ｊは、変換行列Ｗのｉ行ｊ列の要素である。
【数１６】
0005258915.tif 000017
【００８１】
変換行列初期化部１３は、変換行列Ｗをランダムに初期化する（ステップＳ４１）。変換行列更新部１６は、変換行列Ｗの要素ｗｉ，ｊをランダムに１つ選択し、この選んだ要素をｗｕ，ｖとする（ステップＳ４３）。
【００８２】
図５は、具体例１において置換候補特定部１５で特定される置換候補を示す図である。図５に示すように、ｗｕ，ｖが１である場合には、置換候補は−１及び０となり、ｗｕ，ｖが０である場合には、置換候補は１及び−１となり、ｗｕ，ｖが−１である場合には、置換候補は０及び１となる。変換行列更新部１６は、選択された要素をこれらの各置換候補で置換して、選択された要素が変換された変換行列をコスト関数計算部１７に出力する（ステップＳ４４）。コスト関数計算部１７は、それぞれの変換行列についてコストを計算する（ステップＳ４５）。コスト関数計算部１７は、もともとのコストと選択された要素が置換候補によってそれぞれ置換された変換行列で計算されたコストとを比較して、最もコストが低かった変換行列を暫定的に最適変換行列として確定する（ステップＳ４７）。そして、コストが十分に小さくなるまで、上記の処理を繰り返す。
【００８３】
具体例１によれば、式（１３）の条件を維持しつつ、コストを効率的に最小化できる。そして、変換行列Ｗの要素ｗｉ，ｊが−１，０，１しか持たないため、ビットコード変換部２０が式（８）によってビットコード変換をする際のＷＴｘの計算において、掛け算が不要になり、高速にビットコード化を行なうことができる。
【００８４】
（最適変換行列の決定方法の具体例２）
具体例２は、上記の具体例１において、拘束条件に次式（１４）を追加したものである。
【数１７】
0005258915.tif 000018
ここで、式（１４）は、変換行列Ｗの要素のうち、非０の要素の数がＣ個であるという条件である。Ｃはユーザが任意に指定できる定数である。即ち、具体例２では、要素数がＣ個になるという条件下の下で、ｆ（Ｗ）を最小化する。
【００８５】
変換行列初期化部１３は、変換行列Ｗの要素を−１と１でランダムに埋めて、変換行列Ｗの要素からランダムにＣ個を選択し、それら以外をすべて０で埋めることにより、変換行列Ｗを初期化する（ステップＳ４１）。変換行列更新部１６は、変換行列Ｗの要素ｗｉ，ｊをランダムに１つ選択する（ステップＳ４３）（この選んだ要素をｗｕ，ｖとする）。
【００８６】
図６は、具体例２において置換候補特定部１５で特定される置換候補を示す図である。図６に示すように、置換候補特定部１５では、式（１４）の条件を満たすように置換候補が特定される。即ち、式（１４）の拘束条件によって、非０の数を変動させるような変換はできないので、非０の数が変動しないような置換候補のみが特定されている。具体的には、図６に示すように、ｗｕ，ｖ＝１である場合は、１は非０であるので、非０である−１にしか変換できない。また、ｗｕ，ｖ＝０である場合は、これを１又は−１、即ち非０に変換すると、非０の数が変動してしまうので、０には置換候補はないことになる。ｗｕ，ｖ＝−１である場合は、−１は非０であるので、非０である１にしか変換できない。
【００８７】
変換行列更新部１６は、選択された要素をこれらの各置換候補で置換して、選択された要素が置換された変換行列をコスト関数計算部１７に出力する（ステップＳ４４）。その他の処理は具体例１と同様である。
【００８８】
具体例２によれば、式（１３）及び式（１４）の条件を維持しつつ、コストを効率的に最小化できる。そして、変換行列Ｗの要素ｗｉ，ｊが−１と１しか持たないため、ビットコード変換部２０が式（８）によってビットコード変換をする際のＷＴｘの計算において、掛け算が不要になり、高速にビットコード化を行なうことができる。具体例２ではさらに、Ｃの値を小さくすることで、変換行列Ｗを非常に疎（スパース）な行列にすることができる。変換行列Ｗを疎にすることで、ＷＴｘの計算を更に高速化できる。
【００８９】
（最適変換行列の決定方法の具体例３）
具体例３のコード化パラメータ生成部１０では、具体例２と同様に、拘束条件格納部１４には、拘束条件として、式（１３）及び次式（１４）が格納されている。
【００９０】
変換行列初期化部１３は、具体例２と同様にして変換行列Ｗを初期化する（ステップＳ４１）。具体例３では、変換行列更新部１６は、変換行列Ｗの要素ｗｉ，ｊをランダムに２つ選択する（ステップＳ４３）（この選んだ要素をｗｕ，ｖ、ｗｐ，ｑとする）。
【００９１】
図７は、具体例３において置換候補特定部１５で特定される置換候補を示す図である。図７に示すように、置換候補特定部１５は、式（１４）の条件を満たすように、置換候補を特定する。即ち、式（１４）の拘束条件によって、非０の数を変動させるような変換はできないので、非０の数が変動しないような置換候補のみが特定されている。例えば、（ｗｕ，ｖ，ｗｐ，ｑ）＝（１，１）である場合は、非０の数は２個であるので、置換候補は、非０が２個になる条件を保って、（−１，−１）、（１，−１）、（−１，１）となる。他も同様であり、（ｗｕ，ｖ，ｗｐ，ｑ）に非０が１個ある場合には、非０が１個という条件を保って置換候補が特定される。なお、（ｗｕ，ｖ，ｗｐ，ｑ）＝（０，０）である場合は、式（１４）によって、非０が０個である状態を維持する必要があるので、置換候補はないことになる。この場合は、ｗｕ，ｖ、ｗｐ，ｑを新たに選択し直す。
【００９２】
変換行列更新部１６は、選択された要素をこれらの各置換候補で置換して、選択された要素が変換された変換行列をコスト関数計算部１７に出力する（ステップＳ４４）。その他の処理は具体例１と同様である。
【００９３】
具体例３によれば、具体例２と同様に変換行列Ｗを疎にすることで、ＷＴｘの計算を更に高速化できる。さらに、具体例２では、初期化された変換行列Ｗにおいて０の要素は固定されていたが、具体例３では、０の要素の数を固定したままその場所が最適化されるので、変換行列Ｗをより好適に最適化できる。
【００９４】
以上説明したとおり、最適変換行列を求める過程では、ｗｕ，ｖを更新するたびに、ビットコード変換部２０がビットコード変換を行い、コスト関数計算部１７がコスト関数ｆ（Ｗ）を計算する。以下では、その計算を大幅に簡略化して、効率的にコスト関数を計算する方法を説明する。
【００９５】
図８は、特徴ベクトルをビットコードに変換する処理を示す図である。図８は、式（８）を図式化したものである。なお、図８において、行列Ｘの各列は、１つの特徴ベクトルｘであり、行列Ｚの各列は、ＷＴｘであり、行列Ｙの各列は、式（８）で表されるｙである。
【００９６】
図９は、ビットコードに変換する前の特徴ベクトルＸＡと特徴ベクトルＸＢの間の距離を求める処理を示す図である。なお、図９及び以下の図１０、図１１、図１４において、説明の便宜上、特徴ベクトル（もしくはビットコード）間の距離演算を模式化する記号としてマイナスを用いた。図９におけるＤｏの各列は、特徴ベクトルＸＡ及びＸＢの対応する列同士の正規化された距離を表している。
【００９７】
図１０は、図９の特徴ベクトルＸＡ及びＸＢをビットコードに変換して、ビットコードＹＡ及びＹＢとした上で、それらのハミング距離を求める処理を示す図である。図１０においても、Ｄｈの各列は、ビットコードＹＡ及びＹＢの対応する列同士の正規化された距離を表している。
【００９８】
図１１は、変換行列において選択された要素とコスト関数との関係を示す図である。図１１に示すように、いま、選択された要素がＷＴの第１行にあるとすると、この選択された要素ｗ１，∞（右下添え字の「１，∞」は、第１行の任意の列を表している）が置換候補によって置換されることで、ビットコードＹＡ及びＹＢにおいて影響を受けるのは、その第１行の要素のみである。よって、要素ｗ１，∞を各置換候補で置換しながらビットコードＹＡ及びＹＢのハミング距離を求めると、その各ハミング距離の各列の値は、実際には、ビットコードＹＡ及びＹＢにて第１行の要素のみが変更されて求められた値である。即ち、図１１のビットコードＹＡ及びＹＢにおいて、斜線で示した第１行以外の部分については、要素ｗ１，∞を各置換候補で置換するたびに、重複して計算していることになる。従って、この重複計算を回避することで、計算速度を早くすることができる。
【００９９】
図１２は、変換行列Ｗ中の選択された要素を第ｎ番目の置換候補に置換したときの、ビットコードＹを求める処理を示す図である。図１２において、ビットコードＹ及び変換行列（の転地行列）ＷＴの右上添え字の（ｎ）は、選択された要素が第ｎ番目の置換候補で置換されていることを示している。図１２の例では、ＷＴの１行１列の要素ｗ１，１が選択されている。
【０１００】
図１３は、図１２の状態から、選択された要素ｗ１，１が第（ｎ＋１）番目の置換候補で置換されたときのビットコードＹを求める処理を示す図である。図１３のビットコードＹ（ｎ＋１）において、図１２のビットコードＹ（ｎ）から変更されているのは、斜線で示した第１行のみである。
【０１０１】
ここで、下式（１５）、（１６）のように定義をする。
【数１８】
0005258915.tif 000019
【数１９】
0005258915.tif 000020
ここで、ｗの右下添え字「１，∞」は、上述のように、選択された要素ｗが第１行（列は任意）であることを表しており、Ｙの右下添え字「１，∞」は、ビットコードＹの第１行を表している。
【０１０２】
上記のように定義すると、Ｘ、及び変換行列Ｗのうちの選択された要素ｗ以外の要素は、選択された要素ｗが置換候補で置換されたとしても不変であるので、次式（１７）が成り立つ。
【数２０】
0005258915.tif 000021
【０１０３】
式（１７）から、次式（１８）が成り立つ。
【数２１】
0005258915.tif 000022
【０１０４】
図１４は、選択された要素ｗ１，１が第（ｎ＋１）番目の置換候補で置換されたときの、ハミング距離を求める処理を示す図である。ハミング距離Ｄｈの右上添え字の（ｎ＋１）は、選択された要素ｗ１，１が第（ｎ＋１）番目の置換候補で置換されていることを示している。ハミング距離Ｄｈ（ｎ＋１）はハミング距離Ｄｈ（ｎ）とは異なるものになるが、この相違は、実際には、ビットコードＹＡとビットコードＹＢのそれぞれの第１行の相違のみに起因するものである。
【０１０５】
従って、選択された要素ｗ１，１が第（ｎ＋１）番目の置換候補で置換されたときのハミング距離Ｄｈ（ｎ＋１）は、次式（１９）によって求めることができる。
【数２２】
0005258915.tif 000023
ここで、ΔＹ１，∞は、次式（２０）で定義される。
【数２３】
0005258915.tif 000024
【０１０６】
このように、選択された要素ｗ１，１が第（ｎ＋１）番目の置換候補で置換されたときのビットコードＹ（ｎ＋１）の第１行は、式（１５）から式（１９）で示したように、選択された要素ｗ１，１が第（ｎ）番目の置換候補にであったときの計算結果を利用して求めることができ、更に、選択された要素ｗ１，１が第（ｎ＋１）番目の置換候補で置換されたときのハミング距離Ｄｈ（ｎ＋１）は、選択された要素ｗ１，１が第ｎ番目の置換候補であったときのハミング距離Ｄｈ（ｎ）とビットコードＹＡ（ｎ）及びＹＢ（ｎ）の第１行を用いて求めることができる。
【０１０７】
上記の説明は、選択された要素ｗが第１行第１列のｗ１，１であったが、上記の式（１８）及び（１９）を一般化すると、それぞれ次式（２１）及び（２２）となる。
【数２４】
0005258915.tif 000025
【数２５】
0005258915.tif 000026
なお、ΔＹｊ，∞は、次式（２３）で定義される。
【数２６】
0005258915.tif 000027
【０１０８】
コスト関数計算部１７は、選択された要素が置換候補で置換されると、上記式（２１）及び式（２２）を用いてコスト関数ｆ（Ｗ）を計算する。
【０１０９】
以上、本発明の実施の形態を説明したが、本発明は上記の実施の形態に限らず、種々の形態で実施される。例えば、拘束条件格納部１４に格納される拘束条件は、変換行列の要素がすべて整数であるという条件であってもよく、変換行列の要素がすべて２のべき乗であるという条件であってもよい。
【産業上の利用可能性】
【０１１０】
以上のように、本発明は、特徴ベクトルを高速にビットコード変換でき、かつ短いビットコードを生成できるという効果を有し、類似情報探索のために変換行列を用いて特徴ベクトルをビットコードに変換する特徴変換装置等として有用である。
【符号の説明】
【０１１１】
１０  コード化パラメータ生成部
１１  学習ペア選択部
１２  学習ペア保持部
１３  変換行列初期化部
１４  拘束条件格納部
１５  置換候補特定部
１６  変換行列更新部
１７  コスト関数計算部
１８  収束判定部
２０  ビットコード変換部
３０  ビットコード保管部
４０  ｋ−最近傍探索部
５０  距離計算部
１００  類似情報探索装置
１０１  エンコーダ部
１０２  類似特徴ベクトル検索部
【図１】
0005258915.tif 000028
【図２】
0005258915.tif 000029
【図３】
0005258915.tif 000030
【図４】
0005258915.tif 000031
【図５】
0005258915.tif 000032
【図６】
0005258915.tif 000033
【図７】
0005258915.tif 000034
【図８】
0005258915.tif 000035
【図９】
0005258915.tif 000036
【図１０】
0005258915.tif 000037
【図１１】
0005258915.tif 000038
【図１２】
0005258915.tif 000039
【図１３】
0005258915.tif 000040
【図１４】
0005258915.tif 000041