(57)【特許請求の範囲】
【請求項１】
複数の候補の中から、入力値と最も距離の近いものを探索する探索方法であって、
前記候補を、小グループにグループ化し、前記小グループ間の距離である小グループ間距離を求め、前記小グループ間距離の近い小グループどうしを統合して統合グループとし、各統合グループを代表する候補である代表候補を選択し、前記代表候補を含む、その代表候補に隣接する他の代表候補を通る境界面で囲まれる空間内に存在する候補を、その代表候補が代表する統合グループに再配置することにより、前記候補を階層構造に、あらかじめ構造化しておき、
前記入力値と各代表候補との間の距離である入力代表間距離を求め、
前記入力代表間距離の近い代表候補を含む統合グループに属する各候補それぞれと、前記入力値との距離である入力候補間距離を求め、
前記入力候補間距離の最も近い候補を探索結果とする
ことを特徴とする探索方法。
【請求項２】
前記代表候補を候補とみなして、それを階層構造に構造化することを繰り返す
ことを特徴とする請求項１に記載の探索方法。
【請求項３】
所定の階層の代表候補と、前記入力値との間の入力代表間距離を求め、
前記入力代表間距離が近い代表候補を含むグループに属し、前記所定の階層の下位階層の候補それぞれと、前記入力値との間の入力候補間距離を求め、
その後、前記入力候補間距離が近い候補を前記代表候補とするグループに属し、前記下位階層のさらに下位階層の候補それぞれと、前記入力値との間の入力候補間距離を求めることを、最下位の階層にたどりつくまで繰り返す
ことを特徴とする請求項２に記載の探索方法。
【請求項４】
前記所定の階層の代表候補のうちの、前記入力代表間距離が所定の距離以下になるものを中心とする所定の半径の球内に存在する代表候補のみを対象として、前記入力値との入力代表間距離を求める
ことを特徴とする請求項３に記載の探索方法。
【請求項５】
前記所定の階層の代表候補の総数のＫ（Ｋは１未満の正数）倍の数の代表候補を含む最小半径の球のうちの、半径が最も大きい球の中心に位置する代表候補である中心候補との入力代表間距離を求め、
前記入力代表間距離が、前記中心候補を中心とする前記球の半径のα（αは０．５以上１以下の実数）倍以下になっていないときには、各代表候補それぞれを中心とし、前記総数のＫ倍の数の代表候補を含む前記球のうちの、半径がより大きい球の中心に位置し、かつ既に前記中心候補とされた代表候補からより遠い位置にある代表候補を、新たな中心候補とし、その中心候補との入力代表間距離を求めることを、その入力代表間距離が、前記中心候補を中心とする前記球の半径のα倍以下になるまで繰り返す絞り込みを行い、
前記入力代表間距離が、前記中心候補を中心とする前記球の半径のα倍以下になったときには、そのときに中心候補となっている代表候補を中心とする前記球内に存在する、前記総数のＫ倍の数の代表候補のみを対象として、前記入力値との入力代表間距離を求める
ことを特徴とする請求項４に記載の探索方法。
【請求項６】
前記αは、０．５である
ことを特徴とする請求項５に記載の探索方法。
【請求項７】
前記入力代表間距離を求める対象とした代表候補に対し、前記絞り込みを繰り返し行い、前記入力代表間距離を求める対象とする代表候補の数を、前記総数のＫの累乗倍に減らす
ことを特徴とする請求項５に記載の探索方法。
【請求項８】
前記探索結果である候補を中心とする球に含まれる候補であって、その球の中心により近い位置に存在する所定の数ｒ1の候補それぞれと、前記入力値との間の入力候補間距離を求め、その入力候補間距離の最も近い候補を、新たな探索結果とする
ことを特徴とする請求項１に記載の探索方法。
【請求項９】
前記探索結果である候補を中心とする球に含まれる候補であって、その球の中心により近い位置に存在する所定の数ｒ1の候補それぞれと、前記入力値との間の入力候補間距離を求め、その入力候補間距離の最も近い候補を、新たな探索結果とすることを、探索結果として得られる候補が変わらなくなるまで繰り返す
ことを特徴とする請求項１に記載の探索方法。
【請求項１０】
前記探索結果である候補との入力候補間距離が、その候補を中心とする球であって、前記所定の数ｒ1のＬ（Ｌは１未満の正数）の累乗倍の数の候補を含む最小半径の球の半径のβ（βは０．５以上１以下の実数）倍以下であるときには、その球に含まれる前記所定の数ｒ1のＬの累乗倍の数の候補のみを、探索の対象とする
ことを特徴とする請求項８に記載の探索方法。
【請求項１１】
前記βは、０．５である
ことを特徴とする請求項１０に記載の探索方法。
【請求項１２】
前記入力値との入力候補間距離または入力代表間距離を一度求めた候補または代表候補について、その入力候補間距離または入力代表間距離を記憶しておく
ことを特徴とする請求項１に記載の探索方法。
【請求項１３】
音声から特徴パラメータを抽出する抽出手段と、
前記抽出手段により抽出された特徴パラメータをベクトル量子化し、所定のコードを出力するベクトル量子化手段と、
前記ベクトル量子化手段より出力されるコードに基づいて、前記音声を認識する認識手段と
を備え、
前記ベクトル量子化手段は、請求項１に記載の探索方法により、前記特徴パラメータに対応するコードを探索する
ことを特徴とする音声認識装置。
【発明の詳細な説明】
【０００１】
【産業上の利用分野】
本発明は、例えばベクトル量子化における最適なセントロイドの探索などのように、ある評価基準（距離）に基づいて、複数の候補の中から、入力値との距離が最も近いもの（入力値との類似度が最も高いもの）を選び出す（探索（検索）する）場合に用いて好適な探索方法、並びに音声認識装置に関する。
【０００２】
【従来の技術】
与えられた複数の候補の中から、入力（入力値）と最も距離の近いものを求める探索問題は、さまざまなところで必要とされる。即ち、例えばベクトル量子化などにおいては、入力値と最も類似するセントロイドを探索する必要がある。この探索問題を解決する探索方法としては、例えば「ディジタル音声処理」、古井貞煕、東海大学出版会、１２５乃至１３３ページに記載されているような、入力値とすべての候補それぞれとの類似度を求めた上で、最も距離の近いものを決定する全探索（ｆｕｌｌ  ｓｅａｒｃｈ）と呼ばれる手法や、あらかじめ候補を２値木（ｂｉｎａｒｙ  ｔｒｅｅ）に構造化しておき、その二値木をたどることによって距離の近いものを決定する二値木探索（ｂｉｎａｒｙ  ｔｒｅｅ  ｓｅａｒｃｈ）と呼ばれる手法が従来から用いられている。
【０００３】
【発明が解決しようとする課題】
ところで、このような探索問題においては、演算量と記憶容量を低減し、かつ歪みを小さくすることが重要となる。
【０００４】
従来の探索方法の１つである全探索では、すべての候補との距離の計算を行うため演算量が大きくなり、その結果、多大な探索時間を要する課題があった。
【０００５】
また、二値木探索では、すべての候補との距離の計算を行う必要はないため、全探索に比較して演算量を低減することができるが、歪みが大きくなるという課題があった。さらに、候補を２値木として構造化するため、木の節点数だけの記憶容量（全探索の約２倍の記憶容量）が必要であった。
【０００６】
本発明は、このような状況に鑑みてなされたものであり、入力値と最も距離の近い候補を、歪みをできるだけ低く抑えて、高速に探索することができるようにするものである。
【０００７】
【課題を解決するための手段】
本発明の探索方法は、複数の候補の中から、入力値と最も距離の近いものを探索する探索方法であって、候補を、小グループにグループ化し、小グループ間の距離である小グループ間距離を求め、小グループ間距離の近い小グループどうしを統合して統合グループとし、各統合グループを代表する候補である代表候補を選択し、代表候補を含む、その代表候補に隣接する他の代表候補を通る境界面で囲まれる空間内に存在する候補を、その代表候補が代表する統合グループに再配置することにより、候補を階層構造に、あらかじめ構造化しておき、入力値と各代表候補との間の距離である入力代表間距離を求め、入力代表間距離の近い代表候補を含む統合グループに属する各候補それぞれと、入力値との距離である入力候補間距離を求め、入力候補間距離の最も近い候補を探索結果とすることを特徴とする。
【０００９】
また、この探索方法においては、代表候補を候補とみなして、それを階層構造に構造化することを繰り返すようにすることができる。さらに、所定の階層の代表候補と、入力値との間の入力代表間距離を求め、入力代表間距離が近い代表候補を含むグループに属し、所定の階層の下位階層の候補それぞれと、入力値との間の入力候補間距離を求め、その後、入力候補間距離が近い候補を代表候補とするグループに属し、下位階層のさらに下位階層の候補それぞれと、入力値との間の入力候補間距離を求めることを、最下位の階層にたどりつくまで繰り返すようにすることができる。また、この探索方法においては、所定の階層の代表候補のうちの、入力代表間距離が所定の距離以下になるものを中心とする所定の半径の球内に存在する代表候補のみを対象として、入力値との入力代表間距離を求めるようにすることができる。
【００１０】
所定の階層の代表候補の総数のＫ（Ｋは１未満の正数）倍の数の代表候補を含む最小半径の球のうちの、半径が最も大きい球の中心に位置する代表候補である中心候補との入力代表間距離を求め、入力代表間距離が、中心候補を中心とする球の半径のα（αは０．５以上１以下の実数）倍以下になっていないときには、各代表候補それぞれを中心とし、総数のＫ倍の数の代表候補を含む球のうちの、半径がより大きい球の中心に位置し、かつ既に中心候補とされた代表候補からより遠い位置にある代表候補を、新たな中心候補とし、その中心候補との入力代表間距離を求めることを、その入力代表間距離が、中心候補を中心とする球の半径のα倍以下になるまで繰り返す絞り込みを行い、入力代表間距離が、中心候補を中心とする球の半径のα倍以下になったときには、そのときに中心候補となっている代表候補を中心とする球内に存在する、総数のＫ倍の数の代表候補のみを対象として、入力値との入力代表間距離を求めるようにすることができる。さらに、αは、０．５とすることができる。また、入力代表間距離を求める対象とした代表候補に対し、絞り込みを繰り返し行い、入力代表間距離を求める対象とする代表候補の数を、総数のＫの累乗倍に減らすようにすることができる。
【００１１】
この探索方法においては、探索結果である候補を中心とする球に含まれる候補であって、その球の中心により近い位置に存在する所定の数ｒ１の候補それぞれと、入力値との間の入力候補間距離を求め、その入力候補間距離の最も近い候補を、新たな探索結果とするようにすることができる。また、探索結果である候補を中心とする球に含まれる候補であって、その球の中心により近い位置に存在する所定の数ｒ１の候補それぞれと、入力値との間の入力候補間距離を求め、その入力候補間距離の最も近い候補を、新たな探索結果とすることを、探索結果として得られる候補が変わらなくなるまで繰り返すようにすることができる。
【００１２】
探索結果である候補との入力候補間距離が、その候補を中心とする球であって、所定の数ｒ1のＬ（Ｌは１未満の正数）の累乗倍の数の候補を含む最小半径の球の半径のβ（βは０．５以上１以下の実数）倍以下であるときには、その球に含まれる所定の数ｒ1のＬの累乗倍の数の候補のみを、探索の対象とすることができる。また、βは、０．５とすることができる。
【００１５】
さらに、この探索方法においては、入力値との入力候補間距離または入力代表間距離を一度求めた候補または代表候補について、その入力候補間距離または入力代表間距離を記憶しておくようにすることができる。
【００１６】
本発明の音声認識装置は、音声から特徴パラメータを抽出する抽出手段（例えば、図２２に示す音響分析部３など）と、抽出手段により抽出された特徴パラメータをベクトル量子化し、所定のコードを出力するベクトル量子化手段（例えば、図２２に示すベクトル量子化部４など）と、ベクトル量子化手段より出力されるコードに基づいて、音声を認識する認識手段（例えば、図２２に示す認識部５など）とを備え、ベクトル量子化手段は、請求項１に記載の探索方法により、特徴パラメータに対応するコードを探索することを特徴とする。
【００１７】
【作用】
本発明の探索方法においては、候補を、小グループにグループ化し、小グループ間の距離である小グループ間距離を求め、小グループ間距離の近い小グループどうしを統合して統合グループとし、各統合グループを代表する候補である代表候補を選択し、代表候補を含む、その代表候補に隣接する他の代表候補を通る境界面で囲まれる空間内に存在する候補を、その代表候補が代表する統合グループに再配置することにより、候補が階層構造に、あらかじめ構造化されている。そして、入力値と各代表候補との間の距離である入力代表間距離が求められ、入力代表間距離の近い代表候補を含む統合グループに属する各候補それぞれと、入力値との距離である入力候補間距離を求められて、入力候補間距離の最も近い候補が探索結果とされる。従って、入力値と最も距離の近い候補を、歪みをできるだけ低く抑えて、高速に探索することができる。
【００１８】
本発明の音声認識装置においては、音声から特徴パラメータが抽出され、それが、ベクトル量子化部４でベクトル量子化されて、所定のコードとされる。そして、このコードに基づいて、音声が認識される。ベクトル量子化部４では、請求項１に記載の探索方法により、特徴パラメータに対応するコードが探索される。従って、特徴パラメータを、歪みをできるだけ低く抑えて、高速にベクトル量子化することができる。
【００１９】
【実施例】
以下、図面を参照して、本発明の実施例について説明する。本発明の探索方法は、与えられた複数の候補の中から入力と最も距離の近い（類似度の高い）ものを選び出すという探索（検索）問題において、あらかじめ全候補を構造化しておき、その構造を用いることで探索すべき候補を絞り込みながら、その中で入力と最も距離の近い候補を求め、それを探索結果とするようになされている。ここで、その全体の流れを、図１に示す。
【００２０】
まず最初に、ステップＳ１においては、近傍高速探索処理（詳細は後述する）が行われる。この近傍高速探索処理により、探索範囲を制限することができる場合には、可能な限り制限する。そして、探索範囲が、１つの候補にまで制限することができた場合には、処理を終了する。また、探索範囲を、１つの候補にまで制限することができない場合には、ステップＳ２に進む。
【００２１】
ステップＳ２では、構造化探索処理が行われる。この構造化探索処理は、階層構造を用いた探索方法による処理で、ステップＳ３の初期探索処理と、ステップＳ４の構造探索処理で構成される（詳細は後述する）。構造化探索処理後は、ステップＳ５に進み、構造化探索処理による歪みを小さくするための近傍精密探索処理が行われ、処理を終了する。
【００２２】
次に、ステップＳ２の構造化探索処理について説明するが、その前段階の準備として、この構造化探索処理を行うために、探索対象である候補を構造化する構造化方法について説明する。
【００２３】
なお、与えられたすべての候補をＣ＝｛Ｃｉ：１≦ｉ≦Ｎ｝（但し、ｉは整数）とし、ＣｉとＣｊとの間の距離（類似度）（例えば、ユークリッド距離）をｄ（Ｃｉ，Ｃｊ）と表すものとする。ここで、Ｎは全候補の数を表す。また、入力（値）をＸと表す。従って、入力値ＸとＣｉとの間の距離はｄ（Ｘ，Ｃｉ）となる。
【００２４】
探索問題とは、全候補Ｃ＝｛Ｃｉ：１≦ｉ≦Ｎ｝の中から、入力値Ｘとの距離ｄ（Ｘ，Ｃｉ）が最も小さくなるような候補Ｃｉを求める問題であり、例えばベクトル量子化（ＶＱ）について言えば、セントロイドベクトルの集合がＣ＝｛Ｃｉ：１≦ｉ≦Ｎ｝に、入力ベクトルがＸに、それぞれ対応する。また、セントロイドベクトルＣｉとＣｊ（但し、ｊは、１乃至Ｎの範囲の整数）との間のユークリッド距離がｄ（Ｃｉ，Ｃｊ）に、入力ベクトルＸとセントロイドベクトルＣｉとの間のユークリッド距離がｄ（Ｘ，Ｃｉ）に、それぞれ対応する。
【００２５】
候補Ｃ＝｛Ｃi：１≦ｉ≦Ｎ｝の構造化は、図２に示すフローチャートにしたがって行われる。即ち、まず最初に、ステップＳ１１において、初期グループ（小グループ）が決定される。即ち、各候補Ｃiそれぞれを１つだけを要素とするＮ個のグループＧi＝｛Ｃi｝が作成される。なお、このとき、グループＧiに属する候補数をｎ（Ｇi）で表せば、ｎ（Ｇi）＝１となる。
【００２６】
そして、ステップＳ１２に進み、ｎ（Ｇｉ）≧１のグループＧｉについて、各グループ間の相互距離（グループ間距離）Ｄ（Ｇｉ，Ｇｊ）が計算され、ステップＳ１３に進む。ステップＳ１３では、ステップＳ１２で求められたグループ間距離が近いものどうしが結合（統合）され、１つのグループ（統合グループ）とされる。そして、ステップＳ１４に進み、グループの統合を中止するか否かが判定され、グループの統合を中止しないと判定された場合、即ちグループの統合を続けると判定された場合、ステップＳ１２に戻り、ステップＳ１２乃至Ｓ１４の処理を繰り返す。
【００２７】
ステップＳ１２乃至Ｓ１４の処理が繰り返されることにより、１つだけの候補を要素としていたグループ（初期グループ）が統合され、複数の候補を要素として有するグループが生成される。
【００２８】
一方、ステップＳ１４において、グループの統合を中止すると判定された場合、ステップＳ１５に進み、ステップＳ１２乃至Ｓ１４の処理により生成されたグループに属する候補の中から、そのグループを代表する候補（代表候補）が抽出（選択）される。そして、ステップＳ１６に進み、代表候補に選択されなかった候補が、改めて各グループの要素として再配置し直され、各グループに属する候補が、最終的に決定されて、処理を終了する。
【００２９】
以上により、全候補Ｃ＝｛Ｃｉ｝が幾つかのグループに分割され、また各グループには、代表候補が一つずつ存在している状態となる。代表候補を上位階層の候補とみなすとともに、その代表候補が代表するグループに属する候補を下位階層の候補とみなすことにより、図２に示した構造化処理を１度行うことで、全候補は、２階層に構造化されたものと考えることができる。
【００３０】
そして、代表候補だけを、新たな候補とみなして、図２の構造化処理を繰り返すことにより、さらに多くの階層からなる階層構造が出来上がる。
【００３１】
即ち、図３（ａ）に示すように、全体（全候補）に対して、構造化処理を施し、その処理結果のうちの代表候補だけに着目する。そして、その着目した代表候補を、新たな候補とし、その候補に対し、再度構造化処理を施して、その処理結果のうちの代表候補だけに着目する。以下、同様の処理を繰り返すことにより、図３（ｂ）に示すように、候補が階層構造に構造化される。
【００３２】
次に、図２のステップＳ１２乃至Ｓ１６それぞれの処理の詳細について説明する。ステップＳ１２乃至Ｓ１４の処理を繰り返すことにより、グループどうしが統合され、グループの要素は増加する（要素の増加するグループと、要素がなくなるグループとに分かれる）。従って、グループに属する候補が、常に１つである場合は、例えばその候補どうしの距離を、グループ間距離とすることができるが、グループに属する候補が複数になった場合は、ステップＳ１２でグループ間距離を計算するために、複数の候補を要素として有するグループＧｉとＧｊと間の距離（グループ間距離）Ｄ（Ｇｉ，Ｇｊ）を定義する必要が生じてくる。
【００３３】
このグループ間距離Ｄ（Ｇｉ，Ｇｊ）は、例えばベクトル量子化における場合のように、候補間の距離ｄ（Ｃｉ，Ｃｊ）が定義されている場合、例えば図４に示すように、グループＧｉ，Ｇｊそれぞれに属する候補ｘ，ｙのうち、最も近い候補間の距離とすることができる。この場合、グループ間距離Ｄ（Ｇｉ，Ｇｊ）は、次式で定義される。
【００３４】
Ｄ（Ｇｉ，Ｇｊ）＝ｍｉｎ｛ｄ（ｘ，ｙ）：ｘ∈Ｇｉ，ｙ∈Ｇｊ｝
但し、ｍｉｎ｛｝は、｛｝内の最小値を意味する。
【００３５】
また、グループ間距離Ｄ（Ｇｉ，Ｇｊ）は、例えば図５に示すように、グループＧｉ，Ｇｊそれぞれに属する候補ｘ，ｙのうち、最も遠い候補間の距離とすることができる。この場合、グループ間距離Ｄ（Ｇｉ，Ｇｊ）は、次式で定義される。
【００３６】
Ｄ（Ｇｉ，Ｇｊ）＝ｍａｘ｛ｄ（ｘ，ｙ）：ｘ∈Ｇｉ，ｙ∈Ｇｊ｝
但し、ｍａｘ｛｝は、｛｝内の最大値を意味する。
【００３７】
さらに、グループ間距離Ｄ（Ｇｉ，Ｇｊ）は、例えば図６に示すように、グループＧｉ，Ｇｊそれぞれの平均値ベクトルｕｉ，ｕｊ間の距離とすることもできる。この場合、グループ間距離Ｄ（Ｇｉ，Ｇｊ）は、次式で定義される。
Ｄ（Ｇｉ，Ｇｊ）＝ｄ（ｕｉ，ｕｊ）
但し、
【数１】
0003569981.tif 000002
【００３８】
あるいはまた、グループ間距離Ｄ（Ｇｉ，Ｇｊ）は、例えば図７に示すように、グループＧｉ，Ｇｊそれぞれの分散σｉ，σｊによって定義することもできる。この場合、グループ間距離Ｄ（Ｇｉ，Ｇｊ）は、例えば次式で定義される。
【００３９】
Ｄ（Ｇｉ，Ｇｊ）＝σｉ＋σｊ
但し、
【数２】
0003569981.tif 000003
【００４０】
さらに、グループ間距離Ｄ（Ｇｉ，Ｇｊ）は、例えば図８に示すように、グループＧｉ，Ｇｊそれぞれに属する候補すべての平均値（平均値ベクトル）ｕから、その候補全体のうちの最も遠い候補（候補ベクトル）ｘまでの距離（分布半径）とすることもできる。この場合、グループ間距離Ｄ（Ｇｉ，Ｇｊ）は、次式で定義される。
【００４１】
Ｄ（Ｇｉ，Ｇｊ）＝ｍａｘ｛ｄ（ｕ，ｘ）：ｘ∈Ｇｉ∪Ｇｊ｝
但し、
【数３】
0003569981.tif 000004
【００４２】
また、グループ間距離Ｄ（Ｇｉ，Ｇｊ）は、例えば図９に示すように、グループＧｉ，Ｇｊそれぞれに属する候補すべての分散σによって定義することもできる。この場合、グループ間距離Ｄ（Ｇｉ，Ｇｊ）は、例えば次式で定義される。
【００４３】
Ｄ（Ｇｉ，Ｇｊ）＝σ
但し、
【数４】
0003569981.tif 000005
【００４４】
さらにまた、グループ間距離Ｄ（Ｇｉ，Ｇｊ）は、以上述べたような評価値を組み合わせて定義するようにしても良い。
【００４５】
ステップＳ１２では、以上のように定義されるグループ間距離のいずれかが計算される。尚、図４乃至図９のうちの図５に示したグループ間処理Ｄ（Ｇｉ，Ｇｊ）を用いた場合が、探索における歪が最も小さいという実験結果が得られた。
【００４６】
ステップＳ１２の処理の結果、グループ間距離Ｄ（Ｇｉ，Ｇｊ）を計算する２つのグループＧｉ，Ｇｊのサフィックスｉ，ｊを、それぞれ縦軸、横軸にとった表を、図１０に示すように、グループ間距離Ｄ（Ｇｉ，Ｇｊ）で埋めたものが得られる。但し、ステップＳ１２において、候補数ｎ（Ｇｋ）＝０のグループＧｋに対応する行と列（ｉ＝ｋの行と、ｊ＝ｋの列）は不定として使用しない（グループ間距離Ｄ（Ｇｋ，Ｇｊ）とＤ（Ｇｉ，Ｇｋ）とは計算されない）。なお、ｋは、１乃至Ｎの範囲の整数である。
【００４７】
そして、ステップＳ１３では、例えば図１１に示すようにして、グループ間距離Ｄ（Ｇｉ，Ｇｊ）の近いグループＧｉ，Ｇｊどうしが統合される。即ち、まず最初に、ステップＳ２１において、図１０に示した表におけるグループ間距離Ｄ（Ｇｉ，Ｇｊ）が最小となるグループＧｉ，Ｇｊが検出され、ステップＳ２２に進み、グループＧｊの要素（グループＧｊに属する候補）が、グループＧｉに追加され、これによりグループＧｉとＧｊとが統合される（グループＧｊが、グループＧｉに統合される）。
【００４８】
その後、ステップＳ２３に進み、グループＧｊが空集合とされ、ステップＳ２４に進む。ステップＳ２４では、グループＧｉに属する候補数ｎ（Ｇｉ）に、グループＧｊに属する候補数ｎ（Ｇｊ）が加算され、これがグループＧｉに属する、新たな候補数ｎ（Ｇｉ）とされる。そして、ステップＳ２５に進み、グループＧｊに属する候補数ｎ（Ｇｊ）が０とされ、処理を終了する。
【００４９】
なお、図１１に詳細に示したステップＳ１３（図２）において、２つ以上のグループ間距離が等しく、その距離が最小である場合には、そのようなグループ間距離にあるグループは、同時に統合される。即ち、例えばグループ間距離Ｄ（Ｇｉ，Ｇｊ）とＤ（Ｇｉ，Ｇｋ）とが等しく、かつ最も小さい場合には、グループＧｉ，Ｇｊ，Ｇｋは、同時に統合（結合）される。また、例えばグループ間距離Ｄ（Ｇｉ，Ｇｊ）とＤ（Ｇｐ，Ｇｑ）とが等しく、かつ最も小さい場合には、グループＧｉ，Ｇｊが統合されると同時に、グループＧｐ，Ｇｑも結合される。但し、ｐ，ｑは、１乃至Ｎの範囲の整数である。
【００５０】
ステップＳ１３の処理後、グループが統合されることにより、その総数が減少し、ステップＳ１４では、上述したように、グループの統合を中止するか否かが判定される。この判定は、例えば、グループの総数がある所定の数以下になったか否かや、所定の回数だけステップＳ１２乃至Ｓ１４のループを繰り返したか否か、あるいは各グループの分散が所定の値を越えたか否かなどを基準として行われる。
【００５１】
次に、図２のステップＳ１５における代表候補の選択では、上述したステップＳ１２乃至Ｓ１４の処理により最終的に得られたグループに属する候補のうちの、例えば平均値に最も近いものが代表候補として抽出（選択）される。即ち、例えばベクトル量子化を考えた場合には、グループは、セントロイドベクトルの集合として与えられ、その平均値ベクトルに最も近いベクトルが代表候補として抽出される。
【００５２】
そして、ステップＳ１６では、上述したように各グループに属する候補の再配置が行われるが、これについては図１２を参照して説明する。ここで、ステップＳ１５で抽出された代表候補をＲ＝｛Ｒｉ：１≦ｉ≦Ｎ１｝とし、各代表候補が代表するグループを、ｇ＝｛ｇｉ：１≦ｉ≦Ｎ１｝と表す。なお、Ｎ１≦Ｎ，Ｒ⊂Ｃである。
【００５３】
まず最初に、ステップＳ３１においては、代表候補Ｒｉそれぞれが、それが代表するグループｇｉの１つ目の要素とされ、ステップＳ３２に進み、ステップＳ１５で代表に選ばれなかった（代表候補として選択されなかった）残りの候補全体Ｒ’（図１２においては、Ｒの上にバー（−）を付して示してある）から、１つだけ候補が抽出される。
【００５４】
ここで、Ｒ’⊂Ｃ，Ｃ＝Ｒ∪Ｒ’，Ｒ∩Ｒ’＝０である。
【００５５】
そして、ステップＳ３３に進み、ステップＳ３２で抽出された候補が、グループｇのうちのいずれのグループに含まれるのかが判定され（調査され）、そのグループに配置される。即ち、ステップＳ３３では、ステップＳ３２で抽出された候補ｘ∈Ｒ’について、次式を満たす代表候補Ｒｉが存在するか否かが判定される。
0003569981.tif 000006
【００５６】
そして、式（１）を満たす代表候補Ｒｉが存在する場合には、その代表候補Ｒｉを代表とするグループｇｉに、候補ｘが含められる（配置される）。
【００５７】
ここで、図１３は、式（１）で示される条件を幾何学的に表している。式（１）によれば、ある代表候補Ｒｉに着目した場合、ステップＳ３２で抽出された候補ｘと、残りの代表候補Ｒｊすべてとの関係が、図１３（ａ）に示すようなとき、即ち∠ｘＲｊＲｉが鋭角のとき（９０度未満のとき）、グループｇｉに、候補ｘが含められる。また、候補ｘと、残りの代表候補Ｒｊのうちの少なくとも１つとの関係が、図１３（ｂ）に示すようなとき、即ち∠ｘＲｊＲｉが直角または鈍角のとき（９０度以上のとき）、候補ｘは、グループｇｉには含められない。
【００５８】
従って、候補ｘを、グループｇｉに含めるかどうかは、ある代表候補Ｒｉと、その他の代表候補Ｒｊとを結ぶ直線に垂直な平面であって、代表候補Ｒｊを通る平面より、候補ｘが、代表候補Ｒｉ側にあるかどうかで決定される。
【００５９】
以上の処理後、ステップＳ３４（図１２）に進み、代表候補Ｒｉを除くすべての候補Ｒ’の配置が完了したか否かが判定される。ステップＳ３４において、候補Ｒ’の配置が完了していないと判定された場合、ステップＳ３２に戻り、まだ配置がなされていない候補が抽出され、以下ステップＳ３３以降の処理が繰り返される。そして、ステップＳ３２乃至Ｓ３４の処理が繰り返されることにより、代表候補Ｒｉを除くすべての候補Ｒ’が、グループｇに再配置される。
【００６０】
一方、ステップＳ３４において、候補Ｒ’の配置が完了したと判定された場合、処理を終了する。
【００６１】
なお、以上の処理において、候補ｘが、複数の代表候補について、式（１）の条件を満たす場合には、その複数の代表候補がそれぞれ代表するグループに、重複して配置される。
【００６２】
また、例えば、候補がベクトルで表される場合（候補ｘ、並びに代表候補ＲｉおよびＲｊがベクトルである場合）、式（１）に代えて、次式を用いることが可能である。
（ｘ−Ｒｊ）＊（Ｒｉ−Ｒｊ）＞０
但し、＊は内積を表す。
【００６３】
ここで、図１４は、以上説明した図２の構造化処理によって得られるグループｇｉを模式的に示している。探索の対象となる候補は、図１４（ａ）に示すように、元々ある空間に分布しているが、ステップＳ１１乃至Ｓ１５の処理により、グループが統合され、そのグループを代表する代表候補が抽出される。
【００６４】
代表候補どうしを、お互いを２等分するような境界で分割していくと、図１４（ｂ）に示すように、各代表候補を含むセルが得られるが、このセルの境界を、その代表候補を中心として２倍遠くまで広げた、図１４（ｃ）に示すような閉空間（図中、太線で囲んである部分）が、図２の構造化処理によって得られるグループｇｉ  に相当する。このグループｇｉ  に相当する空間は、代表候補Ｒｉ  を含む、その代表候補Ｒｉ  に隣接する他の代表候補Ｒｊを通る境界面で囲まれる空間である。
【００６５】
上述したステップＳ３３（図１２）では、式（１）を満足するか否かを判定することにより、代表候補を除く候補それぞれが、この閉空間の内部に存在するか否かが判定される。
【００６６】
図１４（ｃ）に示した閉空間が球になる場合、入力値から、ある代表候補Ｒｉまでの距離（但し、この距離は、三角不等式を満たすものである必要がある）が、その代表候補Ｒｉを代表とする球（グループｇｉ）の半径の１／２以下であれば、入力値との距離が最も近い候補は、その球、即ち代表候補Ｒｉを代表とするグループｇｉに属する候補の中に存在する。
【００６７】
以上のようにして、探索対象であるすべての候補Ｃ＝｛Ｃｉ｝を幾つかのグループに分割して、各グループの代表候補をそれぞれ選択した後、その代表候補だけを用いて、図２の構造化処理を繰り返すことにより、上述したように、図３に示したような階層構造が得られる。
【００６８】
次に、以上のようにして階層構造に構造化された候補の中から、その階層構造を利用して、入力値との距離が最も近いものを探索するステップＳ２（図１）の構造化探索処理について、図１５を参照して説明する。構造化探索処理（ステップＳ２）は、上述したように初期探索処理（ステップＳ３）と、構造探索処理（ステップＳ４）とからなり、まず初期探索処理が行われてから、構造探索処理が行われる。初期探索処理では、ステップＳ４１乃至Ｓ４３の処理が順次行われ、構造探索処理では、ステップＳ４４乃至Ｓ４９の処理が行われる。
【００６９】
即ち、まず最初に、ステップＳ４１において、探索（初期探索）を開始する階層が決定される。なお、最下位の階層から探索を開始することは全探索に相当する。従って、それより上位の階層から探索を開始することにより、構造化の効果が得られることになる。探索は、一般的には、より上位の階層から開始した方がより高速に、探索結果が得られ、また、より下位の階層から開始した方がより歪みが小さくなる。
【００７０】
探索を開始する階層（以下、適宜、初期階層という）が決定された後、ステップＳ４２に進み、その階層に属する代表候補すべてが探索（初期探索）の対象とされる（その階層に属する代表候補すべてが、探索の対象に決定される）。そして、ステップＳ４３に進み、初期探索が行われる。即ち、ステップＳ４３では、ステップＳ４２で探索の対象とされた候補それぞれと、入力値との間の距離（入力代表間距離）（例えば、ユークリッド距離）が計算される。
【００７１】
そして、ステップＳ４４に進み、その距離の最も近いものから上位ｎ個の候補が抽出される。なお、ここで抽出される候補は、探索を開始した階層が最下位の階層でない限り、上述した構造化処理（図２）を繰り返す過程で、一度は代表候補とされたものである。
【００７２】
その後、ステップＳ４５に進み、ステップＳ４４で抽出された候補に下位の階層があるか否かが判定される。ステップＳ４５において、ステップＳ４４で抽出された候補に下位の階層があると判定された場合、ステップＳ４６に進み、その下位の階層に、探索の対象とする階層が移行され、ステップＳ４７に進む。
【００７３】
ステップＳ４７では、移行された階層に属する候補の中から、探索の対象とする候補が決定される。即ち、ステップＳ４４で抽出された候補を代表候補とするグループに属し、かつ、その代表候補の階層の下位階層に属する候補が、探索の対象とされる。そして、ステップＳ４８に進み、ステップＳ４７で決定された候補を対象に、探索が行われる。即ち、ステップＳ４８では、ステップＳ４７で決定された候補それぞれと、入力値との間の距離（入力代表間距離または入力候補間距離）が計算され、ステップＳ４４に戻り、以下ステップＳ４４以降の処理が繰り返される。
【００７４】
一方、ステップＳ４５において、ステップＳ４４で抽出された候補に下位の階層がないと判定された場合、即ち、いまの階層が最下位階層である場合、ステップＳ４９に進み、その抽出された候補のうち、入力値との距離（入力候補間距離）が最も近いものが検索結果とされ、処理を終了する。
【００７５】
ステップＳ４１乃至Ｓ４３の処理は、初期階層の下位階層に属する候補すべてを対象とした探索を、その候補が属するグループの代表候補、即ち初期階層に属する候補（代表候補）だけで行うことに相当する。そして、最初のステップＳ４４の処理で、初期階層に属する候補のうち、入力値との距離が最も近いものから上位ｎ個それぞれを代表とするグループであって、その下位の階層に属する候補に、次の探索の対象が絞り込まれる。
【００７６】
また、ステップＳ４６乃至Ｓ４８の処理は、その絞り込まれた候補の下位階層に属する候補すべてを対象とした検索を、その候補が属するグループの代表候補、即ち絞り込まれた候補（代表候補）だけで行うことに相当する。そして、ステップＳ４４の処理が行われることにより、絞り込まれた候補のうち、入力値の距離が最も距離の近いものから上位ｎ個それぞれを代表とするグループであって、その下位の階層に属する候補に、さらに次の探索の対象が絞り込まれる。
【００７７】
以下、探索の対象となる候補の階層が、最下位階層になるまで、順次、下位階層に移行されていき、最下位階層にたどりついたところで、探索を終了する。この時点で、すべての候補に対する探索そのものが局所的ではあるが完了しており、探索が完了した候補、即ち最下位階層に属する候補であって、いま探索の対象となっている候補のうち、入力値との距離が最も近いものが、探索結果とされる。
【００７８】
ここで、以上のようにして、構造化を用いた探索を行うのに際し、入力値との距離が最も近い候補を含むグループの代表候補が、ステップＳ４４で抽出されない場合には、構造化による探索の結果は歪みの大きなものとなる。逆に、ステップＳ４４で、そのような代表候補が抽出された場合には、局所的な探索であっても歪みはそれほど大きくならない。従って、ステップＳ４４で抽出する候補の数ｎを大きな値にするほど、歪みを小さくすることができる。その一方、ｎを小さな値にするほど、探索処理は、基本的に高速になる。よって、ｎは、歪および処理の高速化のうちのいずれを優先させるかによって決めたり、あるいはその両方をバランスさせるように決めれば良い。
【００７９】
なお、ステップＳ４４で抽出する候補の数ｎは、必ずしも常に一定にする必要はなく、階層ごとに変えるようにすることができる。
【００８０】
以上の検索処理によれば、全探索のように、すべての候補との距離の計算を行う必要がないので、検索処理の高速化を図ることができる。さらに、二値木探索のように、探索対象とする候補を２値木として構造化するのではなく、図３で説明したように、所定の空間内に存在する距離の近い候補（グループ）どうしを統合することにより構造化するようにしたので、歪を小さく抑えることができる。
【００８１】
なお、以上の検索処理において、入力値との距離を一度計算した候補については、その距離を記憶しておくようにする。このようにすることにより、各階層で抽出された候補の中に、既に入力値との距離を計算したものがあれば、その候補については、記憶しておいた距離を用いることで、改めて距離計算をする必要がなくなる。即ち、重複した距離計算を避けることができる。
【００８２】
また、この場合、入力値との距離計算を、幾つの候補について行ったかが、実質的に、探索時における演算量を決めることになる。その意味で、構造化探索処理は、上述したように、全探索に比べて、入力値との距離計算を行う候補数が少なくなるので、短時間で探索結果を得ることができる。
【００８３】
次に、ステップＳ３（図１５）の初期探索を高速化する方法について説明する。図１５で説明した構造化探索処理において、初期探索すべき階層を決めれば、初期探索の対象となる候補は必然的に確定する。即ち、初期探索すべき階層に属する候補すべてが初期探索の対象となる。従って、初期探索を高速化するには、その階層に属する候補を絞り込んで、初期探索の対象とすれば良い。
【００８４】
そこで、本件出願人が先に出願している特願平６−８１７９号に記載されているベクトル量子化方法を基本原理として、初期探索の対象とする候補を絞り込むようにする。ここで、この基本原理について、図１６および図１７を参照して、簡単に説明する。
【００８５】
例えばいま、図１６に示すように、初期階層に属する候補が存在する場合において（図１６に示した場合では、｛Ｃｉ：１≦ｉ≦１０｝）、例えば候補Ｃ１が着目候補とされ、それと入力値Ｘとの間の距離が計算される（ステップＳ５１）。
【００８６】
そして、ステップＳ５２において、入力値Ｘと着目候補Ｃ１との間の距離が、その着目候補Ｃ１から、任意の他の候補（図１６に示した場合では、候補Ｃ５）までの距離Ｄの半分（０．５倍）以下であるか否かが判定される。ステップＳ５２において、入力値Ｘと着目候補Ｃ１との間の距離が、その着目候補Ｃ１から候補Ｃ５までの距離Ｄの半分以下であると判定された場合、着目候補Ｃ１を中心とした半径Ｄの球内にある候補（図１６に示した場合では、｛Ｃｉ：１≦ｉ≦５｝）の中に、入力値Ｘとの距離が最も近い候補があることなり、従ってその球内に存在する候補に探索対象を絞り込む（限定する）ことができる（ステップＳ５３）。
【００８７】
一方、ステップＳ５２において、入力値Ｘと着目候補Ｃ１との間の距離が、その着目候補Ｃ１から候補Ｃ５までの距離Ｄの半分以下でないと判定された場合、着目候補Ｃ１を中心とした半径Ｄの球内にある候補（図１６に示した場合では、｛Ｃｉ：１≦ｉ≦５｝）の中に、入力値Ｘとの距離が最も近い候補があるとは限らず、従ってその球内に存在する候補に探索対象を絞り込む（限定する）ことはできない（ステップＳ５４）。
【００８８】
次に、以上の原理に基づいて初期探索を行うステップＳ３（ステップＳ４３）（図１５）の処理の詳細について、図１８のフローチャートを参照して説明する。まず、初期階層に属する全候補をＣ＝｛Ｃｉ：１≦ｉ≦ｒ｝としたとき（但し、ｒ≦Ｎ）、各候補Ｃｉからの距離が、ｒ／２（ｒ／２１）番目に近い候補までの距離Ｄ２（Ｃｉ），ｒ／４（＝ｒ／２２）番目に近い候補までの距離Ｄ４（Ｃｉ），ｒ／８（ｒ／２３）番目に近い候補までの距離Ｄ８（Ｃｉ），・・・をあらかじめ求めておく。即ち、初期階層に属する候補それぞれを中心とする球であって、その総数ｒの１／２１，１／２２，１／２３，・・・倍の候補を含む最小の球の半径を求めておく。
【００８９】
そして、ステップＳ６１において、変数ｔに初期値としての２がセットされ、ステップＳ６２に進み、距離Ｄｔ（Ｃｉ）、即ちいまの場合、距離Ｄ２（Ｃｉ）の最も大きな候補Ｃｉについて、入力値Ｘとの距離ｄ（Ｘ，Ｃｉ）が、距離Ｄ２（Ｃｉ）の半分以下になるか否かが判定される。ステップＳ６２において、距離Ｄ２（Ｃｉ）の最も大きな候補Ｃｉに対して、入力値Ｘとの距離が、距離Ｄ２（Ｃｉ）の半分以下にならないと判定された場合、候補Ｃｉからより遠く、かつ距離Ｄ２（Ｃｊ）のより大きな候補Ｃｊについて、入力値Ｘとの距離が、距離Ｄ２（Ｃｊ）の半分以下になるか否かが判定される。以下、候補Ｃｋについて、入力値Ｘとの距離が、距離Ｄ２（Ｃｋ）の半分以下になるまで、同様の処理が繰り返される。
【００９０】
即ち、ステップＳ６２では、次式
ｄ（Ｘ，Ｃｋ）≦１／２×Ｄｔ（Ｃｋ）                ・・・（２）
を満たす候補Ｃｋが検出される（見つけられる）（但し、いまの場合、ｔ＝２である）。
【００９１】
ここで、候補Ｃｉからより遠く、かつ距離Ｄ２（Ｃｊ）のより大きな候補Ｃｊというのは、候補Ｃｉからの距離と、距離Ｄ２（Ｃｊ）との、例えば加算値（あるいは重み付け加算値）が最も大きい候補Ｃｊである。
【００９２】
そして、ステップＳ６３に進み、ステップＳ６２で式（２）を満たす候補Ｃｋが検出されたか否かが判定される。ステップＳ６３において、式（２）を満たす候補Ｃｋが検出されたと判定された場合、ステップＳ６４に進み、探索対象が絞り込まれる。即ち、ステップＳ６４では、図１６および図１７を参照して説明したように、検出された候補Ｃｋを中心とする、半径が距離Ｄ２（Ｃｋ）の球内に存在する候補（初期探索の候補）に、探索対象が絞り込まれる。
【００９３】
ここで、候補Ｃｋを中心とする、半径が距離Ｄ２（Ｃｋ）の球内に存在する候補は、初期階層に属する候補の総数ｒの１／２であるから、探索対象は半減することになる。
【００９４】
その後、ステップＳ６５において、変数ｔが２倍され、ステップＳ６６に進み、変数ｔが、初期階層に属する候補の総数ｒ以下であるか否かが判定される。ステップＳ６６において、変数ｔが、初期階層に属する候補の総数ｒ以下であると判定された場合、即ち探索対象の絞り込みが、まだ可能な場合、ステップＳ６２に戻り、絞り込まれた候補を対象に、再びステップＳ６２乃至６６以降の処理が繰り返される。
【００９５】
即ち、ステップＳ６２乃至Ｓ６６では、まず距離Ｄ２（Ｃｉ）の最も大きな候補Ｃｉについて、入力値Ｘとの距離が距離Ｄ２（Ｃｉ）の半分以下になるかどうかが調査され、半分以下になるなら、図１６および図１７で説明した原理に基づいて、探索候補が半分に限定される（候補Ｃｉを中心とする、半径が距離Ｄ２（Ｃｉ）の球に含まれる球内に存在する候補に限定される）。また、距離Ｄ２（Ｃｉ）の最も大きな候補Ｃｉに対して、入力値Ｘとの距離がＤ２（Ｃｉ）の半分以下にならないなら、その候補Ｃｉから、より遠くかつ距離Ｄ２（Ｃｊ）がより大きい候補Ｃｊについて、同様のことが調査される。そして、このような調査が、その調査が既に終了した候補（群）からはできるだけ遠く、かつ距離Ｄ２（Ｃｋ）の大きな候補Ｃｋの順番で行われていき、入力値Ｘとの距離が距離Ｄ２（Ｃｋ）の半分以下になる候補Ｃｋが検出される。
【００９６】
入力値Ｘとの距離が距離Ｄ２（Ｃｋ）の半分以下になる候補Ｃｋが検出された場合、その候補Ｃｋを中心とする半径Ｄ２（Ｃｋ）の球内に存在する候補に処理対象を絞り込み、上述した場合と同様の調査が行われ、入力値Ｘとの距離が、距離Ｄ４（Ｃｋ）の半分以下になる候補Ｃｋが検出される。なお、ｔが４以上では、限定された候補が存在する球の中心に位置する候補Ｃｋについて、まず最初に調査が行われ、その後は、上述した場合と同様に、調査が終了した候補群からはできるだけ遠く、かつＤ４（Ｃｋ）の大きな候補Ｃｉの順番で、調査が行われる。
【００９７】
以下、入力値Ｘとの距離が、距離Ｄ８（Ｃｋ），Ｄ１６（Ｃｉ），・・・の半分以下になる候補Ｃｉを検出することができなくなるまで、上述の絞り込みが繰り返される。以上により、初期階層に属する候補は、その総数ｒの１／２の累乗倍の数に減少されることになる。
【００９８】
なお、以上においては、初期階層に属する候補の総数ｒの１／２の累乗倍の個数の候補を含む最小の球の半径を求めておくようにしたが、この他、その総数ｒのＫ（Ｋは１未満の正数）の累乗倍の候補を含む最小の球の半径を求めておき、上述したような処理を行っても良い。この場合、探索の対象となる候補は、初期階層の候補の総数ｒのＫの累乗倍に絞り込まれることになる。
【００９９】
一方、ステップＳ６３において、式（２）を満たす候補Ｃｋが検出されなかったと判定された場合、ステップＳ６８に進み、それまでに絞り込まれた候補を対象として探索が行われる。即ち、それまでに絞り込まれた候補それぞれと、入力値Ｘとの距離が計算される。そして、ステップＳ６８に進み、入力値Ｘとの距離が最も近い候補が、初期探索結果として確定され、処理を終了する。
【０１００】
一方、ステップＳ６６において、変数ｔが、初期階層に属する候補の総数ｒ以下でないと判定された場合、即ち初期階層に属する候補Ｃを絞り込むことにより、そのうちの１つの候補だけが残った場合、ステップＳ６７に進み、その残った候補が、初期探索の結果とされ、処理を終了する。
【０１０１】
即ち、入力値Ｘとの距離が距離Ｄｔ（Ｃｋ）の半分以下になる候補Ｃｋが検出されなかった場合、その時点で残っている候補のうちの、入力値Ｘとの距離が最も近いものが、初期探索結果とされる。また、絞り込みにより残った候補が１つだけになった場合には、その候補が、初期探索結果とされる。
【０１０２】
以上のようにして、入力値Ｘとの距離計算を行う候補数を絞り込むことにより、ステップＳ３（図１、図１５）の初期探索処理を高速に行うことができる。さらに、初期階層に属する候補数は、その階層が上位の階層ならば、それほど多くはないので、上述したような処理を行うための記憶容量もあまり大きくはならない。
【０１０３】
なお、この場合（以下説明する処理についても同様）においても、上述した場合と同様に、入力値との距離を一度計算した候補については、その距離を記憶しておくことで、重複した距離計算を行わないようにすることができる。
【０１０４】
また、上述の場合では、最初に、距離Ｄ２（Ｃｉ）の最も大きな候補Ｃｉから調査（式（２）を満たすかどうかの調査）を開始するようにしたが、この他、例えば入力値Ｘとの距離が、距離Ｄ２（Ｃｉ）の半分以下になる可能性の高い候補Ｃｉが存在することがあらかじめわかっている場合には、その候補Ｃｉから調査を開始するようにすることが可能である。
【０１０５】
例えば、滑らかに変化する時系列の入力値（ベクトル）をベクトル量子化するような場合、１時刻前（前回）のベクトル量子化の結果として得られたセントロイドから、今回の入力値についての調査を開始することにより、そのセントロイドの近傍に、今回の入力値が存在する可能性が高いことから、より高速に、探索候補を絞り込むことが可能となる。
【０１０６】
また、上述した処理において、距離としては、例えばユークリッド距離などのように三角不等式を満足するものを用いる必要がある。
【０１０７】
ところで、ステップＳ４で行われる構造化を用いた探索によれば、従来の全探索に比べて歪みが大きくなる危険性がある（歪が、必ず大きくなるということではなく、あくまでもその危険性が、全探索よりは高くなるということ）。これは、局所的な探索のために、本来最も類似度の高い（入力値Ｘとの距離が最も近い）候補が、探索対象から除外されてしまうことに起因する。
【０１０８】
そこで、図１では、ステップＳ２の構造化探索処理の後に、ステップＳ５において、近傍精密探索処理を行うようになされている。即ち、すべての候補について、その近傍に位置するｒ１（但し、ｒ１は、Ｎ以下の数で、通常は、Ｎより充分小さな値とされる）個の候補を求めておき、ステップＳ５では、ステップＳ２の構造化探索処理の結果得られた候補の近傍に位置するｒ１個の候補（正確には、ステップＳ２の構造化探索処理の結果得られた候補を中心とする球に含まれる候補であって、その球の中心により近い位置に存在するｒ１個の候補）を対象として、精密に探索が行われる。
【０１０９】
このようにすることによって、真に入力値Ｘとの距離が最も近い候補が、構造化探索処理の過程において、探索の対象から除外された場合でも、その候補が、ステップＳ５の近傍精密探索処理の対象とされれば、最終的に得られる探索結果は、全探索を行った場合と同様に、真に入力値Ｘとの距離が最も近い候補が、探索結果として得られることになる。また、仮に、真に入力値Ｘとの距離が最も近い候補が、ステップＳ５の近傍精密探索処理の対象とされなかった場合には、そもそも構造化探索処理における歪みが比較的大きかったのであるから、それよりは歪みの小さな探索結果を得ることが可能となる。
【０１１０】
このステップＳ５の近傍精密探索処理の詳細を、図１９に示す。近傍精密探索処理では、まず最初に、ステップＳ７１において、構造化探索処理の結果得られた候補が着目され（着目候補とされ）、ステップＳ７２に進み、あらかじめ求められた、着目候補を中心とする球に含まれる候補であって、その球の中心により近い位置に存在するｒ１個の候補を対象として探索が行われる。即ち、そのｒ１個の候補それぞれと、入力値Ｘとの間の距離が計算され、その距離が最も小さい候補が検出される。
【０１１１】
そして、ステップＳ７３に進み、ステップＳ７２で得られた（検出された）候補が、着目候補であるか否かが判定される。ステップＳ７３において、ステップＳ７２で得られた候補が、着目候補であると判定された場合、即ち、着目候補の近傍を対象として探索を再度行っても、その探索結果が変わらない場合、ステップＳ７５に進み、その着目候補が最終的な探索結果とされる。
【０１１２】
一方、ステップＳ７３において、ステップＳ７２で得られた候補が、着目候補でないと判定された場合、即ち着目候補が、入力値Ｘとの距離が最も近い候補ではなかった場合、ステップＳ７４に進み、ステップＳ７２で得られた候補が、新たに着目され（新たな着目候補とされ）、ステップＳ７２に進み、以下、ステップＳ７３において、ステップＳ７２で得られた候補が、着目候補であると判定されるまで、ステップＳ７２乃至７４の処理を繰り返す。
【０１１３】
即ち、着目候補が、それを中心とする球に含まれる候補であって、その球の中心により近い位置に存在するｒ１個の候補の中で、入力値Ｘとの距離が最も近いものでない場合には、その中で、入力値Ｘとの距離が最も近い候補が、新たな着目候補とされ、以下同様の処理が繰り返される。
【０１１４】
以上のようにして、真に入力値Ｘとの距離が最も近い候補、あるいは歪みのより小さな候補が、探索結果として得られる。
【０１１５】
なお、以上の近傍精密探索処理において、ｒ１を大きくするほど、歪みを小さくすることができ、あるいは真に入力値Ｘとの距離が最も近い候補を得られる可能性が高くなる。一方、ｒ１を小さくほど、近傍精密探索処理が高速に行われ、かつその処理に必要な記憶容量が少なくて済む。従って、ｒ１は、歪と、処理速度および記憶容量とをバランスさせるように、あるいは両者のうちのいずれかを必要に応じて優先させて決めるようにすれば良い。
【０１１６】
また、処理の高速化を最優先させるならば、図１９に示したステップＳ７３乃至７５の処理は行わず、ステップＳ７１およびＳ７２の処理だけ行うようにすれば良い。
【０１１７】
次に、図１のステップＳ１の近傍高速探索処理の詳細について、図２０のフローチャートを参照して説明する。まず最初に、すべての候補それぞれについて、各候補を中心とする球に含まれる候補であって、その球の中心により近い位置に存在するｒ２（但し、ｒ２は、Ｎ以下の数で、通常は、Ｎより充分小さな値とされる）個の候補を求めておき、さらにそのｒ２個の候補を含む最小の球の半径を求めておく。
【０１１８】
そして、図１６および図１７で説明した原理に基づいて、探索の対象とされる候補が絞り込まれる。
【０１１９】
即ち、まずステップＳ８１において、最終的に探索結果とされる可能性の高い候補が推定され、これが着目候補とされる。なお、最終的に探索結果とされる可能性の高い候補の推定が不可能な場合には、ステップＳ１の近傍高速探索処理を行わずに、ステップＳ２の構造化探索処理に進むようにすることが可能である。
【０１２０】
その後、ステップＳ８２に進み、着目候補と入力値Ｘとの間の距離が計算される。そして、ステップＳ８３に進み、その距離が、着目候補を中心とする球であって、ｒ２  個の候補を含む最小半径の球の半径Ｄの半分（１／２倍）以下になるか否かが判定される。ステップＳ８３において、着目候補と入力値Ｘとの間の距離が、その着目候補を中心とする球であって、ｒ２  個の候補を含む最小半径の球の半径Ｄの半分以下にならないと判定された場合、ステップＳ２（図１）に進む。
【０１２１】
一方、ステップＳ８３において、着目候補と入力値Ｘとの間の距離が、その着目候補を中心とする球であって、ｒ２個の候補を含む最小半径の球の半径Ｄの半分以下になると判定された場合、ステップＳ８４に進み、そのｒ２個の候補のみを対象として探索が行われる。即ち、ｒ２個の候補それぞれと、入力値Ｘとの距離が計算される。そして、ステップＳ８５に進み、入力値Ｘとの距離が最も近い候補が、最終的な探索結果として確定され、処理を終了する。
【０１２２】
このようにして得られた探索結果の歪みは、全探索と比較して大きくなることはほぼない（上述したように、図１４（ｃ）に示した閉空間が球になる場合は、全探索と比較して大きくなることはない）。
【０１２３】
以上のような近傍高速探索処理は、例えば滑らかに変化する時系列の入力値をベクトル量子化する場合などに有効である。即ち、滑らかに変化する時系列の入力値は、ある時刻におけるものと、その前の時刻におけるものとで大きな差はないと予想されるので、一時刻前のベクトル量子化の結果得られたセントロイドを、現時刻におけるベクトル量子化結果の推定値として用いることができる。これにより、ステップＳ８３においては、着目候補と入力値Ｘとの間の距離が、その着目候補を中心とする球であって、ｒ２個の候補を含む最小半径の球の半径Ｄの半分以下になると判定される可能性が高くなるので、ベクトル量子化処理のより高速化を図ることが可能となる。
【０１２４】
なお、図１９で説明した近傍精密探索処理を行うために、各候補それぞれの近傍に存在するｒ１個の候補が求めてあるならば、上述の近傍高速探索処理では、それを共有して使用することができるので、この処理のために必要な記憶容量の増加分はほとんどない。
【０１２５】
つぎに、図１９および図２０で説明した処理を、図１６および図１７で説明した原理に基づいて高速化する方法について、図２１を参照して説明する。なお、図１９または図２０で説明した処理いずれにおいても、すべての候補それぞれを中心とする球に含まれる候補であって、その球の中心に、より近い位置に存在するｒ１（またはｒ２）個の候補を求めておくようにしたが、いまの場合、各候補それぞれを中心とする球であって、その中心の近傍に位置する候補を、それぞれ、ｒ１×Ｌ１（またはｒ２×Ｍ１）個、ｒ１×Ｌ２（またはｒ２×Ｍ２）個、ｒ１×Ｌ３（またはｒ２×Ｍ３）個、・・・を含む最小の球の半径も、さらに求めておくようにする。
【０１２６】
なお、Ｌ（またはＭ）は１未満の正数で、ここでは、例えば１／２とする。また、以下説明する処理は、図１９及び図２０で説明した処理に共通なので、以降では、図１９の処理を対象に説明する。
【０１２７】
そして、ステップＳ９１において、着目候補（図１９のステップＳ７１で着目候補とされた候補）と、入力値Ｘとの距離ｄが計算され、ステップＳ９２に進み、変数ｎに初期値としての２（１／Ｌ）がセットされ、ステップＳ９３に進む。ステップＳ９３では、着目候補を中心とする球であって、その中心の近傍に位置するｒ１／ｎ（いまの場合、ｒ１／２）個の候補を含む最小の球の半径Ｄが求められ（この半径Ｄは、上述したようにあらかじめ求めてあるので、実際には、その求めてあるものの中から選択するだけである）、ステップＳ９４に進み、距離ｄが、上述の球の半径Ｄの半分（１／２倍）以下であるか否かが判定される。
【０１２８】
ステップＳ９４において、距離ｄが、半径Ｄの半分以下であると判定された場合、ステップＳ９５に進み、変数ｎが２（１／Ｌ）倍され、ステップＳ９６に進む。ステップＳ９６では、変数ｎが、元の候補の個数ｒ１  以上であるか否かが判定される。ステップＳ９６において、変数ｎが、個数ｒ１  以上でないと判定された場合、ステップＳ９３に戻り、再びステップＳ９３からの処理が繰り返される。
【０１２９】
即ち、距離ｄが、着目候補を中心とする球であって、その中心の近傍に位置するｒ１／２個の候補を含む最小の球の半径Ｄの半分以下である場合、図１６および図１７を参照して説明した原理に基づいて、探索の対象とする候補を、１／２に限定することができる（着目候補を中心とする、半径が距離Ｄの球内に存在するｒ１／２個の候補に限定することができる）。そこで、距離ｄが、着目候補を中心とする球であって、その中心の近傍に位置するｒ１／４個の候補を含む最小の球の半径Ｄの半分以下になるか否かを判定することにより、探索の対象とする候補を、さらに１／２にすることができるかどうかが調査される。従って、ステップＳ９３乃至Ｓ９６の処理が繰り返されることにより、探索の対象とする候補の数がｒ１からｒ１／２，ｒ１／４，・・・と減少していく（ｒ１の１／２の累乗倍に絞り込まれていく）ことになる。
【０１３０】
一方、ステップＳ９４において、距離ｄが、半径Ｄの半分以下でないと判定された場合、ステップＳ９８に進み、その時点までに絞り込まれた候補、即ち着目候補を中心とする、半径Ｄの球内に存在するｒ１／ｎ個の候補（ｒ１の１／２の累乗倍の個数の候補）のみを対象として、探索が行われ、処理を終了する。
【０１３１】
また、ステップＳ９６において、変数ｎが、個数ｒ１以上であると判定された場合、即ちｒ１個の候補に対して、ステップＳ９３乃至Ｓ９６の絞り込み処理を行った結果、そのうちの１つの候補だけが残った場合、ステップＳ９７に進み、その残った候補が、探索結果とされ、処理を終了する。
【０１３２】
以上の処理を、図１９、図２０で説明した処理に適用することにより、ある着目候補を中心とする球内に存在するｒ１（またはｒ２）個の候補を対象とする探索を、高速で行うことができるようになる。また、この処理のために余分に必要となる記憶容量は僅かであり、従って探索処理全体に要する記憶容量を大きく増加させることはない。
【０１３３】
以上のように、探索の対象となる候補を構造化しておき、探索時には、探索の対象とする候補を制限する（絞り込む）ようにしたので、入力値との距離を求める候補の数を少なくすることができ、その結果、探索のために必要な演算量を低減することができる。また、構造化探索処理の後に近傍精密探索処理を行うようにしたので、構造化を用いることによる局所的な探索の結果生じる歪みをなくす、あるいは低減することができる。さらに、図１６および図１７で説明した原理を適用し、着目候補を中心とする半径Ｄの球に含まれる候補に探索の対象を制限する（絞り込む）ようにしたので、演算量のさらなる低減化を図ることができる。
【０１３４】
なお、上述の実施例においては、図１６および図１７で説明した探索対象を制限するための重要な原理を適用するにあたって、入力値Ｘと着目候補との間の距離ｄが、その着目候補から、任意の他の候補までの距離Ｄの半分（０．５倍）（１／２倍）以下であるか否かを基準とするようにしたが、即ち式ｄ≦０．５×Ｄを満足するか否かを基準とするようにしたが、この他、例えば式ｄ≦Σ×Ｄ（但し、Σは、０．５より大きく１以下の実数）を満足するか否かを基準とするようにすることも可能である。
【０１３５】
この場合、Σが大きいほど、歪が大きくなる一方、探索処理は高速化される。即ち、逆に言えば、Σが小さいほど、探索処理に時間がかかるようになる一方、歪は小さくなる。そして、Σが０．５の場合、即ち式ｄ≦０．５×Ｄを満足するか否かを基準とするようにした場合は、歪を大きくすることなく、探索対象を限定することができる。
【０１３６】
次に、図２２は、本発明を適用した音声認識装置の一実施例の構成を示すブロック図である。例えば、図示せぬマイクなどから供給された音声信号は、Ａ／Ｄ変換部１に入力され、そこでＡ／Ｄ変換される。Ａ／Ｄ変換された音声信号は、音声区間検出部２に供給される。音声区間検出部２は、音声信号から音声区間を検出し、その音声区間を、元の音声信号（Ａ／Ｄ変換部１から供給された音声信号）とともに音響分析部３に出力する。
【０１３７】
ここで、音声区間検出部２では、例えば音声信号のパワーや、零交差数、スペクトルパワーなどを用いて有音声と無音声の判別を行うなどして、認識すべき音声区間を検出するようになされている。また、この他、装置にスイッチを設けておき、発話者に、発話するときにそのスイッチを操作してもらうようにしておくことも可能である。この場合、音声区間検出部２では、そのスイッチの操作に対応して音声区間が検出される。
【０１３８】
音響分析部３は、音声区間の音声信号を音響分析し、音声の特徴パラメータ（特徴ベクトル）を抽出する。即ち、音響分析部３は、音声信号に対し、例えばＬＰＣ分析（線形予測分析）や、ＦＦＴ（高速フーリエ変換）分析、バンドパスフィルタなどのスペクトル分析などの処理を施して、特徴パラメータを抽出する。この特徴パラメータは、ベクトル量子化部４に供給される。
【０１３９】
ベクトル量子化部４は、音響分析部３から供給される特徴パラメータをベクトル量子化し、所定のコードを出力する。即ち、ベクトル量子化部４は、その内蔵するメモリ（図示せず）に、例えばＬＢＧ（Ｌｉｎｄｅ，  Ｂｕｚｏ，  Ｇｒａｙ）アルゴリズムなどを用いて作成されたコードブックを記憶している。このコードブックにおけるセントロイドは、図２乃至図１４を参照して説明したよう構造化されており、さらに各セントロイドには、ユニークなコードが付されている。
【０１４０】
そして、ベクトル量子化部４では、音響分析部３からの特徴パラメータとの距離（例えば、ユークリッド距離などの距離尺度）が最も近い（特徴パラメータに最も類似する）セントロイドが、コードブックの中から探索される。この探索処理は、図１に示したフローチャートにしたがって行われる。従って、この場合、特徴パラメータを、歪みを最低限に抑えて、高速にベクトル量子化することができる。
【０１４１】
その後、探索処理の結果得られたセントロイドに付されたコードが、認識部５に供給される。認識部５では、ベクトル量子化部４から時系列に供給されるコードに基づき、例えばＤＰマッチング法やＨＭＭなどの確率モデルを用いた認識方法などにしたがって、音声が認識され、その認識結果が出力される。
【０１４２】
なお、本発明は、以上のように音声認識装置における音声信号のベクトル量子化に適用することができる他、例えば画像信号などの情報圧縮に用いるベクトル量子化その他に適用可能である。
【０１４３】
【発明の効果】
以上の如く、本発明の探索方法によれば、入力値と最も距離の近い候補を、歪みをできるだけ低く抑えて、高速に探索することができる。
【０１４４】
また、本発明の音声認識装置によれば、特徴パラメータを、歪みをできるだけ低く抑えて、高速にベクトル量子化することができるので、リアルタイムで音声認識を行うことが可能となり、さらに認識率を向上させることができる。
【図面の簡単な説明】
【図１】本発明の一実施例の探索方法を説明するフローチャートである。
【図２】図１の探索方法にしたがって探索を行う候補を構造化する方法を説明するフローチャートである。
【図３】図１の探索方法にしたがって探索を行う候補を構造化する方法を説明する図である。
【図４】グループＧｉ，Ｇｊそれぞれに属する候補ｘ，ｙのうち、最も近い候補間の距離をグループ間距離とする場合を説明する図である。
【図５】グループＧｉ，Ｇｊそれぞれに属する候補ｘ，ｙのうち、最も遠い候補間の距離をグループ間距離とする場合を説明する図である。
【図６】グループＧｉ，Ｇｊそれぞれの平均値ベクトルｕｉ，ｕｊ間の距離をグループ間距離とする場合を説明する図である。
【図７】グループＧｉ，Ｇｊそれぞれの分散σｉ，σｊによってグループ間距離を定義する場合を説明する図である。
【図８】グループＧｉ，Ｇｊそれぞれに属する候補全体の平均値から、その候補全体のうちの最も遠い候補までの距離をグループ間距離とする場合を説明する図である。
【図９】グループＧｉ，Ｇｊそれぞれに属する候補全体の分散σによってグループ間距離を定義する場合を説明する図である。
【図１０】図２のステップＳ１２の処理の結果得られるグループ間距離のテーブルを示す図である。
【図１１】図２のステップＳ１３の処理のより詳細を説明するフローチャートである。
【図１２】図２のステップＳ１６の処理のより詳細を説明するフローチャートである。
【図１３】図１２のステップＳ３３で行われる処理を説明するための図である。
【図１４】図２の処理（構造化処理）によって得られるグループｇｉを模式的に表した図である。
【図１５】図１のステップＳ２（ステップＳ３およびＳ４）の処理のより詳細を説明するフローチャートである。
【図１６】探索対象を絞り込む原理を説明するための図である。
【図１７】探索対象を絞り込む原理を説明するフローチャートである。
【図１８】探索対象を絞り込む原理を適用した初期探索処理の詳細を説明するフローチャートである。
【図１９】図１のステップＳ５の近傍精密探索処理の詳細を説明するフローチャートである。
【図２０】図１のステップＳ１の近傍高速探索処理の詳細を説明するフローチャートである。
【図２１】図１９および図２０の処理を高速化する方法を説明するためのフローチャートである。
【図２２】本発明を適用した音声認識装置の一実施例の構成を示すブロック図である。
【符号の説明】
１  Ａ／Ｄ変換部
２  音声区間検出部
３  音響分析部
４  ベクトル量子化部
５  認識部
【図１】
0003569981.tif 000007
【図２】
0003569981.tif 000008
【図３】
0003569981.tif 000009
【図４】
0003569981.tif 000010
【図５】
0003569981.tif 000011
【図６】
0003569981.tif 000012
【図７】
0003569981.tif 000013
【図８】
0003569981.tif 000014
【図９】
0003569981.tif 000015
【図１０】
0003569981.tif 000016
【図１１】
0003569981.tif 000017
【図１２】
0003569981.tif 000018
【図１３】
0003569981.tif 000019
【図１４】
0003569981.tif 000020
【図１５】
0003569981.tif 000021
【図１６】
0003569981.tif 000022
【図１７】
0003569981.tif 000023
【図１８】
0003569981.tif 000024
【図１９】
0003569981.tif 000025
【図２０】
0003569981.tif 000026
【図２１】
0003569981.tif 000027
【図２２】
0003569981.tif 000028