JP6605573B2 - 並列ディシジョン・ツリー・プロセッサー・アーキテクチャ - Google Patents

並列ディシジョン・ツリー・プロセッサー・アーキテクチャ Download PDF

Info

Publication number
JP6605573B2
JP6605573B2 JP2017501068A JP2017501068A JP6605573B2 JP 6605573 B2 JP6605573 B2 JP 6605573B2 JP 2017501068 A JP2017501068 A JP 2017501068A JP 2017501068 A JP2017501068 A JP 2017501068A JP 6605573 B2 JP6605573 B2 JP 6605573B2
Authority
JP
Japan
Prior art keywords
decision tree
decision
feature
node
processors
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2017501068A
Other languages
English (en)
Other versions
JP2017517082A (ja
JP2017517082A5 (ja
Inventor
バーガー,ダグラス・シー
ラルス,ジェームズ・アール
パットナム,アンドリュー
グレイ,ジャン
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Corp
Microsoft Technology Licensing LLC
Original Assignee
Microsoft Corp
Microsoft Technology Licensing LLC
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microsoft Corp, Microsoft Technology Licensing LLC filed Critical Microsoft Corp
Publication of JP2017517082A publication Critical patent/JP2017517082A/ja
Publication of JP2017517082A5 publication Critical patent/JP2017517082A5/ja
Application granted granted Critical
Publication of JP6605573B2 publication Critical patent/JP6605573B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N5/00Computing arrangements using knowledge-based models
    • G06N5/02Knowledge representation; Symbolic representation
    • G06N5/022Knowledge engineering; Knowledge acquisition
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/901Indexing; Data structures therefor; Storage structures
    • G06F16/9027Trees
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/903Querying
    • G06F16/90335Query processing
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N20/00Machine learning
    • G06N20/20Ensemble learning

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computational Linguistics (AREA)
  • Evolutionary Computation (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Artificial Intelligence (AREA)
  • Medical Informatics (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)
  • Multi Processors (AREA)
  • Complex Calculations (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

[0001] ディシジョン・ツリー(decision tree)とは、ディシジョン・ノードと、左および右サブツリーおよび/またはリーフから成る二進検索ツリーである。ディシジョン・ノードは、行われる判断を含む。ブランチ(blanch)は、ディシジョン・ノードから他のディシジョン・ノードまたはリーフ・ノードに至り、ブランチの内の1つの選択は、ディシジョン・ノードにおいて行われる判断に基づく。判断の例には、特徴値および閾値のような2つの値の比較が含まれる。特徴値が閾値以下である場合、左サブツリーが選択される。特徴値が閾値より大きい場合、右サブツリーが選択される。ブランチは次のノードに続き、次のノードがディシジョン・ノードである場合、別の判断が行われ、リーフ・ノードに至るブランチが選択されるまでこのように続く。リーフ・ノードは、ディシジョン・ツリーの出力または終点を表す。出力の例は、ディシジョン・ツリーに対する出力値、またはスコアである。このプロセスは、ディシジョン・ツリーを探索する(walk)と呼ばれる。
[0002] 用途の中でもとりわけ、ディシジョン・ツリーは文書検索において文書を分類する(rank)するために使用される。一例では、ディシジョン・ツリーは、特定の項目(例えば、ウェブ・ページ)の特定の検索クエリーに対する関連性を計算するために使用される。初期の1組の候補検索結果文書が得られ、候補検索結果文書に対する特徴ベクトルが生成される。特徴ベクトルは、候補検索結果文書の種々の側面(例えば、文書統計)を表す。特徴の一例は、検索クエリー単語が候補文書に現れる回数である。各ディシジョン・ツリー・ノードは、閾値と特徴識別子とを含み、候補検索結果文書に対する特徴値を参照するために使用することができる。ディシジョン・ツリーを探索し、このツリー探索(tree-walking)プロセスは最終的にリーフ・ノードに到達し、関連するスコアを出力する。スコア(または1つよりも多いディシジョン・ツリーが使用される場合には多数のスコア)が、候補検索結果の関連性を判断するために使用される。多数の文書の相対的なスコアが、文書を分類するために使用される。
[0003] 検索以外にも、ディシジョン・ツリーには種々の用法がある。ディシジョン・ツリーは、ジェスチャー認識、音声認識、データー・マイニング、およびその他のタイプの計算を実施するために使用される。
[0004] この摘要は、詳細な説明において以下で更に説明する本開示の簡略化した形態を紹介するために設けられている。この摘要は、特許請求する主題の必須の特徴を識別することを意図するのではなく、特許請求する主題の範囲を判断するときの使用を意図するのでもない。
[0005] 本明細書の実施形態は、ディシジョン・ツリー採点(scoring)のハードウェア実施態様を含み、従来のソフトウェアに基づくディシジョン・ツリー採点よりも速いディシジョン・ツリー採点を可能にする。このディシジョン・ツリー採点システムのオンチップ(on-chip)アーキテクチャは、1つ以上の特殊またはプログラマブル・ロジック回路上に並列に実装された複数のディシジョン・ツリー・プロセッサーを含む。オンチップ・アーキテクチャの最上位には、ディシジョン・ツリー・スコアラー(DTS:decision tree scorer)があり、上流側の計算システム・ホストまたは処理システムから特徴ベクトル(例えば、複数組の特徴値)を受け取り、この特徴ベクトルを第1ディシジョン・ツリー・クラスター(DTC)に送り、ディシジョン・ツリー・クラスターからスコアを受け取り、結果をホストまたは他の下流側システムに出力する。階層の次のレベルでは、複数のディシジョン・ツリー・クラスター(DTC)がそれら自体の間で特徴ベクトルを分散し、ディシジョン・ツリー・プロセッサーからのスコアを処理して、近隣のDTCおよびDTSに伝搬する。DTCは、1つ以上のディシジョン・ツリー・プロセッサーと、1つ以上の特徴格納タイル(FST)とを含む。特徴値および閾値圧縮が、ディシジョン・ツリー採点システムに必要な帯域幅およびストレージを低減する。
[0006] 添付図面を参照して詳細な説明を明記する。図面では、参照番号の左側の数字(1つまたは複数)は、その参照番号が最初に現れる図を識別する。異なる図面において同じ参照番号が使用されるときは、同様または同一の項目を示す。
図1は、種々の実施形態にしたがって、1つ以上のハードウェアで実現したディシジョン・ツリー・スコアラーを含むディシジョン・ツリー採点システム例のブロック図である。 図2は、本開示の種々の実施形態によるディシジョン・ツリー・コード化を示す。 図3は、実数線(real number line)上における一意の閾値のリスト例を示す。 図4は、種々の実施形態によるディシジョン・ツリー・スコアラーのアーキテクチャ例を示す。 図5は、種々の実施形態によるディシジョン・ツリー・クラスターのアーキテクチャ例を示す。 図6は、種々の実施形態によるディシジョン・ツリー・プロセッサーのマルチステージ、マルチスレッド、パイプライン型ツリー探索実施態様を示す。 図7は、種々の実施形態にしたがって、ディシジョン・ツリー・ノードを実行するプロセス例を示すフロー・グラフを表す。 図8は、種々の実施形態にしたがって、ディシジョン・ツリー・スコアラーによって複数のディシジョン・ツリーの特徴ベクトルを採点するプロセスを示す。 図9は、種々の実施形態にしたがって、ディシジョン・ツリー・クラスターによって複数のディシジョン・ツリーを採点するプロセスを示す。 図10は、種々の実施形態にしたがって、複数のディシジョン・ツリーの閾値をコード化するプロセスを示す。 図11は、種々の実施形態にしたがって、1組の特徴値をコード化するプロセスを示す。 図12は、本明細書において説明する種々の方法を実行するために使用可能な計算システム例のブロック図である。
全体像
[0019] 本明細書の実施形態は、ディシジョン・ツリー採点(scoring)のハードウェア実施態様を含み、従来のソフトウェアに基づくディシジョン・ツリー採点よりも速いディシジョン・ツリー採点を可能にする。ハードウェアの実施態様は、ディシジョン・ツリー・プログラムを実行する、回路として実装された1つ以上のディシジョン・ツリー・プロセッサーを含む。ディシジョン・ツリー・プログラムとは、ディシジョン・ツリー・プロセッサーによって実行可能なプログラムまたは他のデーターに変換されたディシジョン・ツリーのことである。ディシジョン・ツリー・プログラムは、ディシジョン・ツリー・テーブルを含み、このディシジョン・ツリー・テーブルは、種々のディシジョン・ノード、特徴識別子、閾値、およびディシジョン・ツリーに対する出力値を含む。ディシジョン・ツリー・プロセッサーのある実施形態は、マルチステージおよび/またはマルチスレッドの様式でディシジョン・ツリーを探索する。マルチスレッドの実施形態では、ディシジョン・ツリー・プロセッサーの各ステージが異なるディシジョン・ツリー・スレッドを実行する。つまり、n段マルチスレッドディシジョン・ツリー・プロセッサーは、サイクル当たりn個までのディシジョン・ツリーの部分を同時に実行する。
[0020] 実施形態は、ディシジョン・ツリー・プロセッサー内部において実行されるディシジョン・ツリーをコード化、圧縮、および/またはコンパイルするプロセス、システム、および装置を含む。種々の実施形態では、ディシジョン・ツリーにおいて間にブランチがあるノードの一部が、ディシジョン・ツリー・テーブルにおける特定のノードに隣接するように、ノードを配置することによって、ディシジョン・ツリーからポインターを排除する。他のノードは、オフセットまたはデルタ値のような、次のノード・データーによって識別される。リーフ値は、ディシジョン・ツリー・ノード表現の一部であり、別個のリーフ・ノード・エントリーの一部ではない。
[0021] ある実施形態では、特徴値および閾値圧縮によって、ディシジョン・ツリー採点システムに必要な帯域幅およびストレージが削減される一方、実施形態が処理することができる作業負荷のサイズは増大する。この説明のある実施形態では、1つ以上のディシジョン・ツリーにおいて特定の特徴と比較される閾値毎に、並び替えリスト(sorted list)が作られ、閾値インデックスが閾値に割り当てられる。可能な閾値の総数は多いが(例えば、ある実施形態では、32ビット浮動小数点数によって表される)、複数のディシジョン・ツリーにおける特定の特徴に対する実際の閾値の総数は、実際には遙かに少なく、大抵の場合255以下の閾値である(しかし、それよりも多い数の閾値も可能である)。密(dense)または疎(non-dense)固定小数点小整数閾値インデックスが作られる。閾値インデックスは、0から閾値の総数までとすればよく、したがって、4ビット、8ビット、または他のnビット固定少数点値によって表すことができる。他の実施形態では、閾値インデックスが負数(negative number)であってもよく、更に0、2、4、6、または他の不連続整数値のような、不連続整数値を含んでもよい。また、閾値インデックスの特徴値インデックスとの比較が、元の非圧縮閾値の元の非圧縮特徴値との比較と同等となるように、特徴値はnビット固定小数点特徴値インデックスとしてコード化される。
[0022] ある実施形態では、複数のディシジョン・ツリー・プロセッサーが、1つ以上の特殊またはプログラマブル・ロジック回路上に並列に実装される。ある実施形態では、複数のディシジョン・ツリー・プロセッサーは、共通の特徴ベクトルに関して、ディシジョン・ツリーを実行する、または同時に実行する。オンチップ・アーキテクチャの最上位には、ディシジョン・ツリー・スコアラー(DTS)があり、このディシジョン・ツリー・スコアラー(DTS)は、上流側計算システム・ホストまたは処理システムから特徴ベクトル(例えば、複数組の特徴値)を受け取り、これらの特徴値を第1判断ツリー・クラスター(DTC)に送り、ディシジョン・ツリー・クラスターからスコアを受け取り、この結果をホストまたは他の下流側システムに出力する。この階層の次のレベルでは、複数のディシジョン・ツリー・クラスター(DTC)がこれら自体の間で特徴ベクトルを分散し、ディシジョン・ツリー・プロセッサーからのスコアを近隣のDTCおよびDTSに伝搬する。この階層の次のレベルでは、DTCが1つ以上のディシジョン・ツリー・プロセッサーと、1つ以上の特徴ストレージ・タイル(FST)とを含む。ディシジョン・ツリー・プロセッサーは、共通の特徴ベクトルに関して多数のディシジョン・ツリーを同時に実行するために、マルチスレッド型にすることができる。FSTは、複数のディシジョン・ツリーと対照して(against)採点される特徴ベクトルを格納し、ある実施形態では、1組の特徴がFSTに書き込まれ、他の1組の特徴がディシジョン・ツリー・プロセッサーによって採点のためにアクセスされることを可能にするために、二重バッファ型(double-buffered)となる。
[0023] 本明細書において説明する実施形態は、ASICにおけるような特殊ハードウェア、またはFPGAのようなプログラマブル・ロジック・デバイスにおける実装を受け入れる(amenable)ことができる。また、実施形態の種々の態様は、マルチコア・プロセッサー、システム・オン・チップ(SoC)(例えば、SoC上における1つ以上のディシジョン・ツリー採点コア)、および/または拡張命令セットを有する汎用プロセッサーにおける実装を受け入れることができ、したがって部分的にまたは全体的に1つ以上の原子プロセッサー命令に応答してディシジョン・ツリーを実行することができる。本明細書において説明するデバイス、プロセス、およびシステムは、多数の方法で実現することができる。以下の図を参照しながらこれより実施態様例について示す。
ディシジョン・ツリー採点システムの例
[0024] 図1は、種々の実施形態による、1つ以上のハードウェア実装型ディシジョン・ツリー・スコアラー102を含むディシジョン・ツリー採点システム例100のブロック図である。ホスト104は、ディシジョン・ツリーを、ディシジョン・ツリー・スコアラー102上における実行のためのモデル・コンテキスト108にコード化するディシジョン・ツリー・コーダー106を含む。以下で更に詳しく説明するが、ディシジョン・ツリー・コーダー106は、可変長ノードを使用するディシジョン・ツリーを表し、サブツリー・ポインターは隣接性(adjacency)およびオフセットによって排除され、リーフ値がノード表現に含まれ、閾値が閾値インデックス値としてコード化される。ディシジョン・ツリー・コーダー106は、ディシジョン・ツリー・スコアラー102にロードされるディシジョン・ツリーを増やすことを可能にするために、ディシジョン・ツリーのサイズを縮小する。加えてまたは代わりに、ディシジョン・ツリー・コーダー106は、他の圧縮技法を使用して、モデル・コンテキスト108のディシジョン・ツリー・データー(またはコード化ディシジョン・ツリー・データー)を圧縮することもできる。これらの実施形態では、ディシジョン・ツリー・スコアラー102または他のオンチップ・ロジックは、ディシジョン・ツリー・スコアラー102上における採点のために、圧縮されたディシジョン・ツリーまたはコード化されたディシジョン・ツリー・データーを伸長するように構成されている。
[0025] また、ホスト104は、特徴ベクトル・コーダー110も含む。特徴ベクトル・コーダー110は、ディシジョン・ツリー・スコアラー102に必要な帯域幅およびストレージを低減し、特徴ベクトル112をコード化モデル・コンテキスト108と共用できるようにし、モデル・コンテキスト108および特徴ベクトル112を、本明細書の種々の実施形態において説明するように特殊ハードウェアによって一層容易に処理される形式にする(place)ために、特徴ベクトル内部の特徴値をコード化する。この詳細な説明における他のところで更に詳細に説明するが、特徴ベクトル・コーダー110は、モデル・コンテキスト108内における特徴インデックス値の閾値インデックス値との比較が、対応する特徴値および閾値の比較と同等になるように、特徴に対して特徴インデックス値を選択する。
[0026] ホスト104は、ディシジョン・ツリー採点ジョブをスケジューリングするディシジョン・ツリー採点スケジューラー114を含む。ホスト104は、特徴ベクトル112およびモデル・コンテキスト108を受け取り、または特徴ベクトル112の種々のものを、モデル・コンテキスト108の種々のものと対照して(against)採点することを決定する。1組のディシジョン・ツリー採点ジョブの例は、
特徴ベクトル1/モデル・コンテキストA
特徴ベクトル2/モデル・コンテキストB
特徴ベクトル3/モデル・コンテキストA
特徴ベクトル4/モデル・コンテキストB
を含む。
[0027] 一般に、新たなモデル・コンテキストをディシジョン・ツリー・スコアラー102にロードする方が、新たな特徴ベクトルをディシジョン・ツリー・スコアラー102にロードするよりも長い時間がかかるので、ディシジョン・ツリー採点スケジューラー114は、新たなモデル・コンテキスト108がディシジョン・ツリー・スコアラー102にロードされる回数を減らすために、判断採点ジョブを配列し直す。以上の例を続けると、ディシジョン・ツリー採点ジョブは、以下のように配置し直される。
特徴ベクトル1/モデル・コンテキストA
特徴ベクトル3/モデル・コンテキストA
特徴ベクトル2/モデル・コンテキストB
特徴ベクトル4/モデル・コンテキストB
[0028] 検索の分野では、モデル・コンテキストは、実行されるあるタイプの検索に関連付けられた1組のディシジョン・ツリーとなる。異なる複数組のディシジョン・ツリーを利用する検索コンテキストの例には、言語(英語のクエリーでの検索は、ドイツ語クエリーで検索が実行される異なるモデル・コンテキストを使用して、実行することもできる)、画像検索、ニュース検索、ビデオ検索等がある。他の検索コンテキストには、別個のモデル・コンテキストを必要とするものもある。
[0029] ホスト104は、インターフェース118および120のような、データーパス・インターフェースを介して、1つ以上の特殊またはプログラマブル・ロジック・デバイス116に通信可能に結合されるように構成される。インターフェース118および120は、種々の実施形態では、周辺素子インターフェース・エクスプレス(PCI-Express)インターフェースであるが、他のインターフェース・タイプおよび仕様も、実施形態の範囲から逸脱することなく、使用することができる。インターフェース・タイプの判定は、インターフェース帯域幅目標(interface bandwidth target)に基づくことができ、一方、インターフェース帯域幅目標は、ディシジョン・ツリー採点システム100に対するスループット目標に基づくことができる。特定の例では、目標処理速度が検索文書採点当たり1マイクロ秒である場合、本明細書において説明するディシジョン・ツリーおよび特徴圧縮技法を使用すると、その結果、特徴ベクトル当たり約2〜8KBの帯域幅目標(例えば、候補検索結果文書毎)、または1秒当たり約2〜8GBの帯域幅目標となる。PCI−Expressがこの目標に適しているが、他のインターフェース・タイプおよび仕様もこの目標または他の目標に適していることもある。また、実施形態の範囲から逸脱せずに、1つの高速インターフェースの代わりに、多数のインターフェースを使用してもよい。
[0030] 以下で更に詳しく説明するが、ホスト104は、計算システムの1つ以上の汎用プロセッサーによって実行可能な複数のプログラミング命令として実現することもできる。しかしながら、ホスト104の1つ以上の態様は、特殊またはプログラマブル・ロジック回路(ASICチップまたはFPGAチップのような)上に実装されてもよい。
[0031] ディシジョン・ツリー・スコアラー102は、1つ以上のディシジョン・ツリー・クラスター122を含む。ディシジョン・ツリー・クラスター122は、それらの間でモデル・コンテキスト108および特徴ベクトル112を分散するように構成されている。代わりにまたは加えて、ディシジョン・ツリー・スコアラー102は、モデル・コンテキスト108および/または特徴ベクトル112をディシジョン・ツリー・スコアラー102全域に渡すために相互接続ネットワークを含んでもよい。また、ディシジョン・ツリー・クラスター122は、近隣のディシジョン・ツリー・クラスター122から、またはディシジョン・ツリー・クラスター122内部におけるディシジョン・ツリー・プロセッサー124からのディシジョン・ツリー・スコアを処理し伝搬するように構成されている。ディシジョン・ツリー・クラスター122は、ディシジョン・ツリー・プロセッサー124および近隣のディシジョン・ツリー・クラスターから受け取ったスコアを処理し(ディシジョン・ツリー・スコアを合計することを含んでもよい)、処理したスコア(例えば、合計されたスコア)を他の近隣ディシジョン・ツリー・クラスター122に伝搬するように構成されている。これについては、詳細な説明における他のところで更に詳細に説明する。ディシジョン・ツリー・スコアラー102は、ディシジョン・ツリー・クラスター122の1つから、ディシジョン・ツリー採点ジョブに対する最終スコア(例えば、スカラーまたはベクトル量)を受け取り、このスコアをホスト104または他の下流側のデバイスに出力するように構成されている。
[0032] ディシジョン・ツリー・プロセッサー124は、並列にそして特徴ベクトル112の共通のものと同時に対照して、または特徴ベクトル112の異なるものと対照してというように、実施態様に応じて、1つ以上のモデル・コンテキスト108のディシジョン・ツリーを実行する回路を含む。特徴ストレージ126の異なるものは、特徴ベクトル112の共通のもの、または特徴ベクトル112の異なるもののいずれでも格納することができる。各ディシジョン・ツリー・クラスター122内部の特徴ストレージ126は、特徴ベクトル112の内同じものまたは異なるものを格納することができる。
[0033] 本明細書において使用する場合、ディシジョン・ツリー・プロセッサー124は、ディシジョン・ツリーを採点する回路を含む。ディシジョン・ツリー・プロセッサー124は、ディシジョン・ツリーを採点する回路、およびディシジョン・ツリー・コア自体の双方を含むことができ、ディシジョン・ツリー・テーブルとして具体化され、ディシジョン・ツリー・プロセッサー124にアクセス可能な何らかのメモリーに格納される。1つ以上のディシジョン・ツリー・テーブルは、ディシジョン・ツリー・プロセッサー124内にハード・コード化され、ディシジョン・ツリー・プロセッサー124内部のメモリーに格納され、またはディシジョン・ツリー・プロセッサー124に他の方法で関連付けられ通信可能に結合されたメモリーに格納されてもよい。ディシジョン・ツリー・テーブルが格納されるメモリーは、共有ストレージでも専用ストレージでもよく、ランダム・アクセス・メモリー(RAM)、フラッシュ・メモリー、リード・オンリー・メモリー(ROM)、またはその他のメモリー・タイプでもよい。ディシジョン・ツリー・テーブルが格納されるメモリーは、オン・ダイ・メモリーのように、ダイ上にあってもよく、または高速メモリー・インターフェースを介して通信可能に結合されてもよいというような、チップ外部の外付けメモリー上にあってもよい。モデル・コンテキストは、共有または専用メモリー内部に共存してもよい。ある実施形態では、ホスト104がモデル・コンテキスト108をディシジョン・ツリー・スコアラー102および/またはオンチップまたは外付けメモリーに供給することもできる。ホスト104は、作業負荷をスケジューリングするとき、ディシジョン・ツリー・スコアラー102に、ディシジョン・ツリー・プロセッサー124によってロードされるまたは他の方法でアクセスされ実行されるべきモデル・コンテキスト108の指示を与えることができる。ある実施形態では、ディシジョン・ツリー・テーブルを格納するメモリーには2つのレベルがあってもよい。第1レベルのメモリー(オンチップまたは外付けメモリーでもよく、更に1つ以上のディシジョン・ツリー・プロセッサー124と共有でも専用でもよい)には、現在の作業負荷要件にしたがって実行される特定の1つまたは複数のディシジョン・ツリー・テーブルがロードされる、またはロード可能である。第2レベルのメモリー(オンチップまたは外付けメモリーでもよく、更に1つ以上のディシジョン・ツリー・プロセッサー124と共有でも専用でもよい)は、1つ以上の共存するモデル・コンテキストを格納することができ、その全てまたは一部は、第1レベルのディシジョン・ツリー・テーブル・メモリー上にロード可能である。
[0034] ホスト104は、特徴ベクトル112の内共通のものを複数の特殊またはプログラマブル・ロジック・デバイス116に供給することができ、更に、1つのモデル・コンテキスト108のディシジョン・ツリー・テーブルを複数の特殊またはプログラマブル・ロジック・デバイス116供給することができる。つまり、複数の特殊またはプログラマブル・ロジック・デバイス116にわたる個々のディシジョン・ツリー・クラスター122およびディシジョン・ツリー・プロセッサー124は、1つのモデル・コンテキスト108のディシジョン・ツリーを、特徴ベクトル112の内共通のものと対照して採点することができる。複数の特殊またはプログラマブル・ロジック・デバイス116の各々からのスコア・データーは、この詳細な説明における他のところで説明するように、複数の特殊またはプログラマブル・ロジック・デバイス116の各々内部において伝搬され、更にホスト104まで戻って来ることができる。ある実施形態では、スコア・データーは、第1特殊またはプログラマブル・ロジック・デバイス116から他の特殊またはプログラマブル・ロジック・デバイス116に渡されてもよく、次いで、他の特殊またはプログラマブル・ロジック・デバイス116が更にスコア・データー(スコアを合計するまたは添付する、またはスコアの合計を添付することによるというような)を伝搬して、特殊またはプログラマブル・ロジック・デバイス116双方に対する総合スコア・データー(combined score data)を生成することもできる。
[0035] 実施形態の範囲から逸脱せずに、スコア・データーを処理する他の方法も可能である。例えば、各ディシジョン・ツリー・スコアラー102が、スコアまたはスコアの合計のリストを、ディシジョン・ツリー・スコアラー102内部のディシジョン・ツリー・プロセッサー124および/またはディシジョン・ツリー・クラスター122から受け取り、最終的な合計値をホスト104、他のプログラマブル・ロジック・デバイス116、あるいは他の何らかの下流側デバイスに供給することができる。ディシジョン・ツリー・スコアラー102は、スコア(またはスコアの合計)のリストをホスト104、他のプログラマブル・ロジック・デバイス116、または他の下流側のデバイスに供給することができる。ホスト104、他のプログラマブル・ロジック・デバイス116、または他の下流側のデバイスは、採点を合計するアルゴリズムまたは他の何らかのアルゴリズムを実行することによってというようにして、特徴ベクトル112の最終的な採点を実行して、複数の特殊またはプログラマブル・ロジック・デバイス116の内1つ以上からのスコア・データーに基づいてというようにして、特徴ベクトル112に対して最終的な採点を判定することができる。
[0036] ある実施形態では、特殊またはプログラマブル・ロジック・デバイス116は、特定用途集積回路(ASIC)、フィールド・プログラマブル・ゲート・アレイ(FPGA)のようなプログラマブル・ロジック・デバイス、システム・オン・チップ(SoC)の内1つ以上であってもよく、あるいは、ディシジョン・ツリーを採点する特殊部分を有する汎用プロセッサー、他の何らかのロジック・デバイス、または以上の何らかの組み合わせの一部としてそれらに含まれてもよい。
拡張命令セットを有する汎用プロセッサー
[0037] ある実施形態では、汎用プロセッサーの命令セット・アーキテクチャが、ディシジョン・ツリー横断、採点命令、および状態を含むように拡張される。ある実施形態では、拡張命令セットは、ディシジョン・ツリーにおいて1つのノードを探索する命令を含む。ある実施形態では、拡張命令セットは、複数のノードを探索する命令、またはルート(最上位ノード)からリーフまでディシジョン・ツリー全体を探索する命令を含む。
[0038] ディシジョン・ツリーを横断する拡張命令セットを有する汎用プロセッサーによって使用可能な状態は、ディシジョン・ツリー・ノードおよび特徴ベクトル・データーの表現を含む。ディシジョン・ツリー・ノードは、データー構造、実行可能命令、または他の何らかの形態で表すことができる。データー構造として、ディシジョン・ツリーは、1つ以上のノードを含むツリーとして表すことができ、ノードは、特徴識別子、閾値、ならびに左および右サブツリー・データーを含む。左および右サブツリー・データーは、左(それぞれ、右)サブツリー・ノードまたは左(それぞれ、右)リーフ・ノードまたはリーフ・スコア値を識別することができる。特定のノードのデーターを隣接するバイト、例えば、レコードあるいは「struct」または「class」にバンドルすることができ、またはテーブルにわたって拡散(spread)されてもよい。ディシジョン・ツリー・ノードがデーター構造として表される場合、ツリー・ノードはデーター値、例えば、ノードのインデックスまたはポインター(機械アドレス)として識別される。1つ以上のノードを探索する命令に応答してツリー・ノードを横断することは、ツリー・ノード識別子から開始して、それが識別する特徴を引き出し、それをノードの閾値と比較し、比較の結末(outcome)を使用して、左または右サブツリーのツリー・ノード識別子、あるいは右または左リーフ/リーフ値を判定することを含む。ある実施形態では、ノードを探索する命令をここではNODEWALK命令と呼ぶが、この命令は2つのパラメータ、例えば、ツリー・ノードへのポインターを収容するレジスターと、RAMにおける特徴ベクトルへのポインターを収容するレジスターを取り込むことができ、2つの値、例えば、左または右サブツリーへのポインターを収容する(リーフ・ノードがない場合)または出力値を収容する(リーフ・ノードがある場合)レジスター、およびNODEWALKがリーフ値に達した場合(ツリー探索を終了する)にセットされるフラグを収容する条件コード・レジスターを生成することができる。アセンブリ言語では、ツリー探索は下記を含む。
Figure 0006605573
[0039] NODEWALKの他の実施形態はループ・テストおよびジャンプを1つの命令にバンドルする。
Figure 0006605573
[0040] 他の実施形態では、1つの命令においてツリー全体を探索する。
Figure 0006605573
[0041] ある実施形態では、ディシジョン・ツリーは、プロセッサーによって実行される一連のツリー横断命令(tree traversal instruction)として表され、ディシジョン・ツリー横断命令を実装する。これらの命令は、ディシジョン・ツリーにおける1つのノードに対応する。これらの命令は、ビット・ストリングとして表され、特徴識別子、閾値、ならびに左および右サブツリー・ノードおよび/またはリーフおよびリーフ値の識別子を含むビット・フィールドを含む。この実施形態では、ツリー・ノードは命令(機械コード)アドレスによって識別される。したがって、ツリー探索は、左または右サブツリーのコードにジャンプするように、プログラム制御フローを変化させるツリー・ノード探索命令を実行することを含む。
[0042] 例えば、ディシジョン・ツリーが2つのノードで構成される場合、
Figure 0006605573
[0043] これは、次のプログラムによって表されてもよい。
Figure 0006605573
ここで、NODE命令は次のようにエンコードする。
Figure 0006605573
#フィールドは、命令の「即値」ビット(immediate value bit)フィールドである。
[0044] この実施形態では、ディシジョン・ツリーは、その最初のNODE命令を実行することによって採点される。NODE命令は、リーフに到達するまで、次の左または右NODE命令等にジャンプする。ルートNODE命令のビット・フィールドは、特徴識別子(10)、閾値(41)、左サブツリー(「left」)、右サブツリー(nil)、左リーフ値(nil)、および右リーフ値(c)をエンコードする。この例では、識別された特徴が閾値t1以下である場合、制御はアドレス「left」における第2NODE命令に移る。この命令のビット・フィールドは、その特徴識別子(20)、閾値(t2)、左および右サブツリー(nil)、ならびに左および右リーフ出力値(それぞれ、aおよびb)をエンコードする。ノード命令がリーフまで進んだ場合、指定されたアドレス(end)に制御を移し、リーフ・インデックスまたは出力値が出力レジスターにおいて得られる。
[0045] 他の実施形態では、ツリー横断命令は、暗示的なレジスター、特殊目的レジスター、またはメモリー位置を使用して、特徴ベクトルおよびリーフ・ノード・アドレスを識別することもできる。他の実施形態は、特定のディシジョン・ツリー・ノードを表すために使用されない命令ビット・フィールド(nilサブツリー・フィールドのような)を圧縮または排除するために可変長命令エンコードを採用することもできる。他の実施形態は、先に説明したのと同様にビット・フィールド(左または右サブツリー・アドレスのような)を圧縮または排除するために、メモリーにおける命令の隣接性を利用することもできる。
[0046] ある実施形態では、ディシジョン・ツリー・データー構造メモリー、またはディシジョン・ツリー命令メモリーが、汎用プロセッサーに統合され、外部に格納されてもよく、またはメモリー・キャッシュ階層を通じて、外部メモリーに結合されてもよい。
[0047] ディシジョン・ツリー横断、採点命令、および状態を有する汎用プロセッサーが、特徴ストレージRAMに結合されてもよい。ある実施形態では、この詳細な説明において他のところで説明するように、特徴ストレージRAMが自動的に特徴ベクトル分散ネットワークによってロードされてもよい。特に、ディシジョン・ツリーを探索する拡張命令セットを有する汎用プロセッサーによる命令の実行を全く必要とせずに、特徴ベクトル分散ネットワークによって新たな特徴データーをこのRAMにロードしてもよい。これによって、ディシジョン・ツリーを採点するために必要な時間およびエネルギーを節約することができる。
[0048] また、ディシジョン・ツリー横断、採点命令、および状態を有する汎用プロセッサーが、採点集計システムに結合されてもよい。これは、リーフ・ノードまでノードを横断するためのNODEWALK、TREEWALK、またはNODEのような命令から得られるリーフ出力値(スコア)を蓄積するために、追加のレジスター、スレッド状態、または加算器ツリー・ネットワークを含でもよい。これもまた、ディシジョン・ツリーを採点するために必要な時間およびエネルギーを節約することができる。
ディシジョン・ツリー・コード化の例
[0049] 図2は、本開示の種々の実施形態によるディシジョン・ツリー・コード化を示す。ディシジョン・ツリー例200を図2に示す。これは、複数のディシジョン・ノード202および複数のリーフ・ノード204を含む。ディシジョン・ノード202は、種々の特徴を含み、特徴識別子を含む。特徴識別子は、アドレス、インデックス数、参照番号、またはディシジョン・ノード202において比較される特徴を識別する他の識別子であってもよい。また、ディシジョン・ノード202は、特徴値(特徴識別子によって参照される)が比較される閾値も含む。また、ディシジョン・ノード202は、左ブランチ・ポインターおよび右ブランチ・ポインターも含み、次のノードが位置する場所を示す。各ディシジョン・ノード202は比較を表す。例えば、ノード番号7は、特徴「F1」として識別される特徴値が閾値番号10と比較されることを示す。実施形態の範囲から逸脱することなく、他の比較も可能である。
[0050] 本明細書において説明する実施形態は、左ブランチ、右ブランチ、左ノード、右ノード等に言及する。しかし、これらの用語は、単に、ディシジョン・ツリーを記述するために使用されるに過ぎない。一般に、ディシジョン・ツリー探索アルゴリズムは、特徴値と閾値との間の比較を実行し、この比較の結末(outcome)に応じて、第1ノードまたは第2ノードのいずれかに進む。説明を容易にするために、これらの次のノードを、ここでは、左ノードおよび右ノードと呼ぶが、これはことば本来の意味や限定的な意味で捕らえてはならない。
[0051] リーフ・ノード204はリーフ値を含む。ディシジョン・ツリー探索アルゴリズムがリーフ・ノード204に到達したとき、ディシジョン・ツリーを探索する特定のインスタンスが完了し、到達した特定のリーフ・ノード204に対応するリーフ値が出力される。
[0052] ディシジョン・ツリー・コーダー106は、ディシジョン・ツリー200をコード化する。ディシジョン・ツリー・コーダー106は、モデル・コンテキスト内部のディシジョン・ツリー毎に、ディシジョン・ツリー・テーブル206を作る。ディシジョン・ツリー・テーブル206において、少なくとも一部のブランチ・ポインターは、隣接性により排除される。つまり、ディシジョン・ツリー200におけるノード1は、ディシジョン・ツリー・テーブルにおいて、ノード2よりも前にあるというようにコード化される。ノード3はリストにおいてノード2の後ろに位置付けられ、ノード4はノード3の後ろになる。このように、ディシジョン・ツリー・テーブル206内におけるノード1〜3の実行中に、ディシジョン・ツリー・プロセッサー124の内1つのような、ディシジョン・ツリー・プロセッサーは、特徴値の閾値との比較の結末に基づいて、ディシジョン・ツリー・テーブル206における次の隣接ノード、またはオフセット値のような、次のノード・データーによって参照される他のノードのいずれかを、ディシジョン・ツリー・プロセッサーによって実行される次のノードとして選択することがわかる。このように、図2に示す隣接性の例に基づいて、ディシジョン・ツリー・テーブル206のディシジョン・ノードを実行した結末が、左ブランチを選択することを示すので、隣接するノードを次のノードとして選択する結果になる。このように、特定のディシジョン・ノードが、他のディシジョン・ノード(リーフ・ノードではない)に至る左ブランチを有する場合、ディシジョン・ツリー・テーブル206における隣接ノードが次の左ノードになる。右の次のノードは、オフセット値のような、次のノード・データーを使用して識別される。左ディシジョン・ノードがない場合(例えば、左ブランチがリーフ・ノードに至るため)、右の次のノードが隣接する可能性がある。このような右ノードも、オフセット値のような、次のノード・データーによって識別することができ、またはこれらが隣接すると仮定してもよい。
[0053] 隣接性に基づいてディシジョン・ツリー・テーブル206内部でディシジョン・ノード202を配列することに加えて、ディシジョン・ツリー・コーダー106は、ディシジョン・ツリー・テーブル206内部のディシジョン・ノード202の表現で、リーフ・ノード204のあらゆるリーフ・ノード値も含む。例えば、ノード7は、その表現がリーフ値を含むように、ディシジョン・ツリー・コーダー106によってコード化される。ノード7の実行の結末に基づいて(例えば、図2に示したように、特徴値の閾値10との比較に基づいて)、ディシジョン・ツリー・プロセッサーは、左リーフ・ノードの値を出力するか、または次に処理するディシジョン・ノードとしてノード8を選択するかのいずれかを選択する。
[0054] ディシジョン・ノード202は、ディシジョン・ツリー・テーブル206内部では可変長ディシジョン・ノードとして表される(これを例示するために、いくつかは他よりも小さく示されている)。一例では、ディシジョン・ノードをコード化するために、以下のフィールドがディシジョン・ツリー・コーダー106によって使用される。
Figure 0006605573
[0055] ディシジョン・ツリー・テーブル206内部におけるディシジョン・ノード202の全ての表現は、特徴識別子(「feat_ad」)および情報(「info」)フィールドを含む。特徴識別子は、特徴ストレージ内部において、ディシジョン・ノードの実行において閾値と比較される特徴値(この詳細な説明において他のところで説明したように、特徴インデックス値であってもよい)が発見される位置を識別する。特徴識別子は、ディシジョン・ツリー・プロセッサーが、特徴ストレージ126内部の特徴値というような、特徴ストレージ内部の特徴値を参照するために使用するアドレスまたは他の識別子でもよい。情報フィールドは、以下で更に詳細に論じられる種々のサブフィールドを含む。
[0056] また、2−リーフ・ディシジョン・ノードは、左リーフ値(「L_Leaf_val」)および右リーフ値(「R_Leaf_val」)も含む。これらの値は、ディシジョン・ツリー200の可能な結末または出力を表す。1−リーフ・ディシジョン・ノードは、左リーフ値(「L_Leaf_val」)または右リーフ値(「R_Leaf_val」)の内1つを含む。リーフ値は、種々のデーター型を含むことができ、整数、固定小数点、浮動小数点、またはディシジョン・ツリー・テーブルの外部に格納される一意の値を識別するインデックスを含む。
[0057] ノード2のように、リーフがないディシジョン・ノードは、右ディシジョン・ノードが位置する場所を識別する随意(optional)のデルタ値を含む。この場合、左ディシジョン・ノードは、ディシジョン・ツリー・テーブル206内部の隣接する場所に位置する(例えば、ノード2にとって、「左」ディシジョン・ノードはノード3になる)。右ディシジョン・ノードは、ディシジョン・ツリー・テーブル206内部において、デルタ値によって識別可能な場所に位置する。ディシジョン・ツリー・プロセッサーは、デルタ値を処理して右ディシジョン・ノード値を判定する。例えば、ディシジョン・ツリー・プロセッサーはデルタ値を、現在実行中のディシジョン・ノードの位置値(例えば、インデックス値またはアドレス)に加算して、次の右ディシジョン・ノードの位置値(例えば、アドレスまたはインデックス値)を得ることができる。ある場合には、以下で更に詳細に説明するように、デルタ値がinfoフィールドに含まれる。これらの場合には、別個のデルタ値がノード表現内部に含まれない。
[0058] 実施態様例では、feat_adフィールドは12ビットであり、infoフィールドは12ビットであり、rdeltaフィールドは12ビットであり、左リーフ値は24ビットであり、右リーフ値は24ビットである。
[0059] infoフィールドは、閾値を識別する、左リーフがあるか否か識別する、右リーフがあるか否か識別する種々のサブフィールドを含み、次の右ノードを突き止めるために共通オフセットまたはデルタ値をエンコードする。info情報の一例は次の通りである。
Figure 0006605573
[0060] ある実施形態では、nybフィールドは、特徴値が4ビットまたは8ビット・ワードのどちらであるかを識別する(例えば、特徴値が「ニブル」であるか否か)1ビットであり、xフィールドは1ビット、l_leafは1ビット、r_leafは1ビット、そして閾値は8ビットであるが、実施形態の範囲から逸脱することなく、他のフィールド・サイズを使用してもよい。l_leafフィールドは、ノードが左リーフ値を含むか否かを示し、同様に、r_leafノードは、ノードが右リーフ値を含むか否かを示す。先に注記したように、infoフィールドは右ノード・オフセットまたはデルタ値をコード化するために使用することができ、これによってノードにける別個のデルタ・フィールドの必要性を排除する。x=1の場合、l_leafおよびr_leafフィールドは、4つの共通オフセット値をコード化するために使用される。特定的な例では、l_leafおよびr_leafフィールドは、8ワード、12ワード、16ワード、および20ワードのオフセットをコード化するために使用される(この特定的な例では、1ワード=12ビットである)が、実施形態の範囲から逸脱することなく他のオフセット値をコード化することもできる。infoフィールド内部の共通オフセット値の1つによってオフセット値をコード化できない場合、例えば、次の右ノードが、現在のノードから共通オフセット値の内の1つだけ離れた位置にないためにコード化できない場合、随意の別個のオフセット・デルタ・フィールドが使用される。ある実施形態では、多数のディシジョン・ツリーが1つのディシジョン・ツリー・テーブル内部に格納され、適したコード化により、ディシジョン・ツリーの本数、および/またはディシジョン・ツリー・テーブル内部の1つ以上のディシジョン・ツリーの位置を識別する。
[0061] ある実施形態では、ディシジョン・ツリー・テーブル206はDTTヘッダー208も含む。DTTヘッダー208は、ディシジョン・ツリー・テーブル206内部に収容されているディシジョン・ツリーの本数、およびディシジョン・ツリー・テーブル206内部の1つ以上のディシジョン・ツリーの開始位置のような、ディシジョン・ツリー・テーブル206の種々の面(aspect)をコード化する。
閾値および特徴圧縮の例
[0062] 所与のディシジョン・ツリー内、またはモデル・コンテキスト108内というような、複数のディシジョン・ツリー内部において、ディシジョン・ノードは特徴識別子および閾値を含む。ディシジョン・ツリー・ノード実行の一例では、特徴値(特徴識別子feat_adによってインデックス化された位置における特徴ベクトルから読み出される)が閾値と比較される。この比較は、特徴値が閾値以下であるか否かの判定であることも可能である。yesの場合、左ブランチが選択され、noの場合、右ブランチが選択される。未満、超過、または以上というような、他のタイプの比較も、実施形態の範囲から逸脱することなく可能である。以下で説明する特徴値および閾値エンコードの種々の例は、ディシジョン・ツリー比較が、特徴値が閾値以下であるか否か判定することを含むと仮定するが、実施形態の範囲から逸脱することなく、他のタイプのディシジョン・ツリー比較に基づいて、特徴値および閾値に対して同様のコード化を実行することができる。
[0063] 複数のディシジョン・ツリー全体にわたり、所与の特徴fが1つ以上のノードにおいて参照される。所与の特徴fを参照するノードは、1つ以上の閾値tvの内の1つを含む。つまり、所与のモデル・コンテキスト(例えば、1つ以上のディシジョン・ツリー)内において、そして特定の特徴fについて、ディシジョン・ツリー・コーダー106は、特定の特徴fに対応する特徴値fvが比較される閾値tvのリストtsを判定する。特定の特徴fと比較されない閾値は、特定の特徴fのリストには含まれない(しかし、これらは他の特徴のリストには含まれる)。モデル・コンテキスト内の特定のfに対して閾値tvをコード化するために、以下の手順が使用される。
[0064] 特徴f毎に、ディシジョン・ツリー・コーダー106は、同様にfを参照するモデル・コンテキストのディシジョン・ツリーの内任意のものの任意のノードに含まれる全ての一意の閾値tvの並び替えリストtsを形成する。図3は、実数線(real number line)300上における一意の閾値tvのリスト例tsを示す。並び替えリストtsは、閾値tvの内一意のものだけを含み、したがって、特定の閾値tvは、所与のモデル・コンテキスト内においてfを参照する多数のノードに含まれていても、tsには1回しか現れない。
[0065] tsにおける閾値tvに対するコード化例302を図3に示す。最も小さいtvにはインデックス0が指定され、最も大きなtvには、ts内にある一意のtvの総数よりも1少ない数に等しいインデックス番号が指定されるように、インデックス番号tviが、ts内部の実数線300上の一意のtv毎に昇順で指定される。図3に示す例では、閾値t1は最小のtvであり、インデックス0が指定され、一方閾値t6は最大のtvであり、閾値インデックス値5が指定される。閾値が大きい数である場合、固定小数点整数インデックス値tviの指定により、ディシジョン・ツリー・ノード表現内部において閾値を表すために必要なビット数が減少する。例えば、閾値tvは、32ビット浮動小数点数としてもよく(しかし、他のビット数、他のタイプの変数も、実施形態の範囲から逸脱することなく使用してもよい)、図3に示す例では、閾値インデックス値tviを表すために、僅か3ビットの数を使用すればよい(しかし、以下で更に詳細に説明するように、tviおよび特徴インデックス値fviを表すためには他のビット数を使用してもよい)。
[0066] tvをtviにコード化することに加えて、特徴ベクトル・コーダー110は、特徴ベクトル112におけるfに対応する特徴値fvを、特徴インデックス値fviにコード化し、これらがコード化閾値インデックス値tviと共用できる(compatible)ようにする。各特徴ベクトル112は、f毎に特徴ベクトルfvのリストを含む。ある実施形態では、特徴値fvが、閾値インデックス値tviに基づいて特徴インデックス値fviにコード化され、更に具体的には、閾値インデックス値tviの特徴インデックス値fviとの比較の結末が、閾値tvを特徴値fvと比較した結末と同等となるように、これらがコード化される。このように特徴値をコード化することによって、モデル・コンテキスト108内におけるコード化ディシジョン・ツリーを、コード化特徴ベクトル112と対照して、実行した結末は、元の特徴値および閾値に基づくディシジョン・ツリーの従来のソフトウェアに基づく実行と同じ出力を生成することである。
[0067] 図3に示した例を続けると、モデル・コンテキスト108内のディシジョン・ツリーのディシジョン・ノードの実行は、特徴値fvが閾値tv以下であるか否か判定することに基づく。したがって、この例では、
Figure 0006605573
となるように、特徴値fvが特徴インデックス値fviにコード化される。
[0068] 更に一般的には、
Figure 0006605573
となるように、特徴値fvが特徴インデックス値fviにコード化される。
ここで、compareは、ディシジョン・ツリーの実行中に実行される比較関数を表す(例えば、≦、≧、<、または>の内の1つ)。図3に示す例では、特徴インデックス値fviは、
Figure 0006605573
ように選択される。
ここで、#tsは、特定のモデル・コンテキスト内における特定の特徴fに関連付けられた閾値tの総数である(例えば、特徴fを参照するノードにおける全ての閾値tv)。言い換えると、特徴インデックス値fviは、(1)特徴値fv以上である閾値tvの内最も小さいものに対応する閾値インデックス値tvi、または全ての閾値tvが特徴値fvよりも小さい場合には、(2)最も大きな閾値インデックス値tviよりも大きな数のいずれかとなるように選択される。以上で示した例では、対応するfviが、閾値tvの総数に等しい数となるように選択され、これは最も大きいtviよりも1大きいが、最も大きなtviよりも大きい任意の数を選択してもよい。
[0069] 図3に示す例では、特徴ベクトル・コーダー110は、コード化304として、特徴例f1〜f6をコード化する。特徴f1に関して、t2は、f1以上である最小のtvであり、したがって、f1に対する特徴インデックス値fviは、t2に対するtviと同じに設定される(即ち、1)。特徴f6に関して、f6以上のtvはない。したがって、f6に対するfvは最も大きなtviよりも大きな数に設定される。図3に示す例では、t6に対するfviは6に設定される。これは、最も大きなtviである5よりも1だけ大きい。また、図3に示す例では、f4は3としてコード化される。
[0070] 実施形態では、特定のfに関連付けられたtvおよびfvをコード化するために選択されるビット数は、#ts(fを参照するディシジョン・ノードに関連付けられた一意のtvの総数)を受け入れる(accommodate)のに十分に大きい。ある実施形態では、1組の可能なインデックス長の内1つが、tvおよびfvを表すために使用され、tvおよびfvをコード化する複雑さを低減する。特定的な一例では、tvおよびfvは、4ビット・ワード、8ビット・ワード、または多数の8ビット・ワードのいずれかとしてコード化されるが、実施形態の範囲から逸脱することなく、他のワード長を使用してもよい。特定的な例では、インデックス・ワード長は、
・lg(#ts)<4の場合、tvおよびfvを4ビットに記録する。ここでlg(x)は基底2に対するxの対数である。
・または、lg(#ts)<8の場合、tvおよびfvを8ビットに記録する。
・または、tvおよびfviが#ts>255回の閾値比較である場合、そのいずれも(#ts)/255個の別個のfとして記録する。
というように選択される。
f1が(#ts)/255個の別個のfに記録される場合、ディシジョン・ノードは、ディシジョン・ツリー・コード106によって、(#ts)/255個の別個のfの内の1つを示すために記録され、それに応じて、ノードの対応する閾値tvが記録される。具体的な例では、ts内部に合計1259個のtvがあるf1では、特定のfに関連付けられたノードが、5つの異なるノードの内1つに記録され、各々別個のfおよび8ビット閾値を有する。つまり、fvi=0は(0,0,0,0,0)としてコード化される(例えば、元のfが分解される別個のfの全てに対して0としてコード化される)。fvi=255は(255,0,0,0,0)としてコード化される(例えば、別個のfの内最初のものに255、別個のfの他の全てに0)。fvi=256は(255,1,0,0,0)としてコード化される(例えば、別個のfの内最初のものに255,2番目の別個のfに1、そして他の全てに0)。fvi=1258は(255,255,255,255,238)としてコード化される。別個のfに対する閾値tvも、同様にコード化される。
並列アーキテクチャ
[0071] 図4は、種々の実施形態による特殊集積回路またはプログラマブル集積回路上に実装されたディシジョン・ツリー・スコアラー102のアーキテクチャ400を示す。アーキテクチャ400は、格子状に配列された複数のディシジョン・ツリー・クラスター(DTC)122を含む。DTC122は、モデル・コンテキスト108および特徴ベクトル112をディシジョン・ツリー・スコアラー102から受け取るように構成されている。DTC122は、複数のディシジョン・ツリー・プロセッサー124の部分集合、および特徴ストレージ126の部分集合を含む。ディシジョン・ツリー・プロセッサー124の部分集合には、ディシジョン・ツリー・プロセッサーの他の部分集合と同じまたは異なるディシジョン・ツリー・テーブルがロードされてもよい、および/またはロード可能でもよく、特徴ストレージ126の部分集合には、同じまたは異なる特徴ベクトルがロードされてよく、あるいはロード可能でもよい(例えば、共通の特徴ベクトルがロードされてもよい)。
[0072] DTC122は、特徴ベクトル112を第1近隣DTC122から受け取り、これらをDTC122の内第2の近隣DTCに分散することができる。一例では、図4における矢印によって示されるように、DTC122−Aは、特徴ベクトル112をDTC122−Cから受け取り、これらの特徴ベクトル112をDTC122−Cおよび122−Dに分散するように構成されている。
[0073] 同様に、DTC122はスコア・データーを第1近隣DTC122から受け取り、これらをDTC122の内第2近隣DTCに伝搬することができる。スコア・データーは、ディシジョン・ツリー・プロセッサー124の異なるものから出力される、個々のディシジョン・ツリー・スコアに基づくことができる(共通の特徴集合と対照させるというように)。スコア・データーは、スコアのリスト、スコアの総計、または個々のスコアに基づく何らかの他のスコア・データーでもよい(個々のスコアの乗算、またはスコアを処理するための何らかの他のアルゴリズムのような)。スコアのリストは、個々のディシジョン・ツリーの結末からのスコアのリスト、または処理されたスコアのリストでもよい。例えば、特定のディシジョン・ツリー・クラスター122からの全てのスコアを総計し、最終的なスコア・データーが各DTC122からの総計スコアのリストを含むように、全てのDTC122スコアのリストに添付するのでもよい。他の例では、1つのディシジョン・ツリー・プロセッサー124によって実行されたディシジョン・ツリーからの全てのスコアを総計するのでもよく、全てのディシジョン・ツリー・プロセッサーからの総計スコアを、最終的なスコア・データー内に列挙する等としてもよい。スコア・データーを伝搬する他の方法も、実施形態の範囲から逸脱することなく、使用してもよい。ある実施形態では、各DTC122、DTC122のグループ、ディシジョン・ツリー・プロセッサー124、ディシジョン・ツリー・プロセッサー124のグループ、個々のディシジョン・ツリー、ディシジョン・ツリーのグループからの処理されたスコア・データーまたは生のスコア・データーが、他の何らかの様式でDTS400に供給され(別個の出力ネットワーク上でというように)、ここで説明したように近隣DTC122には伝搬されない。
[0074] 図4に示す例では、DTC122−Eは、スコア・データーを近隣DTC122−Fおよび122−Gから受け取るように構成されている。DTC122−Eは、スコア・データーを近隣DTC122−Fおよび122−Gから、DTC122−E内部のディシジョン・ツリー・プロセッサー(ディシジョン・ツリー・プロセッサー124のような)によって供給されるスコア・データーと共に受け取り、これらのスコア・データーを処理して、総合スコア・データーを判定し(スコアを総計する、個々のスコアのリストにスコアを添付する、または他の何らかの方法でスコア・データーを処理することによるというようにして)、そして総合スコア・データーを近隣DTC122−Hに受け渡すように構成されている。近隣DTC122−Hは、同様の機能を実行し、全てのスコアがDTC122の内最後の1つに伝搬されるまで続けられ、最後のDTC122は最終的なスコア・データーをDTS102に受け渡す。更に一般的には、DTC122は、スコアが二重にカウントされないように、スコア・データーを伝搬するように構成されている。例えば、DTS102を通るスコア伝搬の特定のパターンにより、DTC122のいずれもが、同じスコアが処理された2つの近隣DTC122から2つのスコアを受けることを回避する。
[0075] ある実施形態では、モデル・コンテキストをディシジョン・ツリー・スコア・アーキテクチャ400にロードすることは、DTC122内部にあるディシジョン・ツリー・タイルの異なるものに異なるディシジョン・ツリー・テーブルをロードすることを含む。これらのディシジョン・ツリー・タイルは、ディシジョン・ツリー・スコアラー・アーキテクチャ400のDTC122のディシジョン・ツリー・プロセッサー全域にわたって分散された複数のディシジョン・ツリーを含む。これらの実施形態では、DTC122にロードされたディシジョン・ツリーの各々が、共通の特徴ベクトルに基づいて、別個のスコアを生成する。
[0076] ある実施形態では、同時にディシジョン・ツリー・アーキテクチャ400にロードされた異なるディシジョン・ツリー・テーブルが、1つのモデル・コンテキスト108の一部、または複数の異なるモデル・コンテキスト108の一部であってもよい。ある実施形態では、多数のディシジョン・ツリー・モデルが1つのモデル・コンテキストにコード化される。一例では、2つのモデルは同様であるが何らかの相違を有するのでもよい。2つのモデルに対するディシジョン・ツリーは、モデル1またはモデル2のいずれかを選択する新たなディシジョン・ノードを導入するために多少変更される。加えて、モデル1またはモデル2のいずれかを選択するために、該当する特徴が特徴ベクトルに。
[0077] ある実施形態では、特徴ベクトルをディシジョン・ツリー・スコアラー・アーキテクチャ400にロードすることは、同じ特徴ベクトル値をDTC122の特徴ストレージ・タイルの各々にロードすることを含む。つまり、実施形態では互いに異なるDTCの複数のディシジョン・ツリーが、同じ1組の特徴と対照して採点され、全てのスコアが処理され(例えば、総計され)逆にDTS102に伝搬される。
[0078] 他の実施形態では、DTC122の内種々のものが、DTC122の他のものと同じディシジョン・ツリーを実行するように、これらには同じディシジョン・ツリーがロードされる。ディシジョン・ツリーが異なる特徴ベクトルと対照して実行されるように、異なる特徴ベクトルをDTCの異なるものにロードすることができる。ある実施形態では、DTC122には異なる特徴ベクトルがロードされ、同じディシジョン・ツリー、またはディシジョン・ツリーのグループがディシジョン・ツリー・スコアラー・アーキテクチャ400にロードされる。これらの実施形態では、各DTC122には、1つ以上の特徴ベクトルの異なるグループがロードされる。ディシジョン・ツリーは、特徴ベクトルと対照して採点され、モデル・コンテキストの全てのディシジョン・ツリーに沿って流れ、特徴ベクトルを駆使して(past)全てのディシジョン・ツリーが実行されるに連れて、ときの経過と共に特徴ベクトル毎にスコアが蓄積される。これらの実施形態では、モデル・コンテキストの全てのディシジョン・ツリーがロードされ特徴ベクトルと対照して実行されるまで、DTC122は特徴ベクトルに対するスコアを保持するように構成することができる。あるいは、個々のディシジョン・ツリー・スコアをホスト104に送信し、ホスト104が特定の特徴ベクトルに対するスコアを蓄積し処理する。
[0079] 更に他の実施形態では、DTC122の異なるグループには異なるディシジョン・ツリー・ジョブがロードされる(例えば、モデル・コンテキストおよび特徴ベクトルの組み合わせ)。つまり、ディシジョン・ツリー・スコアラー・アーキテクチャ400の第1部分が、第1特徴ベクトルに対するスコアを第1モデル・コンテキストと対照して判定し、ディシジョン・ツリー・スコアラー・アーキテクチャ400の第2部分が、第2特徴ベクトルに対するスコアを第2モデル・コンテキストと対照して判定し、以下同様に、ディシジョン・ツリー・スコアラー・アーキテクチャ400の第N部分が、第N特徴ベクトルに対するスコアを第Nモデル・コンテキストと対照して判定する。これらの実施形態では、各部分のDTC122にはモデル・コンテキストのディシジョン・ツリーがロードされ、特徴ベクトルは採点のための部分内で1つずつ分散され、または各部分のDTC122には異なる特徴ベクトルがロードされ、モデル・コンテキストのディシジョン・ツリーは、採点のための部分内部で1つずつ分散される。
[0080] ディシジョン・ツリー・スコアラー・アーキテクチャ400内にあるDTC122の数は、任意に大きな数まで、ディシジョン・ツリー・スコアラー・アーキテクチャ400が実装される集積回路のサイズおよび能力に応じて、拡大する(scale up)ことができる。
[0081] ある実施形態では、1つよりも多いディシジョン・ツリー・スコアラー・アーキテクチャ400が利用され、各々には並列に実行するそれ自体の1組のDTC122がある。これらの実施形態では、1つのモデル・コンテキストを1つ以上のチップのDTC122上にロードすることができ、特徴ベクトルは、採点のために、異なるチップのDTC122に1つずつ分散される。他の実施形態では、異なる特徴ベクトルが異なるチップのDTC122にロードされ、モデル・コンテキストの異なるディシジョン・ツリーが、採点のために、DTC122の各々に1つずつ分散される。種々の他の実施形態では、組み合わせたマルチチップ・ディシジョン・ツリー・スコアラー・アーキテクチャ400の異なる部分に、これらの手法の組み合わせを利用することもできる。
[0082] ある実施形態では、ディシジョン・ツリー・スコアラー・アーキテクチャ400にロードされたモデル・コンテキストに対する全体的スコアまたは総合スコアの判定が、加算または乗算のような結合関数に基づき、この場合、スコアを纏める(group)順序が結末を決定することはない。つまり、特定の特徴ベクトルに対して、アーキテクチャ400にロードされたモデル・コンテキストのディシジョン・ツリーと対照して、正しい最終的なまたは総合スコアを生成するためには、DTC122の1つ1つにおけるディシジョン・ツリーの分散は必ずしも重要ではない。他の実施形態では、特徴ベクトルに対するスコア、およびモデル・コンテキスト・ディシジョン・ツリー採点ジョブの処理は、結合的(associative)ではなく、ディシジョン・ツリーおよび/または特徴ベクトルがアーキテクチャ全域に分散される順序は、特定の特徴ベクトルに対して最終的スコアまたは総合スコアを判定するために重要となる。
[0083] 特徴ベクトル112、モデル・コンテキスト108のディシジョン・ツリー・テーブル、および/またはスコア・データーは、特殊またはプログラミング・ロジック・デバイス116内部の1つ以上のネットワークを通じて、DTC122および/またはディシジョン・ツリー・プロセッサー124に分散させることができる。DTC122、ディシジョン・ツリー・プロセッサー124、および種々の特徴ストレージ126の内1つ以上が、パケット・ヘッダーを介して、アドレス可能であるとよい。ディシジョン・ツリー・プロセッサー124の共有または専用ストレージにロード可能なディシジョン・ツリー・テーブルの分散方法には関係なく、ディシジョン・ツリー・テーブルを個々に送信し(パケットによってというようにして)、DTC122またはディシジョン・ツリー・プロセッサー124の1つ1つにアドレスすることもでき、またはディシジョン・ツリー・テーブルを一緒に分散してもよい。ホスト104および/またはディシジョン・ツリー・スコアラー102内部のロジックが、DTC122およびディシジョン・ツリー・プロセッサー124間における個々のディシジョン・ツリー・テーブルの分散を決定することもできる。更に、DTC122が、ディシジョン・ツリー・テーブルをディシジョン・ツリー・プロセッサー124の個々の1つずつに分散するロジックを含むこともできる。
[0084] 図4は、オンチップ・マルチプロセッサー・システムのディシジョン・ツリー・プロセッサーにスコアおよび特徴ベクトルを分散するネットワークの一例を示す。具体的には、DTC122が、スコア・データーおよび特徴ベクトルを集計/処理するネットワーク・エレメントとして作用する。他の実施形態では、ディシジョン・ツリー・プロセッサーおよび/または特徴ストレージにスコアおよび/または特徴ベクトルを分散するために、他のネットワーク・タイプが採用される。これらの他の実施形態では、ディシジョン・ツリー・クラスター122がアーキテクチャの一部として含まれても、含まれなくてもよい。一実施形態では、判断プロセッサーがディシジョン・ツリー・プロセッサーのメッシュに配列されてもよく、スコアおよび/または特徴ベクトルが、ディシジョン・ツリー・プロセッサーを介して直接、そして最終的にディシジョン・ツリー・スコアラーまたは他のスコア集計エレメントに分散されてもよい。他の実施形態では、バス、メッシュ、二点間(point-to-point)、ハブおよびスポーク、または他のトポロジーであってもよいブロードキャスト・ネットワークがディシジョン・ツリー・プロセッサー(および/またはディシジョン・ツリー・クラスター122)を、ディシジョン・ツリー・スコアラー、あるいは特徴ベクトルを供給する、および/またはディシジョン・ツリー・プロセッサーからのスコアを受け取る/蓄積する/処理する他のエレメントに接続してもよい。他の実施形態では、構成データーをFPGAエレメントに分散するというような他の目的または他の機能を有するかもしれないチップ上のネットワーク(NOC)が、特徴ベクトルを分散するため、および/またはディシジョン・ツリー・プロセッサーからのスコア・データーをディシジョン・ツリー・スコアラーまたは他のスコア集計エレメントに供給するために再利用されてもよい。
[0085] スコア集計エレメントは、ディシジョン・ツリー・プロセッサーおよび/またはディシジョン・ツリー・クラスター122からのスコア・データーを受け取り蓄積することができる。スコア集計エレメントはスコア・データーを処理することができ、これには、スコア・データーを総計する、スコア・データーをリストまたはスコアのベクトルに添付する、あるいは受け取ったデーターに基づいてスコアを計算する他の何らかのアルゴリズムを実行する等を含むことができる。スコア集計エレメントは、スコア・データーを、処理後にまたは生の形態で、ホストまたは他の下流側エレメントに受け渡すことができる。
[0086] 実施形態は、別個のネットワークを、スコア・データーに1つ、特徴ベクトルに他の1つを含むこともできる。つまり、異なる実施形態では、ネットワークが特徴ネットワークであっても、スコア集計ネットワークであっても、または双方であってもよい。ある実施形態では、ディシジョン・ツリー・クラスター122が、特徴ネットワークまたはスコア・ネットワークの内一方または双方のためのネットワーク・エレメントとして作用することもできる。実施形態の範囲から逸脱することなく、他の例も可能である。
[0087] 図5は、種々の実施形態にしたがって、特殊集積回路またはプログラマブル集積回路上に実装されたディシジョン・ツリー・クラスター122のアーキテクチャ500を示す。アーキテクチャ500は、1つ以上のディシジョン・ツリー・プロセッサー124と1つ以上の特徴ストレージ126とを含む。図5に示すアーキテクチャ例500は、5つのディシジョン・ツリー・プロセッサー124と1つの特徴ストレージ126とを含むが、種々の他の実施形態では、他の数のディシジョン・ツリー・プロセッサー124および特徴ストレージ126が使用される。
[0088] DTC122は、特徴ストレージ126における格納のために特徴ベクトルを受け取る特徴入力バス・レジスター、例えば、64ビット特徴入力バス・レジスターを含む。DTC122は、DTC122の内近隣のものへの出力のためにスコアを蓄積し出力保持する(output hold)スコア出力レジスター、例えば、33ビット固定小数点スコア出力レジスターを含む。DTC122の加算器ツリーは、ディシジョン・ツリー・プロセッサー124および1つまたは2つ以上の近隣DTC122からのスコアを合計する。ディシジョン・ツリー・プロセッサー124は、ここで実行される全てのディシジョン・ツリー・スレッドが完了したときに終了フラグを出力し、更にスコアを出力する。DTC122は、終了フラグを蓄積し、加算器ツリーが近隣DTC122からのスコアをディシジョン・ツリー・プロセッサー124からのスコアに加算するときに、DTC122はスコアを1つ以上の近隣DTC122に出力する。また、この時点で、DTC122は完了信号ネットワークを通じてというようにして、完了信号をそれらの上流側DTC122に出力する。完了信号ネットワークは、特徴ベクトル、スコア・データー、および/またはディシジョン・ツリー・テーブル・データーを分散するためのDTS102内部の相互接続ネットワークと同じであっても異なってもよい。最終DTC122の場合、スコアおよび完了信号はDTS102に出力される。完了信号を受け取ったとき、DTC122およびディシジョン・ツリー・スコアラー102は、上流側のDTC122がそれらのディシジョン・ツリー実行を完了したこと、全ての入手可能なスコアが入力バス上で受け取られたこと、受け取られることを待っているスコアが他にはないこと、そしてこれらのスコアがディシジョン・ツリー・プロセッサー124のスコアに加算され、下流側のDTC122および/またはディシジョン・ツリー・スコアラー102に伝搬される準備ができたことを判定する。
[0089] 特徴ストレージ126は、ある実施形態では、1組の特徴を特徴ストレージ126にロードし、一方他の1組の特徴をディシジョン・ツリー・プロセッサー124によって読み出すことを可能にするために二重バッファ型である。一例では、特徴ストレージ126は、2つの32ビット書き込みポートを含み、特徴ストレージ126が250MHzで64ビットの特徴データーを回収する(retire)ことを可能にする。一例では、特徴ストレージ126は2つの32ビット読み取りポートを含み、特徴ストレージ126がサイクル当たり2つの8ビットの特徴を受け取ることを可能にする。特徴ストレージ126は、ディシジョン・ツリー・プロセッサー124から特徴識別子を受け取り、特徴値、例えば、8ビットの特徴値およびフラグで応答する。
[0090] ある実施形態では、特徴ストレージ126上の格納空間は、特定のディシジョン・ツリー・クラスター122のディシジョン・ツリー・プロセッサー124によって使用される特徴ベクトルの部分集合の選択的取り込み(capture)によって減少する。特徴ベクトル112内部の全ての特徴が特定のディシジョン・ツリー・クラスター122のディシジョン・ツリーによって参照される訳ではない。したがって、ある実施形態では、特定のDTC122のディシジョン・ツリー・プロセッサー124によって実行されたディシジョン・ツリーによって実際に参照された特徴値のみを取り込むことによって、特徴ストレージ126上の格納空間を減らす。このため、特定の特徴ストレージ126によって格納される特徴ベクトルの部分は、特徴ストレージ126、または特定の特徴ストレージ126が含まれるDTC122にアドレスされたパケットにおいて参照される。特徴ストレージ126には、特徴ストレージ126またはDTC122にアドレスされるパケットにおけるように、特徴ベクトルの内選択的に格納する部分を識別するマスクを供給すればよい。
[0091] 以下で更に詳細に説明するように、ディシジョン・ツリー・プロセッサー124は、複数のディシジョン・ツリーを実行することができるマルチスレッド・ツリー探索エンジンである。ディシジョン・ツリーは、ディシジョン・ツリー・プロセッサー124内部にディシジョン・ツリー・テーブルとして格納される。種々の実施形態において、ディシジョン・ツリー・テーブルは、ダイナミック・ランダム・アクセス・メモリー(DRAM)、ブロック・ランダム・アクセス・メモリー(BRAM)、スタティック・ランダム・アクセス・メモリー(SRAM)等を含むランダム・アクセス・メモリーのような、種々のメモリー・ストレージ・タイプに格納される。ある実施形態では、ディシジョン・ツリー・プロセッサー124は、以下で更に詳細に説明するような5段階パイプラインを含む。つまり、少なくとも5つの実行可能なスレッドがある限り(実行が未だ完了していない5つのディシジョン・ツリーに対応する)、ディシジョン・ツリー・プロセッサー124は各クロック・サイクルにおいてディシジョン・ツリーの1つのノードを探索し始めることができる。
マルチステージ・ツリー探索パイプライン
[0092] ある実施形態では、ディシジョン・ツリー・プロセッサーはパイプライン状アーキテクチャを含む。図6は、種々の実施形態による、ディシジョン・ツリー・プロセッサーのマルチステージ、マルチスレッド、パイプライン状ツリー探索回路600を示す。回路600は、ディシジョン・ツリー・プロセッサー内部のロジック回路上に実装される。スレッド回路(またはスレッド・ステージ)(図6では「TH」で示す)は、次のスレッドTH_THDをNEXT_THDSテーブル602から受け取る。図6に示す例では、NEXT_THDSテーブル602は32×5ビットであり、つまり32個までの5ビットの次位スレッド番号を格納し、したがって32個までのスレッドを回路600によって処理することができる。NEXT_THDSテーブル602は、スレッドのリンク・リスト(linked list)であり、初期状態では全てのスレッドがNEXT_THDSテーブル602に列挙される。スレッドが完了するに連れて(リーフ値を出力することによって)、スレッドはNEXT_THDSテーブル602から解放される(de-linked)。一旦全てのスレッドがNEXT_THDSテーブル602から解放されると、ディシジョン・ツリー・プロセッサーは完了信号をディシジョン・ツリー・クラスターに出力し、全てのスレッドが終了したことを示す。スレッド回路は、NEXT_THDSテーブル602からの次のスレッド識別子を使用して、ノード・アドレス・テーブル、NODE_ADSテーブル604およびリーフ・テーブル、LEAFSテーブル606から次のスレッドの次位ノード・アドレスのためにリード(read)を発行する。NODE_ADSテーブル604は32×13ビットであり、つまり32個までの13ビット次位ノード・アドレスをスレッド毎に1つずつ格納する。
[0093] LEAFSテーブル606は、リーフ出力フラグを格納する。LEAFSテーブル606内部の特定のスレッドに対するエントリーが出力フラグ(例えば、1または0)を格納する場合、リーフ値がディシジョン・ツリー・クラスターに出力され、スレッドはNEXT_THDSテーブル602から解放される。
[0094] リーフ出力フラグが、リーフ値が以前に選択されていないことを示す場合、次位ノード・アドレスがリード・ノード回路(またはリード・ステージ)(図6では「RN」で示す)に受け渡され、現在のスレッドに対応するノード・テーブルNTAB608に対するリードが、次位ノード記述子(next node descriptor)のために回路600によって発行される。実施形態では、NTAB608は、ディシジョン・ツリー・プロセッサーの回路内部にある専用メモリー、またそうでなければこれに関連する専用メモリーに格納される。他の実施形態では、NTAB608は、ディシジョン・ツリー・プロセッサーとは別個でありこれに通信可能に結合されたメモリーに格納される。ある実施形態では、NTAB608は複数のディシジョン・ツリー・プロセッサーによって共有されるメモリーに格納される。
[0095] ノード記述子の12ビット特徴アドレスF1_FEAT_ADおよび12ビットinfoフィールドF1_INFOは、NTAB608内に存在する場合にはオフセット値のような、次位ノード・データーと共に、回路600のF1特徴回路(またはF1特徴ステージ)に読み出される。例えば、次位左および右ノード・アドレスならびに次位左および右リーフ・フラグ値が、ロジック610によってこのステージにおいて予め計算され、ノード・アドレス、infoフィールド、および随意のrdeltaオフセット・フィールドの関数となる。infoフィールドは、ノード1、2、または0、次のサブツリー・ノード、そして1つ、2つ、または0のリーフ値があるか否か判定する。次位左および右次位ノード・アドレスは、この詳細な説明において他のところで説明するように、NTAB608内部における隣接性に基づいて、F1_RDELTA値が存在する場合にはこれに基づいて、またはinfoフィールドにおけるオフセット値のコード化から予め計算されている。ある実施形態では、現在のノードが左サブツリー・ノードである場合、次位左ノード・アドレスは、現在のノードに隣接する(直後の)ノードのアドレスとなり、次位左リーフ・フラグは偽となる。そうでない場合、現在のノードは左リーフ出力値を有し、次位左ノード・アドレスは、左リーフ値を収容する現在のノード内部のワード(1つまたは複数)のアドレスであり、次位左リーフ・フラグは真となる。事前計算は、次位右ノード・アドレスおよび次位右リーフ・フラグについても同様である。現在のノードが右サブツリー・ノードを有するが左サブツリー・ノードを有していないとき、次位右ノード・アドレスは、現在のノードに隣接する(直後の)ノードのアドレスとなり、次位右リーフ・フラグは偽となる。現在のノードが左サブツリー・ノードおよび右サブツリー・ノード双方を有するとき、次位右ノード・アドレスは、現在のノード・アドレスおよびオフセット(その値はinfoフィールド内部においてエンコードされるか、または随意のrdeltaオフセット・フィールドにおいて明示的に表される)を加算することによって決定され、次位右リーフ・フラグは偽となる。そうでない場合、現在のノードは右リーフ出力値を有し、次位右ノード・アドレスは、右リーフ値を収容する現在のノード内部のワード(1つまたは複数)のアドレスであり、次位右リーフ・フラグは真となる。
[0096] 回路600のF2特徴回路(またはF2特徴ステージ)において、F1_FEAT_ADに関連する特徴値が特徴ストレージ612(例えば、特徴ストレージ126)から読み取られる。実施形態では、FST126は、2つの異なるディシジョン・ツリー・プロセッサーによって読み取られるように構成されており、したがって、特徴ストレージ126は2つの入力および2つの出力を有することが示されている。
[0097] 回路600の実行回路(または実行ステージ)(図6では「EX」で示す)において、特徴ストレージ612から読み取られた特徴値(「EX_FEAT」)は、ロジック614によって、現在実行中のノードの閾値(EX_TH)と比較される。閾値EX_THおよび特徴値EX_FEATは、この詳細な説明において他のところで説明したように、閾値インデックス値および特徴インデックス値であってもよく、あるいはこれらは未圧縮の閾値および特徴値であってもよい。本開示の実施形態は一方または他方の使用に限定されることはない。ロジック614によって出力される比較の結末に基づいて、次位左ノード・アドレスまたは次位右ノード・アドレスが、NODE_ADSテーブル604内部のスレッドのエントリーに書き込まれる。また、ロジック614によって出力される比較の結末に基づいて、次位左リーフ・フラグまたは次位右リーフ・フラグのいずれかが、LEAFSテーブル606内部のスレッドのエントリーに書き込まれる。
[0098] 一旦実行回路が特定のスレッドに対してリーフ値を選択し、リーフ・フラグをセットしたなら、次にスレッドがパイプラインに発行されるとき、リーフ・フラグが読み取られ、NODE_ADSテーブル604内におけるノード・アドレスはノードのアドレスではなく、代わりに、NTAB608内部の以前のノード内部にあるリーフ値ワードのアドレスとなる。RN回路において、これらのリーフ値ワードはNTAB608から読み取られることによって、特徴アドレスおよびinfoフィールドの代わりに、特定のスレッドに対するリーフ値のスコア620が得られる。スコア620は、この詳細な説明において他のところで説明したように、ディシジョン・ツリー・クラスターに出力することができる。加えて、リーフ・フラグが真であるとき、スレッドはNEXT_THDSテーブル602から解除されるので、パイプラインによって再度読み込まれることはない。
[0099] 回路600の部分(TH、RN、F1、F2、およびEX)の各々は、同時にスレッドの異なるものを処理する。このように、いずれの一時点においても回路600は5つまでの異なるスレッドのある部分を処理する。これは、クロックサイクロ毎に、5つまでの異なるディシジョン・ツリーのある部分を同時に処理することに対応する。
プロセス例
[00100] 図7は、種々の実施形態にしたがってディシジョン・ツリーを実行するプロセス例700を示すフロー・グラフを表す。702において、ディシジョン・ツリー・プロセッサー、例えば、ディシジョン・ツリー・プロセッサー・パイプラインのスレッド回路またはステージが、プロセッサーによって実行する次のスレッドを決定し、次のスレッドの次位ノード・アドレスを決定するために、ノード・テーブルにリードを発行する。
[00101] 704において、ディシジョン・ツリー・プロセッサー、例えば、ディシジョン・ツリー・プロセッサー・パイプラインのリード・ノード回路またはステージは、少なくとも特徴インディケータおよび閾値を含む、ディシジョン・ツリー・ノード・ワードのような、ディシジョン・ツリー・ノード・データーを、ディシジョン・ツリー・ノード・テーブルから引き出す。ディシジョン・ツリー・ノード・データーは、ディシジョン・ツリー・プロセッサー内に格納することができる。また、ディシジョン・ツリー・ノードの部分集合は、次位ノード・オフセット値のような、次位ノード・データーも含む。
[00102] ディシジョン・ツリー・ノード実行の最終結末は、ディシジョン・ツリー・ノード実行の結果左リーフまたは右リーフ値が選択される場合のように、リーフ値の出力が、ディシジョン・ツリー探索スレッドの出力として得られる。706において、ディシジョン・ツリー・プロセッサー、例えば、ディシジョン・ツリー・プロセッサーのリード回路またはステージは、スレッドの前回のパイプライン通過の間等において、特定のスレッドに対してリーフ・フラグがセットされたか否か判定する。リーフ・フラグがセットされた場合、708において、特定のスレッドがスレッド・テーブルから解放される。710において、ディシジョン・ツリー・ノードの、1つ以上のリーフ値ワードのような、リーフ値データーが、ディシジョン・ツリー・プロセッサー・パイプラインのリード・ノード回路またはステージによって読み取られ、ディシジョン・ツリー・クラスターまたは他の何らかの出力ネットワークに出力される。
[00103] 712において、リーフ・フラグ値がセットされていない場合、ディシジョン・ツリー・プロセッサー、例えば、ディシジョン・ツリー・プロセッサー・パイプラインの特徴回路またはステージは、特徴インディケータによって識別された特徴値を特徴ストレージから読み取る。
[00104] 714において、ディシジョン・ツリー・プロセッサー、例えば、ディシジョン・ツリー・プロセッサー・パイプラインの特徴回路またはステージは、オフセット値のような次位ノード・データー、および現在実行中のノードに隣接する次のディシジョン・ツリー・ノードに基づいて、可能な次のディシジョン・ツリー・ノード・アドレスを予め計算する。また、ディシジョン・ツリー・プロセッサー、例えば、ディシジョン・ツリー・プロセッサー・パイプラインの特徴回路またはステージは、加えてまたは代わりに、現在のディシジョン・ツリー・ノードの右または左リーフ・ワードあるいは値のような、右または左リーフ・データーのアドレスを予め計算する。この詳細な説明において他のところで注記したように、ディシジョン・ツリー・ノード・テーブルのノードの部分集合は1つ以上のリーフ値を含む。リーフ・ノードの存在は、次にスレッドがパイプラインを通過するときにリーフ値を出力することを選択することが、ディシジョン・ノードの実行によって起こり得る結末であることを示す。つまり、ディシジョン・ツリー・プロセッサーは、左リーフまたは左次位ノードがあるか否かに応じて、そして実行中の特定のディシジョン・ノードにおいて右リーフ値または右次位ノードがあるか否かに基づいて、左リーフ・データー・アドレスまたは左次位ノード・アドレスの内1つ、および右リーフ・データー・アドレスまたは右次位ノード・アドレスの内1つを予め計算する。714における事前計算は、ディシジョン・ツリー・プロセッサーによるディシジョン・ノードの実行の前に行われる。
[00105] ある実施形態では、ディシジョン・ツリー・ノードのオフセット値のような次位ノード・データーを処理することによって、次のノードの位置に到達するためにオフセット値を現在のノードの位置に加算することによってというようにして、次のノード・アドレスの一部の事前計算が実行される。この詳細な説明において他のところで説明したように、オフセット値のような次位ノード・データーは、ディシジョン・ノード内部で供給されるオフセット値、またはディシジョン・ノードのinfoフィールドによってコード化されるオフセット値のような、別個の次位ノード・データーである。また、次位ノード・アドレスの事前計算は、次位ノード・アドレスの一部に対する隣接性に基づく。
[00106] 716において、ディシジョン・ツリー・プロセッサー、例えば、ディシジョン・ツリー・プロセッサー・パイプラインの実行回路またはステージは、ディシジョン・ツリー・ノードを実行する。ディシジョン・ツリー・ノードの実行は、ディシジョン・ツリー・ノードの閾値を、特徴ストレージから引き出された特徴値と比較することを含む。この詳細な説明において他のところで説明したように、閾値は閾値インデックス値でもよく、特徴値は特徴インデックス値でもよい。
[00107] 718において、ディシジョン・ツリー・プロセッサー、例えば、ディシジョン・ツリー・プロセッサー・パイプラインの実行回路またはステージは、次にスレッドがパイプラインに読み込まれるときに、引き出され実行されるスレッドのために次のディシジョン・ツリー・ノードを決定し、および/または出力されるリーフ値を収容するリーフ・データーのアドレスを決定する。次のディシジョン・ツリー・ノード、またはリーフ・データーのアドレスの選択は、ディシジョン・ツリー・ノードを実行した結末に基づいて決定される。比較のある結末では(特徴値が閾値以下である場合のように)、次位ノード・オフセット値のような次位ノード・データーに基づいて、次のディシジョン・ツリー・ノードを決定することになる。比較の他の結末では(特徴値が閾値よりも大きい場合というように)、ディシジョン・ツリー・プロセッサー内部のディシジョン・ツリーに関連付けられたディシジョン・ツリー・テーブル内部で現在実行中のノードに隣接する次のディシジョン・ツリー・ノードを決定することになる。
[00108] 720において、ディシジョン・ツリー・プロセッサーによって、例えば、ディシジョン・ツリー・プロセッサーのスレッド回路またはステージによって、全てのスレッドが回収されたか否か判定が行われる。710においてスレッドがリーフ値を出力し完了しているので、これらは708においてディシジョン・ツリー・スレッドのリンク・リストから解放される。全てのリンクが解放されたとき、このディシジョン・ツリー・プロセッサー124におけるディシジョン・ツリーの実行が完了する。各スレッドは1つのディシジョン・ツリーに対応し、つまり、一旦全てのスレッドが完了したなら、ディシジョン・ツリー・プロセッサーは完了信号を出力し、ディシジョン・ツリー実行からの1つ以上のスコアを出力する。
[00109] 図8は、種々の実施形態にしたがって、ディシジョン・ツリー・スコアラーによって複数のディシジョン・ツリーに採点するプロセス800を示す。802において、ディシジョン・ツリー・スコアラー102は、ホスト104または他の上流側処理システムからモデル・コンテキスト108を受け取る。804において、ディシジョン・ツリー・スコアラー102は、モデル・コンテキスト108を複数のディシジョン・ツリー・クラスター122にロードする。
[00110] 806において、ディシジョン・ツリー・スコアラー102は、ホスト104または上流側処理システムから特徴ベクトル112を受け取る。808において、ディシジョン・ツリー・スコアラー102は、特徴ベクトル112をディシジョン・ツリー・クラスター122の内第1ディシジョン・ツリー・クラスターに供給する。このように、ある実施形態では、共通の特徴ベクトルがディシジョン・ツリー・クラスター122およびディシジョン・ツリー・プロセッサー124に供給される。
[00111] 810において、ディシジョン・ツリー・スコアラー102は、最終的なスコア、およびディシジョン・ツリー・クラスターが複数のディシジョン・ツリーによる特徴ベクトルの採点を完了したことを示す完了信号をディシジョン・ツリー・クラスター122の内の1つから受け取る。812において、ディシジョン・ツリー・スコアラー102は、最終スコアをホスト104または下流側処理システムに供給する。ある実施形態では、下流側の処理システムが他のディシジョン・ツリー・スコアラーまたは他のシステムを含んでもよい。
[00112] 図9は、種々の実施形態にしたがって、ディシジョン・ツリー・クラスターによって複数のディシジョン・ツリーを採点するプロセス900を示す。902において、ディシジョン・ツリー・クラスター(DTC)122はディシジョン・ツリー・スコアラー102または近隣DTC122から特徴ベクトル(共通の特徴ベクトルのような)を受け取る。904において、DTC122は特徴ベクトルを他の近隣DTC122に供給する。このように、特徴ベクトルはディシジョン・ツリー・スコアラー内部の全てのDTCに分散される。
[00113] 906において、ディシジョン・ツリー・クラスター122は、複数のDTC122内部の複数のディシジョン・ツリー・プロセッサー124に、DTC122上にロードされたモデル・コンテキスト内で複数のディシジョン・ツリーの実行を開始させる。複数のディシジョン・ツリーの実行は、同時であってもよく、更にマルチスレッド、マルチステージ、パイプライン型ディシジョン・ツリー・プロセッサーによって実行されてもよい。ディシジョン・ツリーの実行は、とりわけ、閾値(または閾値インデックス値)の共通特徴ベクトルの特徴値(または特徴インデックス値)との比較、およびこの比較に基づく次のノードおよび/または出力値の選択を含む。ディシジョン・ツリーの実行により、複数のディシジョン・ツリーのそれぞれに対して対応する採点が得られる。
[00114] 908において、DTC122は、ディシジョン・ツリー・プロセッサー124上におけるディシジョン・ツリーの実行から得られた、対応するスコアおよび完了信号をディシジョン・ツリー・プロセッサー124から受け取る。910において、DTC122は、近隣DTC122からスコアおよび完了信号を受け取る。
[00115] 912において、完了信号およびスコアの受け取りに基づいて、DTC122は、DTC122内部のディシジョン・ツリー・プロセッサー124からのスコアを、近隣DTC122からのスコアと共に処理する。例えば、DTC122はこれらのスコアを総計して、蓄積スコアを生成する。他の例では、DTC122は、DTC122内部のディシジョン・ツリー・プロセッサー124からのスコア、またはスコアの総計を、近隣DTC122から受け取ったスコア・データーに添付することができる。
[00116] 914において、DTC122は蓄積スコアおよび完了信号を近隣DTC122に伝搬し、最終的にDTC122の内最後の1つに到達する。最後のDTC122は最終スコアをディシジョン・ツリー・スコアラー102に供給する。このように、DTC122の各々の内部にあるディシジョン・ツリー・プロセッサー124上で実行するディシジョン・ツリーの各々からの個々のスコアが、ディシジョン・ツリー・プロセッサーの個々の1つずつからのスコアの最終的な総計あるいはスコアのリストまたは集合のような、最終スコア・データーに蓄積され、ディシジョン・ツリー・スコアラー102に伝搬される。
[00117] 図10は、種々の実施形態にしたがって複数のディシジョン・ツリーの閾値をコード化するプロセス1000を示す。1002において、ディシジョン・ツリー・コーダー106は、モデル・コンテキスト1008内にあるものというような、特定の特徴に対応する複数のディシジョン・ツリーの全てのディシジョン・ノードにおいて参照された全ての閾値を識別する。
[00118] 1004において、ディシジョン・ツリー・コーダー106は、1つ以上のディシジョン・ツリーにおける特定の特徴に関連付けられた一意の閾値のリストを決定する。ある実施形態では、このリストは、昇順または降順でというように、並び替えられる。1006において、ディシジョン・ツリー・コーダー106は、少なくとも部分的に、1つ以上のディシジョン・ツリーにおける特定の特徴に関連付けられた一意の閾値の並び替えリストにおける値の数に基づいて、閾値の閾値インデックス値を表すために使用されるビット数を決定する。
[00119] 特定的な一例では、特定の特徴に関連付けられた閾値の総数の底を2とする対数(base-2-logarithm)が4未満である場合、閾値インデックスは4ビット・ワードとしてコード化され、特定の特徴に関連付けられた閾値の総数の底を2とする対数が8未満である場合、閾値インデックスは8ビット・ワードとしてコード化される。特定の特徴に関連付けられた閾値の総数の底を2とする対数が8よりも大きい場合、特定の特徴を表す特徴の数がn/255によって決定されるように、コード化ディシジョン・ツリーにおいて特定の特徴を表すために多数の特徴が使用される。ここで、nはこの詳細な説明において他のところで説明したように、特定の特徴に関連付けられた閾値の総数に等しい。これらの多数の特徴に対する閾値を表すために、8ビット・ワードが使用される。他の実施形態では、ディシジョン・ツリーは、一意の閾値の数が所定値を超える1つのノードの代わりに、多数のディシジョン・ノードを含むように変更される。実施形態の範囲から逸脱することなく、他の例も可能である。
[00120] 1008において、ディシジョン・ツリー・コーダー106は、一意の閾値のリストに対して、複数の閾値インデックス値を決定する。ある実施形態では、小さい閾値に関連付けられた閾値インデックス値の方が大きい閾値に関連付けられた閾値インデックス値よりも小さくなるように、インデックス値が並び替えリストに指定されるが、他の実施形態では、大きい方のインデックス値程、小さい方の閾値に指定される。特定的な一例では、一意の閾値の内最も小さい1つに、0の閾値インデックス値が指定され、最も大きな1つに、一意の閾値の総数から1を減じた値に等しい閾値インデックス値が指定される。実施形態の範囲から逸脱することなく、他の例も可能である。
[00121] 1010において、ディシジョン・ツリー・コーダー106は、特定の特徴に関連付けられた1つ以上のディシジョン・ツリーのディシジョン・ノードが閾値インデクス値を含むように、1つ以上のディシジョン・ツリーを表す。プロセス1000は、複数のディシジョン・ツリーにおける全ての閾値が閾値インデックス値でコード化されるまで、複数のディシジョン・ツリーの少なくとも1つのディシジョン・ノードにおいて参照された特徴毎に繰り返される。
[00122] 図11は、種々の実施形態にしたがって特徴値のベクトルをコード化するプロセス1100を示す。図10に関して先に説明したように、各特徴に対する閾値がコード化される。1組のコード化ディシジョン・ツリーと対照して採点される特徴ベクトルの特徴値は、特徴値がコード化閾値と共用できるようにコード化される。1102において、特徴ベクトル・コーダー110は、複数のディシジョン・ツリーによって採点されることになる特徴ベクトル112を受け取る。
[00123] 1104において、特徴ベクトル・コーダー110は、特定の特徴に関連付けられた特徴値を、特定の特徴に対応する閾値(例えば、以上で説明したリストts)と比較する。1106において、特徴ベクトルにおける特定の特徴に対応する特徴値が、複数のディシジョン・ツリーにおいて特定の特徴に関連付けられた1組の閾値における最も大きな閾値よりも大きいか否かについて、特徴ベクトル・コーダー110によって判定が行われる。
[00124] 1108において、特徴値が最も大きな閾値よりも大きくないと判定したとき(「NO」パス)、特徴ベクトル・コーダー110は、特徴値以上である一意の閾値のリストの中で最も小さい1つを識別する。
[00125] 1110において、特徴ベクトル・コーダー110は、一意の閾値の並び替えリストの内最も小さな1つに対応する、並び替え閾値インデックス値の内の特定の1つに等しいコード化特徴値(例えば、特徴インデックス値)を生成するために、特徴値をコード化する。
[00126] 1112において、特徴値が最も大きな閾値よりも大きいと判定したとき(「YES」パス)、特徴ベクトル・コーダー110は、特徴インデックス値を、最も大きな閾値インデックス値よりも大きくなるように設定する。特定的な一例では、特徴インデックス値は、特徴に関連付けられた一意の閾値の総数に等しく設定されるが、最も大きな閾値インデックス値より大きい任意の数を使用することができる。このように、ディシジョン・ツリー実行(ディシジョン・ツリー・プロセッサー124によるというような)中における閾値インデックス値の対応する特徴インデックス値との比較の結末が、対応する閾値の対応する特徴値との比較の結末と同等になるように、特徴インデックス値が設定される。
[00127] 図7〜図11のプロセス例の動作は、個別のブロックで示され、これらのブロックを参照して概説された。これらの動作を説明した順序は、限定と解釈されることは意図しておらず、任意の数の説明した動作を任意の順序で組み合わせることができ、下位動作に分けることができ、および/またはプロセスを実施するために並列に実行することができる。本開示の種々の実施形態によるプロセスは、論理フロー・グラフに表した動作の一部だけまたは全てを含むこともある。
計算システム例
[00128] 図12は、本明細書において説明した種々の方法を実行するために使用可能な計算システム例1200のブロック図である。計算システム1200は、ホスト104のようにな、ディシジョン・ツリー採点システムの全部または一部を実現することが可能な任意の適した計算デバイスとして構成することができる。非限定的な種々の例によれば、適した計算デバイスは、パーソナル・コンピューター(PC)、ハンドヘルド・デバイス、ウェアラブル・スマート・デバイス、スマートフォン、タブレット・コンピューター、ラップトップ・コンピューター、デスクトップ・コンピューター、ゲーミング・システム、電子メディア・プレーヤ(mp3プレーヤおよび電子書籍リーダーのような)、サーバー、サーバー・ファーム、データーセンター、特殊目的コンピューター、これらの組み合わせ、あるいは本明細書において説明したディシジョン・ツリー採点システムの全部または一部を格納および実行することができる任意の他の計算デバイス(1つまたは複数)を含むことができる。
[00129] 一構成例では、計算システム1200は1つ以上のプロセッサー1202とメモリー1204とを含む。また、計算システム1200は、種々の他のシステムとの通信を可能にする通信接続(1つまたは複数)1206も内蔵することができる。また、計算システム1200は、キーボード、マウス、ペン、音声入力デバイス、タッチ入力デバイス等のような1つ以上の入力デバイス1208と、ディスプレイ、スピーカー、プリンター等のような1つ以上の出力デバイス1210とを含むことができ、これらはプロセッサー(1つまたは複数)1202およびメモリー1204に通信可能に結合される。
[00130] メモリー1204は、プロセッサー(1つまたは複数)1202上にロード可能および実行可能なプログラム命令、ならびにこれらのプログラムの実行中に生成されたデーター、および/またはこれらのプログラムと共に使用可能なデーターを格納することができる。図示する例では、メモリー1204は、計算システム1200の基本システム機能を提供し、とりわけ、計算システム1200の他のプログラムおよびプログラム・モジュールの動作を可能にする(provide for)オペレーティング・システム1212を格納する。
コンピューター読み取り可能媒体
[00131] 使用する計算デバイスの構成およびタイプに応じて、図12における計算システム1200のメモリー1204は、揮発性メモリー(ランダム・アクセス・メモリー(RAM)のような)および/または不揮発性メモリー(リード・オンリー・メモリー(ROM)、フラッシュ・メモリー等のような)を含むことができる。また、メモリー1204は、追加のリムーバブル・ストレージおよび/または非リムーバブル・ストレージも含むことができ、フラッシュ・メモリー、磁気ストレージ、光ストレージ、および/またはコンピューター読み取り可能命令、データー構造、プログラム・モジュール、および計算システム1200のための他のデーターの不揮発性格納を提供することができるテープ・ストレージを含むが、これらに限定されるのではない。
[00132] メモリー1204は、コンピューター読み取り可能媒体の一例である。コンピューター読み取り可能媒体は、少なくとも2つのタイプのコンピューター読み取り可能媒体、即ち、コンピューター記憶媒体および通信媒体を含む。コンピューター記憶媒体は、揮発性および不揮発性、リムーバブルおよび非リムーバブル媒体を含み、コンピューター読み取り可能命令、データー構造、プログラム・モジュール、または他のデーターのような情報の格納のための任意のプロセスまたは技術で実現される。コンピューター記憶媒体は、相変化メモリー(PRAM)、スタティック・ランダム・アクセス・メモリー(SRAM)、ダイナミック・ランダム・アクセス・メモリー(DRAM)、他のタイプのランダム・アクセス・メモリー(RAM)、リード・オンリー・メモリー(ROM)、電気的消去可能プログラマブル・リード・オンリー・メモリー(EEPROM)、フラッシュ・メモリーまたは他のメモリー技術、コンパクト・ディスク・リード・オンリー・メモリー(CD−ROM)、ディジタル・バーサタイル・ディスク(DVD)または他の光ストレージ、磁気カセット、磁気テープ、磁気ディスク・ストレージまたは他の磁気記憶デバイス、あるいは計算デバイスによるアクセスのために情報を格納するために使用することができる任意の他の非伝送媒体を含むが、これらに限定されるのではない。対照的に、通信媒体は、コンピューター読み取り可能命令、データー構造、プログラム・モジュール、またはその他のデーターを、搬送波のような変調データー信号、あるいは他の伝送メカニズムに具体化することができる。本明細書において定義する場合、コンピューター記憶媒体は通信媒体を含まない。
結論
[00133] 本開示では、構造的特徴および/または方法論的アクトに特定的な文言を使用したが、本発明は、説明した具体的な特徴やアクトに限定されるのではない。逆に、具体的な特徴およびアクトは、本発明を実現する実証的な形態として開示したまでである。

Claims (10)

  1. プログラマブル集積回路上に格子状に配列された複数のディシジョン・ツリー・クラスターを備えるディシジョン・ツリー採点ハードウェア・システムであって、
    前記複数のディシジョン・ツリー・クラスターの各々は、
    各々が並列に実行可能な1又は複数のディシジョン・ツリーを有する複数のディシジョン・ツリー・プロセッサーと、
    二重バッファ型特徴ストレージであって、第1の組の共通特徴ベクトルを前記二重バッファ型特徴ストレージに書き込むことと、前記複数のディシジョン・ツリー・プロセッサーの各々に対して、前記二重バッファ型特徴ストレージに格納された第2の組の共通特徴ベクトルへのアクセスを提供することとを、同時に行うように構成された二重バッファ型特徴ストレージと、
    を備え、
    各々が第1の複数の全体ディシジョン・ツリーを有する前記複数のディシジョン・ツリー・クラスターの部分集合は、前記複数のディシジョン・ツリー・クラスターのうちの隣接する少なくとも1つから、第2の複数の全体ディシジョン・ツリーの実行によって生成されたスコア・データーを受け取るように構成され、
    前記複数のディシジョン・ツリー・クラスターの前記部分集合の各々は、前記受け取られたスコア・データーを前記ディシジョン・ツリー・クラスター内の前記第1の複数の全体ディシジョン・ツリーから生成されたスコア・データーとともに処理して、総合スコア・データーを生成するように構成される、
    ディシジョン・ツリー採点ハードウェア・システム。
  2. 前記複数のディシジョン・ツリー・プロセッサーのうちの第1のものが、更に、前記第2の組の共通特徴ベクトルに関する前記ディシジョン・ツリーのうちの第1のものを、前記ディシジョン・ツリー・プロセッサーのうちの第2のものによる前記第2の組の共通特徴ベクトルに関する前記ディシジョン・ツリーのうちの第2のものの実行と同時に実行する、請求項1に記載のディシジョン・ツリー採点ハードウェア・システム。
  3. 前記複数のディシジョン・ツリー・プロセッサーの第2の部分集合と、前記第2の組の共通特徴ベクトルを格納するための特徴ストレージとを備えたディシジョン・ツリー・クラスターを更に備え、前記特徴ストレージは、前記ディシジョン・ツリー・クラスター内の前記複数のディシジョン・ツリー・プロセッサーの前記第2の部分集合によってアクセス可能である、請求項1に記載のディシジョン・ツリー採点ハードウェア・システム。
  4. 第1のディシジョン・ツリー・クラスター及び第2のディシジョン・ツリー・クラスターを更に備え、
    前記第1のディシジョン・ツリー・クラスターは、
    前記複数のディシジョン・ツリー・プロセッサーの第1の部分集合と、
    前記複数のディシジョン・ツリー・プロセッサーの前記第1の部分集合によってアクセス可能な、前記第2の組の共通特徴ベクトルを格納するための第1の特徴ストレージと、
    を備え、
    前記第2のディシジョン・ツリー・クラスターは、
    前記複数のディシジョン・ツリー・プロセッサーの第2の部分集合と、
    前記複数のディシジョン・ツリー・プロセッサーの前記第2の部分集合によってアクセス可能な、前記第2の組の共通特徴ベクトルを格納するための第2の特徴ストレージと、
    を備える、請求項1に記載のディシジョン・ツリー採点ハードウェア・システム。
  5. 前記ディシジョン・ツリー・プロセッサーの少なくとも1つが、前記1又は複数のディシジョン・ツリーの実行の結末に基づいてスコアを出力し、前記ディシジョン・ツリー採点ハードウェア・システムが、更に、前記ディシジョン・ツリー・プロセッサーによって出力されたスコアを収集するためのスコア集計ネットワークを備える、請求項1に記載のディシジョン・ツリー採点ハードウェア・システム。
  6. ディシジョン・ツリー・プロセッサーの部分集合を備えるディシジョン・ツリー・クラスターの第2の部分集合であって、前記ディシジョン・ツリー・クラスターの第2の部分集合のうちの第1のものが、前記ディシジョン・ツリー・クラスターの第2の部分集合のうちの第2のものから共通の1組の特徴を受け取り、前記共通の1組の特徴を前記ディシジョン・ツリー・クラスターの第2の部分集合のうちの第3のものに伝搬させる、ディシジョン・ツリー・クラスターの第2の部分集合と、
    前記共通の1組の特徴を前記複数のディシジョン・ツリー・プロセッサーの各々に供給するように前記複数のディシジョン・ツリー・プロセッサーに結合された特徴ネットワークと、
    のうちの一方又は両方を更に備える、請求項1に記載のディシジョン・ツリー採点ハードウェア・システム。
  7. ログラマブル集積回路上に格子状に配列された複数のディシジョン・ツリー・クラスターの各々において、当該各々が有する二重バッファ型特徴ストレージに第1の共通特徴ベクトルを同時に書き込むステップであって、前記複数のディシジョン・ツリー・クラスターの各々は、オンチップ・ディシジョン・ツリー採点システム内に実装された複数のディシジョン・ツリー・プロセッサーを有する、ステップと、
    前記複数のディシジョン・ツリー・プロセッサーの各々において、第2の共通特徴ベクトルを受け取るステップと、
    前記複数のディシジョン・ツリー・プロセッサーの各々において、前記第2の共通特徴ベクトルを参照して、1又は複数のディシジョン・ツリーを並列に実行するステップと、
    各々が第1の複数の全体ディシジョン・ツリーを有する前記複数のディシジョン・ツリー・クラスターの部分集合によって、前記複数のディシジョン・ツリー・クラスターのうちの隣接する少なくとも1つから、第2の複数の全体ディシジョン・ツリーの実行によって生成されたスコア・データーを受け取るステップと、
    前記複数のディシジョン・ツリー・クラスターの前記部分集合の各々によって、前記受け取られたスコア・データーを前記ディシジョン・ツリー・クラスター内の前記第1の複数の全体ディシジョン・ツリーから生成されたスコア・データーとともに処理して、総合スコア・データーを生成するステップと、
    を含む方法。
  8. 前記複数のディシジョン・ツリー・クラスターの少なくとも1つにおいて、前記複数のディシジョン・ツリーを実行したことの結末に基づく前記複数のディシジョン・ツリーの少なくとも1つに対するスコアを、スコア集計ネットワークに出力するステップを更に含む、請求項7に記載の方法。
  9. 前記ディシジョン・ツリー・プロセッサーの少なくとも1つによって、前記二重バッファ型特徴ストレージに第3の共通特徴ベクトルをロードするステップと、
    前記ディシジョン・ツリー・プロセッサーの少なくとも1つによって、前記複数のディシジョン・ツリーの少なくとも1つを実行するステップであって、前記実行するステップは、前記二重バッファ型特徴ストレージから前記第3の共通特徴ベクトルの1又は複数の特徴を読み出すステップを含む、ステップと、
    を同時に行うことを更に含む、請求項7に記載の方法。
  10. 複数のディシジョン・ツリー・クラスターにわたって前記第1の共通特徴ベクトルを伝搬させるステップであって、前記伝搬させるステップは、前記複数のディシジョン・ツリー・クラスターの少なくとも1つによって、第1近隣ディシジョン・ツリー・クラスターから前記第1の共通特徴ベクトルを受け取るステップを含む、ステップと、
    前記複数のディシジョン・ツリー・クラスターの少なくとも1つによって、前記第1の共通特徴ベクトルを第2近隣ディシジョン・ツリー・クラスターに受け渡すステップと、
    を更に含む、請求項7に記載の方法。
JP2017501068A 2014-03-17 2015-03-12 並列ディシジョン・ツリー・プロセッサー・アーキテクチャ Active JP6605573B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/216,990 US10332008B2 (en) 2014-03-17 2014-03-17 Parallel decision tree processor architecture
US14/216,990 2014-03-17
PCT/US2015/020050 WO2015142595A1 (en) 2014-03-17 2015-03-12 Parallel decision tree processor architecture

Publications (3)

Publication Number Publication Date
JP2017517082A JP2017517082A (ja) 2017-06-22
JP2017517082A5 JP2017517082A5 (ja) 2018-04-19
JP6605573B2 true JP6605573B2 (ja) 2019-11-13

Family

ID=52774572

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017501068A Active JP6605573B2 (ja) 2014-03-17 2015-03-12 並列ディシジョン・ツリー・プロセッサー・アーキテクチャ

Country Status (14)

Country Link
US (1) US10332008B2 (ja)
EP (1) EP3120262A1 (ja)
JP (1) JP6605573B2 (ja)
KR (1) KR102376117B1 (ja)
CN (1) CN106133721B (ja)
AU (1) AU2015231828A1 (ja)
CA (1) CA2939959A1 (ja)
CL (1) CL2016002294A1 (ja)
IL (1) IL247166A0 (ja)
MX (1) MX2016011670A (ja)
PH (1) PH12016501639A1 (ja)
RU (1) RU2016136985A (ja)
SG (1) SG11201607431XA (ja)
WO (1) WO2015142595A1 (ja)

Families Citing this family (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150262062A1 (en) * 2014-03-17 2015-09-17 Microsoft Corporation Decision tree threshold coding
US20170004455A1 (en) * 2015-06-30 2017-01-05 Linkedin Corporation Nonlinear featurization of decision trees for linear regression modeling
US10699213B2 (en) * 2016-03-07 2020-06-30 Micron Technology, Inc. Space efficient random decision forest models implementation utilizing automata processors
CN108319991B (zh) * 2017-01-16 2021-02-09 航天信息股份有限公司 一种节点工程布线图确定方法及装置
CN106971528A (zh) * 2017-03-31 2017-07-21 上海智觅智能科技有限公司 一种压缩红外空调遥控码库的算法
EP3422245B1 (en) * 2017-06-28 2022-02-16 NXP USA, Inc. Methods, processing engines, and microprocessors for classifying data according to decision trees
US11216431B2 (en) * 2017-09-12 2022-01-04 Apple Inc. Providing a compact representation of tree structures
CN108170769A (zh) * 2017-12-26 2018-06-15 上海大学 一种基于决策树算法的装配制造质量数据处理方法
JP7069898B2 (ja) * 2018-03-16 2022-05-18 株式会社リコー 学習識別装置および学習識別方法
US11534917B2 (en) * 2018-03-29 2022-12-27 Intel Corporation Methods, systems, articles of manufacture and apparatus to improve resource utilization for binary tree structures
CN109086815B (zh) * 2018-07-24 2021-08-31 中国人民解放军国防科技大学 基于fpga的决策树模型中的浮点数离散化方法
US10602207B2 (en) * 2018-08-03 2020-03-24 Facebook, Inc. Neural network based content distribution in an online system
JP7095479B2 (ja) * 2018-08-10 2022-07-05 株式会社リコー 学習装置および学習方法
CN109376590A (zh) * 2018-09-07 2019-02-22 百度在线网络技术(北京)有限公司 基于无人车的障碍物分类方法、装置、设备以及存储介质
JP7176359B2 (ja) * 2018-11-05 2022-11-22 株式会社リコー 学習装置および学習方法
JP7196542B2 (ja) * 2018-11-05 2022-12-27 株式会社リコー 学習装置および学習方法
US20200160450A1 (en) * 2018-11-19 2020-05-21 Jpmorgan Chase Bank, N.A. Systems and methods for decision tree-based management of market risk stress scenarios
US11206287B2 (en) * 2019-01-29 2021-12-21 Battelle Memorial Institute Evaluating cyber-risk in synchrophasor systems
US10657603B1 (en) * 2019-04-03 2020-05-19 Progressive Casualty Insurance Company Intelligent routing control
CN111027435B (zh) * 2019-12-02 2022-12-02 清华大学 一种基于梯度提升决策树的识别系统、装置和方法
US10998047B1 (en) 2020-01-15 2021-05-04 Hewlett Packard Enterprise Development Lp Methods and systems for an analog CAM with fuzzy search
WO2021255171A1 (en) * 2020-06-19 2021-12-23 Albert-Ludwigs-Universität Freiburg Architecture for classification of a decision tree ensemble and method
US11615827B2 (en) * 2020-10-15 2023-03-28 Hewlett Packard Enterprise Development Lp Hardware accelerator with analog-content addressable memory (a-CAM) for decision tree computation
US12443891B2 (en) 2021-08-25 2025-10-14 International Business Machines Corporation Vector processing of decision trees to form inferences
CN113935633B (zh) * 2021-10-19 2025-06-17 京东科技控股股份有限公司 特征评估方法和装置、计算机可读存储介质、电子设备
CN117851399A (zh) * 2022-09-30 2024-04-09 戴尔产品有限公司 数据读取方法、数据更新方法、电子设备和程序产品

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5020059A (en) 1989-03-31 1991-05-28 At&T Bell Laboratories Reconfigurable signal processor
EP0443130A3 (en) * 1990-02-22 1992-12-30 International Business Machines Corporation Processor allocation method and apparatus for multiprocessor execution of a constraint satisfaction search
US5146540A (en) 1990-02-22 1992-09-08 International Business Machines Corp. Processor allocation method and apparatus for multiprocessor execution of a constraint satisfaction search
US6212628B1 (en) * 1998-04-09 2001-04-03 Teranex, Inc. Mesh connected computer
US6571210B2 (en) 1998-11-13 2003-05-27 Microsoft Corporation Confidence measure system using a near-miss pattern
US8195705B2 (en) 2001-12-11 2012-06-05 International Business Machines Corporation Hybrid search memory for network processor and computer systems
US7246102B2 (en) 2001-12-21 2007-07-17 Agere Systems Inc. Method of improving the lookup performance of three-type knowledge base searches
US6938049B2 (en) 2002-06-11 2005-08-30 The Regents Of The University Of California Creating ensembles of decision trees through sampling
US8117137B2 (en) 2007-04-19 2012-02-14 Microsoft Corporation Field-programmable gate array based accelerator system
US8650144B2 (en) 2008-02-14 2014-02-11 Yahoo! Inc. Apparatus and methods for lossless compression of numerical attributes in rule based systems
US7877724B2 (en) 2008-05-09 2011-01-25 Lsi Corporation Decision tree representation of a function
US8533129B2 (en) 2008-09-16 2013-09-10 Yahoo! Inc. Efficient data layout techniques for fast machine learning-based document ranking
US8687893B2 (en) 2011-03-31 2014-04-01 Microsoft Corporation Classification algorithm optimization
US9384278B2 (en) 2011-04-07 2016-07-05 Ebay Inc. Methods and systems for assessing excessive accessory listings in search results
US8879831B2 (en) 2011-12-15 2014-11-04 Microsoft Corporation Using high-level attributes to guide image processing
US9292767B2 (en) * 2012-01-05 2016-03-22 Microsoft Technology Licensing, Llc Decision tree computation in hardware utilizing a physically distinct integrated circuit with on-chip memory and a reordering of data to be grouped
US10152674B2 (en) * 2012-01-16 2018-12-11 Texas Instruments Incorporated Accelerated decision tree execution
CN103532908B (zh) 2012-07-02 2017-06-16 清华大学 一种基于二级决策树的p2p协议识别方法
CN102902871A (zh) 2012-07-03 2013-01-30 成都中医药大学 针灸临床循证决策支持系统及其应用方法
CN103546441B (zh) 2012-07-16 2016-12-21 清华大学 基于多级决策树的协议识别方法
EP2746991A1 (en) 2012-12-21 2014-06-25 Nederlandse Organisatie voor toegepast -natuurwetenschappelijk onderzoek TNO Image pattern recognition system and method
US20150262063A1 (en) 2014-03-17 2015-09-17 Microsoft Corporation Decision tree processors
US20150262062A1 (en) 2014-03-17 2015-09-17 Microsoft Corporation Decision tree threshold coding

Also Published As

Publication number Publication date
CN106133721A (zh) 2016-11-16
JP2017517082A (ja) 2017-06-22
AU2015231828A1 (en) 2016-09-08
EP3120262A1 (en) 2017-01-25
US10332008B2 (en) 2019-06-25
CA2939959A1 (en) 2015-09-24
CN106133721B (zh) 2019-10-01
WO2015142595A1 (en) 2015-09-24
SG11201607431XA (en) 2016-10-28
KR102376117B1 (ko) 2022-03-17
RU2016136985A3 (ja) 2018-10-24
KR20160132853A (ko) 2016-11-21
MX2016011670A (es) 2016-11-07
CL2016002294A1 (es) 2017-03-24
PH12016501639A1 (en) 2016-10-03
IL247166A0 (en) 2016-09-29
US20150262064A1 (en) 2015-09-17
RU2016136985A (ru) 2018-03-20

Similar Documents

Publication Publication Date Title
JP6605573B2 (ja) 並列ディシジョン・ツリー・プロセッサー・アーキテクチャ
US20150262062A1 (en) Decision tree threshold coding
Mitchell et al. Xgboost: Scalable GPU accelerated learning
JP5995409B2 (ja) コンピュータ解析のためにテキスト文書を表現するためのグラフィカル・モデル
CN109791492B (zh) 流水线相关树查询优化器和调度器
US10025773B2 (en) System and method for natural language processing using synthetic text
US20150262063A1 (en) Decision tree processors
US8762655B2 (en) Optimizing output vector data generation using a formatted matrix data structure
US20110066806A1 (en) System and method for memory bandwidth friendly sorting on multi-core architectures
US20120143932A1 (en) Data Structure For Tiling And Packetizing A Sparse Matrix
US9823911B2 (en) Method and apparatus for compiling code based on a dependency tree
US11288266B2 (en) Candidate projection enumeration based query response generation
US9213548B2 (en) Code generation method and information processing apparatus
Jiang et al. A parallel fp-growth algorithm based on gpu
CN110852046B (zh) 一种文本后缀索引的分块归纳排序方法及系统
US10990073B2 (en) Program editing device, program editing method, and computer readable medium
US9182960B2 (en) Loop distribution detection program and loop distribution detection method
KR102890191B1 (ko) 패턴 기반 캐시 블록 압축
US20130173647A1 (en) String matching device based on multi-core processor and string matching method thereof
Lee et al. G-kway: Multilevel gpu-accelerated k-way graph partitioner using task graph parallelism
Quirino et al. Efficient filter-based algorithms for exact set similarity join on GPUs
CN115964164A (zh) 计算机实现的方法、硬件加速器以及存储介质
CN112100446B (zh) 搜索方法、可读存储介质和电子设备
HK1226839A1 (en) Parallel decision tree processor architecture
Lu et al. Frequent item set mining algorithm based on bit combination

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180312

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20180312

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20190426

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20190510

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190813

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20190917

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20191016

R150 Certificate of patent or registration of utility model

Ref document number: 6605573

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: R3D02