複数のクエリーにより構成されるクエリー列を作成する作成手段と、前記クエリー列からカレントノードの階層に対応したクエリーの読み込みを行う読み込み手段と、読み込まれた前記階層に対応したクエリーに従って、前記カレントノードに設定されている学習パターンを分割して、木構造のノードを生成する生成手段と、前記生成手段により生成された前記木構造のノードのうち、前記クエリー列の長さに対応する階層までのノードについて、各階層のノードを共通化したノードとしてまとめることにより、前記木構造を変更する変更手段と、を備えることを特徴とする情報処理装置。前記クエリー列を構成するクエリーの読み込みを行うクエリー先き読み手段と、前記クエリー先き読み手段により読み込まれた前記クエリーと、前記変更手段により変更された前記木構造と、を用いてパターンの認識処理を行う認識手段と、を更に備えることを特徴とする請求項1に記載の情報処理装置。前記階層に対応したクエリーの読み込みに成功したか否かを判定する判定手段を更に備え、前記生成手段は、前記判定手段により前記階層に対応したクエリーの読み込みに成功したと判定された場合、読み込まれた前記階層に対応したクエリーに従って、前記カレントノードに設定されている学習パターンを分割して、木構造のノードを生成することを特徴とする請求項1に記載の情報処理装置。前記生成手段で生成された前記木構造のノードを新たなカレントノードとして、前記読み込み手段は、前記新たなカレントノードの階層に応じて、前記クエリー列から前記階層に対応したクエリーの読み込みを行い、前記生成手段は、読み込まれたクエリーに従って、前記新たなカレントノードに設定されている学習パターンを分割して、新たなノードを生成することを特徴とする請求項1に記載の情報処理装置。前記作成手段は、前記判定手段の判定により、前記階層に対応したクエリーの読み込みに失敗したと判定された場合、前記学習パターンに対応した新たなクエリーを作成することを特徴とする請求項3に記載の情報処理装置。複数のクエリー列に従って学習パターンを分割することによってテーブルを生成する第1のテーブル生成手段と、前記第1のテーブル生成手段によって生成されたテーブルを用いて分割された学習パターン集合を複数のクエリー列に従って更に分割することによってテーブルを生成する第2のテーブル生成手段と、前記第1のテーブル生成手段で生成されたテーブルと前記第2のテーブル生成手段で生成されたテーブルとを組み合わせることでパターンを判別する判別器を作成する判別器作成手段と、を備えることを特徴とする情報処理装置。情報処理装置で実行される情報処理方法であって、前記情報処理装置の作成手段が、複数のクエリーにより構成されるクエリー列を作成する作成工程と、前記情報処理装置の読み込み手段が、カレントノードの階層に応じて、前記クエリー列から前記階層に対応したクエリーの読み込みを行う読み込み工程と、前記情報処理装置の生成手段が、読み込まれた前記階層に対応したクエリーに従って、前記カレントノードに設定されている学習パターンを分割して、木構造のノードを生成する生成工程と、前記情報処理装置の変更手段が、前記生成工程で生成された前記木構造のノードのうち、前記クエリー列の長さに対応する階層までのノードについて、各階層のノードを共通化したノードとしてまとめることにより、前記木構造を変更する変更工程と、前記情報処理装置のクエリー先き読み手段が、前記クエリー列を構成するクエリーの読み込みを行うクエリー先き読み工程と、前記情報処理装置の認識手段が、前記クエリー先き読み工程で読み込まれた前記クエリーと、変更された前記木構造と、を用いてパターンの認識処理を行う認識工程と、を有することを特徴とする情報処理方法。情報処理装置で実行される情報処理方法であって、前記情報処理装置の第1のテーブル生成手段が、複数のクエリー列に従って学習パターンを分割することによってテーブルを生成する第1のテーブル生成工程と、前記情報処理装置の第2のテーブル生成手段が、前記第1のテーブル生成工程で生成されたテーブルを用いて分割された学習パターンの集合を複数のクエリー列に従って更に分割することによってテーブルを生成する第2のテーブル生成工程と、前記情報処理装置の判別器作成手段が、前記第1のテーブル生成工程で生成されたテーブルと前記第2のテーブル生成工程で生成されたテーブルとを組み合わせることでパターンを判別する判別器を作成する判別器作成工程と、を有することを特徴とする情報処理方法。コンピュータを、請求項1乃至6のいずれか1項に記載の情報処理装置の各手段として機能させるためのプログラム。しかしながら、パターンとして画像を用いるアプリケーションを想定した場合、リアルタイム性が求められることが多く、より高速なパターン認識アルゴリズムが必要になってくる。そして、特許文献1に記載の分類木のアンサンブルを用いた手法であっても認識処理にかける計算時間が不足し、更なる高速化が要求されている。本発明は、高速に、かつ、高精度にパターン認識が可能な情報処理技術を提供する。本発明の一つの側面にかかる情報処理装置は、複数のクエリーにより構成されるクエリー列を作成する作成手段と、前記クエリー列からカレントノードの階層に対応したクエリーの読み込みを行う読み込み手段と、読み込まれた前記階層に対応したクエリーに従って、前記カレントノードに設定されている学習パターンを分割して、木構造のノードを生成する生成手段と、前記生成手段により生成された前記木構造のノードのうち、前記クエリー列の長さに対応する階層までのノードについて、各階層のノードを共通化したノードとしてまとめることにより、前記木構造を変更する変更手段と、を備えることを特徴とする。あるいは、本発明の他の側面にかかる情報処理装置は、複数のクエリー列に従って学習パターンを分割することによってテーブルを生成する第1のテーブル生成手段と、前記第1のテーブル生成手段によって生成されたテーブルを用いて分割された学習パターン集合を複数のクエリー列に従って更に分割することによってテーブルを生成する第2のテーブル生成手段と、前記第1のテーブル生成手段で生成されたテーブルと前記第2のテーブル生成手段で生成されたテーブルとを組み合わせることでパターンを判別する判別器を作成する判別器作成手段と、を備えることを特徴とする。本発明によれば、高速に、かつ、高精度にパターン認識が可能な情報処理技術の提供が可能になる。あるいは、パターン認識の情報処理に必要となるディスク、また、メモリの容量を削減することができる。第1の実施形態図2a-cの参照により、本発明の実施形態にかかる情報処理装置の概略的な構成を説明する。情報処理装置は、中央処理装置CPU202、メモリ203、入出力装置204を有し、中央処理装置CPU202は不図示のインタフェースを介して、外部記憶装置201との間でデータの送受信が可能である。外部記憶装置201は、本発明の実施形態にかかるパターン認識方法をコンピュータに実行させるためのプログラムや、学習パターン、学習パターンを用いて作成された辞書等を保持することが可能である。また、新たに導かれた新規パターンの認識結果を保持することが可能である。中央処理装置CPU202はパターン認識方法のプログラムの実行を司り、情報処理装置の全体的な制御を行う。メモリ203は中央処理装置CPU202が使用するプログラム、及びサブルーチンやデータを一時的に格納するワークエリアとして機能する。また、本発明の実施形態により導かれた新規パターンの認識結果を保持することも可能である。入出力装置204は、新規パターンを取り込んだり、データの入出力を行う他、ユーザからの指示の受付け、ユーザに対するデータ表示等、ユーザと情報処理装置との間のインタフェースとしても機能する。例えば、パターンとして2次元の画像を用いる場合は、入出力装置204は対象物体を撮影するカメラとして機能する。また、入出力装置204はパターン認識結果を他の情報処理装置へ出力することも可能である。また、本実施形態のパターン認識方法を実現するプログラムの実行のトリガーを、入出力装置204を介してユーザが指示を出す場合もある。また、入出力装置204を介して、ユーザが、パターン認識処理の結果を見たり、プログラムのパラメータ設定を行うことも可能である。機械学習によるパターン認識方法には、多くのパターンから学習をする学習過程と、新規パターンを解析する認識過程と、の2つの過程が存在する。以下、図1a、bの参照により学習過程の処理の流れを説明し、図3a、bの参照により認識過程の処理の流れを説明する。学習過程は図1aと図1bとの2つのルーチンに分けられる。図1bのルーチンは再帰呼び出しされる。図1a、bに示したフローチャートを実行することによって、学習パターンの集合が再帰的に分割されていくことになる。そして、その結果として図2b、cに示すような木構造の辞書=木構造を持った判別器が出来上がる。つまり、木構造の辞書、もしくは木構造の判別器を作成することは、論理的には、学習パターンの集合を再帰的に分割することと等価となる。まず、ステップS101において、クエリー列が作成される。ここでクエリーとは、パターンをどの枝に振り分けるかを決定する問いであり、i番目の次元の値がある閾値以上か未満かで、左右の枝に分岐する例などが考えられる。パターンが画像データの場合、ある位置の値輝度と、ある位置の値輝度と、を比較してどちらが大きいかで分岐する例も考えられる。一般には枝は2つである必要はなくN本あってよい。この場合のクエリーの例としては、i番目の次元の値をある定数で割った商の値に応じた分岐などが考えられる。以下、クエリーの例として、多次元データのある次元を選んで、その次元の値がある閾値以上か未満かを判断するクエリーを考えてみる。ここで注目する次元の選択を全ての次元からランダムに選び、かつ、閾値をある区間からランダムに選ぶことでランダムなクエリー列が導かれる。ステップS101では、例えばこのようなクエリー列を作成する。なお、作成するクエリーの個数=クエリー列の長さは事前に設定しておく。この数をTクエリー列の長さとして以下説明する。次に、ステップS102では、ルートノードに学習パターンの全てを格納設定する。そして、ステップS103では、ルートノードをカレントノードとして設定する。ここで、ルートノードとはツリーの一番根元に存在するノードのことを言い、図2bのノード211がルートノードに対応する。カレントノードとは学習過程および認識過程において現在処理しているノードを意味する。ステップS104では、図1bに記述されたカレントノードを展開するサブルーチンを呼んで、このサブルーチンから処理が戻されたら学習過程は終了となる。なお、図2b、cのノード211から219の番号順にカレントノードは移動することとなる。図1bの参照によりノードを展開するサブルーチンの処理の流れを説明する。まず、ステップS105で、カレントノードがnullノードかleafノードかが判断される。そして、カレントノードがnullノードかleafノードであった場合S105-Yes、図1bのサブルーチンは終了する。カレントノードに学習パターンが全く含まれない場合、そのノードはnullノードとする。また、カレントノードに残っている学習パターンの集合がある一定条件を満たした場合、そのノードをleafノードとする。ここで、ある一定条件とは、例えば、カレントノードに存在するクラスがK種類例えばK10以下だった場合という条件などが考えられる。この条件でK=1に設定した場合は、カレントノードが純粋に1つのクラスしか含まないという条件となる。また、カレントノードに存在する学習パターンから情報量エントロピーを計算し、その値がある閾値以下だった場合とすることもできる。なお、この条件で閾値を0とすると、上述のカレントノードが純粋に1つのクラスしか含まない条件と同じとなる。図2b、cの例では、ノード213、215、219がleafノードであり、216、218がnullノードとなる。カレントノードにノード213、215、216、218、219が設定された場合、ステップS105における判断はYesとなり、図1bの処理は終了する。nullノードおよびleafノードは、ターミナルノードとも呼ばれ、残った学習パターンの情報が保持される。例えば、パターン認識の目的がクラス判定の場合、ターミナルノードには各クラスの存在確率が保持される。なお、前述した通り、leafノードの条件がカレントノードが純粋に1つのクラスしか含まれないであった場合、その残ったクラスの番号を情報として格納してもよい。一方、パターン認識の目的がいわゆる回帰の場合、ターミナルノードにはある推定値、もしくは推定ベクトルが格納される。ステップS105-Noの場合、ステップS106以降のサブルーチンの処理が続き、カレントノードを展開する。カレントノードを展開する処理はステップS106~S113のステップにより実行される。この中でステップS112の処理では、図1bのサブルーチンが再帰的に呼び出される。この処理の結果、学習パターンの集合が再帰的に分割されることとなる。ステップS106で、カレントノードの展開に先立ち、まずステップS101で作成されたクエリー列からカレントノードの深さ階層に応じてクエリーを読み込む。例えば、図2bでは、ルートノードノード211がカレントノードとなっており、ルートノードの深さは0なので、クエリー列の0番目のクエリーが読み込まれる。次に、ステップS107で、クエリーの読み込みに成功したか否かの判断が行われる。読み込みに成功したと判断された場合S107―Yes、処理はステップS109に進められ、ステップS107において、読み込みに成功していないと判断された場合S107-No、処理はステップS108に進められる。ステップS107におけるクエリーの読み込みが成功と判断されるケースとは、カレントノードの深さがステップS101で作成したクエリー列の長さ未満になり、読み込むべきクエリーが存在した場合を意味する。例えば、同じ深さのノード212、217には、同じクエリーが読み込まれる。ステップS107におけるクエリーの読み込みが失敗と判断されるケースとは、カレントノードの深さがステップS101で作成したクエリー列の長さ以上になり、読み込むべきクエリーが存在しなかった場合を意味する。具体的には、カレントノードの深さが、クエリー列の長さT以上になった場合、ステップS107の判断結果はNoになり、処理はステップS108に進められる。ステップS108では、クエリーの読み込みに失敗したときの処理が実行される。具体的には、カレントパターン集合に基づいて新たなクエリーを作成するための処理が実行される。図2bの例では、クエリー列の長さT=2としており、カレントノードが212と217の場合、深さが1となるため、ステップS107では、クエリーの読み込みに成功したと判断されるS107-Yes。一方、ノード214の場合、深さが2となるため、クエリーの読み込みに失敗する。この時、ステップS108の処理が実行され、新たなクエリーが作成される。ステップS108の処理は、例えば、ノード毎に適したクエリーを選びたい場合などにその効果を発揮する。クエリーの選び方としては情報量エントロピーを基準にした相互情報量を用いるやり方や、非特許文献1に記載されているGini係数を用いたやり方などがある。また、ステップS108の処理では最適なクエリーを選ぶ必要性はなく、クエリーの選び方にステップS101で説明したようなランダム性を取り入れても良い。ステップS109では、読み込みにより設定されたクエリーに基づいてカレントノードに残っている学習パターンカレントパターン集合を分割する。この分割の数Nは一般的にはカレントノードによって異なっていても良いが、通常、全てのノードで同じ値が用いられる。例えば、N2となる場合は、いわゆる2分木が作成され、図2bのような形態の分類木分割枝となる。ステップS110~S113の処理は、分割された分割枝ごとに実行されるループであり、分割枝がN個の場合に、N回のループで処理が繰り返される。ステップS111で分割枝iをカレントノードに設定し、ステップS112で図1bのサブルーチンが再帰的にされる。図2bは作成された分類木の例であり、太い横線250の上がテーブル部分で、横線250の下の四角で囲った部分がツリーの部分となる。ノード番号で示すとノード211、212、217の部分がテーブルで、それ以外のノードがツリーとなる。ここで、テーブルとツリーと呼び方を分けて明確に区別している。その生成作成過程をフローチャート上で示すと、テーブルと呼んでいる部分は、図1bのステップS107、S109の順で実行され、ツリーと呼んでいる部分は、図1bのステップS107、S108、S109の順番で処理が実行される。通常は、ノード214、215、216で構成される形となっているが、ノード213、218、219はルートノードがnullノードまたはleafノードとなっている特殊なツリーの形式となっている。テーブルの長さ深さ階層とも呼ぶがPで、それぞれの分岐の個数がRだとするとテーブルの個々の要素エンティティはRP個あることになる。図2bの場合、深さがP2で分岐もR2なので4つ=22のエンティティがあり、それぞれのエンティティには四角で囲った部分のツリーが保持されている。図2bのノード212とノード217は同じクエリーを保持するので同一視することができる。それをまとめて表示したのが図2cである。木構造のノードのうち、クエリー列の長さに対応する階層までのノードについて、各階層のノードを共通化したノードとしてまとめることにより、木構造が変更される。図2cにおいては、ノード217とノード212とを1つにまとめて共通化したノード212として表記している。あるクエリーを入力すると、その結果、R通り=分岐の個数の可能性が出てくる。これを枝で表示したのが図2bであり、枝では明示的に表示していないのが図2cといえる。図2cの表現方法にすると、テーブルとツリーの部分がより明確になる。P個のクエリー列の結果に応じて、RP個の分岐=テーブルのエンティティが存在する。認識の過程に先立ち、クエリー列を構成するクエリーの読み込みを行い、読み込まれたクエリーと、変更された木構造とを用いてパターンの認識処理が実行される。図3a、bの参照により、新規の未知パターンを図1a、bで作成した木構造の辞書を用いて認識する過程を説明する。まず、ステップS301でクエリー列を構成するクエリーが読み込まれる。図2bの場合、2つのクエリーが読み込まれる。このように、本発明の実施形態にかかるパターン認識処理では、クエリー列の深さでクエリーが一意に決定されているので、このクエリーの先き読みを行うことが可能となる。最近のCPUの進化により、クエリー先き読みができればそれらをまとめて処理する技術、例えばSIMDSingleInstruction/MultipleDataなどの技術を用いることができるようになる。結果的に本実施形態にかかるパターン認識方法は、超高速な演算処理が可能になる。次に、ステップS302では、先のステップS301で読み込まれたクエリー列を構成するクエリーに基づいてツリーtree番号を計算する。図2bに示すツリーの場合、ツリーtree番号は0番から3番までとなる。それぞれのサブツリーのルートノードは213tree番号0、ノード214tree番号1、ノード218tree番号2、ノード219tree番号3となる。そして、計算された番号のツリーtreeを読み込みS303、そのツリーtreeをたどるS304。ここで、ツリーtreeをたどるサブルーチンを図3bに示す。まず、ステップS305でカレントノードをルートノードに設定する。次に、カレントノードがターミナルノードnullノードもしくはleafノードであるかどうかの判断を行う。もしカレントノードがターミナルノードであった場合S306-Yes、認識結果にそのターミナルノードの情報をセットしてS309、サブルーチンを終了する。もしカレントノードがターミナルノードでない場合S306-No、カレントノードに格納されているクエリーに基づいて枝番号を計算するS307。そして、計算された枝番号の子ノードをカレントノードに設定するS308。続いて、処理をステップS306に戻して、同様の処理を繰り返す。図3bに示したサブルーチンでは、ルートノードからnullノードかleafノードに到達するまでツリーtreeをたどることになる。認識過程図3a、bで示したフローチャートで用いる木構造の判別器の実装例は、例えば、図7bの710、711のようになる。図7bの710にあるようにP個のクエリーからなるクエリー列をまず読み込む図3aのS301。そしてクエリーに基づいてツリーtree番号を計算する図3aのS302。その結果、計算されたツリーtree番号の判別器を全部でRP個ある判別器図7bのテーブル711から読み込む図3aのS303。そして、その判別器を用いて新規パターンを解析する図3aのS304。本実施形態によれば、高速に、かつ、高精度にパターン認識が可能な情報処理技術の提供が可能になる。あるいは、パターン認識の情報処理に必要となるディスク、また、メモリの容量を削減することができる。第2の実施形態次に、図4aの参照により第2の実施形態における学習過程の処理の流れを説明し、図4bの参照により第2の実施形態における認識過程の処理の流れを説明する。第1の実施形態では、1つの木構造の判別器を作成する方法、および、1つの木構造の判別器を用いてパターンを解析する方法を説明した。これに対して、第2の実施形態では複数の木構造の判別器を生成する方法、および、複数の木構造の判別器を用いてパターンを解析する方法を説明する。木構造の判別器の個数をL個とする。通常、Lは10~100ぐらいの数になるが、2つ以上の任意の定数となる。Lを大きくすると辞書サイズが大きくなり、認識率は向上する。一方、判別器の個数Lを小さくすると辞書はコンパクトになるが、認識率は低下する。ステップS401~S403の処理を、ツリーtree番号が1からLまで繰り返すことより、学習過程の処理が実行される。学習過程の処理ループの中で、図1bの学習過程がサブルーチンとして呼び出されるS402。学習過程の処理ループの中でS402のサブルーチンの呼び出しは、全体の処理に対して独立に行うことが可能である。つまり、ステップS401~S403の学習過程の処理ループは単純にマルチスレッド、マルチタスクで行ってもよい。また、容易に複数の計算機を用いて並列に実行することも可能である。図4aで示した複数L個の木構造の判別器を作成する方法は、並列計算向きであり、並列度を高くすると極めて高速に実行できると言える。次に、図4bの認識過程では、判別器tree番号が1からLまでのループS404~S406の後、ステップS407において、最終的に得られたL個の判別器の結果を集計する。認識過程のループ処理の中で図4aの木構造を用いた学習過程がサブルーチンとして呼び出されるS405。ステップS407では、L個の判別器の認識結果を集計し、最終的なパターン認識結果を得る。集計方法としては、例えば、パターン認識のタスクがクラス判定タスクだとすると、判別器の結果は各クラスの存在確率ベクトルとなる。この時、ステップS407の集計としては、L個の存在確率ベクトルの相加平均や、相乗平均などが考えられる。図4bの認識過程も図4aの学習過程と同様に並列処理に向いており、並列度を高くすると非常に高速に処理することが可能である。第3の実施形態第3の実施形態では第1の実施形態で説明した木構造の判別器を全部テーブル化する。そのために、まず図1aのステップS101におけるクエリー列の長さTを十分大きくする必要がある。第1の実施形態の説明では、例示的にクエリー列の長さをT=2として説明したが、例えば、本実施形態では、T=100と設定することが可能である。図2bで説明した学習結果である木構造は、T=2の条件で作成したものである。しかし、結果的に第3階層ルートノードが1階層だとしてのノードは、ノード214を除いた全部3つがターミナルノードになっている。よって、例えば、Tが3以上に設定したとしても図2bの形式の木構造が生成されることになる。以下、図2bは十分大きなTを設定して、図1a、bのフローチャートに従って作成された木構造だと仮定して説明する。図5a-dは図2bの全てのテーブル化を例示する図である。図5a-dは表示上ツリーの形をしているが、同じ階層深度のノードでは同じクエリーを持つので実質的にはテーブルとなる。そして、階層の数は3で分岐が2なので、テーブルのエンティティの数は8=23となる。末端ノードの下に書かれた数字は図2b、cで示したノード番号を示しており、同じ情報が保持される。ハッチングを付したノードはnullノードを意味する。ここで各ノードが保持する情報とは、第1の実施形態で説明した通り、各クラスの存在確率ベクトルであったり、回帰の際の推定値だったりする。なお、実装形態としては、末端ノード=テーブルのエンティティの保持する情報へのポインタを各ノードが保持すると効率が良い。図5aは図2bを全部テーブル化した例であり、図5bは図2bのnullノードの部分をその親ノードで置換してテーブル化した例を示す。図5a-dの例で重要なことは、同じ情報を保持する末端のノード=テーブルのエンティティがあることである。つまり、本実施形態で作成されるテーブルは冗長な情報を保持していることになる。結果的に本実施形態では、ディスク容量、もしくはメモリ容量は多く必要とするが、非常に高速に認識できるという効果が得られる。図5a、bのテーブルをよりわかりやすく図示したのが図5c、dである。これは図2b、cの関係と全く同じで、同じ内容のクエリーを同一視して表示したものとなる。図5aに対応するのが図5cであり、図5bに対応するのが図5dである。テーブルの長さ深さとも呼ぶがPで、それぞれのノードの分割数分岐の個数がRだとするとテーブルの個々の要素エンティティはRP個あることになる。図5a-dの場合、深さがP=3で分岐がR2なので8=23の数のエンティティがある。認識過程においては、3個のクエリーを読み込むだけで最終的なエンティティが計算できるので非常に高速に処理することができる。図6a、bの参照により、図5a-dのテーブルを作成する手順を説明する。まず、ステップS601において、図1a、bのフローチャートをサブルーチンとして呼び出しツリーtreeを作成する。この時、前述した通り、ステップS101のクエリー列は十分大きな長さを用意する。次に、ステップS602において、先のステップS601で作成されたツリーtreeの最大深度Pを計算する。図2bの木構造の場合、最大深度P=3となる。そして、エンティティ番号iのループ処理としてステップS603~S606が実行される。分岐の数をRとすると、エンティティ番号iは0~RP-1の範囲を動く。ここで、エンティティ番号iが0から開始するのは後で説明を簡単にするためであり、1~RPとしても本質的には変わらない。ステップS604で、エンティティ番号iに対応するターミナルノードnullノードまたはleafノードを計算する。ステップS604の処理において、図1bのサブルーチンが呼び出される。図1bのサブルーチンから処理が戻されたら、計算されたターミナルノードnullノードまたはleafノードに応じた情報がエンティティに格納されるS605。図6bのステップS607、S608、S610、S611と、図3bのステップS305、S306、S308、S309と、はそれぞれ同じ処理となる。図3bのサブルーチンと異なっているのは、ステップS609の処理のみである。この処理はエンティティ番号iから枝番号を計算する処理である。説明を簡単にするために、エンティティ番号iをR進数の数字だとすると、iはP桁の数字となる。そして、カレントノードの深さをdとすると、iのd桁目の数字が枝番号となる。図6aのステップS603~S606のループを実行した結果が図5a-dの数字で示した部分となる。図5aでは、図2bで示した8つのノード213、213、215、216、218、218、219、219が得られる。一方、図5bでは、図2bで示した8つのノード213、213、215、214、217、217、219、219が得られる。次に、図7a、bの参照により本実施形態の認識過程を説明する。図7bの712に示すようにP個のクエリーからなるクエリー列をまず読み込む図7aのS701。そしてクエリーに基づいてエンティティ番号を計算する図7aのS702。その結果、全部でRP個あるエンティティ図7bの713の中から計算された番号のエンティティ情報を読み込む図7aのS703。本実施形態によれば、高速に、かつ、高精度にパターン認識が可能な情報処理技術の提供が可能になる。あるいは、パターン認識の情報処理に必要となるディスク、また、メモリの容量を削減することができる。第4の実施形態図8a、bの参照により、パターンとして画像を扱う場合を説明する。本実施形態では、1枚の学習画像からM枚の部分画像が抽出される。これを部分画像集合と呼ぶ。この部分画像集合を構成する部分画像同士は重なりがなくても良いが、重なりがあるように網羅的に元の学習画像から抽出されることが望ましい。例えば、学習画像のサイズが100×100ピクセルで、部分画像のサイズが50×50ピクセルだとする。ピクセルとピクセルの中間の位置いわゆるサブピクセルを考慮に入れないとすると、1枚の学習画像から抽出される全部分画像は2601=51×51枚となる。なお、重なりのない部分画像を抽出したとすると全部で2×2=4枚の部分画像が得られる。図8aに示す部分画像集合は2601枚ある全部分画像中の出来るだけ多くの部分画像からなることが望ましい。最終的な学習部分画像群としては、同じクラスの学習部分画像がそれぞれM枚ずつ、全部でMxN枚の学習部分画像が得られる。そして、この学習部分画像群を用いて2分木を作成していく図8b。全部でL個分類木が存在するので、この分類木の作成はL回行われる。分類木作成の際、各分類木のノードでは、ランダムに2つのピクセルを選ぶ。そして、そのピクセルの輝度比較を行うことにより、学習部分画像の集合を再帰的に分割していく。なお、本実施形態においてはランダムに2つのピクセルを選んだが、部分画像中の任意の矩形領域をランダムに2つ選んで、その矩形領域の平均輝度を比較することによって枝分かれを行ってもよい。また、矩形ではなく予め用意した複数のマスクパターンを用いてもよい。この時、部分画像中の任意の位置にある任意の種類のマスクパターンをランダムに2つ選ぶ。そして、その領域の平均輝度を比較することによって集合を再帰的に分割する。この学習過程をフローチャートにしたものが図9aである。ステップS901では、部分画像を取り出し学習パターン集合を作成する。この処理は、図8aの参照により説明した処理に対応する。そして、ステップS902では、ツリーtreeのアンサンブルを作成する。この処理は、図8bで説明した処理に対応するもので、具体的には図4aの処理をサブルーチンとして呼び出す。なお、図8a、bの模式図では1枚の学習登録画像から抽出されるM枚の部分画像を全て同一視することで、学習過程におけるクラスの数がNだとした。これに対して、M枚の部分画像を学習画像中のオフセット位置を用いて区別し、全部でMxN個種類のクラスがあるとすることもできる。次に、図9bの参照により本実施形態の認識過程の処理の流れを説明する。一例として、新規入力画像のサイズが1280×1024、部分画像のサイズを50×50とする。この場合、サブピクセルを考慮しなければ、新規入力画像の中に部分画像が12002251231×975個存在することになるX=1280-501、Y=1024-501。基本的に、ステップS903からS908の処理は、1200225回だけ繰り返されるループとなる。但し、必ずしも1200225回繰り返しを実行する必要はなく、途中スキップして実行することによって高速化してもよい。部分画像のループの中でツリーtree番号のループS905~S907が実行される。本処理では、2重のループが実行されることになるが、2つのループはお互い独立なので、ループの内側外側を入れ替えても良い。ループの一番深い処理ステップS906において、i番目の判別器が実行される。本処理ステップでは、図3a、bのフローチャートがサブルーチンとして呼び出される。最後に、ステップS909において、判別結果の集計を行う。この結果、1280×1024のサイズの入力画像の中に存在する100×100のサイズの学習画像が抽出されることとなる。集計方法として、それぞれのクラスの存在確率ベクトルの相加平均、相乗平均などの処理を行うこともできる。また、前述の部分画像の学習画像中での位置を記録したオフセットを用いて、学習画像の存在位置を求めることもできる。本実施形態によれば、高速に、かつ、高精度にパターン認識が可能な情報処理技術の提供が可能になる。あるいは、パターン認識の情報処理に必要となるディスク、また、メモリの容量を削減することができる。第5の実施形態第1の実施形態ではテーブルとツリーを組み合わせることによって高速、高精度なパターン認識を実現した。また、第3の実施形態では1つの大きなテーブルを用いて高速、高精度なパターン認識を実現した。第1の実施形態と第3の実施形態を比べると、第1の実施形態の方が速度を犠牲にして、よりコンパクトな辞書を作成することができるという利点がある。これに対して、第3の実施形態は、第1の実施形態と比べるとコンパクト性を犠牲にして、より高速な判別器を実現できるという利点ある。本実施形態では、異なるテーブル生成プロセスにより生成された複数のテーブルを組み合わせることによって、第1の実施形態と第3の実施形態の良い点を備える判別器を作成する構成を提供する。図10aに元となるツリーを例示的に示し、図10bにそのツリーを元に作成された組み合わせテーブルを例示的に示す。図10aの1011から1023はツリーを構成するノードを示している。なお、図10aで示したツリーは図2bで示したツリーより1段深くなっている。図2bと同じように、末端にあるノードのうち、白い丸で示したノードはleafノードリーフノードを表し、斜線で塗りつぶしたノードはnullノードヌルノードを表す。そして、末端ではない、つまり枝を持つノードはインターナルノードを示しており、そのノードで用いるクエリーに従ってそれぞれの枝への分岐が生じる。第5の実施形態および第6の実施形態において、説明を簡単にするために1つのリーフノードには1つの学習パターンが格納されているとする。そして、例えば、リーフノード1013に格納されている学習パターンを学習パターンP1013のように先頭にPを付けて表記する。この条件のもとでは、結局、図10aで示したツリーを作成する時点で4つの学習パターンP1013、P1016、P1017、P1023が学習データとして準備されていることになる。なお、一般的には第1の実施形態で説明したように1つのリーフノードに格納される学習パターンは1つに限定されるものではなく、複数の学習パターンの情報を格納することも可能である。図10aに示したツリーの作成方法は第3の実施形態で説明した方法と同じである。つまり、予め多くのクエリーを生成した後で、そのクエリーに基づいてツリーを作成する。この結果、ツリーに存在する深さが同じノードにおけるクエリーは全て共通になる。具体的にはノード1012とノード1019は同じクエリーを使う。また、ノード1014とノード1021は同じクエリーを用いる。太線1050は、最初にテーブル化するためのノード間の境界を示し、図2bにおける太線250と同じである。まず太線1050で示した境界で、クエリーが2段のテーブルが作成される。この結果、図10bのノード1011、ノード1012を囲む1100で示したテーブル1100が作成される。テーブル1100のことをルートテーブルと呼ぶ。なお、太線1050の位置、すなわち、ルートノード1011から数えて2段目という位置は任意である。予め辞書化の効率の良い位置をユーザが決めても良いし、最も効率の良い段数を計算して決定しても良い。第1の実施形態図2bにおいては、このルートテーブルの末端に4つのツリーがつながっていた。これに対して本実施形態では、ルートテーブルに1101~1104の四角で示した4つのテーブルがつながっている。なお、テーブル1101とテーブル1103は、それぞれリーフノード1013とヌルノード1020からなるクエリーが存在しないテーブルとなる。通常、クエリーが存在しないテーブルはテーブルとは呼ばない。しかし、本実施形態を理解しやすいように、便宜的にテーブル1101とテーブル1103のようなクエリーが存在しないテーブルも0段のテーブルと呼ぶ。これは、第1の実施形態でターミナルノードのみからなるツリーもツリーと呼んだことに対応する。また、同じ命名規則で、図10bのテーブル1102をクエリー2段のテーブル、テーブル1104をクエリー1段のテーブルと呼ぶ。そして、テーブル1102を作成する際にクエリーの境界となるのは図10aの太線1051で、テーブル1104を作成する際にクエリーの境界となるのは太線1052となる。なお、太線1051及び太線1052の位置は末端のリーフノードの深さの位置となる。テーブル1102の作成規則は図5cで示した生成規則と同じである。つまり図5cにおいて、ヌルノード218がコピーされて2つ存在するのと同じように、ヌルノード1018がコピーされて2つ存在する。例えば、これを図5dで示した生成規則に準じて作成する場合、図10bの2つのヌルノード1018はノード1014の情報で置換されることとなる。図11に本実施形態の処理の流れを説明するフローチャートを示す。まずルートテーブル図10aの太線1050より上の部分、もしくは図10bの四角で囲った1100の部分を作成する。ルートテーブルの作成に際して、ステップS1101において予め決められた数のクエリークエリー列を作成する。例えば、図10bの例なら、ルートテーブルの段数は2なので、ステップS1101で2つのクエリー列を作成する。そしてステップS1102で、このクエリー列に基づき学習パターンを分割する第1のテーブル生成プロセス。具体的に図10a、bの例を用いて説明すると、全ての学習パターンP1013、P1016、P1017P、P1023を含む集合が以下の4つの部分集合に分割される。4つの部分集合は、学習パターンP1013を含む集合、学習パターンP1016、P1017を含む集合、空集合、学習パターンP1023を含む集合である。一般的には、1つのクエリーによって分割される部分集合の数ツリーにおける枝の数と等価をR、クエリーの数をPとする。すると、ルートテーブルにおいて分割される学習パターンの部分集合の数はRPとなる。図10a、bの例でいうと、R=2かつP=2なので、分割された学習パターンの部分集合の数は上述の通り22=4となる。次に、全ての学習パターンの部分集合に対して、それを学習パターンとみなして、テーブルを作成していく第2のテーブル生成プロセス。これがステップS1103~ステップS1105までのルーチンとなり、このループの中のステップS1104でそれぞれのテーブルが作成される。図10bの例でいうと、テーブル1101~テーブル1104が作成される。ステップS1104のサブルーチンは具体的には図6のフローチャートが呼び出される。なお、図10、図11を用いて説明してきた実施形態は、テーブルを2層組み合わせた例となる。この層の数は2に限定されるものではなく、3以上の層であっても本実施形態の本質は変わらない。第6の実施形態これまで説明してきた実施形態では、まずツリーを作成しておいてからそれに対応するテーブルを作成した。この方法によって性能を保ったままより高速なパターン認識アルゴリズムが実現できる。これに対して、本実施形態では最初から直接テーブルを作成し、次にそれを変換したテーブルを作成する。この方法によって高速性を保ったままより高性能なパターン認識アルゴリズムを実現する。図12に本実施形態における処理の流れを説明するフローチャートを示し、図13a、bに作成されるテーブルを例示的に示す。なお、図13a、bで示したテーブルの例は図10a、bで示した例と全く同じ学習パターンを用いて作成されたものとする。すなわち、図13a、bで示したテーブルは学習パターンP1013、P1016、P1017、P1023を用いて作成されている。まずステップS1201において、予め決められた数のクエリー列を作成する。図13a、bの例でいうと4つのクエリー列を作成する。なお、図13aの四角で囲んだ4つのクエリー列1351は図10aにおけるノード1011、ノード1012、ノード1014、ノード1015で用いられるクエリー列と同じとし、同じ番号を振っている。次にステップS1202において、先のステップで作成されたクエリーに列に基づいて初期テーブルを作成する。この初期テーブルの例が図13aで図示したテーブルとなる。なお、図13aにおいて白丸で示したエンティティは学習パターンが格納されているエンティティを意味し、斜線で塗られたエンティティは学習パターンが全くないヌルエンティティを意味する。この結果、作成されるエンティティの数は一般的にはRPとなる。図13aの例ではR=2、P=4となっており、結果的に24=16個のエンティティ1301~1316が作成される。なお、図13aで示した初期テーブルは図10aで示したツリーに準拠して書かれている。具体的には、リーフノード1013に相当するエンティティが1302で、リーフノード1016に相当するエンティティが1305となる。そして、リーフノード1017に相当するエンティティが1306で、リーフノード1023に相当するエンティティが1316となる。この初期テーブルでは16個あるエンティティのうち12個がヌルエンティティとなっている。ここで重要な事は、図10aでは学習パターンが1つとなったらクエリーが実行されないのに対して、図13aではノード1011、1012、1014、1015で示した4つのクエリーが必ず実行される事である。クエリーにおける左分岐を0で表し、右分岐を1で表したとすると、エンティティ1301~1316は0000から1111までの4ケタの2進数に対応する。図14は、クエリーにおける分岐の2進法表示とエンティティ番号との対応関係を表示する図である。左のカラムが2進数表記の数字で、右のカラムがそれに対応したエンティティ番号となる。例えばエンティティ1302の2進数表示は0001となり、最初の3つのクエリーの分岐は左で、最後の1つのクエリーの分岐が右だったということを意味する。これに対して、図10aでは最初の2回の分岐で学習パターンが1つになったので、それ以降のクエリーは実行されていない。また、エンティティ1316の2進数表示は1111となり、4つのクエリーの分岐は全て右だったということを意味する。これに対して、図10aでは最初の3回の分岐で学習パターンが1つになったので、最後の4つ目のクエリーは実行されていない。図12のフローチャートに戻り説明すると、ステップS1203からステップS1215までのルーチンによって初期テーブルを変換した最終的なテーブルが作成される。具体的には図13bで示したような全てのエンティティに学習パターンが格納されているテーブルが作成される。ステップS1203からステップS1214までのループで初期テーブルを構成する全てのエンティティがチェックされる。まずステップS1204で当該エンティティがヌルかどうかがチェックされる。もしヌルでないエンティティである場合、即ち学習パターン情報を持ったエンティティである場合、ステップS1214までジャンプして次のエンティティに処理を進める。ステップS1204の判定で、当該エンティティがヌルであった場合、ステップS1205からステップS1213までのルーチンが実行される。ここでアルゴリズムを説明するために、テーブルの階層と近傍エンティティの概念を説明する。ステップS1205とステップS1206で使っている階層という言葉は、テーブルの階層のことを意味する。テーブルの階層とは、テーブルを構成するクエリーの上から下への階層のことを意味する。具体的には図13bで示したテーブルなら全部で4階層あって、1011、1012、1014、1015で示した4つのクエリーノードに対応する。以下、テーブルの階層番号とこれらのノードの番号を同じ番号を使って説明する。近傍エンティティとは、テーブルの中で論理的に近いエンティティを意味する。ここで論理的に近いとは、当該階層以下の階層がなかった場合に同一のエンティティとなるという意味である。前述した2進法表記を用いて説明すると、上位のビットが同一の数字になることを意味する。具体的には、図13aのエンティティ1301の階層1015に関する近傍エンティティはエンティティ1302となる。2進法表記で説明すると、エンティティ1301とエンティティ1302はともに上位3ビットが000となるからである。また、エンティティ1301の階層1014に関する近傍エンティティはエンティティ1302、エンティティ1303、エンティティ1304となる。2進法表記で説明すると、エンティティ1301~1304はともに上位2ビットが00となるからである。また、例えば、エンティティ1307の階層1015に関する近傍エンティティはエンティティ1308となる。2進法表記で説明すると、エンティティ1307とエンティティ1308はともに上位3ビットが011となるからである。また、エンティティ1307の階層1014に関する近傍エンティティはエンティティ1305、エンティティ1306、エンティティ1308となる。2進法表記で説明すると、エンティティ1305~1308はともに上位2ビットが01となるからである。また、エンティティ1307の階層1012に関する近傍エンティティはエンティティ1301からエンティティ1306、エンティティ1308となる。2進法表記で説明すると、エンティティ1301~1308はともに上位1ビットが0となるからである。図12のフローチャートに戻って説明する。ステップS1205からステップS1211までのループは、テーブルの階層を上へさかのぼるループとなる。図13bの例でいうと、階層1015から階層1011までさかのぼるループである。このループの中にあるステップS1206からステップS1209までのループは、当該階層に関する近傍エンティティを巡回するループとなる。ステップS1207で、当該階層に関する近傍エンティティがヌルかどうか1つずつチェックされる。そして、もしヌルでない近傍エンティティが存在したらステップS1208で有効近傍エンティティリストへ格納される。当該階層に関する近傍エンティティが全てチェックされるとステップS1206からステップS1209までのループを抜けてステップS1210へ処理が移る。ステップS1210では有効近傍エンティティリストが空かどうかチェックする。もし空だった場合、ステップS1211へ進んだ結果、もし上の階層に上れるならステップS1205へ戻る。もし空でない場合は、ループを抜けて処理がステップS1212へ進む。なお、初期テーブルでヌルでないエンティティが1つでもあるなら、一番上の階層に関する近傍エンティティの中にヌルでないノードが少なくとも1つはあることになる。ステップS1212では有効近傍エンティティリストからコピーする1個のエンティティを選び、ステップS1213において、先のステップで選ばれたエンティティ情報をコピーリストへ格納する。なお、ステップS1212でのエンティティ選び方は、基本的にランダムに選択することが可能であるが、エンティティ選び方として、何らかの評価関数を用いて選んでも構わない。そして、ステップS1214のループを抜けた後、最後にステップS1215でコピーリストに格納されているエンティティ情報を初期テーブルの当該エンティティへコピーする。なぜこのような回りくどい方法を取るかというと、ステップS1213で初期テーブルへ直接コピーしていくとステップS1207におけるチェックが初期テーブルとは異なった情報を元にすることになるからである。なおステップS1215でコピーリストからコピーされるエンティティ情報は、実体であるメモリ情報でも良いし、また、ポインタでも良い。ポインタでも良い理由は、コピーされるエンティティ情報は必ず初期テーブルに存在する情報だからである。以上説明してきたように、初期テーブルから有効近傍エンティティの情報をコピーすることによって、全てのエンティティが学習パターンの情報で満たされることになる。このことによりヌルエンティティに落ち、認識結果がないという状況がなくなり、より高性能なテーブルが作成できる。第7の実施形態これまで説明してきた実施形態を実現する装置の概略構成を図15a、bを用いて説明する。図15aに判別器の作成装置判別器作成装置の構成例を示し、図15bに認識装置の構成例を示す。図15aに示すクエリー列作成部1501はクエリー列1502を作成する。クエリー列読み込み部1503は、クエリー列作成部1501で作成されたクエリー列1502を読み込む。クエリー列読み込み部1503により読み込まれたクエリー列1502は、更に、読み込み部1503からツリー作成部1505またはテーブル作成部1509に読み込まれる。ツリー作成部1505は、学習パターン1504を読み込まれたクエリー列1502に従って分割することによってツリー1506を作成する。次に、ツリー変更部1507は、ツリー作成部1505により作成されたツリー1506を元に、ツリー1506の一部、または全部をテーブル1508とする。テーブル作成部1509は学習パターン1504を読み込んだクエリー列1502に従って分割することによって初期テーブル1510を作成する。次に、テーブル変更部1511は、テーブル作成部1509により作成された初期テーブル1510をテーブル1508に変換する。フローチャートと対応を取ると、クエリー列作成部1501が図1aのS101の処理に対応し、クエリー列読み込み部1503が図1bのS106の処理に対応する。また、ツリー作成部1505は図1のS103からS113の処理に対応する。また、ツリー変更部1507は図6aのS602からS611の処理に対応する。また、テーブル作成部1509は図12のS1202の処理に対応し、テーブル変更部1511は図12のS1203からS1215の処理に対応する。図15bに示す認識装置は、ツリー探索部1513およびテーブル探索部1514を中心に構成される。ツリー探索部1513およびテーブル探索部1514は、予め作成されているクエリー列1502を、クエリー列読み込み部1503を介して読み込む。そして、ツリー探索部1513およびテーブル探索部1514は、その読み込まれたクエリー列1502に基づき、クラスが未知のパターン1512を認識し、認識結果1515を導く。この時、ツリー探索部1513は図15aの判別器の作成装置で作成されたツリー1506を用いる。また、テーブル探索部1514は図15aの判別器の作成装置で作成されたテーブル1508を用いる。フローチャートと対応を取ると、ツリー探索部1513は図3bのS305からS309の処理に対応する。また、テーブル探索部1514は図7aのS702からS703に対応する。その他の実施例また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェアプログラムを、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータまたはCPUやMPU等がプログラムを読み出して実行する処理である。