JP6750330B2 - プログラム生成装置およびプログラム生成方法 - Google Patents

プログラム生成装置およびプログラム生成方法 Download PDF

Info

Publication number
JP6750330B2
JP6750330B2 JP2016117682A JP2016117682A JP6750330B2 JP 6750330 B2 JP6750330 B2 JP 6750330B2 JP 2016117682 A JP2016117682 A JP 2016117682A JP 2016117682 A JP2016117682 A JP 2016117682A JP 6750330 B2 JP6750330 B2 JP 6750330B2
Authority
JP
Japan
Prior art keywords
execution order
decision tree
program
tree
processing
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
JP2016117682A
Other languages
English (en)
Other versions
JP2017224070A (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.)
NEC Corp
Original Assignee
NEC Corp
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 NEC Corp filed Critical NEC Corp
Priority to JP2016117682A priority Critical patent/JP6750330B2/ja
Publication of JP2017224070A publication Critical patent/JP2017224070A/ja
Application granted granted Critical
Publication of JP6750330B2 publication Critical patent/JP6750330B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Devices For Executing Special Programs (AREA)
  • Image Analysis (AREA)

Description

本発明は、プログラムを生成する技術に関するものであり、特に、連結決定木を実行するプログラムを生成する技術に関するものである。
情報処理装置において画像認識等を行う場合に、複数の決定木をカスケードで連結させた連結決定木を基に画像認識等を行うアルゴリズムが用いられることがある。連結決定木を構成する各決定木では、画像を構成する画素データ等の特徴量が決定木のノードにおいて評価される。特徴量が評価されるとノードごとに設定された閾値と比較され、比較結果を基に、隣接する次のノードへの遷移が行われる。ノード間での遷移によって決定木のリーフに到達すると、リーフに設定されている値が、認識対象であるかを判断する際のスコアとして算出される。各決定木においてリーフのスコアが算出されると、複数の決定木のスコアの累計値が最終的なスコアとして算出される。また、画像認識等では、多量の画像を識別するために短期間で処理結果が得られことが望ましく、画像認識等に関する処理を高速で行えることが望ましい。
画像認識等に用いる連結決定木は、汎用的なライブラリとして実装されることがある。しかし、ライブラリでは決定木の構造および値や閾値等のデータの特徴を利用した高速化を行うことは困難である。決定木の構造および値や閾値等のデータは、プログラムの実行時に与えられるため、プログラムのコンパイル時の最適化に利用できないからである。そのため、決定木の構成とデータを直接埋め込んだ条件分岐プログラムを自動生成することで,高速化を行う技術の開発が行われている。そのような、決定木を基にプログラムを自動生成する技術としては、例えば、非特許文献1のような技術が開示されている。
非特許文献1は、決定木を基に処理を行うプログラムを生成する技術に関するものである。非特許文献1では、決定木の構成情報を入力として、プログラムを生成するコンパイラが示されている。特許文献1のコンパイラは、学習によって作られた決定木の構成情報を入力として、決定木の構成に特化したプログラムを生成する。
また、特許文献1には、決定木に基づく認識処理を行う認識装置が開示されている。特許文献1の認識装置は、決定木の情報を有し認識処理を行う認識部と、決定木の各ノードをメモリ上に配置する配置部と、メモリを備えている。特許文献1において、配置部は、各ノードを最上位ノードからの深さに基づいて、メモリ上に配置する。配置部は、配置するノードの最上位ノードからの深さが閾値以下のとき、各ノードを決定木の幅方向の探索順に従ってメモリ上に配置する。また、配置部は、配置するノードの最上位ノードからの深さが閾値よりも大きいとき、各ノードを決定木の深さ方向の探索順に従ってメモリ上に配置する。特許文献1は、そのようにノードを配置することでキャッシュメモリに必要なデータが保持する可能性が高くなるため、処理の高速化を行うことができるとしている。
特許文献2には、ベクトル命令を用いたプログラムを生成するベクトル化コンパイラが示されている。特許文献2では、変数や関数の値を返す場所の管理を行うことで、大きさが動的に変化する木においてもベクトル命令を実行することができるとしている。
特開2011−150546号公報 特開平5−108700号公報
B. Bernstein,et al.,"Faster Real−Time Classfication Using Complilation",[平成28年5月11日検索],インターネット(URL:https://courses.cs.washington.edu/courses/cse501/10au/compile-machlearn.pdf)
しかしながら、非特許文献1の技術は次のような点で十分ではない。非特許文献1の技術は、1つの決定木だけを処理対象としたものである。よって、複数の決定木を処理する際には、決定木ごとの処理を繰り返し行う必要がある。そのため、非特許文献1の技術は、連結決定木の処理を十分に効率化することができない。また、特許文献1も、1つの決定木のノードをメモリ上に効率的に配置する技術である。そのため、特許文献1の技術は、連結決定木の特徴的な構造に基づいて、各ノードをメモリ上に配置することはできないため、連結決定木の処理を十分に効率化することはできない。同様に、特許文献2も1つの決定木の処理を対象とした技術のため、連結決定木の処理を十分に効率化することができない。よって、特許文献1および特許文献2の技術では、連結決定木を用いた際の処理を、連結決定木の特徴に基づいて十分に効率化することはできない。以上より、非特許文献1、特許文献1および特許文献2は、連結決定木を用いた処理を高速に行うための技術としては十分ではない。
本発明は、上記の課題を解決するため、連結決定木を用いた処理を高速で行うことができるプログラムを生成するプログラム生成装置を得ることを目的としている。
上記の課題を解決するため、本発明のプログラム生成装置は、構成情報取得手段と、実行順序決定手段と、プログラム生成手段を備えている。構成情報取得手段は、複数の決定木が連結された連結決定木の構成についての情報を構成情報として取得する。実行順序決定手段は、連結決定木に含まれる各ノードにおける処理をベクトル化して行う際の実行順序を、連結決定木の構成情報を基に決定する。プログラム生成手段は、実行順序に基づいて連結決定木が実行されるようにプログラムを生成する。
本発明のプログラム生成方法は、複数の決定木が連結された連結決定木の構成についての情報を構成情報として取得する。本発明のプログラム生成方法は、連結決定木に含まれる各ノードにおける処理をベクトル化して行う際の実行順序を、連結決定木の構成情報を基に決定する。本発明のプログラム生成方法は、実行順序に基づいて連結決定木が実行されるようにプログラムを生成する。
本発明によると、連結決定木を用いた処理を高速で行うことができる。
本発明の第1の実施形態の構成の概要を示す図である。 本発明の第2の実施形態の構成の概要を示す図である。 本発明の第2の実施形態の連結木構成情報の構成の例を示した図である。 本発明の第2の実施形態において連結決定木を用いて行われる処理を模式的に示した図である。 本発明の第2の実施形態の動作フローを示した図である。 本発明の第2の実施形態のデータ構造の例を示した図である。 本発明の第2の実施形態において生成されるプログラムの例を示した図である。 本発明と対比した構成におけるプログラムの例を示した図である。 本発明と対比した構成におけるプログラムの例を示した図である。 本発明の第2の実施形態の連結情報の例を示した図である。 本発明の第2の実施形態において連結決定木を用いて行われる処理の例を示した図である。 本発明の第2の実施形態におけるノードのデータの例を示した図である。 本発明の第2の実施形態における評価関数の例を示した図である。 本発明の第2の実施形態におけるデータ構造の例を示した図である。 本発明に第2の実施形態において生成されるプログラムの例を示した図である。 本発明の第3の実施形態の構成の概要を示す図である。 本発明の第3の実施形態の動作フローを示す図である。 本発明の第3の実施形態の決定木における処理の例を示す図である。 本発明の第3の実施形態の決定木における処理の例を示す図である。 本発明の第3の実施形態の複数の決定木における処理を模式的に示す図である。
(第1の実施形態)
本発明の第1の実施形態について図を参照して詳細に説明する。図1は、本実施形態のプログラム生成装置の構成の概要を示したものである。本実施形態のプログラム生成装置は、構成情報取得手段1と、実行順序決定手段2と、プログラム生成手段3を備えている。構成情報取得手段1は、複数の決定木が連結された連結決定木の構成についての情報を構成情報として取得する。実行順序決定手段2は、連結決定木に含まれる各ノードにおける処理をベクトル化して行う際の実行順序を、連結決定木の構成情報を基に決定する。プログラム生成手段3は、実行順序に基づいて連結決定木が実行されるようにプログラムを生成する。
本実施形態のプログラム生成装置は、構成情報取得手段1によって取得された連結決定木の構成情報を基に、連結決定木に含まれる各ノードにおける処理をベクトル化して行う際の実行順序を実行順序決定手段2において決定している。本実施形態のプログラム生成装置は、連結決定木の構成情報を基に各ノードにおける処理をベクトル化して行う際の処理の実行順序を決定しているため、連結決定木の構成に応じて最適な実行順序を決定することができる。そのため、本実施形態のプログラム生成装置は、そのように決定された実行順序を基にプログラム生成手段3においてプログラムを生成することで、連結決定木における処理を効率的に行うプログラムを生成することができる。その結果、本実施形態のプログラム生成装置を用いることで連結決定木を用いた処理を高速で行うことができる。
(第2の実施形態)
本発明の第2の実施形態について図を参照して詳細に説明する。図2は、本実施形態のプログラム生成装置10の構成の概要を示したものである。本実施形態のプログラム生成装置は、入力される連結決定木の構成に関する情報を基に、連結決定木を実行するプログラムを生成する装置である。連結決定木とは、複数の決定木がカスケードで連結されているものをいう。本実施形態のプログラム生成装置は、連結決定木を構成する各決定木のノードにおける処理がベクトル化されるように、異なる決定木のノードを横断的にたどるように実行順序を設定してプログラムを生成する。本実施形態のプログラム生成装置は、1つの決定木のノードをたどるよりも複数の決定木に含まれるノードをたどる処理の方が効率的に処理を行えるときに、複数の決定木に含まれるノードをたどる処理をベクトル化する。本実施形態のプログラム生成装置は、そのように複数の決定木に含まれるノードをたどる処理をベクトル化することで、連結決定木の処理を高速化することができるプログラムを生成することを特徴とする。
本実施形態のプログラム生成装置10は、実行順序決定部11と、データ構造決定部12と、ループ生成部13と、コード生成部14を備えている。また、本実施形態のプログラム生成装置10は、連結木構成情報入力部15と、装置情報入力部16をさらに備えている。
実行順序決定部11は、連結木構成情報を基に、処理の実行順序を決定する機能を有する。図3は、実行順序決定部11に入力される連結木構成情報を模式的に示したものである。連結木構成情報は、連結構造と、木構造と、データと、評価関数によって構成されている。連結構造は、連結決定木の構造、すなわち、連結決定木を形成するそれぞれの決定木がどのように結合しているかを示す情報である。連結構造には、例えば、ステージ数、ツリーの数、打ち切り処理の有無などの情報が含まれる。木構造は、単一の決定木の構造を示す情報である。データは、決定木の各ノードで用いられる閾値やスコア等の値である。評価関数は、各ノードにおいて実行される処理の内容を示す情報である。実行順序決定部11は、入力される連結木構成情報および装置情報を基に、処理の実行順序を決定し、決定した処理の実行順序の情報を、データ構造決定部12およびループ生成部13にそれぞれ送る。
実行順序決定部11は、連結決定木を実行する際に効率的に処理が行われるように実行順序を決定する。実行順序決定部11は、例えば、複数の決定木に属するノードのうち、同一のノードの処理がベクトル化されるように実行順序を決定する。同一のノードとは、各決定木の根ノードからの位置が同じノードのことをいう。そのような場合に、実行順序決定部11は、1つの決定木内のノードを順にたどる処理に代えて、複数の決定木の同一のノードにおける処理が最内側でベクトル化されるように実行順序を決定する。すなわち、実行順序決定部11は、各決定木を横断するようにノードの処理が進められるに実行順序を決定する。各決定木に含まれる同一のノードにおける処理、すなわち、処理内容が似ている処理をベクトル化することで、処理の効率が上がり処理速度の向上が期待できる。
また、本実施形態の実行順序決定部11は、第1の実施形態の実行順序決定手段2に相当する。
データ構造決定部12は、実行順序を基に、処理を行う際に利用されるデータをメモリ上に配置する機能を有する。データ構造決定部12は、実行順序決定部11から入力される実行順序の情報を基に、メモリ上のデータの配置を決定する。データ構造決定部12は、処理を実行する際にデータの読み書きに要する時間が短くなるように、データをメモリ上に配置する。データ構造決定部12は、例えば、実行順序に基づいて処理を行ったとき、連続で利用されるデータがメモリ上の連続した領域に保存されるようにデータを配置する。
ループ生成部13は、実行順序に基づいて、実行するループを生成する。ループ生成部13は、実行順序決定部11から入力される実行順序の情報を基に、処理を行う際に実行されるループを生成する。ループ生成部13は、実行順序に基づいて、複数の決定木の同一のノードにおける処理が最内側となるようにループを生成する。ループ生成部13は、生成したループの情報を、コード生成部14に送る。
コード生成部14は、実行順序、ループおよびデータ構造の情報を基に、プログラムを生成する機能を有する。コード生成部14は、データ構造決定部12から入力されるデータ構造と、ループ生成部13から入力されるループの情報を基に処理を実行する際に使用されるプログラムを生成する。コード生成部14は、C言語などのプログラム言語によってプログラムを生成し、コンパイラによって実行可能形式に変換する。コード生成部14は、実行可能な形式のプログラムのデータを直接、生成してもよい。
また、本実施形態のコード生成部14は、第1の実施形態のプログラム生成手段3に相当する。
連結木構成情報入力部15は、連結木構成情報の入力インタフェースとしての機能を有する。連結木構成情報入力部15は、入力された連結木構成情報を、自装置内で用いるデータ形式に変換して実行順序決定部11に送る。また、本実施形態の連結木構成情報入力部15は、第1の実施形態の構成情報取得手段1に相当する。
装置情報入力部16は、プログラムが実行される情報処理装置のハードウェアの情報の入力インタフェースとしての機能を有する。装置情報入力部16は、入力されたプログラムが実行される情報処理装置のハードウェアの構成に関する情報を、自装置内で用いるデータ形式に変換して装置情報として、実行順序決定部11に送る。装置情報入力部16は、入力された装置情報を実行順序決定部11に送る。装置情報とは、CPU(Central Processing Unit)やGPU(Graphics Processing Unit)等のプロセッサの数や機能、メモリ構成などプログラムを実行する装置の構成の情報のことをいう。プロセッサの機能には、例えば、ベクトル長や水平加算の有無などの情報が含まれる。
本実施形態の実行順序決定部11、データ構造決定部12、ループ生成部13およびコード生成部14は、半導体装置によって形成することができる。半導体装置は、CPUやメモリによって構成される。連結木構成情報入力部15および装置情報入力部16も、同様に半導体装置によって形成することができる。連結木構成情報入力部15および装置情報入力部16は、外部からデータを受信する通信モジュールを備えていてもよい。また、実行順序決定部11、データ構造決定部12、ループ生成部13、コード生成部14、連結木構成情報入力部15および装置情報入力部16の機能の全て、または、一部が1つの半導体装置内に形成されていてもよい。
本実施形態のプログラム生成装置の動作について説明する。図4は、本実施形態にプログラム生成装置が生成する連結決定木を用いた処理を模式的に示したものである。また、図5は、本実施形態のプログラム生成装置の動作フローを示したものである。
複数の決定木をカスケードで連結した連結決定木を用いて画像認識や音声認識などを行う場合に、図4に「tree0」のように示した各決定木において、それぞれスコアが算出される。図4に「tree0」等で示すように、各決定木は、白い丸で示したノードと、直線で示されているノード間を接続する枝によって構成されている。各決定木は、図4に示すように、頂点に配置されている根ノードから2つに分岐された先のノードがさらに2つに分岐される二分木型の木構造を有する。決定木を構成する各ノードには評価関数とスコアが設定され、入力されたデータと評価関数に基づいて遷移先のノードが順次、決定される。また、最終的に到達する遷移先が無い葉ノードにおけるスコアが各決定木のスコアとして算出される。
各ステージでは、各決定木のスコアの累計値が、各ステージの連結決定木の処理結果であるステージスコアとして算出される。図4の例では、各ステージの処理が順に行われて、処理の結果が所定の条件を満たしたときに打ち切られるか、最終スコアが算出される場合の例を示している。また、図4は、各ステージ内においては、処理の打ち切りは行われない例を示している。また、図4では、ステージとツリーの2階層の例を示しているが、本実施形態のプログラム生成装置において生成するプログラムにおける処理は、3階層以上に分けられていてもよく、また、1階層であってもよい。
図5を参照して本実施形態のプログラム生成装置の動作について説明する。プログラム生成装置が動作を開始すると、始めに、連結木構成情報が連結木構成情報入力部15を介して、実行順序決定部11に入力される(ステップ101)。また、装置情報が、装置情報入力部16を介して実行順序決定部11に入力される。連結木構成情報および装置情報は、画像認識や音声認識などを行う情報処理装置から連結木構成情報入力部15および装置情報入力部16にそれぞれ入力される。また、連結木構成情報および装置情報として、連結木構成情報入力部15および装置情報入力部16に保存されていた情報が、実行順序決定部11に入力されもよい。
連結木構成情報および装置情報が入力され、連結木構成情報等を取得すると、実行順序決定部11は、連結木構成情報および装置情報を基に処理の実行順序を決定する(ステップ102)。実行順序決定部11は、連結決定木を実行した際に、処理が効率的に行われるように実行順序を決定する。実行順序決定部11は、決定木の内部をたどる処理よりも、複数の決定木のノードをたどる処理を最内にしたときに処理が効率化される場合に、複数の決定木のノードをたどる処理が最内側の処理としてベクトル化されるように実行順序を決定する。処理の実行順序を決定すると、実行順序決定部11は、決定した処理の実行順序の情報をデータ構造決定部12およびループ生成部13に送る。
データ構造決定部12は、実行順序の情報を受け取ると、実行順序に基づいてメモリ上にデータを配置する。データ構造決定部12は、連続した処理において、閾値やスコア等のデータへのアクセスが連続で行えるようにメモリ上の配置を決定する(ステップ103)。
図6は、メモリ上に配置されるデータの構造の例を示したものである。図6の左側では、1つの決定木の各ノードのデータが順に配置され、1つの決定木のデータが全て配置された後に、次のノードのデータが配置されている。また、図6の右側では、各ノードに属するノードのうち同一のノードのデータが順に配置され、1つのノードのデータが全て配置された後に、各決定木の次のノードのデータが順に配置されている。実行順序決定部11が、複数の決定木のノードの処理が最内側でベクトル処理されるように実行順序を設定したときは、図6の右側のようにデータが配置される。図6の右側のようにデータを配置することで、連続した処理において、閾値やスコア等のデータへのアクセスが連続で行うことができるようになり処理の効率と速度が向上する。
データ構造決定部12は、データの配置を決定すると、メモリ上のデータの配置の情報をコード生成部14に送る。
また、ループ生成部13は、実行順序の情報を受け取ると、実行順序に基づいてループを生成する(ステップ104)。ループ生成部13は、ループを生成すると、生成したループの情報をコード生成部14に送る。ステップ103と104の動作は、並行して行われてもよい。また、ステップ104の動作が、ステップ103の動作よりも先に行われてもよい。
コード生成部14は、データの配置の情報と、ループの情報を受け取ると、データの配置の情報およびループの情報を基に、プログラムのコードを生成する(ステップ105)。コード生成部14は、コードを生成すると、生成したコードを実行可能形式に変換し、実行可能形式のプログラムのデータを出力する。コード生成部14が出力したプログラムは、情報処理装置等において連結決定木を用いた画像認識や音声認識等に用いられる。
図7は、本実施形態のプログラム生成装置が生成するプログラムの例を示したものである。図7の例では、始めに複数の決定木の1つ目のノードをたどる処理が最内側のループによって行われ、次に、複数の決定木の1つ目のノードをたどる処理が行われている。すなわち、本実施形態のプログラム生成装置は、1つの決定木をたどる処理ではなく、複数の決定木の同一のノードをたどる処理を最内側に設定してループを生成している。このような構成とすることで、本実施形態のプログラム生成装置は、連結決定木に対応するプログラムを実行する際の処理の効率を上げ、速度を向上させている。
図8は、本実施形態のプログラム生成装置が生成するプログラムと対比した例として、汎用ライブラリを用いて生成したプログラムの例を示している。図8の例では、1つの決定木内のノードをたどるループによって各ノードにおける処理が行われ、1つの決定木の処理が行われた後に、次の決定木の処理が行われる。このように、汎用ライブラリを用いた場合には、連結決定木の構造に基づいて実行順序を最適化することはできないので、処理の効率化を行うことはできない。
また、図9は、本実施形態のプログラム生成装置が生成するプログラムと対比した例として、if文を用いて1つの決定木のノードの処理を行った後に、複数の木の処理を行う場合の例を示している。図9のような場合では、if文を用いているためにベクトル化の効率が向上しない。一方で、本実施形態のプログラム生成装置は、連結決定木の構造に基づいて複数の決定木のノードの処理を最内側とするベクトル化処理を行う最適化されたプログラムを生成することができる。そのため、連結決定木に対応するプログラムを実行する際の処理の効率を上げ、速度を向上させることができる。
本実施形態のプログラム生成装置の動作についてより具体的に説明する。図10は、本実施形態のプログラム生成装置で用いられる連結情報の例を示したものである。また、図11は連結情報を、模式的に示した図である。
図10および図11は、3つの階層に分けた情報として連結決定木の構成に関する情報が連結情報として設定されている場合の例を示している。図10および図11の例では、第1階層においてステージの連結が行われ、第2階層においてツリーを結合する構成が設定されている。また、第3階層において決定木においてノードの処理が行われる。
図10および図11は、ステージが8個、各ステージの決定木が15個として設定されている例を示している。第1階層の各ステージのおける処理では、図10に示す打ち切りの条件を満たすときに処理の打ち切りが行われる。また、第2階層の各決定木における処理では打ち切りは行われない例を示している。図10および図11の例では、ステージ内におけるツリーの数は同一であるが、ツリーの数はステージ間で異なっていてもよい。
図12は、木の各ノードで利用されるデータの例を示している。また、図13は、各ノードで利用される評価関数の例を示している。決定木の各ノードでは、図13に示す評価関数に基づいて、ノードごとに決められているoffset0とoffset1にしたがって、変数名dataの配列の値が読み出され、読み出された値の差が算出される。算出された差の値は閾値と比較され、閾値よりも小さければscore0を評価値とし、閾値以上であればscore1が評価値として用いられる。また、図13では、次に遷移するノードが0と1によって示されている。図10および図11の例では、第3階層の決定木は、二分木であるので、遷移する可能性があるノードは2つ存在する。
図10および図11の構成の連結決定木を実行するプログラムを生成する際の動作について説明する。実行順序決定部11は、連結情報を読み込みと、直列構造で打ち切りが無い階層を最初に実行されるように選択する。最初に実行される階層、すなわち、最内側とする階層は、ベクトル化の対象となるが、その際に打ち切りがあるとベクトル化の効率が悪くなるからである。ベクトル処理が行われる場合には、複数の要素の処理が同時に行われるが、途中で打ち切りが行われる場合には、打ち切られた要素以降の処理が無駄になるため効率が低下する。打ち切りとは、その時点で一連の処理を中止し、処理の実行を終了することをいう。同様に、木構造をたどる処理を最内側にすると、本来たどられないノードを処理するなどが必要になるためベクトル処理の効率が悪化する。
図10および図11の例では、実行順序決定部11は、第2階層の決定木をたどる処理に打ち切りが設定されていない。そのため、実行順序決定部11は、第2階層の決定木をたどる処理を最内側として選択する。候補が複数ある場合には、構成要素が多い階層が選択されることが望ましい。構成要素が多い階層では、ベクトル長を長くすることができるので効率が高くなる。また、要素が1など極めて少ない階層は、ベクトル化の効率が悪いため、実行順序決定部11は、最内側として選択されない。
実行順序決定部11が実行順序を決定すると、データ構造決定部12は、実行順序に基づいてデータ構造、すなわち、データの配置を決定する。データ構造決定部12は、実行順序に従って、最内側の処理で利用するデータがメモリ上で連続となるようにデータの配置を決定する。図14は、データ構造決定部12が決定したデータ構造の例を示したものである。図14では、実行順序に基づいて、最内側の処理で利用されるデータが連続になるように配置されている。
コード生成部14は、データ構造決定部12およびループ生成部13から入力される情報を基に、プログラムを生成する。図15は、コード生成部14が生成するプログラムの例を模式的に示したものである。
図15の例では、決定木を示す「tree」を回るループがベクトル化の対象として最内側に設定されている。図15の例では、プログラムは、ソースコードの形式で生成されている。コード生成部14は、ソースコードをコンパイルする際のコンパイラの自動ベクトル化機能が利用できるようにコード生成を行う。また、コード生成部14は、intrinsic関数などを用いてベクトル処理を直接、記述したソースコードを生成する構成としてもよい。
また、図10および図11の例では、木の途中のノードとリーフのノードを区別せずに扱っているが、途中ノードとリーフの処理が分けられていてもよい。例えば、リーフに対しては後続のノードがないため、次のノードを求める処理を省略することで効率を高めることができる。
本実施形態のプログラム生成装置では、実行順序決定部11が連結決定木を構成する複数の決定木のノードをたどる処理がベクトル化されるように実行順序を決定している。ループ生成部13は、実行順序決定部11が決定した実行順序を基に、複数の決定木のノードをたどる処理が最内側となるようにループを生成する。また、データ構造決定部12は、実行順序を基に、連続で処理されるノードのデータがメモリ上で連続となるようにデータの配置を決定する。本実施形態のプログラム生成装置では、連結決定木を構成する複数の決定木のノードをたどる処理をベクトル化することで、単一の決定木のノードをたどる処理をベクトル化するようにも効率的に処理を行うことができる。その結果、実施形態のプログラム生成装置を用いることで、連結決定木を用いた処理を高速で行うことができる。
(第3の実施形態)
本発明の第3の実施形態について図を参照して詳細に説明する。図16は、本実施形態のプログラム生成装置20の構成の概要を示したものである。第2の実施形態のプログラム生成装置10は、入力された連結木構成情報を基に、実行順序の決定を行っている。本実施形態のプログラム生成装置は、そのような構成に加えて、決定木の構造の圧縮が可能であるときに圧縮を行った後の決定木の構成を基にプログラムの生成を行うことを特徴とする。
本実施形態のプログラム生成装置20は、木構造変換部21と、実行順序決定部22と、データ構造決定部23と、ループ生成部24と、コード生成部25を備えている。また、本実施形態のプログラム生成装置20は、連結木構成情報入力部26と、装置情報入力部27をさらに備えている。本実施形態のループ生成部24、コード生成部25、装置情報入力部27の構成と機能は、第2の実施形態の同名称の部位と同様である。
木構造変換部21は、連結木構成情報の木構造を変換する機能を有する。木構造変換部21は、連結木構成情報入力部26から入力される連結木構成情報に含まれる、木構造およびデータを基に決定木の圧縮を行う。木構造変換部21は、分岐先の2つのノードのデータに規則性があるとき、決定木の圧縮を行い、圧縮した木構造のデータを実行順序決定部22に送る。
実行順序決定部22は、第2の実施形態の実行順序決定部11と同様の機能を有する。実行順序決定部22は、木構造変換部21から入力される圧縮された構成に基づく連結木構成情報を基に実行順序を決定し、決定した実行順序の情報をデータ構造決定部23に送る。実行順序決定部22は、第2の実施形態の実行順序決定部11と同様の方法で実行順序を決定する。
データ構造決定部23は、第2の実施形態のデータ構造決定部12と同様の機能を有する。また、データ構造決定部23は、圧縮された決定木の構成と実行順序の情報を基に、データの配置を決定する。データ構造決定部23は、決定したデータの配置の情報をコード生成部25に送る。
本実施形態の木構造変換部21、実行順序決定部22、データ構造決定部23、ループ生成部24およびコード生成部25は、半導体装置によって形成することができる。半導体装置は、CPUやメモリによって構成される。連結木構成情報入力部26および装置情報入力部27も、同様に半導体装置によって形成することができる。連結木構成情報入力部26および装置情報入力部27は、外部からデータを受信する通信モジュールを備えていてもよい。また、プログラム生成装置20の各部位が有する機能の全て、または、一部が1つの半導体装置内に形成されていてもよい。
本実施形態のプログラム生成装置20の動作について説明する。図17は、本実施形態のプログラム生成装置20の動作フローを示したものである。プログラム生成装置が動作を開始すると、始めに、連結木構成情報が連結木構成情報入力部26を介して、木構造変換部21に入力される(ステップ111)。また、装置情報が、装置情報入力部27から実行順序決定部22に入力される。装置情報は、装置情報入力部27を介して実行順序決定部22に入力される。
連結木構成情報が入力されると、木構造変換部21は、連結木構成情報の木構造およびデータを確認し、木の圧縮が可能であるかを判断する。分岐先のノードのデータに規則性があるとき、木構造変換部21は、木構造の圧縮を行う(ステップ112)。木構造の圧縮を行うと、木構造変換部21は、木構造のデータに圧縮を行ったことを示す情報を付加し、木構造のデータを更新する。また、ノードのデータに規則性が無いとき、木構造変換部21は、決定木の構造の圧縮を行わずに連結木構成情報を実行順序決定部22に送る。木構造の確認が終わると、木構造変換部21は、更新された木構造のデータを含む連結木構成情報を実行順序決定部22に送る。
決定木の圧縮が可能な場合の例を図18に示す。図18の例では、ノード1のスコアは、0.5、ノード2のスコアは、−0.5として設定されている。このとき、ノード2のスコアは、ノード1のスコアに「−1」を乗じると算出できるような規則性があるとき、一方のスコアからもう一方のスコアを計算することができる。そのため、そのような規則性を有するときは、2つのスコアのデータを別々にメモリに保存する必要は無いため、決定木の構造を圧縮することができる。図19は、圧縮が行われた後の決定木の構造の圧縮が行われた後の決定木の構造を示したものである。図19の例では、ノード1のみが残されて、ノード2のスコアは、ノード1のスコアを基に計算によって算出される。
このような圧縮した構成では、ベクトル化した処理を行う場合に、特に効率の向上が期待できる。ベクトル化した処理を行う場合において、異なるツリーの複数のノードに対して処理が同時に行われる際には、図20に示す様に、ツリーによってscore0を使うかscore1を使うかいずれかの処理が行われる。この処理をベクトル化して行う際に、規則性を用いないと、4つのツリーに対してscore0とscore1をメモリからそれぞれ読み出し、条件判定の結果に基づいて適切な方を選択する処理が行われるので、それぞれのツリーにおいてメモリアクセスが2回発生する。一方で、本実施形態のように規則性を用いてscore0のみにアクセスするように圧縮することで、メモリアクセスを1回行えばよい。そのため、規則性に基づいて木の圧縮を行うことで処理の効率を向上することができる。
連結木構成情報および装置情報が入力されると、実行順序決定部22は、連結木構成情報および装置情報を基に処理の実行順序を決定する。処理の実行順序を決定すると、実行順序決定部22は、決定した処理の実行順序の情報をデータ構造決定部23およびループ生成部24に送る。
データ構造決定部23は、実行順序の情報を受け取ると、実行順序に基づいてメモリ上にデータを配置する。データ構造決定部12は、連続した処理において、閾値やスコア等のデータへのアクセスが連続で行えるようにメモリ上の配置を決定する。また、データ構造決定部23は、木構造の圧縮が行われた部分のデータは、圧縮後の構成に基づいてデータを配置する。
データ構造決定部23は、データの配置を決定すると、メモリ上のデータの配置の情報をコード生成部25に送る。また、ループ生成部24は、実行順序の情報を受け取ると、実行順序に基づいてループを生成する。ループ生成部24は、ループを生成すると、生成したループの情報をコード生成部25に送る。
コード生成部25は、データの配置の情報と、ループの情報を受け取ると、データの配置の情報およびループの情報を基に、プログラムのコードを生成する。コード生成部25は、コードを生成すると、生成したコードを実行可能形式に変換し、実行可能形式のプログラムのデータを出力する。
本実施形態のプログラム生成装置は、第2の実施形態と同様の効果を有する。また、本実施形態のプログラム生成装置は、木構造変換部21おいて所定の規則性のある決定木の構造の圧縮を行っている。決定木を圧縮することで、ノードを処理する際にメモリにアクセスする回数を減らすことができるので、連結決定木をプログラムによって実行する際の処理速度を向上することができる。その結果、本実施形態のプログラム生成装置を用いることで、連結決定木を用いた処理をより高速に行うことができる。
第2および第3の実施形態のプログラム生成装置は、連結決定木によって多数の対象を処理する場合にも、多数の対象を処理することに最適化したプログラムを生成することができる。例えば、連結決定木によって複数の画像の画像認識を行うような場合に用いることができる。複数の画像の画像認識を行うような場合には、複数の画像のデータに対する繰り返しの処理が行われる。実行順序決定部は、複数の画像のデータの処理を繰り返す部分が、ベクトル化などを考慮した際に最も効率がよいと判断した場合には、複数の画像のデータを処理する繰り返しの部分を最内側として選択する。すなわち、実行順序決定部は、異なるデータに対する同じ決定木における処理をベクトル化した方が効率がよいと判断したときは、異なるデータに対する同じ決定木における処理を最内側として選択する。そのような構成とすることで、複数の画像などを処理する場合においても、効率的に処理を行うことができる。
第2および第3のプログラム生成装置は、異なるステージの決定木に含まれるノードにおける処理をベクトル化してもよい。複数のステージの処理を行う際に、異なるステージのノードにおける処理を繰り返す部分をベクトル化した方が最も効率がよいと判断した場合に、実行順序決定部は、異なるステージの決定木に含まれるノードにおける処理を最内側として選択する。そのような構成とすることで、より効率的に処理を行うことが可能になる。
第2および第3の実施形態のプログラム生成装置において、プロセッサの情報を利用する構成としてもよい。例えば、プロセッサがサポートしているベクトル命令(Single Instruction Multiple Data;SIMD)のベクトル長を考慮して、最も効率がよい実行順序が選択されるようにしてもよい。
第2および第3の実施形態のプログラム生成装置において実行順序を決定する際に、打ち切り率や、決定木のノードの遷移率が利用されるようにしてもよい。多数のデータに対して、打ち切り率や遷移率に規則性がある場合には、規則性を利用してより効率的な実行順序を選択することができる。例えば、打ち切りが特定のステージ後のみで起こるという情報がある場合には、実行順序決定部は、その前後を分割してそれぞれベクトル化されるようにする。打ち切りが頻繁に起こるところで分割することで、打ち切りによって無駄になる処理を減らし、処理の効率を向上することができる。
第2および第3の実施形態のプログラム生成装置において、決定木の連結情報に打ち切りの有無の変更の可否の情報が含まれるようにしてもよい。ベクトル化した処理を実行する際に、一度に処理される要素間において打ち切り処理を無しに変えることで、処理の効率を上げることができる。打ち切りがある場合は、ベクトル化して一度に処理された要素のうち、打ち切り切られた要素について、最終的なスコアへの影響が生じないように除外する処理を行う必要がある。しかし、打ち切られる要素に関するスコアが最終的なスコアの計算に利用しても良い場合は、除外の処理が不要となる。そのため、打ち切らずに処理を継続させることで、ベクトル化した処理の効率を向上させることができる。ベクトル化して一度に処理した場合には、打ち切りに関する要素を処理したとしても、除外の処理が不要ならば効率の悪化を抑えることができる。
打ち切りを無しに変更できる場合には、例えば、要素の増加に対してスコアが単調増加する場合が該当する。ある要素で閾値を超えてその後に要素を追加しても閾値を下回らない場合には、打ち切らずに処理を計測しても最終的なスコアを基にした判断に影響は生じない。打ち切りの有無の変更の可否の情報は、連結情報として入力されてもよく、また、決定木のデータや評価関数を基に判断されるようにしてもよい。
第2および第3の実施形態のプログラム生成装置の各機能に相当する処理は、コンピュータプログラムとしてコンピュータで実行されるようにしてもよい。また、第2および第3の実施形態に示した各処理をコンピュータに実行させるできるプログラムは、記憶媒体格納して頒布することもできる。記憶媒体としては、例えば、データ記録用磁気テープや、ハードディスクなどの磁気ディスクを用いることができる。また、記憶媒体としては、CD-ROM(Compact Disc Read Only Memory)やDVD(Digital Versatile Disc)などの光ディスク、光磁気ディスク(MO:Magneto Optical disk)を用いることもできる。半導体メモリを記憶媒体として用いてもよい。
1 構成情報取得手段
2 実行順序決定手段
3 プログラム生成手段
10 プログラム生成装置
11 実行順序決定部
12 データ構造決定部
13 ループ生成部
14 コード生成部
15 連結木構成情報入力部
16 装置情報入力部
20 プログラム生成装置
21 木構造変換部
22 実行順序決定部
23 データ構造決定部
24 ループ生成部
25 コード生成部
26 連結木構成情報入力部
27 装置情報入力部

Claims (10)

  1. 複数の決定木が連結された連結決定木の構成についての情報を構成情報として取得する構成情報取得手段と、
    第1の遷移先ノードの値と、第2の遷移先ノードの値の間に所定の規則性がある際に、前記第1の遷移先ノードのみが存在するとみなした構造に前記決定木の構造を圧縮する木構造圧縮手段と、
    前記連結決定木に含まれる各ノードにおける処理をベクトル化して行う際の実行順序を、複数の前記決定木それぞれに含まれる前記ノードのうち、根ノードからの位置が同一の前記ノードにおける処理がベクトル化されるように決定する実行順序決定手段と、
    前記実行順序に基づいて前記連結決定木が実行されるようにプログラムを生成するプログラム生成手段と、
    を備えることを特徴とするプログラム生成装置。
  2. 前記実行順序に基づいて、異なる前記決定木に含まれる前記ノードをたどる処理を最内側にしたループを生成するループ生成手段と、
    前記実行順序を基に、前記連結決定木を実行する際に用いるデータのメモリ上の配置をデータ配置として決定するデータ構造決定手段と、
    をさらに備え、
    前記プログラム生成手段は、前記実行順序、前記ループおよび前記データ配置を基に前記プログラムを生成することを特徴とする請求項1に記載のプログラム生成装置。
  3. 前記実行順序決定手段は、処理結果によって打ち切りが生じない階層を、前記最内側の処理として実行される階層として設定することを特徴とする請求項2に記載のプログラム生成装置。
  4. 前記実行順序決定手段は、スコアが所定の基準を一度、満たすとその後の前記スコアの変化が最終的な判断に影響が無い場合に、打ち切り処理が設定されている階層において、前記打ち切り処理を行わずに処理が継続されるように前記実行順序を設定することを特徴とする請求項1から3いずれかに記載のプログラム生成装置。
  5. 多数のデータに前記連結決定木を用いる場合に、複数の前記データの処理の繰り返しをベクトル化することを特徴とする請求項1から4いずれかに記載のプログラム生成装置。
  6. 複数の決定木が連結された連結決定木の構成についての情報を構成情報として取得する構成情報取得処理と、
    第1の遷移先ノードの値と、第2の遷移先ノードの値の間に所定の規則性がある際に、前記第1の遷移先ノードのみが存在するとみなした構造に前記決定木の構造を圧縮する木構造圧縮処理と、
    前記連結決定木に含まれる各ノードにおける処理をベクトル化して行う際の実行順序を、複数の前記決定木それぞれに含まれる前記ノードのうち、根ノードからの位置が同一の前記ノードにおける前記処理がベクトル化されるように決定する実行順序決定処理と、
    前記実行順序に基づいて前記連結決定木が実行されるようにプログラムを生成するプログラム生成処理と、
    をコンピュータに実行させることを特徴とするプログラム生成用プログラム。
  7. 複数の決定木が連結された連結決定木の構成についての情報を構成情報として取得し、
    第1の遷移先ノードの値と、第2の遷移先ノードの値の間に所定の規則性がある際に、前記第1の遷移先ノードのみが存在するとみなした構造に前記決定木の構造を圧縮し、
    前記連結決定木に含まれる各ノードにおける処理をベクトル化して行う際の実行順序を、複数の前記決定木それぞれに含まれる前記ノードのうち、根ノードからの位置が同一の前記ノードにおける前記処理がベクトル化されるように決定し、
    前記実行順序に基づいて前記連結決定木が実行されるようにプログラムを生成することを特徴とするプログラム生成方法。
  8. 前記実行順序に基づいて、異なる前記決定木に含まれる前記ノードをたどる処理を最内側にしたループを生成し、
    前記実行順序を基に、前記連結決定木を実行する際に用いるデータのメモリ上の配置をデータ配置として決定し、
    前記実行順序、前記ループおよび前記データ配置を基に前記プログラムを生成することを特徴とする請求項7に記載のプログラム生成方法。
  9. 処理結果によって打ち切りが生じない階層を、前記最内側の処理として実行される階層として設定することを特徴とする請求項8に記載のプログラム生成方法。
  10. スコアが所定の基準を一度、満たすとその後の前記スコアの変化が最終的な判断に影響が無い場合に、打ち切り処理が設定されている階層において、前記打ち切り処理を行わずに処理が継続されるように前記実行順序を設定する請求項8または9に記載のプログラム生成方法。
JP2016117682A 2016-06-14 2016-06-14 プログラム生成装置およびプログラム生成方法 Active JP6750330B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2016117682A JP6750330B2 (ja) 2016-06-14 2016-06-14 プログラム生成装置およびプログラム生成方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2016117682A JP6750330B2 (ja) 2016-06-14 2016-06-14 プログラム生成装置およびプログラム生成方法

Publications (2)

Publication Number Publication Date
JP2017224070A JP2017224070A (ja) 2017-12-21
JP6750330B2 true JP6750330B2 (ja) 2020-09-02

Family

ID=60686036

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016117682A Active JP6750330B2 (ja) 2016-06-14 2016-06-14 プログラム生成装置およびプログラム生成方法

Country Status (1)

Country Link
JP (1) JP6750330B2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20230237097A1 (en) 2020-06-25 2023-07-27 Nec Corporation Information processing device, information processing method, and recording medium

Also Published As

Publication number Publication date
JP2017224070A (ja) 2017-12-21

Similar Documents

Publication Publication Date Title
JP6605573B2 (ja) 並列ディシジョン・ツリー・プロセッサー・アーキテクチャ
JP6404564B2 (ja) デコーダ、デコード方法およびプログラム
CN107102981B (zh) 词向量生成方法和装置
JP5950285B2 (ja) 予め決められた複数のビット幅のデータに対して操作を行う命令を使用してツリーの検索を行うための方法、並びに、当該命令を使用してツリーの検索を行うためのコンピュータ及びそのコンピュータ・プログラム
JP5032602B2 (ja) 認識装置
US9275039B2 (en) Information processing device, information processing method and computer program product
KR20140006911A (ko) Fsm을 구현하기 위한 특수 목적 요소의 이용
US20120047182A1 (en) Information processing apparatus, information processing method, and storage medium
JP6434162B2 (ja) データ管理システム、データ管理方法およびプログラム
CN112085166B (zh) 一种卷积神经网络模型加速训练方法、装置、电子设备及存储介质
CN109918658A (zh) 一种从文本中获取目标词汇的方法及系统
JP7369288B2 (ja) 画像処理方法、画像処理用コマンドの生成方法および装置
JP6750330B2 (ja) プログラム生成装置およびプログラム生成方法
US11231917B2 (en) Information processing apparatus, computer-readable recording medium storing therein compiler program, and compiling method
US10268798B2 (en) Condition analysis
KR102009216B1 (ko) 그래프 요약 및 압축 방법 및 시스템
US20150212804A1 (en) Loop distribution detection program and loop distribution detection method
CN114756444A (zh) 计算图优化方法及装置
US8994730B2 (en) Optimizing edge crossing computations when creating a drawing of a directed graph having a minimum number of edge crossings
US20230334345A1 (en) Abductive reasoning apparatus, abductive reasoning method, and non-transitory computer readable medium
JP2021173993A (ja) 音声処理方法及び装置
JP5385103B2 (ja) マクロ展開方法およびプリプロセッサ
KR20220123487A (ko) 코드 생성 방법, 장치, 기기 및 저장 매체
JP4128439B2 (ja) 配列圧縮方法
JP6412849B2 (ja) 通信特徴抽出装置、パケット分類装置、通信特徴抽出方法、パケット分類方法、及びプログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20190515

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20200225

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20200228

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20200414

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: 20200714

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20200727

R150 Certificate of patent or registration of utility model

Ref document number: 6750330

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150