(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2023-07-12
(54)【発明の名称】決定木アンサンブルの分類のためのアーキテクチャと方法
(51)【国際特許分類】
G06N 20/20 20190101AFI20230705BHJP
【FI】
G06N20/20
【審査請求】有
【予備審査請求】未請求
(21)【出願番号】P 2022577210
(86)(22)【出願日】2021-06-17
(85)【翻訳文提出日】2023-02-13
(86)【国際出願番号】 EP2021066411
(87)【国際公開番号】W WO2021255171
(87)【国際公開日】2021-12-23
(31)【優先権主張番号】102020116293.6
(32)【優先日】2020-06-19
(33)【優先権主張国・地域又は機関】DE
(81)【指定国・地域】
(71)【出願人】
【識別番号】509250021
【氏名又は名称】アルベルト‐ルートヴィヒス‐ウニヴェルズィテート フライブルク
(74)【代理人】
【識別番号】110002952
【氏名又は名称】弁理士法人鷲田国際特許事務所
(72)【発明者】
【氏名】コルミッツ ヤン
(72)【発明者】
【氏名】マノリ ヤノス
(72)【発明者】
【氏名】ブライトナー アレクサンダー
(57)【要約】
決定木アンサンブルの分類のためのアーキテクチャが、ランクコンピューティングブロック(1)及び木処理ブロック(2)を含む。ランクコンピューティングブロック(1)は、分類すべき特徴fiごとに1つの計算ユニット(10)を含み、各計算ユニット(10)が、メモリ(11)及びロジック(12)を含む。メモリ(11)は、決定木アンサンブル内の木の閾値を保存するように構成され、メモリが、分類すべき特徴ごとに1つのグループに閾値を保存するように準備される。グループ内の閾値は、閾値インデックスに従ってソートされる。ロジック(12)は、対応する閾値のグループの閾値のノード比較を行い、前記比較の結果としてランクを出力するように準備されており、ランクは、前記閾値にアクセスするためのエンコードされたアドレスに相当する。木処理ブロック(2)は、決定木アンサンブル内の木ごとに1つの木処理ユニット(20)を含み、各処理ユニットが、ランクの関数として分類すべき特徴fiのクラスを決定するように構成される。
【選択図】
図1
【特許請求の範囲】
【請求項1】
決定木アンサンブルの分類のためのアーキテクチャであって、ランクコンピューティングブロック(1)及び木処理ブロック(2)を含み、
前記ランクコンピューティングブロック(1)が、分類すべき特徴のセットの特徴ごとに1つの計算ユニット(10)を含み、各計算ユニット(10)が、メモリ(11)及びロジック(12)を含み、
前記メモリ(11)が、前記決定木アンサンブル内の前記決定木の閾値を保存するように構成され、前記メモリが、特徴ごとに1つのグループに前記閾値を保存するように準備され、グループ内の前記閾値が、閾値インデックスに従ってソートされ、
前記ロジック(12)が、対応する閾値のグループの前記閾値のノード比較を行い、前記比較の結果としてランクを出力するように準備され、ランクが、閾値を表すエンコードされたアドレスに相当し、
前記決定木アンサンブル内の木の前記木処理ブロック(2)が、ランクの関数として分類すべき前記特徴のクラスを決定するように構成される、前記アーキテクチャ。
【請求項2】
前記特徴は、特徴インデックスi∈[1;I]を用いてf
iと示され、Iは、分類すべき特徴の個数を示し、前記閾値は、前記決定木アンサンブル内の木のノードを表し、
前記ロジック(12)は、分類すべき特徴を受け取り、前記閾値を前記特徴の値よりも小さい値と大きい値とに分ける各特徴に対する前記ランクを返す探索を実行するように準備され、
前記ランクは、それぞれ前記対応する木処理ユニット(20)に出力され、
前記木処理ユニット(20)は、ブール関数を評価することによって前記クラスを決定するように構成されており、ブール関数それぞれが、前記受け取られたランクの関数として、前記決定木アンサンブル内の決定木を表す、請求項1に記載のアーキテクチャ。
【請求項3】
前記木処理ブロック(2)は、前記決定されたクラスを前記木処理ユニット(20)から受け取り、前記決定されたクラスの関数としてアンサンブル投票を形成するように準備された集約ユニット(21)を含む、請求項1または請求項2に記載のアーキテクチャ。
【請求項4】
前記メモリ(11)は、
前記分類すべき特徴のセットからの各特徴に対して1つのメモリセルグループを含み、
グループ内の前記メモリセルは、前記閾値インデックスに従ってアドレス指定可能である、請求項1~3の1項に記載のアーキテクチャ。
【請求項5】
前記ロジック(12)は、特徴を受け取るように動作可能な第1の入力(13)と、前記メモリ(11)から閾値を受け取るように動作可能な第2の入力(15)とを含むコンパレータ(14)を備え、
前記コンパレータ(14)は、対応する閾値グループの前記閾値の前記ノード比較を行うように動作可能である、請求項1~4の1項に記載のアーキテクチャ。
【請求項6】
前記木処理ユニット(20)は、アドレスデコード済みランクに基づいて前記ブール関数を評価するために、前記受け取られたランクのアドレスデコードを実行するように準備された1つ以上のコンパレータ(22)を含む、請求項5に記載のアーキテクチャ。
【請求項7】
前記計算ユニット(10)のそれぞれは、それぞれ専用のルックアップテーブル(17)に接続され、
前記ルックアップテーブル(17)は、前記ルックアップテーブルに接続された前記計算ユニット(10)から専用ランクを受け取るように動作可能な入力側を含み、
前記ルックアップテーブル(17)は、前記入力側で受け取られた前記ランクの関数として中間値を出力するように動作可能である、請求項1~6の1項に記載のアーキテクチャ。
【請求項8】
前記ランクコンピューティングブロック(1)のそれぞれは、それぞれ専用のルックアップテーブル(17)に接続され、
前記ルックアップテーブル(17)は、前記ルックアップテーブルに接続された前記木処理ユニット(20)の前記中間値を提供するように動作可能である出力側を含み、
前記木処理ユニット(20)は、前記受け取られた中間値の関数として分類すべき前記特徴の前記クラスを決定するように動作可能である、請求項7に記載のアーキテクチャ。
【請求項9】
演算ユニットを有するコンバイナ(18)をさらに含み、前記コンバイナ(18)は、前記中間値を受け取るように動作可能であり、前記中間値を組み合わせ及び/または重み付けし、分類すべき前記特徴の前記クラスを出力するように動作可能である、請求項7に記載のアーキテクチャ。
【請求項10】
前記処理ブロック(2)は、1つ以上のルックアップテーブルを含み、
前記ルックアップテーブルは、「~よりも小さい」または「~よりも大きい」比較を行うように動作可能な1つ以上のコンパレータを含む連想メモリに基づいて実装される、請求項7~9の1項に記載のアーキテクチャ。
【請求項11】
決定木アンサンブルの分類の方法であって、
前記決定木アンサンブル内の決定木を表す閾値を、分類すべき特徴ごとに1つのグループに保存することと、
グループの前記閾値を、閾値インデックスに従ってソートすることと、
対応する閾値グループの前記閾値のノード比較を行うことと、
前記ノード比較の結果としてランクを出力することであって、ランクが、前記閾値を表すためのエンコードされたアドレスに相当する、前記出力することと、
ランクの関数として分類すべき前記特徴のクラスを決定することと、
のステップを含む、前記方法。
【請求項12】
分類すべき前記特徴は、特徴インデックスi∈[1;I]を用いてf
iと示され、Iは、分類すべき特徴の個数を示し、前記閾値は、前記決定木アンサンブル内の木のノードを表し、前記方法は、
ロジック(12)によって分類すべき特徴を受け取り、前記ロジックを使用して、前記閾値を前記特徴の値よりも小さい値と大きい値とに分ける各特徴に対する前記ランクを返す探索を実行することと、
前記ランクを、それぞれ、対応する木処理ユニット(20)に出力することと、
分類すべき前記特徴の前記クラスを、ブール関数を評価することによって決定することであって、前記ブール関数それぞれが、前記受け取られたランクの関数として、前記決定木アンサンブル内の木を表す、前記決定することと、
のさらなるステップを含む、請求項11に記載の方法。
【請求項13】
前記ランクは、前記ロジック(10)を使用した二分探索から決定される、または
前記ランクは、インメモリ探索から決定される、請求項11または請求項12に記載の方法。
【請求項14】
前記決定木の評価は、ルックアップテーブルエントリとして保存される事前に算出された値を有するルックアップテーブル(17)を必要とし、前記クラスは、前記ルックアップテーブルエントリに応じて決定される、請求項11~13の1項に記載の方法。
【請求項15】
前記ルックアップテーブルエントリは、トレーニングソフトウェアによって決定され、前記トレーニングソフトウェアは、分類アーキテクチャ及び前記決定木アンサンブルの両方の数学的記述が同等であるように、ルックアップテーブルエントリの割り当てを決定する、請求項14に記載の方法。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、決定木アンサンブルの分類のためのアーキテクチャと方法とに関する。
【背景技術】
【0002】
ランダムフォレスト、RF、または決定木アンサンブル、または略してDTEは、ハードウェア及びソフトウェアの両方で様々な分類タスクに使用される。DTEは、各木を個別に順次トラバースし、その後、平均化または多数決によって各木出力を集約することにより、直感的に評価される。別のアプローチは、全てのノード比較を並列に計算すること、及び集計のための木出力を計算するかまたは集約された出力を直接計算するブール関数に木を変換することである。
【0003】
DTEは、ランダムフォレスト、AdaBoost、または勾配ブースティング木のような機械学習アルゴリズムによってトレーニングできる。決定木アンサンブルの分類のためのアーキテクチャは、FPGAまたはASIC技術でDTEを推論するためのハードウェアアーキテクチャとして構築することができる。このようなアーキテクチャは、スマートセンサ、ワイヤレスセンサネットワーク、構造ヘルスモニタリング、予知保全、及びヘルスケアなど、エッジ機械学習の分野の様々なアプリケーションに統合できるが、これらに限定されない。
【0004】
決定木アンサンブル分類のためのアーキテクチャ、またはDTEハードウェアアクセラレータは、通常、
図13に示すように、アンサンブル内の決定木ごとに1つの木処理ユニットと、アンサンブル投票を計算する集約ユニットとで構成される。このような木処理ユニットは、単独で単一の決定木のハードウェアアクセラレータとして使用することもできる。
【0005】
図14Aは、単一の分類木の例を示す。新しい特徴入力のセットのクラスを予測するために、木の各ノードは、特徴f
iの1つをノードの閾値t
jと比較する。ルートノードから始めて、次に続くノードでの比較の結果によって、木を通るパスが定義され、葉ノードで終わる。木は、到達した葉に対応するクラスC
xに投票する。アンサンブル内の全ての木投票は、その後多数決によって集約され、木アンサンブルの最終投票が得られる。ノードによって比較される特徴fのインデックス、閾値t、葉ノードでのクラスラベルC、及び木の構造は、トレーニングによって定義されるパラメータである。
【0006】
決定木の実装には、2種類のアーキテクチャが広く使用されている。基本的に、直列アーキテクチャは、決定木の全てのパラメータをメモリに格納し、ルートから葉まで評価する。並列アーキテクチャは、各ノードに対して1つのコンパレータを有し、木全体を一度に評価する。より詳細には、直列アーキテクチャは、
図14Bに示すように、ルートノードから葉ノードまでトレーニング済みモデルの決定木をトラバースする。各ノードでは、メモリまたは入力マルチプレクサから、与えられたノードの特徴入力と閾値とをフェッチする。次に、その2つを比較し、左または右の子アドレスを次に訪れるノードとして選択する。葉ノードに到達し、対応するクラス投票を出力するまでこれを行う。
図14Cに示すように、並列アーキテクチャは、木の全てのノード比較を一度に計算する。各コンパレータは、1つの木ノードに相当する。閾値はコンパレータとともにレジスタに格納されており、コンパレータはそれに相当するノードに従って特徴入力に配線されている。木投票は、木構造を表すブール関数によって、コンパレータの出力から計算される。ブール関数はトレーニング済みモデルに固有であり、以下のように木から導出することができる。
【0007】
DTEからの分類木は、次の表記法を使用して、根付き有向非循環グラフDT=(V,D,E,C)として数学的に表すことができる。
Vは、頂点のセットV=N∪Lであり、ここで、Lは葉ノードのセット、Nは特徴f
iの1つに対応する閾値
【数1】
を含む内部ノードのセットである。
Dは、各ノードv
x∈Nのノード比較
【数2】
によって定義されるブール変数d
xのセットである。
Eは、エッジのセット(v
x,v
y)であり、v
x,v
y∈{V}はF
E:E→{0,1}でラベル付けされて、木を処理するときにエッジに取得されるd
xの結果を定義する。
Cはクラスの集合であり、F
C:L→Cによって葉ノードに割り当てられる。
各クラスc∈Cについて、経路のセットP
c={p
c,1,p
c,2,・・・,p
c,K}は、k=1,・・・,Kに対して、
p
c,k={v
k,1,v
k,2,・・・,v
k,J}
によって定義され、v
k,m∈Vである。v
k,1は、m=1,・・・,M
k-1、M
k=|p
c,k|及びv
k,M∈Lに対して、ルートノード(v
k,m,v
k,m+1)∈Eであり、F
C(v
k,M)=cである。
【0008】
図14Cの並列アーキテクチャでは、各ノードが固定コンパレータとして実装されている。木構造は、コンパレータ出力からクラスcの木票を計算するブール関数F
DT,c:D→{0,1}として形式化することができる。ブール関数は次のように表すことができる。
【数3】
であり、
【数4】
である。例えば、
図14C(2)に示す木は、次のようになる。
【数5】
及び
【数6】
ただし、直列アーキテクチャも並列アーキテクチャも改善の余地がある。
【0009】
提示された本開示の目的は、例えば速度、エネルギー消費及び/または面積に関して、決定木アンサンブル分類アーキテクチャを改善する、決定木アンサンブルの分類のためのアーキテクチャ及び決定木アンサンブルの分類のための方法を提供することである。
【0010】
これらの目的は、本願の独立請求項の主題によって達成される。さらなる展開及び実施形態は、従属請求項に記載されている。
【発明の概要】
【0011】
任意の1つの実施形態に関して記載されている任意の特徴は、単独で、または本明細書に記載されている他の特徴と組み合わせて使用されることがあり、代替としての記載がない限り、他のいずれかの実施形態の1つ以上の特徴、または他のいずれかの実施形態の任意の組み合わせと組み合わせて使用されることもあることを理解されたい。さらに、添付の特許請求の範囲に規定される、決定木アンサンブルの分類のためのアーキテクチャ及び決定木アンサンブルの分類のための方法の範囲から逸脱することなく、以下に記載されていない均等物及び修正形態を使用することもできる。
【0012】
以下は、決定木アンサンブルの分類の分野における改良された概念に関するものである。提案された概念は、分類木及び回帰木ならびに決定木アンサンブル(略してDTE)の推論を解決するためのアーキテクチャ及び方法を提案する。提案された概念は、ハードウェアアーキテクチャ、例えばFPGAまたはASIC技術に基づいて実装することができる。また一方、この方法は、ソフトウェアで実装することもできる。
【0013】
提案された概念は、二分探索またはインメモリ探索などのロジックを使用して全てのノードを迅速に計算するために、与えられた決定木アンサンブルの全比較の閾値のグループ化及び事前ソートを提案する。さらに、このアーキテクチャは、分類をさらに高速化するために、事前計算されたエントリを保持するルックアップテーブルで補完することができる。
【0014】
少なくとも1つの実施形態では、決定木アンサンブルの分類のためのアーキテクチャは、ランクコンピューティングブロック及び木処理ブロックを含む。ランクコンピューティングブロックは、分類すべき特徴のセットからの特徴ごとに1つの計算ユニットを含む。各計算ユニットは、メモリ及びロジックを含む。メモリは、決定木アンサンブル内の木の閾値を保存するように構成されている。メモリは、特徴ごとに1つのグループに閾値を保存するように構成されている。さらに、グループ内の閾値は、二分探索などの効率的な探索アルゴリズムを可能にするために、閾値インデックスに従って事前にソートされる。閾値インデックスにより、「<」または「>」などの探索基準を規定することが可能になる。
【0015】
ロジックは、対応する閾値のグループの閾値の比較を行い、評価された特徴値のランクを出力するように準備される。ランクは、閾値を表すエンコードされたアドレスに相当する。木処理ブロックは、ランクの関数として分類すべき特徴のセットのクラスを決定するように構成される。例えば、いくつかの実施形態では、木処理ブロックは、決定木アンサンブル内の木ごとに1つの木処理ユニットを含む。各処理ユニットは、ランクの関数として分類すべき特徴のセットのクラスを決定するように構成される。他の実施形態では、以下でさらに詳細に説明するように、いくつかのルックアップテーブル及びコンバイナを含む木処理ユニットが1つのみであってもよい。
【0016】
予備的な結果は、この新しいアーキテクチャが、直列アーキテクチャ及び並列アーキテクチャの両方のハードウェアコスト及びエネルギー効率に対応できることを示しており、それぞれ2つの性能指数のうちのいずれかでのみ優れている。ランクは、全てのノードの計算された比較と同じ情報を保持するので、木処理ブロックによるさらなる処理に使用することができる。
【0017】
少なくとも1つの実施形態において、分類すべき特徴のセットからの特徴は、特徴インデックスi∈[1;I]を用いてfiと示され、Iは、分類すべき特徴の個数を示す。閾値は、決定木アンサンブル内の木のノードを表す。
【0018】
ロジックは、分類すべき特徴fiのセットを受け取り、閾値を特徴よりも小さい値と大きい値とに分ける各特徴に対するランクを返す探索を実行するように準備される。ランクは、例えば、対応する木処理ユニットに出力される。最終的に、木処理ユニットが、ブール関数を評価することによってクラスを決定するように構成されており、ブール関数はそれぞれ、受け取られたランクの関数として、決定木アンサンブル内の決定木の構造を表す。あるいは、ランクは、対応するルックアップテーブルに出力される。
【0019】
少なくとも1つの実施形態では、木処理ブロックは、決定されたクラスを木処理ユニットから受け取り、決定されたクラスの関数としてアンサンブル投票を形成するように準備された集約ユニットを含む。
【0020】
少なくとも1つのメモリの実施形態では、メモリは、分類すべき特徴のセットからの各特徴に対して1つのメモリセルグループを含む。グループ内のメモリセルは、閾値インデックスに従ってアドレス指定可能である。
【0021】
少なくとも1つの実施形態では、ロジックは、特徴を受け取るように動作可能な第1の入力と、メモリから閾値を受け取るように動作可能な第2の入力とをさらに含むコンパレータを備える。
【0022】
少なくとも1つの実施形態では、木処理ユニットは、アドレスデコード済みランクに基づいてブール関数を評価するために、受け取られたランクのアドレスデコードを実行するように準備された1つ以上のコンパレータを含む。コンパレータは、対応する閾値グループの閾値のノード比較の表現であるランクに基づいて比較を行うように動作可能である。ある意味では、アドレス比較を行うためにランクがデコードされる。
【0023】
少なくとも1つの実施形態では、ランクコンピューティングブロックからの計算ユニットのそれぞれは、それぞれ専用のルックアップテーブルに接続される。ルックアップテーブルは、ルックアップテーブルに接続された計算ユニットから専用ランクを受け取るように動作可能な入力側を含む。さらに、ルックアップテーブルは、入力ランクの関数などの中間値を出力するように動作可能である。
【0024】
少なくとも1つの実施形態では、木処理ユニットのそれぞれを専用のルックアップテーブルに接続することができる。ルックアップテーブルは、ルックアップテーブルに接続された木処理ユニットに中間値を提供するように準備された出力側を含む。木処理ユニットは、受け取られた中間値の関数として分類すべき特徴のセットのクラスを決定するように動作可能である。
【0025】
他の実施形態では、木処理ユニットのそれぞれに対する専用のルックアップテーブルがなくなってもよい。むしろ、ルックアップテーブルは、木処理ブロックの一部と見なすことができ、コンバイナで補完することができる。木構造に対応するコンテンツは、特徴ごとに1つのルックアップテーブルに組み合わされた全ての木に対して格納される。ルックアップテーブルエントリは可能な構成に対応し、コンバイナと共に木処理ブロックを形成する。ただし、複数の木を内部的に組み合わせて「サブアンサンブル」にすることもできる。
【0026】
少なくとも1つの実施形態では、本アーキテクチャは、演算ユニットを有するコンバイナをさらに含む。コンバイナは、中間値を受け取るように動作可能であり、中間値を組み合わせ及び/または重み付けし、分類すべき特徴のクラスを出力するように動作可能である。コンバイナは、全ての木またはサブアンサンブルの共通ユニットとして実装することができる。
【0027】
少なくとも1つの実施形態では、ルックアップテーブルは、「~よりも小さい」または「~よりも大きい」比較を行うように動作可能な1つ以上のコンパレータを含む連想メモリに基づいて実装される。
【0028】
少なくとも1つの実施形態では、決定木アンサンブルの分類の方法は、以下のステップを含む。最初に、決定木アンサンブル内の決定木の閾値が、分類すべき特徴ごとに1つのグループに保存される。グループの閾値は、閾値インデックスに従ってソートされる。対応する閾値グループの閾値のノード比較が行われる。ノード比較の結果としてランクが出力され、ランクは、前記閾値を評価するためのエンコードされたアドレスに相当する。最終的に、ランクの関数として分類すべき特徴のセットのクラスが決定される。
【0029】
少なくとも1つの実施形態において、分類すべき特徴のセットからの特徴は、特徴インデックスi∈[1;I]を用いてfiと示され、Iは、分類すべき特徴の個数を示す。閾値は、決定木アンサンブル内の木のノードを表す。本方法は、ロジックによって分類すべき特徴を受け取り、ロジックを使用して、閾値を特徴値よりも小さい値と大きい値とに分ける各特徴に対するランクを返す探索を実行する、さらなるステップを含む。ランクは、それぞれ、対応する木処理ユニットに出力される。分類すべき特徴のクラスは、ブール関数を評価することによって決定され、ブール関数それぞれが、受け取られたランクの関数として、決定木アンサンブル内の木を表す。
【0030】
少なくとも1つの実施形態では、ランクは、ロジックを使用した二分探索から決定される。あるいは、ランクは、インメモリ探索から決定される。
【0031】
少なくとも1つの実施形態では、決定木の評価は、ルックアップテーブルエントリとして保存される事前に算出された値で埋められたルックアップテーブルを必要とし、クラスは、ルックアップテーブルエントリに応じて決定される。
【0032】
少なくとも1つの実施形態では、ルックアップテーブルエントリは、トレーニングソフトウェアによって決定される。トレーニングソフトウェアは、分類アーキテクチャ及びDTEの両方の数学的記述が同等であるように、ルックアップテーブルエントリの割り当てを決定する。
【0033】
以下の例示的実施形態の図の説明は、改良された概念の態様をさらに例示し説明し得る。同じ構造及び同じ効果の構成要素及びパーツは、それぞれ同値の参照記号を付けて表示される。異なる図の構成要素及びパーツが、それらを機能的に見て、互いに対応する限りにおいて、それらの説明は、以下の図のそれぞれに対して、必ずしも繰り返されない。
【0034】
さらなる態様、特徴及び利点は、以下の、発明を実施するための形態、添付の図面、及び特許請求の範囲から容易に明らかになるであろう。
【図面の簡単な説明】
【0035】
【
図1】決定木アンサンブルの分類のためのアーキテクチャのトップレベル図の例を示す。
【
図3】グループ化及び事前ソートのスキームを説明するための決定木アンサンブルの例を示す。
【
図5】異なるトレーニングアルゴリズムを使用して異なるデータセットでトレーニングされたいくつかのモデルのアーキテクチャ例のサイズFOMを示す。
【
図6】異なるトレーニングアルゴリズムを使用して異なるデータセットでトレーニングされたいくつかのモデルのアーキテクチャ例のエネルギー比較を示す。
【
図8】LUTを使用してランクから分類結果を算出することを示す。
【
図9】インメモリランク算出とLUTルックアップとを組み合わせた例示的実施形態を示す。
【
図10】LUTエントリから分類結果を算出することを示す。
【
図11】I=7の特徴であるコンバイナの例示的実施形態のさらなる詳細を示す。
【
図12】コンバイナの例示的実施形態のさらなる詳細を示す。
【
図13】決定木アンサンブル分類のための先行技術のアーキテクチャを示す。
【発明を実施するための形態】
【0036】
図1は、決定木アンサンブルの分類のためのアーキテクチャのトップレベル図の例を示す。このアーキテクチャは、ランクコンピューティングブロック1及び木処理ブロック2を備える。ランクコンピューティングブロック1は、いくつかの計算ユニット10を備える。実際には、分類すべき特徴f
iごとに1つの専用計算ユニットがある(インデックスiまたは特徴インデックスは、分類されるI個の特徴の整数を表す)。各計算ユニットは、メモリ11及びロジック12をさらに含む。
【0037】
メモリ11は、複数のメモリセルを含み、決定木アンサンブルからの決定木に従っていくつかの閾値を保存するように構成される。言い換えれば、メモリは、決定木アンサンブルの特性である木の閾値を保存する。以下でより詳細に説明するように、閾値は特徴グループにグループ化される。基本的に、メモリは、分類すべき特徴ごとに1つの閾値グループを含む。グループ内の閾値は、閾値インデックスに従ってソートされる。ロジック12は、対応する閾値グループの閾値にアクセスすることを可能にする。以下でさらに説明するプロセスに従って、ロジックは、アクセスされた閾値のランクを出力する。ランクは、前記閾値にアクセスするためのエンコードされたアドレスに相当し、ひいては閾値を表す。
【0038】
木処理ブロック2は、決定木アンサンブル内の木ごとに1つの木処理ユニット20を含む。木処理ユニットは、分類または木投票を行うように準備される。実際には、各処理ユニットは、ランクの関数として、決定木アンサンブル内の木を表すブール関数を評価するように構成されている。
【0039】
ブール関数は、FPGAのソフトロジックまたはASICのハードワイヤードロジックで、または以下でさらに説明するスキームを使用して、実現され得る。ランクは、ランクコンピューティングブロック及び対応する計算ユニットから受け取られる。木処理ブロックは、集約ユニット21(または木コンバイナ)をさらに備える。このユニットは、木処理ユニットから投票(または分類)を受け取り、そのアンサンブル投票を形成する。つまり、集計ユニットは多数決を実行する。
【0040】
図2は、計算ユニットの例示的実施形態をより詳細に示す。メモリ11は、それぞれが固有のアドレスを有するいくつかのメモリセルを含む。この図面は、メモリが閾値を保持し、その閾値が閾値インデックスに従ってソートされたことを示す。メモリに保存される閾値は、専用のグループに属しており、対応する特徴(この例ではf
1)と相関する。この特徴は、コンパレータ14(図面中「<」で示す)の入力側13を介して入力することができる。別の入力15は、アクセスし、それによってメモリから閾値を受け取るように準備される。このようにして、コンパレータは、木定義(この例ではf
1)に従って、専用グループに関連付けられた機能の比較を行うことができる。さらに、ロジック12は、別の入力側16を介してコンパレータ14にアクセスするように準備される。この制御の結果として、コンパレータは、入力特徴を閾値と比較する。メモリは、対応するエンコードされたアドレスを出力する。これらのアドレスは、閾値/特徴の比較(または木ノード)を示す。ランクは、全てのノードの計算された比較と同じ情報を保持するので、木処理ブロックによるさらなる処理に使用することができる。
【0041】
結論として、直列アーキテクチャと同様に、計算ユニットは、コンパレータ及びメモリを含む。ただし、メモリには、1つの完全な決定木ではなく、1つの閾値グループが含まれる。コンパレータ14は、対応する特徴にのみ接続され、したがって、他のアーキテクチャで典型的に要求される入力マルチプレクサの複雑さが排除される。さらに、メモリには閾値のみが含まれ、特徴インデックスまたは子アドレスのような木構造情報は含まれないため、メモリサイズが大幅に削減される。例えば、探索ロジックは、入力特徴を閾値と迅速に比較するために、二分探索を実行する。
【0042】
図3は、グループ化及び事前ソートのスキームを説明するための決定木アンサンブルの例を示す。提案された概念は、例えば比較を高速化するために、閾値を事前にソートすることに基づいている。図面は、閾値をグループ化及びソートする方法の例を示す。この図面は、特徴f
1、f
2、及びf
3を含む3つの決定木の例と、2つのクラスC
1及びC
2の例とを示す。木ノードは、閾値インデックスjの閾値
【数7】
と、特徴インデックスiの対応する入力特徴f
iとの比較と見なされる。アンサンブル内の全ての決定木の閾値は、各ノードの一致した特徴インデックスによってグループ化することができる。結果として得られる特徴別の閾値グループの例を表1に示す。閾値
【数8】
は、ソート基準に従って、例えば
【数9】
として、ソートすることができる。ロジック12は、このソート基準を利用して高速探索動作を実行するように準備することができる。結果として得られるソートされたグループの例を表2に示す。
【表1】
【表2】
結果として得られる閾値グループは、閾値によって個別にソートされる。ソート基準、例えば
【数10】
により、二分探索のような高速の探索方法が可能になる。木を順次にトラバースすること、または全てのノードを計算することの代わりに、対応する閾値グループ内の各特徴に対して二分探索を実行することで、DTEを評価することができる。二分探索の結果、閾値を特徴よりも小さい値と大きい値とに分ける各特徴のアドレス(つまり、ランク)が得られる。これらのアドレス(特徴のランク)は、全てのノードの計算された比較と同じ情報を保持する。したがって、木投票は、例えば、並列アーキテクチャで行われるようにブール関数によって計算することができ、そのうえ必要な比較ははるかに少なくなる。
【0043】
完全なアーキテクチャは、特徴ごとに1つの計算ユニットと、木ごとに1つの木投票関数とを含み、任意選択で、
図1に示すようにアンサンブルを形成するための集約ユニットを含む。木投票関数は、並列アーキテクチャと類似している。ただし、入力はエンコードされたアドレスであるのに対して、並列アーキテクチャでは各比較が1ビットでエンコードされる。このようにして、並列アーキテクチャの木投票関数が、異なったブール関数に拡張される。本開示の導入部の上記で導入された命名法を使用して、木構造は、コンパレータ出力またはランクRからのクラスcに対する木投票を計算するブール関数
【数11】
として形式化することができる。ブール関数は次のように表すことができる。
【数12】
ここで、r
k,mは、ノードv
k,mで使用される特徴の計算されたランクを示し、a
k,mは、事前にソートされた専用閾値グループ内のノードv
k,mの閾値のアドレスである。
【0044】
図4は、計算ユニットの例示的実施形態を示す。ランクコンピューティングブロックは、対応するクラスに投票するために木処理ブロック2、すなわち計算ユニットに入力されるいくつかの対応するランクを提供する。計算ユニットの一実施態様は、
図14に示す並列アーキテクチャと似ている。計算ユニットは、各木ノードに対して1つのコンパレータ22を備える。しかし、提案された概念のコンパレータは、ランクアドレスをデコードし、実際のノード比較を実行しない。実際には、アドレスは比較に相当し、代わりにブール関数の計算で直接使用され得る。アドレスのデコードは、FPGAまたはASIC技術にマップされた場合、例えば合成ツールによる木投票関数などを用いて、最小限に抑えることができる。
【0045】
提案された概念のいくつかの利点は次のとおりである。
・メモリには、対応する特徴の閾値のみが含まれていればよい。ノードの特徴インデックス及び子アドレスを格納する必要がないため、メモリ使用量が大幅に削減される。
・グループ化された閾値の重複は、メモリのアクセスに追加情報をもたらさないので、例えば二分探索によって削除することができる。これにより、メモリサイズ及びメモリアクセスエネルギーをさらに削減することが可能になる。
・直列アーキテクチャと比較して、特徴入力をメモリまたは入力マルチプレクサからフェッチする必要はない。これにより、回路の複雑さ及びエネルギー消費が削減される。
・決定木は、一般にバランスが取れていないため、異なる決定に対して異なる実行時間がかかることになる可能性がある。これにより、木間の並列化がより困難になり、同期が必要になる。提案された概念は、例えば二分探索を使用してバランスの取れた方法で閾値を探索することを提案し、この結果として回路の複雑さ及び実行時間を削減する。実行時間は、木ごとに異なる場合があるが、探索比較に並列処理を導入することで調整できるため、全決定を通して一定に保つことができる。
・二分探索は、比較を全て計算する並列アーキテクチャよりもはるかに少ない比較を実行する。場合によっては、二分探索は、特に木で長い分岐が発生する場合には、直列アーキテクチャよりも少ないことすらある比較を計算する。これにより、並列化の量に応じて、実行時間及びエネルギーまたは回路サイズが削減される。
【0046】
上記の利点は、実験結果で確認することもできる。直列アーキテクチャ及び並列アーキテクチャに対する比較の数を比較するために、2つのモデルを異なるデータセットでトレーニングし、対応するテストデータセットを使用して統計的に分析している。並列アーキテクチャの場合、比較の数は単純に全ての木のノード数である。直列アーキテクチャの場合、実際のテストデータに対して木反復を実行して、推論ごとの比較数を統計的に推定する。同様に、テストデータに対して二分探索を実行して、提案されたアーキテクチャに対する数値を取得する。
【0047】
表1は、異なるデータセットでトレーニングされた2つのモデルの統計的または正確な比較数を示す。木のバランスが取れていないために、直列アーキテクチャの実行時間は不規則であるので、表には(最小、平均、最大)タプルが含まれる。
【表3】
アーキテクチャのハードウェア面積及びエネルギー消費を比較するために、3つのアーキテクチャをSystemVerilogで実装し、商用FPGA用に合成した。ハードウェア面積性能指数(FOM)は、合成後のフリップフロップ(FF)及びルックアップテーブル(LUT)リソースに基づいて、FF+2・LUTと規定される。エネルギー消費は、FPGAベンダが提供している電力見積もりツールを使用して、実際のテストデータ分類でシミュレートされたスイッチングアクティビティに基づいて見積もられる。
【0048】
図5及び
図6は、異なるデータセットでトレーニングされたいくつかのモデルについて、3つのアーキテクチャ全てのサイズFOM及びエネルギーの比較を示す。結果は、新しいアーキテクチャが両方の性能指数で良好に機能し、ほとんどのデータセットのサイズFOMにおいても直列アーキテクチャより性能が優れていることを明確に示している。一方、サイズFOMでは、直列アーキテクチャが最もエネルギー効率が悪いことを示し、並列アーキテクチャが最も性能が悪いことを示す。これにより、アーキテクチャが広く使用できるようになり、並列化を導入することでサイズとエネルギーとのトレードオフを調整するための最良の候補となることが証明される。
【0049】
図7は、計算ユニットの別の例示的実施形態を示す。上述のように、ランクコンピューティングブロック1は、クラスを評価または投票するために木処理ブロック2、すなわち計算ユニット10に入力されるランクを提供する。ランクを使用することで、特徴値を直接処理する場合に比べて、特徴値による決定木の評価を実行するために必要な計算量を減らすことができる。実際には、計算ステップを実行して予め算出し、ルックアップテーブル17(またはLUT)で利用可能に保つことができる。単一のLUT(その入力が全ての特徴を含む)は非常に大きくなる可能性があるので、特徴ごとに1つのLUT17が使用される。図面に示すように、LUTはランクコンピューティングブロックからランクを受け取り、中間結果tmp_resultを出力する。中間結果は、分類の最終結果を処理するために、比較的単純な構造の演算(または「コンバイナ」18)によって処理され得る。
【0050】
これにより、例えば、かなり低いエネルギー要件で高速であるなど、より素朴な実装と比較して決定的な利点が得られる。分類は、いくつかの並列で独立したメモリアクセスと、小規模でエネルギー効率の高い並列演算とで構成される。LUTを使用することで、ASIC技術でも製造後にLUTのコンテンツを自由に選択できるので、高い柔軟性が可能になる。さらに、ハードウェアの構造を非常に均一にすることができ、コンバイナの完全な再構成が可能である。これにより、任意のDTEモデルをマップできるようになる。
【0051】
図8は、LUTから分類結果を算出するためのコンバイナの例示的実施形態を示す。この図面を使用して、LUTの原理を簡略化してまたは高レベルで示すことができる。より詳細な例示的実施態様については、さらに後述する。
【0052】
コンバイナ18は、複数のルックアップテーブルを備える。実際には、対応するランクを受け取るための1つの専用LUTがあり、図面ではrank[i]と示されている。つまり、各特徴iに対して専用のLUT[i]が1つある。LUTは、トレーニング手順の結果であり、それぞれの決定木の構造及びノードを表す、対応するランクの各値のトレーニングされたエントリを有する。LUTは中間結果tmp_result[i]を出力する。複数の特徴を組み合わせて、木投票及び/または複数木からなるサブアンサンブルの投票にするために、中間結果をさらに処理することができる。投票はさらに処理され、例えば、w[m]で示されるそれぞれの重みを持つ乗数で重み付けされる。ここで、m∈[1;M]であり、Mは木及び/またはサブアンサンブルの総数である。加算器は、中間結果(重み付けされているかどうかに関係なく)を組み合わせて、合算した中間結果にすることができる。この結果をコンパレータに入力して、閾値c_thrとの比較を実行し、それによって分類結果を求めることができる。重み付けから始まる後半の部分は、すでに集約ユニットの一部になっている場合がある。
【0053】
追加のLUTを含まない例示的な実施形態とは対照的に、LUTのコンテンツをさらに決定する必要がある。コンテンツは、予め定められた基準に従って決定される。例えば、コンテンツ(またはLUTエントリ)は、ハードウェアアーキテクチャの同等の記述を表すものとする。このように、LUTエントリは、通常はASICとして実装されるハードウェア、または特徴のセットの変更を説明することができる。LUTエントリは高度に構成可能であり、例えばオープンソースソフトウェアZ3 Theorem Proverなどのソルバソフトウェアを使用して、トレーニングモデルに基づくトレーニングによって見つけることができる。例えば、一方ではハードウェア構造の記述、他方ではDTEの記述がソルバに入力される。このときソルバは、LUT内のエントリLUT[i]の割り当てを見つける。ここで、両方の記述は、全ての可能な入力割り当て、つまりランクまたは特徴値に対して同等である。
【0054】
SMT/SATソルバなどのソルバを使用することで、ハードウェア実装が、指定されたモデルに準拠し、一致することをサポートする。LUTエントリの計算にソルバを使用することは、FPGAのロジック合成の技術的に異なる分野で既に説明されている。ただし、その複雑さのために、実際には使用されない。提案された概念には、AI(人工知能)及びML(機械学習)の分野でのソルバソフトウェアの使用が含まれる。
【0055】
LUTコンテンツの明示的なコーディングから切り離すことによって、DTEモデルを大幅に圧縮することができる。全ての木の葉ノードをLUTごとに1つの出力ビットに明示的に割り当てる場合と比較して、これまでのところ最大400%の圧縮率が達成されている。さらに、提案されたアーキテクチャは、特徴の実際の値を直接使用するのではなく、それらのランクをLUTのアドレスとして使用する。各ノードのDTEの木では、ルートから開始して、特徴値がトレーニング済みの閾値と比較される。各特徴に対して、間隔を区切るいくつかの閾値が存在する。値の最終的に重要な情報は、その値がどの区間内にあるかである。ランクコンピューティングブロックで実装されて、閾値がソート基準に従って昇順または降順に配置されている場合、特徴値が含まれる区間のインデックスは、そのランクに対応する。区間数は、特性を想定できる全ての可能な値よりも明らかに少ない。したがって、エンコードに必要なビット数も少なくなる。特徴または特徴ランクのビット幅は、LUTアドレス入力のビット幅に対応する。例えば、16ビット特徴を4ビットランクで表すことができる場合、LUTは16384エントリではなく、16エントリのみで構成されなければならない。この特徴のランクへの縮減減は、事前ソートを使用することによって可能になる。
【0056】
分類器ハードウェア(LUT中間物からの分類結果を算出するコンバイナ)の記載された概念は、提案された概念をさらに改善することができる。トレーニング、例えばSMT/SATソルバなどのソルバを使用して、事前にLUTのコンテンツを算出すると、回路サイズだけでなくメモリに関しても改善された結果が得られる。特徴の実際の値の代わりにランクを使用すると、メモリサイズを最小限に抑えることができる。さらに、コンバイナロジックは、完全に再構成可能であるにも関わらず、小型でエネルギー効率の優れたものとすることができる。このように、LUT出力のグループ化、つまりコンテンツの生成に制限がなくなる。可変ビット幅のグループの合計と閾値との単純な比較が特に重要である。
【0057】
図9は、インメモリランク算出の例示的実施形態を示す。上記のメモリに近いランク算出(つまり、二分探索操作に基づく)はすでに非常に効率的で高速であるが、分類器ハードウェアの性能にボトルネックが生じ得るアプリケーションが存在する可能性がある。特徴(またはランクの対応するビット幅)クロックサイクルあたりの閾値数のlog2の見積もりが必要になる場合がある。分類の他の全てのステップでは、通常、パイプライン処理により、クロックサイクルごとに1つの分類のスループットが得られる。コンパレータロジックに基づいて構築された追加の概念により、メモリ自体で特徴ランクを計算できるようになる。
【0058】
図面は、分類すべき特徴のための計算ユニット10を示す。このユニットは、所与の特徴及びグループ化された事前ソート済み閾値のためのメモリ11を備える。さらに、ユニットは、閾値との比較を実行するロジック12を備える。比較に基づいて、ロジックは、バイナリではなく1ホットエンコーディングでランクを出力し、その後、ランクは対応するルックアップテーブルに入力される。バイナリコーディングの代わりに、可能な状態値ごとに1つの行が存在し得る。現在のランクに対応する1つのラインのみがアクティブ(「ホット」)である。ルックアップテーブルLUTエントリのエントリに応じて、中間結果tmp_resultが計算ユニットによって出力される。
【0059】
その構造は、ルックアップテーブルアプローチを補完する連想メモリ(コンテントアドレサブルメモリ、略してCAM)の構造に似ている。ただし、通常のCAMとは対照的に、計算ユニットは「=」ではなく「<」(または「>」)との比較を実行する。これは、適用された特徴値より小さい(または大きい)値を持つ全ての閾値メモリセルのマッチラインがアサートされることを意味する。これは、ランクのサーモメータエンコーディングを実装する。次に大きい(または小さい)閾値の限界を、サーモメータエンコーディングから決定することができ、メモリ行ごとにインバータ及びゲートで1ホットエンコーディングに変換することができる。この結果は、例えばLUTのワードラインとして直接使用され得る。
【0060】
周辺機器の大部分(例えば、外部探索ロジック、LUTメモリ用のアドレスデコーダ)は、この例示的実施形態ではもはや必要ない。メモリは読み取り専用にも使用されるため、メモリセルは、リーク電流(例えばシュミットトリガ構造またはULPダイオードの使用による)及び読み出し性能に対して最適化され得る。書き込み操作は、コンテンツを初期化するためにのみ必要である。これにより、NVRAMまたはROMを使用して電力及び面積効率を向上させることもできるようになる。クロックごとのランク算出で性能が向上するだけでなく、追加の電力及び面積を節約することができる。二分探索のための対数回のメモリアクセスの代わりに、1回のアクセスのみが必要である。この場合も、アドレスデコーダなどは不要であるが、マッチラインのエネルギー消費が追加される。これは周辺と同様の領域にあることが推定されるので、最終的にはアクセスごとに同様のエネルギー消費が発生する。
【0061】
図10は、LUTから分類結果を算出するためのコンバイナの別の例示的実施形態を示す。
図8に示されるコンバイナの単純化された構造が、1つの可能な実施態様に関してより詳細に説明される。ここでわかるように、複雑さはやや高くなるが、構造は依然として非常に規則的であり、完全に再構成可能である。
【0062】
描かれているのは、rank[i]専用の1つのLUT[i]である。中間LUT結果の個々のビットは、x∈[1;X]を用いてtmp_result[i][x]と名付けられ、XはLUTの合計ビット幅である。これらの個々のビットtmp_result[i][x]は、構成可能なビット幅p[q]のQ個の重複しないバイナリ値c[i][q]に連続して結合され、q∈[1;Q]はQ個の個々の値のインデックスである。これらのバイナリ値c[i][q]は、全ての特徴、つまりi∈[1;I]であるf
iにわたって合計されて、合計
【数13】
になる。そして合計s[q]は、対応する合計閾値st[q]、つまりv[q]=s[q]<st[q]と比較される。比較結果v[q]は、構成可能なサイズの連続した重複しないグループk[m]⊆[1;Q],m∈[1;M]にわたるAND削減によって、M個のグループ投票
【数14】
に結合される。これらのグループの結果は、個々の木及び/またはDTE全体のサブアンサンブルの投票に対応し得る。グループ投票g[m]は、調整可能な重みw[m]によってスケーリングされ、
【数15】
を合計することができる。レコードが最終的にどのクラスに属するかは、class=c_sum≧c_thrなどの閾値c_thrによって決まる。重み付けから始まる後半の部分は、すでに集約ユニットの一部になっている場合がある。
【0063】
図11は、コンバイナの例示的実施形態のさらなる詳細を示す。個々のパーツの実施態様については、7つの特徴、つまりI=7の例(及びLUT)を使用して以下に説明する。最初のステップ(2進数c[i][q]のインデックスxを持つ個々のビットの選択/組み合わせ及び加算)は、マルチプレクサ及び加算器によって実行される。ここでは、まずLUT出力が変換され、列方向に加算され、つまり、全てのLUT(インデックスi)の7つのLSBが加算されて3ビット値にされる。その結果は、次の列の3ビット値に(後者が実質的に2倍された後に、つまり1ビットだけ左にシフトされた後に)加算される。したがって、値c[i][1]のビット幅に対応するp[1]列は、s[1]、つまり7個のp[1]ビット値を加算した合計になる。次の合計s[2]に寄与するインデックスx+1=p[1]+1を持つ次の列では、tmp_result[i][p[1]]と前の値との合計の3ビットの代わりに、マルチプレクサによって定数「0」が選択され、この結果として加算器チェーンが中断される。LUTのワード幅Xの各列または各ビットxに対して、対応するマルチプレクサの設定を含む構成ビットcfg_mux[x]が存在する。したがって、全てのc[i][q]のビット幅は自由に設定可能である。閾値を2^(p[q]-2)に制限することで、s[q]<st[q](=2^(p[q]-2))の比較も簡単になる。s[q]からの2つの最上位ビット(MSB)のみが値「00」についてチェックされ、最下位ビット(LSB)は無関係である。どちらのビットも設定されていない場合、v[q]=1である。分類器の完全な再構成可能性を実現するために、各列を、例えば、3ビット加算器、構成ビットを備えた3ビットマルチプレクサ、及び2ビットコンパレータロジックを含むように、均等に実装することができるが、次のマルチプレクサ(インデックスx+1)が加算器チェーンを中断させるように設定されている結果のみが、
図10に示されている値に関係があり、対応している。残りの結果s[x]、v[x]は無視される。
【0064】
図12は、コンバイナの例示的実施形態のさらなる詳細を示す。この図面は、コンバイナのAND-ORチェーンを示す。次のステップの1つとして、コンパレータロジックv[q]の結果が、値g[m]にAND削減される。これは、全ての比較結果にわたって、描写したAND-ORチェーンによって行われる。構成ビットcfg_mux[x+1]は、関連する値のみを考慮するために、無関係な値v[x]をマスクすることができる。さらに、構成ビットcfg_and[x]のさらなるセットは、グループ間の境界でAND-ORチェーンを中断し、
図10に示された値g[m]に対応する関連値g[x](ここで、cfg_and[x]=1である)を決めるために使用することができる。
【0065】
コンバイナユニットからの投票(または分類)は、多数決を実行する別個の集約ユニットによって評価され得る。任意選択で、1ビット値g[m]に重みw[m]を乗じることができる。この操作は、g[m]=0の重みをミュートするマルチプレクサまたはANDゲートのセットによって実行され得るが、本明細書で説明するアプリケーションには必要ない場合がある。考慮されない値を持つ列xは、重み「0」で構成される。重み付けの結果は、加算器木で合計c_sumへと合計される。調整可能な閾値c_thrを持つコンパレータが、分類器の入力の特徴がどのクラスに対応するかを最終的に出力する。
【0066】
これまで、AND/ORアレイ、XOR回路、及びLUT値から全体的な結果を算出するために使用される上記の演算について検討した。提案した実施態様はすでにうまく機能しているが、このタスクを解決し、圧縮率をさらに高めるために、よりコンパクトでより効率的な構造が存在する可能性は否定できない。
【0067】
この改良された概念の説明には多くの詳細が含まれているが、これらは、概念の範囲または特許請求されたものもしくは請求できるものに対する制限として解釈されるべきではなく、むしろ本発明の特定の実施形態に特有の特徴の説明として解釈されるべきである。本開示で、別個の実施形態に関連して説明される特定の特徴は、単一の実施形態において組み合わせて実施することもできる。一方、単一の実施形態に関連して説明した様々な特徴は、いくつかの実施形態で別々に、または任意の適切なサブコンビネーションで実施することもできる。さらに、上では特徴は特定の組み合わせで作用するものとして説明し、本来はそのように特許請求することさえもあるが、場合によっては、特許請求する組み合わせから1つ以上の特徴を削除することがあり、特許請求する組み合わせがサブコンビネーションまたはサブコンビネーションの変形形態を対象にすることがある。
【0068】
したがって、図中の動作が特定の順序で示されている場合でも、これらの動作が、示された順序または起こった順番に実行されなければならないこと、あるいは所望の結果を達成するために、示された全ての動作が実行されなければならないこと、を意味すると理解されるべきではない。特定の状況下では、マルチタスク及び並列処理が有利な場合がある。
【0069】
いくつかの実施態様を説明した。言うまでもなく、本発明の趣旨及び範囲から逸脱することなく、多様な修正が成され得る。したがって、他の実施態様は特許請求の範囲内にある。
【符号の説明】
【0070】
1 ランク計算ブロック
2 木処理ブロック
10 計算ユニット
11 閾値メモリ
12 ロジック
13 入力コンパレータ
14 コンパレータ
15 コンパレータ入力
16 コンパレータ出力
17 ルックアップテーブル
18 コンバイナ
20 木処理ユニット
21 集約ユニット
【国際調査報告】