(57)【特許請求の範囲】
【請求項１】
機械学習システムにおける方法であって、
プロセッサーにおいて、複数のオプションの各々に対して、該オプションの挙動を記述する複数のサンプルを受けるステップであって、サンプルの数が、自動的に決定された誤差許容範囲に少なくとも部分的に基づき、前記誤差許容範囲が、用途領域または利用可能な計算資源に少なくとも部分的に基づく、ステップと、
オプション毎に、前記サンプルを使用して点数を計算するステップであって、前記点数が有界差統計を含む、ステップと、
オプション毎に、前記サンプルを使用して、前記点数の信頼区間を計算するステップと、
前記信頼区間および前記点数に基づいて、前記オプションの内１つ以上を選択するステップであって、前記信頼区間に基づいて前記１つ以上のオプションを選択することが、
前記複数のオプションの内の最も高い点数のオプションを決定し、
前記最も高い点数のオプションの前記信頼区間を、前記複数のオプションの内の別のオプションの前記信頼区間と比較し、
前記最も高い点数のオプションの前記信頼区間と前記別のオプションの前記信頼区間とが重複しないとき前記別のオプションを更なる検討から除外する、
ことを含む、ステップと、
を含む、方法。
【請求項２】
請求項１記載の方法において、前記有界差統計が、前記オプションの挙動を記述する前記サンプルから得られた数値であり、前記数値が、前記サンプルの内任意のものが変化したとき、僅かに変化する、方法。
【請求項３】
請求項１または２に記載の方法において、前記点数が、情報利得、ジニ利得、分散、およびエントロピーの内任意の１つ以上から選択される、方法。
【請求項４】
請求項１から３のいずれかに記載の方法であって、選択されるオプションが、前記誤差許容範囲内で、全てのオプションの内最良の点数を有するように、前記信頼区間および前記点数に基づいて、１つのオプションを選択するステップを含む、方法。
【請求項５】
請求項１から４のいずれかに記載の方法において、前記信頼区間を計算するステップが、前記オプションに対する点数の分散を推定するステップを含む、方法。
【請求項６】
請求項１から５のいずれかに記載の方法において、前記信頼区間を計算するステップが、Jack-Knife分散推定値を計算することによって、前記オプションに対する点数の分散を推定するステップを含む、方法。
【請求項７】
請求項１から６のいずれかに記載の方法において、前記信頼区間を計算するステップが、前記点数の推定分散に前記誤差許容範囲で２を除算した値の対数を乗算した値の平方根を、定数に乗算した結果を、当該オプションに対する点数にまたはから加算または減算する計算を行うステップを含む、方法。              
【請求項８】
請求項１から７のいずれかに記載の方法であって、前記計算した信頼区間をバイアスに対して調節するステップを含む、方法。
【請求項９】
請求項１から８のいずれかに記載の方法であって、フィールド・プログラマブル・ゲート・アレイ、特定プログラム集積回路、特定プログラム標準製品、チップ上システム、複合プログラマブル・ロジック・デバイス、グラフィクス処理ユニットの内任意の１つ以上から選択されたハードウェア・ロジックを使用して、少なくとも部分的に実行される、方法。
【請求項１０】
機械学習装置であって、
複数のオプションの各々に対して、該オプションの挙動を記述する複数のサンプルを受けるように構成された採点ロジックであって、サンプルの数が、自動的に決定された誤差許容範囲に少なくとも部分的に基づき、前記誤差許容範囲が、用途領域または利用可能な計算資源に少なくとも部分的に基づく、採点ロジックと、
前記採点ロジックが、オプション毎に、前記サンプルを使用して、点数を計算するように構成され、前記点数が有界差統計を含み、
オプション毎に、前記サンプルを使用して前記点数の信頼区間を計算するように構成されたレーシング・ロジックであって、前記複数のオプションの内の最良の点数のオプションを決定し、前記最良の点数のオプションの前記信頼区間を、前記複数のオプションの内の別のオプションの前記信頼区間と比較し、前記最良の点数のオプションの前記信頼区間と前記別のオプションの前記信頼区間とが重複しないとき前記別のオプションを更なる検討から除外する、レーシング・ロジックと、
前記信頼区間および前記点数に基づいて、前記オプションの内１つ以上を選択するように構成されたプロセッサーと、
を含む、機械学習装置。
【発明の詳細な説明】
【背景技術】
【０００１】
[0001]  多くの今日の機械学習システムは、大量のデーターのために、重大な計算上の課題を抱えている。多くの機械学習システムは、何百万もの安価に取得されたサンプルを処理することが多く、重大な計算負担が発生する。これらのシステムでは、非常に大量のデーターに基づいてできるだけ効率的に推論を行うことが、当面の課題となっている。例えば、機械学習システムは、実現可能な誤差許容範囲内で正確な判断を行う前に、どの位のデーターをどの順序で処理する必要があるか評価しようとする。通例、利用可能な計算リソースは有限であり、機械学習システムはそのリソースをしかるべく割り当てる必要がある。
【０００２】
[0002]  多くの場合、機械学習システムは、オプションについて不確実性がある有限なリソースの効率的な割り当てに関係する。例えば、多くの可能な広告の中からどれを顧客に示すか解決するには、リソース（計算リソース、画面空間）を１つの可能なオプション（１つの広告）に割り当てる。広告を示し、ユーザーの応答（クリック有り／なし）を観察すると、広告の印象について部分的な情報が明らかになり、今後リソースのより良い割り当てを行うために使用することができる。
【０００３】
[0003]  以下に説明する実施形態は、既知の機械学習システムの欠点の内いずれかを解決する実現例にも全てを解決する実現例にも限定されない。
【発明の概要】
【０００４】
[0004]  以下に、基本的な理解が読み手に得られるようにするために、本開示を簡略化した摘要を紹介する。この摘要は、本開示の広範な全体像ではなく、主要な／肝要なエレメントを識別するのでも、明細書の範囲を線引きするのでもない。その唯一の目的は、本明細書において開示する概念から選択したものを、後に紹介する更に詳細な説明に対する序章として、簡略化した形態で紹介することである。
【０００５】
[0005]  多くの可能なオプションの中から、例えば、ランダム判断ツリー訓練のための効率的な訓練プロセスの一部として選択するため、モデルの多くのファミリーからデーターを最良に記述するものを選択するため、多くの特徴から項目を最良に分類するものを選択するためというような、機械学習のためのリソース割り当てについて記載する。種々の例において、不確かなオプションについての情報のサンプルが、これらのオプションを採点するために使用される。種々の例において、点数に対して信頼区間(confidence interval)が計算され、オプションから１つ以上を選択するために使用される。例では、オプションの点数は、いずれのサンプルが点数の計算から省略されても殆ど変化しない、異なる統計に結び付けられてもよい。一例では、深度画像からの人間の体姿勢検出に限定されない用途のために精度を維持しつつ、ランダム判断ツリー訓練が一層効率的にされる。
【０００６】
[0006]  付随する特徴の多くは、以下の詳細な説明を参照し添付図面と合わせて検討することによって一層深く理解されてくるに連れて、一層容易に認められよう。
【図面の簡単な説明】
【０００７】
[0007]  本説明は、添付図面を考慮して以下の詳細な説明を読むことから、一層深く理解されよう。
【図１】図１は、機械学習システムのコンポーネントであることができるオプション・セレクター、ならびにモデル・セレクター、特徴セレクター、およびツリー分割機能セレクターの模式図であり、これらの各々は、機械学習システムのコンポーネントであることができる。
【図２】図２は、情報利得の訓練例の数に対するグラフである。
【図３】図３はオプション・セレクターにおける方法の流れ図である。
【図４】図４は、図３のボックス３０８の方法の更に詳細な流れ図である。
【図５】図５は、コンピューター・ゲームを制御するためのカメラ・ベースの機械学習システムの一例を示す。
【図６】図６は、図６の機械学習システムと共に使用するための画像キャプチャー・デバイスの模式図である。
【図７】図７は、入力深度画像において関節位置を予測する方法の流れ図である。
【図８】図８は、ランダム判断フォーレストを訓練する方法の流れ図である。
【図９】図９は、ランダム判断フォーレストの模式図である。
【図１０】図１０は、検査時点における関節位置予測方法の流れ図である。
【図１１】図１１は、オプション・セレクターを有する機械学習システムの実施形態を実現することができる、計算ベース・デバイスの一例を示す。
【０００８】
添付図面において、同様の部分を示すために同様の参照番号が使用される。
【発明を実施するための形態】
【０００９】
[0008]  添付図面と関連付けて以下に示す詳細な説明は、本例の一説明であることを意図するのであり、本例を構築または利用することができる唯一の形態を表すことを意図するのではない。この説明は、本例の機能、ならびに本例を構築し動作させるためのステップのシーケンスを明らかにする。しかしながら、異なる例によって、同じまたは等価な機能およびシーケンスを遂行してもよい。
【００１０】
[0009]  本明細書では、本例は、ゲームを制御するための機械学習システムにおいて実現されるものとして説明および例示するが、説明するシステムは、限定ではなく一例として提供される。当業者は認めるであろうが、本例は、種々の異なるタイプの機械学習システムにおける用途に適している。
【００１１】
[0010]  図１は、機械学習システムのコンポーネントであるオプション・セレクター１０２の模式図であり、更にモデル・セレクター１１２、特徴セレクター１１４、およびツリー分割機能セレクター１１６の模式図である。これらの各々は、機械学習システムのコンポーネントであることができる。
【００１２】
[0011]  オプション・セレクターは、採点ロジック１０６およびオプションについての
情報のサンプル１１０を使用して、オプションの点数を評価することによって、複数のオプション１００から１つ以上のオプションを選択する。オプションについての情報は、進展中のプロセスにおいて入手可能になるサンプル１１０から得られるので、オプションについての不確実性がある。採点ロジックは、レーシング・ロジック(racing logic)１０８を使用して、選択プロセスを高速化しつつ、指定された誤差許容範囲を維持する。オプション選択の結果として、リソース１０４を割り当てることができる。例えば、各オプションが広告であってもよく、リソース１０４は、この広告の印象をユーザーに提示するための計算リソースおよび画面空間であってもよい。各サンプル１１０は、広告の印象、およびこの広告の印象に対する、観察したユーザーの応答（例えば、クリック有り／無し応答）であってもよい。オプション・セレクターは、採点ロジック１０６およびサンプルを使用して、広告に対する点数を計算することができる。多くの何千以上ものサンプルが観察された後、各広告の点数が定常状態に達することができ、どの広告を提示するか選択することによって、これらのレベルは、リソース１０４を割り当てるために、オプション・セレクターによって使用することができる。このプロセスを高速化するために、レーシング・ロジック１０８を使用して、選択結果の指定誤差許容範囲を確保しつつ、選択が行われる前に評価されるべきサンプルを減らすことを可能にすることができる。
【００１３】
[0012]  オプション・セレクター２０３、採点ロジック１０６、およびレーシング・ロジック１０８の各々は、ソフトウェアおよび／またはハードウェアを使用して実現されるコンピューターである。例えば、これらのコンポーネントは、全体的にまたは部分的に、ハードウェア・ロジック・コンポーネントを使用して実現することができる。即ち、代わりにまたは加えて、本明細書において説明する機能は、少なくとも部分的に、１つ以上のハードウェア・ロジック・コンポーネントによって実行することができる。例えば、そして限定ではなく、使用することができるハードウェア・ロジック・コンポーネントの代表的なタイプは、フィールド・プログラマブル・ゲート・アレイ（ＦＰＧＡ）、特定プログラム集積回路（ＡＳＩＣ）、特定プログラム標準製品（ＡＳＳＰ）、チップ上システム・システム（ＳＯＣ）、複合プログラマブル・ロジック・デバイス（ＣＰＬＤ）、グラフィクス処理ユニット（ＧＰＵ）を含む。
【００１４】
[0013]  一例では、オプション・セレクターはモデル・セレクター１１２である。この状況では、オプションは、異なる複雑度を有することができる異なるファミリーのモデル１１８である。この状況において、オプションは、異なる複雑度を有することができる、異なるファミリーのモデル１１８である。この状況におけるサンプル１１０は、モデルに必要とされるシステムからのサンプルであるとよい。例えば、サンプルは、温度、雨、および他の要因の経験的測定値であってもよく、モデル化されるシステムは天候システムとなる。他の例では、サンプルに訓練画像からの画像エレメントを標識してもよく、モデル化されるシステムは画像分類システムとなる。モデル・セレクターは、データー（サンプル）をモデル化するために使用される、モデル１１８のファミリーの内１つ以上を含む出力を生成する。リソース１０４は、採点ロジックおよびレーシング・ロジックによって使用される計算リソースとすることができる。リソース１０４は、モデル・セレクターによって選択されたモデルのファミリーを使用する下流側計算プロセスによって使用される計算リソースとすることもできる。採点ロジックおよびレーシング・ロジックは、選択プロセスを有効にし高速化するために、前述したのと同様に使用される。
【００１５】
[0014]  一例では、オプション・セレクターは特徴セレクター１２０である。この状況では、オプションは、例えば、文書のコーパスまたは物体の画像の特徴１２０である。この状況におけるサンプル１１０は、特徴の例とすることができ、これらの特徴がどの位正しく文書または物体を分類するかという観察が伴う。モデル・セレクターは、文書または物体を分類するのが得意であるとして選択された特徴を含む出力を生成する。リソース１０４は、採点ロジックおよびレーシング・ロジックによって使用される計算リソースとすることができる。リソース１０４は、下流側計算プロセスによって使用される計算リソースとすることもできる。これらの計算リソースは、特徴セレクターによって選択された特徴を使用する。採点ロジックおよびレーシング・ロジックは、選択プロセスを有効にし高速化するために、前述したのと同様に使用される。
【００１６】
[0015]  一例では、オプション・セレクターは、ランダム判断ツリーを訓練するための機械学習システムの一部である、ツリー分割機能セレクター１１６である。ランダム判断ツリーとは、訓練フェーズの間に蓄積されたデーターを格納するために使用される一種のデーター構造であり、ランダム判断ツリーによって以前には見られない例についての予測を行うために使用することができる。ランダム判断ツリーは、通常、一般化を達成するために、特定の用途領域に対して訓練されたランダム判断ツリーの集合体(ensemble)の一部として使用されるである（即ち、フォーレストを訓練するために使用されるものとは異なる例について正しい予測を行うことができる）。ランダム判断ツリーは、ルート・ノード、複数の分割ノード、および複数のリーフ・ノードを有する。訓練の間、ツリーの構造（ノードの数、およびこれらがどのように接続されるか）が学習され、更に分割ノードの各々において使用される分割機能も学習される。加えて、訓練の間にリーフ・ノードにデーターが蓄積される。
【００１７】
[0016]  分割機能は、ランダムに生成することができ、図１のオプション１２２を含むことができる。各分割ノードにおいて判断が行われるプロセスにおいて、データー（画像の画像エレメント等）を、ランダム判断フォーレストのツリーを介して、ルートからリーフにプッシュすることができる。判断は、画像エレメントの特性、および分割ノードに関連する分割機能にしたがって行うことができる。画像エレメントは、判断の結果にしたがって選択されたブランチを下って、ツリーの次のレベルに進む。
【００１８】
[0017]  ツリー分割機能セレクター１１６は、判断ツリーの特定の分割ノードにおいて使用する分割機能を選択する。選択を行うために、サンプル１１０が使用される。サンプル１１０は、訓練データー例である。例えば、訓練データー例は、特定のクラスに属することが標識された画像エレメントとすることができ、あるいは他の標識された訓練データーまたは標識されない訓練データーでもよい。採点ロジック１０６は、サンプル１１０を使用して、異なる分割機能オプション１２２に対する点数を計算する。レーシング・ロジック１０８は、選択プロセスを高速化するために使用することができる。これについては、図３、図４、図７、および図８を参照して以下で更に詳しく説明する。リソース１０４は、採点ロジックおよびレーシング・ロジックによって使用される計算リソースとすることができる。リソース１０４は、モデル・セレクターによって選択されたツリー分割機能を使用する下流側計算プロセスによって使用される計算リソースとすることができる。
【００１９】
[0018]  図１を参照して説明した例では、採点ロジック１０６は、オプション１００の各々に対して点数を評価するために使用される。例えば、点数は、平均、中央値、モード、または他の統計というような、オプションの挙動を記述する統計に基づくことができる。種々の例において、点数は、有界差統計(bounded difference statistic)である統計に基づく。有界差統計とは、挙動の複数の観察（サンプル）からのエンティティ（図１の例におけるオプション等）の挙動を記述する数値であり、複数の観察の内１つだけが変化した場合、その数値を少しだけしか変化させない。ある例では、観察を変化させることは、その観察を省略することによって行うこともできる。有界差統計の例の非網羅的リストには、分散、エントロピー、情報利得（information gain）、ジニ指数(gini index)がある。
【００２０】
[0019]  図２は、情報利得の訓練例の数に対するグラフである。情報利得は、有界差統計の一例であり、訓練例を受けるに連れて、採点ロジックによって測定することができる。図２の例では、特徴Ａおよび特徴Ｂという２つのオプションがある。しかし、実際には、もっと多いオプションがある場合もあり得る（２つが示されるのは明確さのためである）。特徴Ａに対する情報利得点数が実線としてプロットされ、特徴Ｂに対する情報利得点数が点線としてプロットされている。オプション・セレクターが図１の特徴セレクター１１４であり、情報利得が最も高い特徴を発見する必要があると仮定する。最初にサンプルが受けられるとき、少数のサンプルしか入手できないので、情報利得点数はノイズが多い。一旦５００よりも多いサンプルが受けられたなら、情報利得点数は静定し、特徴ＡおよびＢに対して明確に分けられ、特徴Ｂの方が高い情報利得点数を有する。特徴セレクター１１４は、特徴Ａまたは特徴Ｂのどちらが、最適点において、最も高い情報利得点数を有するかに関して判断を行うように設計される。即ち、指定された誤差許容範囲内で精度が高い答えを与えるのに丁度十分な訓練例が受けられた後である。これは、特徴選択プロセス自体、および特徴選択結果を使用する下流側プロセスの双方にとって適切に計算リソースを割り当てることを可能にする。
【００２１】
[0020]  特徴セレクター１１４は、レーシング・ロジック１０８を有することができる。レーシング・ロジック１０８は、情報利得点数（または、他の有界差統計の点数）に対して信頼区間としても知られるエラー・バーを計算する。信頼区間とは、指定された精度で採点の可能な値を表す数値の範囲である。図２では、訓練サンプルの数が５００未満でしかないときにおける特徴Ａの情報利得点数について、信頼区間２００が示されている。訓練例の数が５００を超えると、特徴Ａの点数に対する信頼区間２０６はもっと狭い範囲を有することになる。何故なら、情報利得について確信度が高くなるからである。同様に、特徴Ｂの点数に対する信頼区間２０２は、訓練例の数が約５００のときに大きく、訓練例の数が増加するに連れて小さくなる信頼区間２０４となる。レーシング・ロジックは、信頼区間を使用して、指定された誤差許容範囲内の精度であるオプション選択を与えるのに十分な訓練例が受けられたか否か判断することができる。例えば、オプションの信頼区間が、最も高い採点オプションに対する信頼区間と重複しない場合、このオプションを拒否することができる。サンプルの数が増えるに連れて、増々多くのオプションがレースから拒絶されるので、オプションの数が徐々に減少する。これについて、図３を参照してこれより説明する。図３は、オプション・セレクターにおける方法の流れ図である。オプション・セレクターは、図１のオプション・セレクター１０２、モデル・セレクター１１２、特徴セレクター１１４、またはツリー分割機能セレクター１１６の内いずれでもよい。
【００２２】
[0021]  オプション・セレクターは、レーシング・ロジックによって使用される誤差許容範囲を設定する（３００）。この誤差許容範囲は、レーシング・ロジックが、設定された誤差許容範囲内の精度であるオプション選択を与えるのに十分な訓練例が受けられたか否か判断するときに、レーシング・ロジックによって使用される。誤差許容範囲は、ユーザー入力にしたがって設定することができ、予め構成しておくこともでき、または用途領域、利用可能な計算リソース、および他の要因にしたがって自動的に選択することもできる。
【００２３】
[0022]  オプション・セレクターは、可能なオプションを識別するリストまたは他の情報にアクセスし（３０２）、オプションの各々に対して１つ以上の訓練例を受ける（３０４）。例えば、オプションは、判断ツリー訓練プロセスからの、ランダムに生成される判断ツリー分割機能とすることができる。訓練例には、データー・ストア、データー・ストリーム、または他のソースからアクセスすることができる。オプション・セレクターは、採点ロジック１０６を使用して、受けた訓練例を使用してオプションの各々に対する点数を計算する（３０６）。例えば、点数は、前述したような有界差統計である。レーシング・ロジック１０８は、オプション毎の点数に対して信頼区間を計算する（３０８）ために使用される。レーシング・ロジック１０８は、信頼区間条件を満たすオプションを識別する。例えば、信頼区間が、最も高い点数を得たオプションの信頼区間と重複しないオプションが識別される。識別されたオプションは、ステップ３０２において、可能なオプションのリストから除外され（３１４）、１つのオプションだけが残るまで（３１２）または指定された数のオプションだけが残るまで、本プロセスを繰り返すことができる。
【００２４】
[0023]  図４は、図３の方法の一部の更に詳細な流れ図である。レーシング・ロジックは、オプション毎に点数の信頼区間を計算するプロセス（図３のボックス３０８）の間に、図４の方法を実行する。レーシング・ロジックは、これまでに計算されたオプション毎に点数の分散を推定する（４００）。分散とは、量がどの位ばらつくかを記述する数値である。分散を推定する任意の適した方法を使用することができる。ある例では、分散のJack-Knife推定が使用される。これについては、以下で更に詳しく説明する。分散のJack-Knife推定は、サンプルの異なるものを順番に除去することによって、点数を複数回再計算することによって行われる。次いで、再計算された点数は、これらが互いにどの位ばらつくか評価することによって、分散を推定するために使用される。
【００２５】
[0024]  レーシング・ロジックは、オプションの内の１つに対して、そのオプションに対する点数に／から、定数に、推定した分散に誤差許容範囲で除算した２の対数を乗算した値の二乗根を乗算した結果を加算／減算して、信頼区間を計算する（４０２）。定数は、５／２の値または同様の値を取ることができる。
【００２６】
[0025]  推定された分散は、前述のような、分散のjack-knife推定値とすることができ、任意の適した方法で計算することができる。オプションが、分類を実行するランダム判断ツリーにおける分割機能候補であり、点数が情報利得またはジニ利得（Gini gain）である例では、精度を維持しつつ計算時間を短縮するために、本文書において後に更に詳細に説明するように、分散のjack-knife推定値を計算することができる。
【００２７】
[0026]  ある例では、採点ロジックが、バイアスを発生させるプラグイン推定器を使用して点数を計算することが分かっている場合、レーシング・ロジックは、バイアスのために、計算された信頼間隔を調節することができる。しかしながら、バイアスに対する調節は任意のステップである。バイアス調節ステップが省略されるときも、相応しい作業結果が得られる。
【００２８】
[0027]  更に形式的には、レーシング・ロジックは、以下のように、オプションの１つに対して信頼区間を計算することができる（４０２）。
[0028]  
【００２９】
【数１】
0006333844.tif 000002
【００３０】
[0029]
【００３１】
【数２】
0006333844.tif 000003
【００３２】
[0030]  これは、言葉では、サンプル数ｎの分散のJackknife分散推定値に補正値o(E(VnJ))を加算し、誤差許容範囲δで２を除算した値の対数を乗算した値の平方根を５／２倍した値を、オプションの点数Ｚから減算した結果から、サンプル数ｎの分散のJackknife分散推定値に補正値o(E(VnJ))を加算し、誤差許容範囲δで２を除算した値の対数を乗算した値の平方根を５／２倍した値を、オプションの点数Ｚに加算し、更にバイアス項を加算した結果までの範囲として、表現することができる。
【００３３】
[0031]  実際には、分散のJack-Knife推定値の収束は極めて速く、補正項o(E(VnJ))はレーシング・ロジックによって省略されてもよいことが分かっている。
[0032]  レーシング・ロジックは、例えば、ビン・カウントのヒストグラムを使用して点数を計算する場合のように、有界差統計に基づく点数に対して、この形式の信頼区間を計算するために使用することもできる。これは、レーシング・ロジックが多くの形式の点数に対して有効な結果(working result)を与えることを可能にし、以前に可能であったよりも更に遙かに広い範囲の機械学習用途がレーシング・ロジックを使用することを可能にする。誤差許容範囲のサイズを増大または縮小することによって、計算時間に対して、結果の保証される精度レベルの折り合いを付けることができる。
【００３４】
[0033]  レーシング・ロジックは、例えば、エントロピー推定器、情報利得推定器、ジニ指数推定器のような、プラグイン推定器を使用して、採点ロジックによって点数が計算される場合に、前述のように、バイアス補正を信頼区間に適用するように構成することもできる。
【００３５】
[0034]  点数が情報利得に関係する場合、バイアスは以下の式で示されることが分かっている。
[0035]
【００３６】
【数３】
0006333844.tif 000004
【００３７】
[0036]  これは、言葉では、情報利得を計算するために使用したヒストグラムのビンの数から１を減算して２倍した値のサンプル数に対する比率と表現することができる。
[0037]  点数がジニ指数に関係する場合、バイアスは次の式で与えられることが分かっている。
【００３８】
[0038] 
【００３９】
【数４】
0006333844.tif 000005
【００４０】
[0039]  これは、言葉では、ジニ指数を計算するために使用したヒストグラムのビンの数から１を減算して２倍した値の、サンプル数にヒストグラム・ビン数を乗算した値に対する比率と表現することができる。
【００４１】
[0040]  点数が分散利得である場合、バイアス項は不要であることが分かっている。
[0041]  前述のように、分散のJack-Knife推定は、サンプルの異なるものを順番に除去することによって、点数を複数回再計算することによって行われる（除外推定と呼ぶ）。次いで、再計算された点数は、これらが互いにどのようにばらつくか評価することによって、分散を推定するために使用される。
【００４２】
[0042]  点数が情報利得である場合、この点数の分散のJack-Knife推定値は、次のように、レーシング・ロジックによって計算することができる。
[0043]  
【００４３】
【数５】
0006333844.tif 000006
【００４４】
[0044]  ここで、加算は、hjb>0となった項で終了する(over terms)。分散は、加重オンライン更新を使用して計算することができる。hjbは、ブランチｂおよびビンｊにおけるヒストグラム・カウントである。これは整数であり、０以上でサンプルの総数ｎ以下の数である。
【００４５】
[0045]  上の式は、言葉では、分割ノードに達するｎ個の訓練サンプルに対する情報利得プラグイン推定値の分散のJack-Knife推定値は、訓練サンプル数から１を減算した値を訓練サンプル数で除算し、これに分割ノードの左および右子ノードにわたる和を乗算し、更にビンｊおよびブランチｂにおけるヒストグラム・カウントの全てのヒストグラム・ビンにわたる和に、１つのサンプルがブランチｂおよびビンｊから除去されたときの情報利得のプラグイン推定値から情報利得の経験的平均を減算した差の二乗を乗算した結果を乗算した値に等しいと表現することができる。ここで、情報利得の経験的平均は、シンボルＩバーで表され、次の式によって与えられる。
【００４６】
[0046]
【００４７】
【数６】
0006333844.tif 000007
【００４８】
[0047]  これは、言葉では、情報利得の経験的平均は、ヒストグラム・ビン数の２倍で１を除算し、ブランチｂおよびビンｊにおける１つのサンプルを除去して、情報利得のプラグイン推定値の全てのヒストグラム・ビンにわたる和の左および右子ノードにわたる和を乗算した値に等しいと表現することができる。
【００４９】
[0048]  スコアがジニ利得である場合、点数の分散のJack-Knife推定値は、最初に以下のようにジニ利得の経験的平均を計算することによって、レーシング・ロジックによって計算することができる。
【００５０】
[0049]
【００５１】
【数７】
0006333844.tif 000008
【００５２】
[0050]  これは、言葉では、ジニ利得の経験的平均は、ヒストグラム・ビンの数の２倍で１を除算し、ジニ利得のプラグイン推定値の全てのヒストグラム・ビンにわたる和の左および右子ノードにわたる和を乗算した値に等しいと表現することができる。
【００５３】
[0051]  一旦経験的平均が計算されたなら、レーシング・ロジックは次の計算を行うことができる。
[0052]
【００５４】
【数８】
0006333844.tif 000009
【００５５】
[0053]  ここで、加算は、hjb>0となった項で終了する。
[0054]  上の式は、言葉では、分割ノードに達するｎ個の訓練サンプルに対するジニ利得プラグイン推定値の分散のJack-Knife推定値は、訓練サンプル数から１を減算した値を訓練サンプル数で除算し、これに分割ノードの左および右子ノードにわたる和を乗算し、更にビンｊおよびブランチｂにおけるヒストグラム・カウントの全てのヒストグラム・ビンにわたる和に、１つのサンプルがブランチｂおよびビンｊから除去されたときのジニ利得のプラグイン推定値からジニ利得の経験的平均を減算した差の二乗を乗算した結果を乗算した値に等しいと表現することができる。
【００５６】
[0055]  これより、オプション・セレクターが、ゲームを制御するための機械学習システムにおける判断ツリー訓練のための判断ツリー分割機能セレクターとして使用される一例について説明する。判断ツリーは、機械学習タスクに依存して、回帰(regression)または分類タスクのいずれかのためにオプション・セレクターを使用して訓練することができる。
【００５７】
[0056]  図５は、コンピューター・ゲームを制御するためのカメラ・ベース制御システムの一例５００を示す。図５は、この図示例では、ボクシング・ゲームをプレーするユーザー５０２を示す。ある例では、カメラ・ベース制御システム５００は、とりわけ、体の姿勢を判定し、人間のターゲットを結び付け、認識し、分析し、追跡し、関連付け、フィードバックを共有し、ジェスチャーを解釈し、および／またはユーザー５０２のような人間のターゲットの諸相に適応するために使用することができる。
【００５８】
[0057]  カメラ・ベース制御システム５００は、計算デバイス５０４を含む。計算デバイス５０４は、汎用コンピューター、ゲーミング・システムまたはコンソール、あるいは専用画像処理デバイスとすることができる。計算デバイス５０４は、ゲーミング・アプリケーションおよび／またはゲーミング以外のアプリケーションのようなアプリケーションを実行するために計算デバイス５０４を使用することができるように、ハードウェア・コンポーネントおよび／またはソフトウェア・コンポーネントを含むことができる。計算デバイス５０４の構造については、以下で図１１を参照しながら説明する。
【００５９】
[0058]  カメラ・ベース制御システム５００は、更に、キャプチャー・デバイス５０６も含む。キャプチャー・デバイス５０６は、例えば、画像センサーまたは検出器とすることができ、以下で更に詳しく説明するように、ゲームまたはアプリケーション内において１つ以上の制御またはアクションを実行するために１人以上のユーザーによって行われるジェスチャーをキャプチャーし、分析し、処理し、追跡することができるように、１人以上のユーザー（ユーザー５０２等）を視覚的に監視するために使用することができる。
【００６０】
[0059]  カメラ・ベース制御システム５００は、更に、計算デバイス５０４に接続されたディスプレイ・デバイス５０８も含むことができる。計算デバイスは、ゲームまたはアプリケーションの映像（および、任意に音声）をユーザー５０２に供給することができる、テレビジョン、モニター、高品位テレビジョン（ＨＤＴＶ）等とすることができる。
【００６１】
[0060]  動作において、計算デバイス５０４によって実行されるアプリケーションに作用させるために使用することができる制御手段として、ユーザー５０２の関節位置、動き、およびサイズを計算デバイス５０４（および／またはキャプチャー・デバイス５０６）によって解釈することができるように、キャプチャー・デバイス５０６を使用してユーザー５０２を追跡することができる。その結果、ユーザー５０２は実行されているゲームまたはアプリケーションを制御するために彼または彼女の体を動かすことができる。
【００６２】
[0061]  図５の図示例では、計算デバイス５０４において実行しているアプリケーションは、ユーザー５０２がプレーしているボクシング・ゲームである。この例では、計算デバイス５０４は、ボクシングの対戦相手の視覚表現をユーザー５０２に供給するために、ディスプレイ・デバイス５０８を制御する。また、計算デバイス５０４は、ユーザー５０２が彼または彼女の動きで制御することができるユーザー・アバターの視覚表現を供給するためにも、ディスプレイ・デバイス５０８を制御する。例えば、ユーザー５０２は、ユーザー・アバターにゲーム空間においてパンチを打たせるために、物理空間においてパンチを打つことができる。このように、この例によれば、カメラ・ベース制御システム５００の計算デバイス５０４およびキャプチャー・デバイス５０６は、パンチがゲーム空間におけるユーザー・アバターのゲーム制御として解釈できるように、物理空間におけるユーザー５０２のパンチを認識し分析するために使用することができる。
【００６３】
[0062]  更に、ある動きは、アバターを制御する以外のアクションに対応する制御として解釈することができる。例えば、ユーザーは、入る、出る、システムをオンまたはオフに切り替える、一時停止する、ゲームを保存する、レベル、プロファイル、またはメニューを選択する、高得点を見る、友人と通信する等のために、動きを使用することができる。加えて、ユーザー５０２の動きは、ゲーム以外のアプリケーションと相互作用するために、例えば、テキストを入力する、アイコンまたはメニュー項目を選択する、メディア再生を制御する、ウェブサイトをブラウズする、あるいはオペレーティング・システムまたはアプリケーションの任意の他の制御可能な形態(aspect)を動作させるために、任意の適した態様で使用し分析することができる。
【００６４】
[0063]  これより図６を参照すると、図５のカメラ・ベース制御システム５００において使用することができるキャプチャー・デバイス５０６の模式図が示されている。図６の例では、キャプチャー・デバイス５０６は、深度情報を有するビデオ画像をキャプチャーするように構成される。このようなキャプチャー・デバイスを深度カメラと呼ぶことができる。深度情報は、深度値、即ち、深度画像の各画像エレメントに関連する値を含む深度画像の形態とすることができる。深度値は、深度カメラとその画像エレメントにおいて突き止められた品目または物体との間の距離に関係する。
【００６５】
[0064]  深度情報は、例えば、飛行時間、構造化光、ステレオ画像等を含む任意の適した技法を使用して得ることができる。ある例では、キャプチャー・デバイス５０６は深度情報を「Ｚレイヤ」、即ち、深度カメラからその見通し線に沿って延びるＺ−軸に垂直であることができるレイヤに編成することができる。
【００６６】
[0065]  図６に示すように、キャプチャー・デバイス５０６は少なくとも１つの撮像センサー６００を含む。図６に示す例では、撮像センサー６００は、場面の深度画像をキャプチャーするように配置された深度カメラ６０２を含む。キャプチャーされた深度画像は、キャプチャーされた場面の二次元（２−Ｄ）エリアを含むことができ、この２−Ｄエリアにおける各画像エレメントは、深度カメラ６０２からキャプチャーされた場面内における物体の長さまたは距離というような、深度値を表す。
【００６７】
[0066]  また、キャプチャー・デバイスは、深度カメラ６０２によって深度情報を確認できるようなやり方で、場面を照明するように配置された発光器６０４も含むことができる。例えば、深度カメラ６０２が赤外線（ＩＲ）飛行時間カメラである場合、発光器６０４はＩＲ光を場面に放出し、深度カメラ６０２は、場面における１つ以上のターゲットまたは物体の表面からの後方散乱光を検出するように配置される。ある例では、パルス状の赤外線光を発光器６０４から放出することができ、出立光パルスと対応する入来光パルスとの間の時間を深度カメラによって検出し、測定して、キャプチャー・デバイス５０６から場面内におけるターゲットまたは物体上のある位置までの物理距離を判定するために使用することができる。加えて、ある例では、発光器６０４からの出立光波の位相を、深度カメラ６０２における入来光波の位相と比較して、位相のずれを判定することができる。次いで、この位相のずれは、キャプチャー・デバイス５０６からターゲットまたは物体上のある位置までの物理距離を判定するために使用することができる。更に他の例では、飛行時間分析を使用して、経時的な光の反射ビームの強度を、例えば、光パルス・シャッター撮像(shuttered light pulse imaging)を含む種々の技法によって分析することによって、キャプチャー・デバイス５０６からターゲットまたは物体上のある位置までの物理距離を間接的に判定することもできる。
【００６８】
[0067]  他の例では、キャプチャー・デバイス５０６は構造化光を使用して深度情報をキャプチャーすることができる。このような技法では、発光器６０４を使用して、パターン化光（例えば、格子パターンまたは縞パターンのような既知のパターンとして表示される光）を場面に投射することができる。場面における１つ以上のターゲットまたは物体の表面に衝突すると、パターンは変形される。パターンのこのような変形を深度カメラ６０２によってキャプチャーし、次いで分析して、キャプチャー・デバイス５０６から場面におけるターゲットまたは物体上のある位置までの物理距離を判定することができる。
【００６９】
[0068]  他の例では、深度カメラ６０２は、２つ以上の物理的に離別されたカメラという形態を取ることもでき、視覚的立体視データーが得られるように、異なる角度から１つの場面を映像化し(view)、このデーターを解明すると深度情報を生成することができる。この場合、発光器６０４は、場面を照明するために使用することができ、または省略することもできる。
【００７０】
[0069]  ある例では、深度カメラ６０２に加えて、キャプチャー・デバイス５０６５０６は、通常のビデオ・カメラも含むことができる。これをＲＧＢカメラ６０６と呼ぶ。ＲＧＢカメラ６０６は、可視光周波数において場面の画像のシーケンスをキャプチャーするように構成され、したがって深度画像を拡張するために使用することができる画像を供給することができる。代替例では、ＲＧＢカメラ６０６を深度カメラ６０２の代わりに使用することができる。
【００７１】
[0070]  更に、図６に示すキャプチャー・デバイス５０６は、少なくとも１つのプロセッサー６０８を含む。プロセッサー６０８は、撮像センサー６００（即ち、図６の例では深度カメラ６０２およびＲＧＢカメラ６０６）および発光器６０４と通信可能である。プロセッサー６０８は、汎用マイクロプロセッサー、または特殊信号／画像プロセッサーとすることができる。プロセッサー６０８は、深度画像および／またはＲＧＢ画像をキャプチャーするために、撮像センサー６００および発光器６０４を制御する命令を実行するように構成される。また、プロセッサー６０８は、任意に、これらの画像に対して処理を実行するように構成することもできる。これについては、以下で更に詳しく概説する。
【００７２】
[0071]  ある例では、撮像センサーは、シルエット画像を供給するために使用される。シルエット画像とは、撮像センサーによってキャプチャーされた深度および／またはＲＧＢ画像の前景および背景領域を識別する二次元二進画像である。シルエット画像は、キャプチャーされた深度およびＲＧＢ画像から、撮像センサーおよび／またはプロセッサー６０８において形成することができる。シルエット画像は、本明細書において説明する方法を使用して、二次元の関節位置を予測するために処理することもできる。この場合、シルエット画像は、固定深度に平面化された(flatten)深度画像と考えることができる。キャプチャーされた深度画像は、以下で更に詳しく説明するように、三次元の関節位置を予測するために使用することもできる。
【００７３】
[0072]  更に、図６に示すキャプチャー・デバイス５０６は、プロセッサー６０８による実行のための命令、深度カメラ６０２またはＲＧＢカメラ６０６によってキャプチャーされた画像または画像のフレーム、あるいは任意の他の適した情報、画像等を格納するように構成されたメモリー６１０も含む。ある例では、メモリー６１０は、ランダム・アクセス・メモリー（ＲＡＭ）、リード・オンリー・メモリー（ＲＯＭ）、キャッシュ、フラッシュ・メモリー、ハード・ディスク、または任意の他の適した記憶コンポーネントを含むことができる。メモリー６１０は、プロセッサー６０８と通信可能な別のコンポーネントであること、またはプロセッサー６０８に統合することができる。
【００７４】
[0073]  また、キャプチャー・デバイス５０６は、プロセッサー６０８と通信可能である出力インターフェース６１２も含み、通信リンクを介してデーターを計算デバイス６０４に供給するように構成される。通信リンクは、例えば、有線接続（ＵＳＢ、Ｆｉｒｅｗｉｒｅ、Ｅｔｈｅｒｎｅｔ（登録商標）、または同様のもの）および／またはワイヤレス接続（ＷｉＦｉ、Ｂｌｕｅｔｏｏｔｈ（登録商標）、または同様のもの）とすることができる。他の例では、出力インターフェース６１２は、１つ以上の通信ネットワーク（インターネット等）とインターフェースし、これらのネットワークを介してデーターを計算デバイス５０４に供給することができる。
【００７５】
[0074]  図７は、１人以上の人間または動物、あるいは人間または動物の一部を描画する入力深度画像７０８において、関節位置を予測する流れ図である。関節位置を指定した深度画像とすることができる複数の訓練画像７００が入手可能である。これらの画像は、二次元、三次元、またはそれよりも高次元の画像、またはそのような画像のシーケンスであってもよい。本明細書において説明する例は、深度画像を使用するが、カラー画像、医療画像、または他のタイプの画像にも応用可能である。
【００７６】
[0075]  ランダム判断フォーレストは、訓練画像７００の画像エレメントが、これらの画像において描画された１つ以上の関節の位置に投票することを可能にするように訓練される（７０２）。この訓練プロセスは、精度を維持しつつ訓練を高速化するために、図１を参照して先に説明したツリー分割機能セレクターを使用することを含むことができる。この訓練プロセスの結果、ツリー分割機能セレクターを使用して訓練されたランダム判断フォーレスト７０４が得られる。
【００７７】
[0076]  画像エレメントは、画素、画素のグループ、ボクセル、ボクセルのグループ、ブロブ(blob)、パッチ(patch)、または画像の他の成分であってもよい。ランダム判断フォーレストは、各々ルート・ノードを有する１つ以上の判断ツリーと、複数の分割ノードと、複数のリーフ・ノードとを含む。１つの画像の画像エレメントは、各分割ノードにおいて判断が行われるプロセスにおいて押し込まれ、ルートからリーフ・ノードまで、ランダム判断フォーレストのツリーを通過することができる。判断は、画像エレメントの特性、および分割ノードにおいてパラメーターによって指定される空間オフセットだけ変位された検査画像エレメントの特性にしたがって行われる。判断プロセスは、分割機能を使用して表現することができる。分割ノードにおいて、画像エレメントは、判断の結果にしたがって選択されたブランチを下り、ツリーの次のレベルに進む。ランダム判断フォーレストは、以下で更に詳しく説明するように、回帰または分類を使用することができる。訓練の間、パラメーター値（特徴とも呼ばれる）は、分割ノードにおける使用のために学習され、データーはリーフ・ノードに蓄積される。パラメーターを学習するプロセスは、分割ノードにおける使用のために分割機能を選択することを含む。図１を参照して説明したように、そして図３および図４のプロセスを使用して、この選択プロセスのために、オプション・セレクターを使用することもできる。
【００７８】
[0077]  関節位置投票は、訓練の間、リーフ・ノードに蓄積することができる。間接位置投票は、投票を行った画像エレメントに対して関節があると予測される画像位置（または領域）である。関節位置投票は、任意の適したやり方で指定されればよい。例えば、投票を行った画像エレメントからの予測関節位置の相対的距離および方向を表現するベクトル。ベクトルを使用するのは必須ではなく、他のフォーマットを使用してもよい。
【００７９】
[0078]  訓練の間リーフ・ノードに全ての関節位置投票を格納すると、実際の用途には大量の訓練データーが通例使用されるので、非常にメモリー集約的になる可能性がある。ある実施形態では、投票が簡潔に格納できるようにするために、投票が集計される。以下で更に詳しく説明するように、種々の異なる集計プロセスを使用することができる。
【００８０】
[0079]  検査時に、以前に見られていない深度画像７０８がシステムに入力され、関節位置を予測させる。これは、予測関節位置７０１を得るために、訓練されたランダム判断フォーレスト７０６に加えられる(apply)。入力深度画像７０８の各画像エレメントは、訓練されたランダム判断フォーレストの各ツリー、およびリーフから得られた関節位置投票を通って送ることができる。このように、各画像エレメントを、学習された空間オフセットだけ変位された検査画像エレメントと比較することによって、投票を行うことができる。各画像エレメントは、関節毎に複数の投票を行うことができる。これらの投票は、予測関節位置７１０を与えるために、種々の異なる集計方法にしたがって、集計することができる。したがって、検査時間プロセスは、入力深度画像を訓練されたランダム判断フォーレストに適用して直接予測関節位置を得る一段階プロセスである。この一段階プロセスは、予測された体部分のような、中間結果を伴わない。この一段階プロセスは、リアル・タイムにそして高い品質結果で、結果を与えるために高速かつ効果的なやり方で実行することができる。
【００８１】
[0080]  図８は、画像において関節位置を識別するために判断フォーレストを訓練するプロセスのフローチャートである。また、これは、１つの画像の画像エレメントから関節位置投票を生成すると考えることもできる。判断フォーレストは、１組の訓練画像を使用して訓練される。この１組の訓練画像は、各々、少なくとも１人の人間または動物、あるいは人間または動物の体の一部を示す、複数の画像を含む。訓練画像において描画された体または体部分は、種々の異なる姿勢（着座または起立等）になる。訓練画像における関節位置が指定される。したがって、１組の訓練画像(training set)はグラウンドトルース・データーベースを形成する。
【００８２】
[0081]  一例では、体姿勢の多くの異なる例に対して深度画像をキャプチャーするのではなく、１組の訓練画像は合成コンピューター生成画像を含むことができる。このような合成画像は、異なる物体と相互作用する異なる姿勢の人間または動物の体（あるいは人間または動物の体の一部）を現実的にモデル化し、任意の角度または位置から見られるように生成することができる。これらは、実際の深度画像よりも遙かに素早く生成することができ、より広い多様な訓練画像を供給することができる。
【００８３】
[0082]  図８を参照すると、判断ツリーを訓練するために、前述の１組の訓練画像を最初に受ける（８００）。ランダム判断フォーレストにおいて使用する判断ツリーの数を選択する（８０２）。ランダム判断フォーレストは、決定論的判断ツリーの集合体である。判断ツリーは、分類または回帰アルゴリズムにおいて使用することができるが、過剰適合(over-fitting)、即ち、乏しい一般化という問題が生ずる可能性がある。しかしながら、多くのランダムに訓練された判断ツリーの集合（ランダム・フォーレスト）では、改良された一般化が得られる。訓練プロセスの間、ツリーの数は固定される。
【００８４】
[0083]  ランダム判断フォーレストの一例を図９に示す。図９の例示した判断フォーレストは、３本の判断ツリー、即ち、第１ツリー９００、第２ツリー９０２、および第３ツリー９０４を含む。各判断ツリーは、ルート・ノード（例えば、第１判断ツリー９００のルート・ノード９０６）、分割ノードと呼ばれる複数の内部ノード（例えば、第１判断ツリー９００の分割ノード９０８）、および複数のリーフ・ノード（例えば、第１判断ツリー９００のリーフ・ノード９１０）を含む。
【００８５】
[0084]  動作において、各ツリーの各ルートおよび分割ノードは、入力データーに対して二進検査を実行し、その結果に基づいて、データーを左または右の子ノードに導く。リーフ・ノードは何のアクションも実行せず、これらは蓄積された関節位置投票（および任意に他の情報）を格納する。例えば、蓄積された関節位置投票を表す確率分布を格納することができる。ある例では、リーフ・ノードは、任意に、体部分にわたる確率分布のような他の情報を格納する。この場合、フォーレストは、関節位置を予測するための回帰フォーレストとして、そして表面体部分を予測するための分類フォーレストの双方として動作することができる。
【００８６】
[0085]  分割ノードの各々によって使用されるパラメーターが選択されるやり方、およびどのようにリーフ・ノード確率を計算できるかについて、これより説明する。判断フォーレストから判断ツリーを選択し（８０４）（例えば、第１判断ツリー８００）、ルート・ノード８０６を選択する（８０６）。次に、訓練画像の各々からの画像エレメントの少なくとも部分集合を選択する（８０８）。例えば、前景領域における画像エレメントが選択されるように、画像をセグメント化することができる。各訓練画像から選択された各画像エレメントは、複数の既知の関節位置と関連付けられる。例えば、胴体における画像エレメントは、左臀部の既知の関節位置、および右臀部の既知の関節位置と関連付けることができる。他の例では、胴体における画像エレメントが、画像における全ての既知の関節位置と関連付けられてもよい。
【００８７】
[0086]  次いで、ランダムな１組の検査パラメーター（検査と併せて、ランダムな１組の分割機能を形成する）を、ルート・ノードにおいて実行される二進検査による使用のために、候補特徴として、生成する（８１０）。一例では、二進検査は、パラメーターｙと共に画像エレメントｘに適用される機能であり、この機能の出力が閾値と比較される。この検査の結果が閾値の間の範囲内にある場合、二進検査の結果は真となる。それ以外の場合、二進検査の結果は偽となる。他の例では、これらの閾値の内１つだけを使用し、結果が閾値よりも大きいときに（または代わりに小さいときに）二進検査の結果が真となるようにしてもよい。ここで説明した例では、パラメーターは画像の特徴を定めることができる。
【００８８】
[0087]  パラメーターを生成するプロセスは、二次元または三次元変位の形態でランダム空間オフセット値を生成することを含むことができる。次いで、画像における対象の画像エレメントｘから空間オフセットだけ変位された検査画像エレメントに対する深度値を観察することによって、分割機能の結果を計算する。空間オフセットは、任意に、対象の画像エレメントの深度分の１でスケーリングすることによって、深度不変(depth invariant)にされる。閾値は、検査画像エレメントが関節位置にあるか否か判断するために使用することができる。
【００８９】
[0088]  ルート・ノードまたは分割ノードにおいて実行された二進（分割）検査の結果は、どの子ノードに画像エレメントを渡すか決定する。例えば、二進検査の結果が真である場合、画像エレメントは第１子ノードに渡され、一方結果が偽である場合、画像エレメントは第２子ノードに渡される。
【００９０】
[0089]  生成されたランダムな１組の検査パラメーターは、分割機能パラメーターおよび閾値に対して複数のランダム値を含む。ランダム性を判断ツリーに注入するために、各分割ノードの機能パラメーターは、全ての可能なパラメーターからランダムにサンプリングされた部分集合のみにわたって最適化される。これは、ランダム性をツリーに注入する効果的で簡単な方法であり、一般化を高める。
【００９１】
[0090]  ランダムに生成された分割機能の内どれを所与の分割ノードにおいて使用するか選択するために、ツリー分割機能セレクターを使用することができる（８１４）。これは、訓練プロセスを高速化する。何故なら、これらの検査パラメーターのあらゆる組み合わせを１組の訓練画像における各画像エレメントに適用することはもはや必要でないからである。これは、図３および図４を参照して先に説明したように、計算された信頼区間にしたがって、レーシング・ロジックは分割機能オプションを省略することができるからである。このように、誤差許容範囲値を使用して、指定された量に精度を維持しつつ、訓練時間を大幅に短縮することができる。
【００９２】
[0091]  採点ロジックは、点数を計算する。点数は、判断基準(criteria)または目的(objective)とも呼ばれる。一例では、計算された点数は、情報利得（相対エントロピーとしても知られる）を含む。他の例では、計算された点数はジニ利得を含む。点数を最適化する（情報利得を最大化する等）分割機能を選択し（８１４）、今後使用するために、現在のノードに格納する。情報利得の代わりに、分散、または他の有界差統計というような、他の判断基準を使用することができる。
【００９３】
[0092]  次いで、計算された点数の値が閾値未満（または閾値よりも大きい）か否か判定する（８１６）。計算された点数の値が閾値未満である場合、これは、ツリーをこれ以上拡張しても大した利益は得られないことを示す。これは、非対称的なツリーを生じ、それ以上のノードに利益がない場合、当然成長を停止する。このような場合、現在のノードをリーフ・ノードとして設定する（８１８）。同様に、ツリーの現在の深度を判定する（即ち、ルート・ノードと現在のノードとの間にどの位のレベルのノードがあるか）。これが所定の最大値よりも大きい場合、現在のノードをリーフ・ノードとして設定する（８１８）。各リーフ・ノードは、以下で説明するように、訓練プロセスの間にそのリーフ・ノードに蓄積した関節位置投票を有する。
【００９４】
[0093]  また、他の停止判断基準を、これら既に述べたものと組み合わせて、使用することも可能である。例えば、リーフに到達した画像エレメント例の数を評価するためである。例の数が少なすぎる場合（例えば、閾値と比較して）、本プロセスは、過剰適合を回避するために、停止するように構成してもよい。しかしながら、この停止判断基準を使用することは必須ではない。
【００９５】
[0094]  計算された判断基準の値が閾値以上であり、ツリー深度が最大値未満である場合、現在のノードを分割ノードとして設定する（８２０）。現在のノードが分割ノードであるので、これは子ノードを有し、したがって、本プロセスはこれら子ノードの訓練に移る。各子ノードは、現在のノードにおいて訓練画像エレメントの部分集合を使用して訓練される。子ノードに送られる画像エレメントの部分集合は、判断基準を最適化したパラメーターを使用して決定される。これらのパラメーターは、二進検査において使用され、この二進検査は、現在のノードにおいて全ての画像エレメントに対して実行される（８２２）。二進検査で合格した画像エレメントは、第１子ノードに送られる第１部分集合を形成し、二進検査で失格した画像エレメントは、第２子ノードに送られる第２部分集合を形成する。
【００９６】
[0095]  子ノードの各々に対して、図８のブロック８１０から８２２において概要を説明したプロセスを、それぞれの子ノードに導かれた画像エレメントの部分集合のために繰り返し実行する（８２４）。言い換えると、子ノード毎に、新たなランダム検査パラメーターを生成し（８１０）、画像エレメントのそれぞれの部分集合に適用し（８１２）、判断基準を最適化するパラメーターを選択し（８１４）、ノードのタイプ（分割またはリーフ）を判断する（８１６）。リーフ・ノードである場合、現在のブランチの繰り返しは中止する。分割ノードである場合、画像エレメントの更に他の部分集合を決定するために二進検査を実行し（８２２）、繰り返しの他のブランチが開始する。したがって、このプロセスはツリー全域にわたって繰り返し移動し、リーフ・ノードが各ブランチに到達するまで、各ノードを訓練する。リーフ・ノードに到達すると、全てのブランチにおけるノードが訓練され終えるまで、プロセスは待機する（８２６）。尚、他の例では、繰り返しに代わりの技法を使用して同じ機能を達成することができる。
【００９７】
[0096]  一旦各分割ノードにおいて判断基準を最適化する、二進検査に対するパラメーターを決定するためにツリーにおける全てのノードを訓練し、各ブランチを終了するためにリーフ・ノードを選択したなら、ツリーのリーフ・ノードにおいて投票を蓄積する（８２８）ことができる。これは、訓練段階であり、したがって、所与のリーフ・ノードに到達した特定の画像エレメントは、グラウンドトルース訓練データーから分かる相対関節位置投票を指定したことになる。種々の異なる方法を使用して、蓄積された投票の表現を格納することができる（８３０）。任意に、低いメモリー・フットプリントを維持するために、蓄積および格納される投票を選ぶのにサンプリングを使用してもよい。例えば、リソーバ・サンプリング(reservoir sampling)を使用することにより、固定された最大サイズの投票のサンプルを取り込むことができる。選択は、ランダムでも、任意の他のやり方でもよい。
【００９８】
[0097]  一旦蓄積された投票が格納されたなら、判断フォーレストの中に未だ他のツリーがあるか否か判定を行う（８３２）。ある場合、判断フォーレストにおいて次のツリーを選択し、本プロセスを繰り返す。フォーレストにおける全てのツリーが訓練され、他に残っていない場合、訓練プロセスは完了し、本プロセスは終了する（８３４）。
【００９９】
[0098]  したがって、訓練プロセスの結果、合成訓練画像または経験的訓練画像を使用して、１つ以上の判断ツリーが訓練される。各ツリーは、最適化された検査パラメーターを格納する複数の分割ノードと、関連する関節位置投票または集計した関節位置投票の表現を格納するリーフ・ノードとを含む。各ノードにおいて使用される制限された部分集合からパラメーターをランダムに生成するために、フォーレストのツリーは互いに別個になる（即ち、異なる）。
【０１００】
[0099]  訓練プロセスは、実際の深度画像において関節位置を識別するために、訓練された予測システムを使用する前に実行することもできる。判断フォーレストおよび最適化検査パラメーターは、後の時点で深度画像における関節位置を識別するときに使用するために、記憶デバイスに格納することができる。
【０１０１】
[00100]  図１０は、以上で説明したように訓練された判断フォーレストを使用して、以前に見られていない深度画像において関節位置を予測するプロセスのフローチャートを示す。最初に、見られていない深度画像を受ける（１０００）。関節位置が既に指定されている訓練画像から区別するために、画像を「見られていない」と呼ぶ。尚、例えば、前景領域を識別する範囲で、見られていない深度画像を前処理することができ、これによって、判断フォーレストによって処理される画像エレメントの数が減少することを注記しておく。しかしながら、前景領域を識別するための前処理は必須ではない。ある例では、見られていない深度画像は、先に説明したような、深度画像が事実上固定深度に平面化されたシルエット画像である。
【０１０２】
[00101]  見られていない画像から画像エレメントを選択する（１００２）。また、判断フォーレストから、訓練された判断ツリーも選択する（１００４）。選択された画像エレメントが、ノードにおいて訓練されたパラメーターに対して検査されるように、これを選択された判断ツリーに押し込み（１００６）、次いで検査の結果に依存して該当する子に渡し、画像エレメントがリーフ・ノードに到達するまで、本プロセスを繰り返す。一旦画像エレメントがリーフ・ノードに到達したなら、このリーフ・ノードに関連する蓄積投票（訓練段階から）を、この画像エレメントに対して格納する（１００８）。
【０１０３】
[00102]  フォーレストに未だ他に判断ツリーがあると判断した場合（１０１０）、次ぎに新たな判断ツリーを選択し（１００４）、画像エレメントをこのツリーに押し込み（１００６）、蓄積された投票を格納する（１００８）。フォーレストにおける全ての判断ツリーに対して実行するまで、これを繰り返す。尚、判断フォーレストにおける複数のツリーに画像エレメントを押し込むプロセスは、図１０に示すシーケンスの代わりに、並列に実行することもできることを注記しておく。
【０１０４】
[00103]  次いで、見られていない深度画像には他にも分析されていない画像エレメントがあるか否か判定し（１０１２）、ある場合、他の画像エレメントを選択し、本プロセスを繰り返す。一旦見られていない画像における全ての画像エレメントを分析したなら、次に、全ての画像エレメントに対して関節位置投票を得る。
【０１０５】
[00104]  判断フォーレストにおいて画像エレメントがツリーに押し込まれるに連れて、投票が蓄積する。この蓄積された投票を集計し（１０１４）、画像エレメント毎に総合的投票集計を形成する。任意に、投票のサンプルを集計のために取り出してもよい。例えば、Ｎ個の投票を無差別に選択してもよく、または上位Ｎ個の加重投票を取り出すことにより、集計プロセスをこれらＮ個の投票のみに適用してもよい。これによって、速度に対して精度の折り合いを付けることが可能になる。
【０１０６】
[00105]  次いで、少なくとも１組の関節位置を出力する（１０１６）ことができる。ここで、関節位置に信頼度を重み付けすることもできる。これは、あらゆる後続の追跡アルゴリズム（または他のプロセス）が、提案が良いか否か評価するときに役立つ。例えば、不確実性がある場合には、１組よりも多い関節位置を出力することもできる。また、１組の関節位置が、１つ以上の関節に対してヌルを含んでもよい。例えば、関節位置が撮像センサーの視野の外側にある場合、および／または関節位置に投票する画像エレメントがない場合である。
【０１０７】
[00106]  図１１は、任意の形態の計算デバイスおよび／または電子デバイスとして実現することができ、機械学習システムの実施形態を実現できる、計算ベース・デバイスの一例５０４の種々のコンポーネントを示す。この例では、計算ベース・デバイス５０４は、例えば、人間の体の動きを使用してゲームを制御するために、深度画像から関節位置予測（または他のタスク）のためにランダム判断ツリーを訓練するように構成される。しかしながら、これは必須ではない。複数の不確実なオプションから１つのオプションを選択することを伴う他の機械学習用途も提供することができる。
【０１０８】
[00107]  計算ベース・デバイス５０４は、１つ以上のプロセッサー１１００を含む。プロセッサー１１００は、マイクロプロセッサー、コントローラー、あるいは、例えば、関節位置予測または他のタスクのためにランダム判断フォーレストを訓練するように機械学習システムを動作させるためにデバイスの動作を制御するコンピューター実行可能命令を処理する任意の他の適したタイプのプロセッサーでもよい。ある例では、例えば、チップ上システム・アーキテクチャが使用される場合、プロセッサー１１００は、図１、図３、図４、図７、図８、および図１０の内任意のものの方法の一部をハードウェア（ソフトウェアやファームウェアではなく）で実現する、１つ以上の固定機能ブロック（アクセレレーターとも呼ぶ）を含むこともできる。アプリケーション・ソフトウェア１１１６をデバイス上で実行することを可能にするために、オペレーティング・システム１１１４または任意の他の適したプラットフォーム・ソフトウェアを含むプラットフォーム・ソフトウェアを、計算ベース・デバイスに設けることもできる。ツリー訓練ロジック１１１８は、図７および図８のプロセスの少なくとも一部を使用して１つ以上のランダム判断ツリーを訓練するために、設けることができる。図１のオプション・セレクター、モデル・セレクター、特徴セレクター、およびツリー分割機能セレクターの内任意のものでよいオプション・セレクター１１２４も設けることができる。データー・ストア１１２２は、誤差許容範囲値、訓練されたランダム判断ツリー、訓練例、選択されたオプション、および他のデーターを格納することができる。計算ベース・デバイスが、深度画像または他の画像から関節位置検出を実行するように構成される場合、関節位置予測ロジック１１２０が設けられる。関節位置予測ロジック１１２０は、図１０の方法の少なくとも一部を実現することができる。
【０１０９】
[00108]  計算ベース・デバイス５０４によってアクセス可能な任意のコンピューター読み取り可能媒体を使用して、コンピューター実行可能命令を設けることができる。コンピューター読み取り可能媒体は、例えば、メモリー１１１２のようなコンピューター記憶媒体、および通信媒体を含むことができる。メモリー１１１２のようなコンピューター記憶媒体は、揮発性および不揮発性の、リムーバブルおよび非リムーバブル媒体を含み、コンピューター読み取り可能命令、データー構造、プログラム・モジュール、または他のデーターというような情報の格納のための任意の方法または技術で実現される。コンピューター記憶媒体は、ＲＡＭ、ＲＯＭ、ＥＰＲＯＭ、ＥＥＰＲＯＭ、フラッシュ・メモリーまたは他のメモリー技術、ＣＤ−ＲＯＭ、ディジタル・バーサタイル・ディスク（ＤＶＤ）または他の光ストレージ、磁気カセット、磁気テープ、磁気ディスク記憶デバイスまたは他の磁気記憶デバイス、あるいは計算デバイスによるアクセスのために情報を格納するために使用することができる任意の他の非伝送媒体(non-transmission medium)を含むが、これらに限定されるのではない。対照的に、通信媒体は、搬送波のような変調データー信号、または他の移送メカニズムに、コンピューター読み取り可能命令、データー構造、プログラム・モジュール、または他のデーターを具体化することができる。本明細書において定められるように、コンピューター記憶媒体は通信媒体を含まない。したがって、コンピューター記憶媒体は、それ自体が伝搬信号であると解釈してはならない。伝搬信号がコンピューター記憶媒体内に存在することもあるが、伝搬信号自体はコンピューター記憶媒体の例ではない。コンピューター記憶媒体（メモリー１１１２）は計算ベース・デバイス５０４内部に示されているが、ストレージは分散されてもよく、または離れて配置されてもよく、ネットワークまたは他の通信リンクを介してアクセスされてもよい（例えば、通信インターフェース１１１３を使用して）ことは認められよう。
【０１１０】
[00109]  また、計算ベース・デバイス５０４は、入力インターフェース１１０２、および表示情報をディスプレイ・デバイス５０８に出力するように構成された出力インターフェース１１１０も含む。ディスプレイ・デバイス５０８は、計算ベース・デバイス５０４と離れた形態でも、一体でもよい。表示情報が、グラフィカル・ユーザー・インターフェースを設けることもできる。また、入力インターフェース１１０２は、ユーザー入力デバイス（例えば、マウス１１０８、キーボード１１０６、ゲーム・コントローラー１１０４、カメラ５０６、マイクロフォン、または他のセンサー）のような１つ以上のデバイスからの入力を受けて処理するように構成される。ある例では、入力インターフェース１１０２が、音声入力、ユーザーのジェスチャー、または他のユーザーの行動を検出することもでき、自然ユーザー・インターフェース（ＮＵＩ）を設けることもできる。このユーザー入力は、ゲームまたは他のアプリケーションを制御するために使用することもできる。一実施形態では、ディスプレイ・デバイス５０８がタッチ感応ディスプレイ・デバイスである場合、ユーザー入力デバイスとしても作用することができる。また、出力インターフェース１１１０は、ディスプレイ・デバイス以外のデバイス、例えば、ローカルに接続された印刷デバイスにもデーターを出力することができる。
【０１１１】
[00110]  入力インターフェース１１０２、出力インターフェース１１１０、および任意にユーザー入力デバイス（ゲーム・コントローラー１１０４、キーボード１１０６、マウス１１０８、キャプチャー・デバイス５０６）は、ＮＵＩ技術を含むこともできる。ＮＵＩ技術は、マウス、キーボード、リモコン等のような入力デバイスによって強いられる人工的な制約から解放され、自然なやり方でユーザーが計算ベース・デバイスと対話処理することを可能にする。提供することができるＮＵＩ技術の例には、音声(voice)および／または発話(speech)認識、タッチおよび／またはスタイラス認識（タッチ感応ディスプレイ）、画面上および画面付近の双方におけるジェスチャー認識、エア・ジェスチャー、頭部および眼球追跡、音声および発話、視覚(vision)、タッチ、ジェスチャー、および機械インテリジェンスに頼るものが含まれるが、これらに限定されるのではない。使用することができるＮＵＩ技術の他の例には、意図および目標理解システム、深度カメラ（立体視カメラ・システム、赤外線カメラ・システム、ｒｇｂカメラ・システム、およびこれらの組み合わせ等）を使用する動きジェスチャー検出システム、加速度計／ジャイロスコープを使用する動きジェスチャー検出、顔認識、３Ｄディスプレイ、頭部、眼球、および凝視追跡、没入拡張現実、ならびに電界検知電極を使用して脳の活動を検知する仮想現実システムおよび技術（ＥＥＧおよび関連方法）が含まれる。
【０１１２】
[00111]  「コンピューター」または「計算ベース・デバイス」という用語は、本明細書では、命令を実行することができるように処理能力を有する任意のデバイスを指すために使用される。当業者は、このような処理能力は多くの異なるデバイスに組み込まれ、したがって、「コンピューター」および「計算ベース・デバイス」という用語は、各々、ＰＣ、サーバー、移動体電話機（スマート・フォンを含む）タブレット・コンピューター、セット・トップ・ボックス、メディア・プレーヤー、ゲーム・コンソール、パーソナル・ディジタル・アシスタント、および多くの他のデバイスを含むことを認めるであろう。
【０１１３】
[00112]  本明細書において説明した方法は、ソフトウェアによって、有形記憶媒体において機械読み取り可能な形態で、例えば、コンピューターにおいてプログラムが実行されるとき、そしてコンピューター・プログラムをコンピューター読み取り可能媒体において具体化することができる場合に、本明細書において説明した方法の内任意のものの全てのステップを実行するように構成されたコンピューター・プログラム・コード手段を含むコンピューター・プログラムという形態で実行することができる。有形記憶媒体の例には、ディスク、サム・ドライブ、メモリー等のようなコンピューター読み取り可能媒体を含むコンピューター記憶デバイスを含み、伝搬信号を含まない。伝搬信号は、有形記憶媒体内に存在することができるが、伝搬信号自体は、有形記憶媒体の例ではない。ソフトウェアは、以上の方法ステップが任意の適した順序で、または同時に実行できるように、並列プロセッサーまたは直列プロセッサーにおける実行に適することが可能である。
【０１１４】
[00113]  これは、ソフトウェアが、価値のある、別々に取引可能な商品であり得ることを認める。これは、所望の機能を実行するために、「ダム」(dumb)または標準ハードウェアにおいて実行するソフトウェアまたは制御するソフトウェアを包含することを意図している。また、これは、所望の機能を実行するようにシリコン・チップを設計するために、またはユニバーサル・プログラマブル・チップを構成するために使用されるような、ＨＤＬ（ハードウェア記述言語）ソフトウェアのような、ハードウェアの構成を「記述する」または定めるソフトウェアも包含することを意図している。
【０１１５】
[00114]  当業者は、プログラム命令を格納するために利用される記憶デバイスは、ネットワークを介して分散させることができることを認めよう。例えば、リモート・コンピューターが、以上で説明したプロセスの一例をソフトウェアとして格納することもできる。ローカル・コンピューターまたは端末コンピューターが、このリモート・コンピューターにアクセスし、プログラムを実行するために、このソフトウェアの一部または全部をダウンロードすることもできる。あるいは、ローカル・コンピューターが必要に応じてソフトウェアの一部(pieces)をダウンロードすること、またはローカル端末において一部のソフトウェア命令を実行し、リモート・コンピューター（またはコンピューター・ネットワーク）において一部を実行することもできる。また、当業者は、当業者に知られている従来の技法を利用することによって、ソフトウェア命令の全部または一部を、ＤＳＰ、プログラマブル・ロジック・アレイ等のような専用回路によっても実行できることも認めよう。
【０１１６】
[00115]  本明細書において与えられた範囲またはデバイス値は、いずれも、求められる効果を失うことなく、広げることまたは変更することができる。これは当業者には明白であろう。
【０１１７】
[00116]  以上、本主題について、構造的特徴および／または方法論的アクトに特定な文言で説明したが、添付する特許請求の範囲において定められる主題は、必ずしも以上で説明した特定の特徴やアクトに限定されないことは理解されてしかるべきである。逆に、以上で説明した特定の特徴およびアクトは、特許請求の範囲を実現する形態例として開示されたまでである。
【０１１８】
[00117]  尚、以上で説明した利益および利点は、１つの実施形態に関係するのでもよく、または様々な実施形態に関係するのでもよいことは理解されよう。実施形態は、述べられた問題のいずれかを解決するものにも、全部を解決するものにも限定されず、更に述べられた利益および利点のいずれかを有するものにも、全部を有するものにも限定されない。更に、「１つの」品目に言及するときは、１つ以上のこの品目を指すことも理解されよう。
【０１１９】
[00118]  本明細書において説明した方法のステップは、任意の適した順序で実行すること、またはしかるべきときには同時に実行することもできる。加えて、個々のブロックは、本明細書において説明した主題の主旨や範囲から逸脱することなく、前述した方法のいずれからでも削除されてもよい。以上で説明した例の内任意のものの形態は、求められる効果を失うことなく、更に他の例を形成するために、説明した例の内任意のものの形態と組み合わせることもできる。
【０１２０】
[00119]  「含む」(comprising)という用語は、本明細書では、識別された方法ブロックまたはエレメントを含む(including)ことを意味するために使用されるが、このようなブロックまたはエレメントは、網羅的なリストを含むのではなく、１つの方法または装置が追加のブロックまたはエレメントを含む(contain)こともできる。
【０１２１】
[00120]  尚、以上の説明は一例として与えられたに過ぎないこと、そして種々の変更が当業者によって行われてもよいことは理解されよう。以上の明細書、例、およびデーターは、実施形態例の構造および使用の完全な説明を与える。ある程度の特定性をもって、また１つ以上の個々の実施形態を参照して、種々の実施形態について説明したが、当業者は、本明細書の主旨や範囲から逸脱することなく、開示された実施形態に対して数多くの変更を行うことができる。
【図１】
0006333844.tif 000010
【図２】
0006333844.tif 000011
【図３】
0006333844.tif 000012
【図４】
0006333844.tif 000013
【図５】
0006333844.tif 000014
【図６】
0006333844.tif 000015
【図７】
0006333844.tif 000016
【図８】
0006333844.tif 000017
【図９】
0006333844.tif 000018
【図１０】
0006333844.tif 000019
【図１１】
0006333844.tif 000020