(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024170733
(43)【公開日】2024-12-11
(54)【発明の名称】ニューラルネットワーク構造提案装置およびニューラルネットワーク構造提案方法
(51)【国際特許分類】
G06N 3/082 20230101AFI20241204BHJP
【FI】
G06N3/082
【審査請求】未請求
【請求項の数】10
【出願形態】OL
(21)【出願番号】P 2023087411
(22)【出願日】2023-05-29
(71)【出願人】
【識別番号】000004237
【氏名又は名称】日本電気株式会社
(74)【代理人】
【識別番号】100103090
【弁理士】
【氏名又は名称】岩壁 冬樹
(74)【代理人】
【識別番号】100124501
【弁理士】
【氏名又は名称】塩川 誠人
(72)【発明者】
【氏名】小林 悠記
(57)【要約】
【課題】デバイスに適したニューラルネットワーク構造を見つけることを容易化する。
【解決手段】ニューラルネットワーク構造提案装置1は、ニューラルネットワークのレイヤであってパラメタが異なる複数のレイヤのそれぞれについて、対象デバイスでの、レイヤの実行時間見積もり量と単位時間あたりの計算量に相当する演算効率とを算出する演算効率解析手段2と、実行時間見積もり量が大きく、かつ、演算効率が低いレイヤを、他のレイヤに置換して、ニューラルネットワークの構造を示すニューラルネットワーク構造情報を出力するレイヤ構造置換手段3とを含む。
【選択図】
図10
【特許請求の範囲】
【請求項1】
ニューラルネットワークのレイヤであってパラメタが異なる複数のレイヤのそれぞれについて、対象デバイスでの、レイヤの実行時間見積もり量と単位時間あたりの計算量に相当する演算効率とを算出する演算効率解析手段と、
前記実行時間見積もり量が大きく、かつ、前記演算効率が低いレイヤを、他のレイヤに置換して、ニューラルネットワークの構造を示すニューラルネットワーク構造情報を出力するレイヤ構造置換手段と
を備えたニューラルネットワーク構造提案装置。
【請求項2】
前記レイヤ構造置換手段は、前記実行時間見積もり量が大きい順に、前記演算効率がしきい値以下であるレイヤについて置換を試みる
請求項1に記載のニューラルネットワーク構造提案装置。
【請求項3】
前記演算効率解析手段は、入力されたニューラルネットワーク構造情報を対象として、前記実行時間見積もり量と演算効率とを算出する
請求項1または請求項2に記載のニューラルネットワーク構造提案装置。
【請求項4】
少なくとも対象デバイスにおける各レイヤの実行時間を示す情報を含む対象デバイス特性情報を記憶する第1の記憶手段を備え、
前記演算効率解析手段は、前記対象デバイス特性情報における前記実行時間を参照して、前記実行時間見積もり量を算出する
請求項1または請求項2に記載のニューラルネットワーク構造提案装置。
【請求項5】
1つ以上のパラメタに対する条件から構成される置換条件と、変更後のパラメタを表す置換パラメタ情報との組の集合で表されるレイヤ置換候補情報を記憶する第2の記憶手段を備え、
前記レイヤ構造置換手段は、前記レイヤ置換候補情報を参照してレイヤの置換を行う
請求項4に記載のニューラルネットワーク構造提案装置。
【請求項6】
前記レイヤ構造置換手段は、ニューラルネットワークにおけるレイヤを、置換が行われる前のレイヤの構造と置換がなされた場合の置換後のレイヤの構造との類似度が所定の判定条件を満たすようなレイヤに置換する
請求項1または請求項2に記載のニューラルネットワーク構造提案装置。
【請求項7】
コンピュータが、
ニューラルネットワークのレイヤであってパラメタが異なる複数のレイヤのそれぞれについて、対象デバイスでの、レイヤの実行時間見積もり量と単位時間あたりの計算量に相当する演算効率とを算出し、
前記実行時間見積もり量が大きく、かつ、前記演算効率が低いレイヤを、他のレイヤに置換して、ニューラルネットワークの構造を示すニューラルネットワーク構造情報を出力する
ニューラルネットワーク構造提案方法。
【請求項8】
コンピュータが、
前記実行時間見積もり量が大きい順に、前記演算効率がしきい値以下であるレイヤについて置換を試みる
請求項7に記載のニューラルネットワーク構造提案方法。
【請求項9】
コンピュータに、
ニューラルネットワークのレイヤであってパラメタが異なる複数のレイヤのそれぞれについて、対象デバイスでの、レイヤの実行時間見積もり量と単位時間あたりの計算量に相当する演算効率とを算出させ、
前記実行時間見積もり量が大きく、かつ、前記演算効率が低いレイヤを、他のレイヤに置換して、ニューラルネットワークの構造を示すニューラルネットワーク構造情報を出力させる
ためのニューラルネットワーク構造提案プログラム。
【請求項10】
コンピュータに、
前記実行時間見積もり量が大きい順に、前記演算効率がしきい値以下であるレイヤについて置換を試みる処理を実行させる
請求項9に記載のニューラルネットワーク構造提案プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ニューラルネットワーク構造を提案するニューラルネットワーク構造提案装置およびニューラルネットワーク構造提案方法に関する。
【背景技術】
【0002】
深層学習(Deep Learning)分野におけるニューラルネットワークの構造、特にディープニューラルネットワークの構造を決定する際に、高い認識精度が維持されつつ、処理を高速に実行可能であることが重視される。以下、特に断らない限り、ニューラルネットワークは、ディープニューラルネットワークを含むネットワークであるとする。ニューラルネットワークの構造の決定や改良は、豊富な専門知識や経験を有する専門家に委ねられる。
【0003】
専門家は、ニューラルネットワークを実現するためのハードウェアデバイスでの実行速度よりもニューラルネットワークの認識精度を優先して、ニューラルネットワークの構造を決定したり改良したりしがちである。すなわち、一般に、専門家は、認識精度の向上を主眼として、ニューラルネットワークの構造を決定したり改良したりする。
【0004】
ニューラルネットワーク構造を自動的に探索することができる手法として、NAS(Neural Architecture Search)がある。
【0005】
非特許文献1には、実行時間を考慮したニューラルアーキテクチャ探索手法が記載されている。非特許文献2には、学習済みモデルに対して、再学習しながらレイヤの枝刈りを行う手法が記載されている。
【先行技術文献】
【非特許文献】
【0006】
【非特許文献1】Mingxing Tan, et.al., "MnasNet: Platform-Aware Neural Architecture Search for Mobile", Conference on Computer Vision and Pattern Recognition (CVPR), 2019, pp.2820-2828
【非特許文献2】Ariel Gordon, et.al., "MorphNet: Fast & Simple Resource-Constrained Structure Learning of Deep Network", Conference on Computer Vision and Pattern Recognition (CVPR), 2018, pp.1586-1594
【発明の概要】
【発明が解決しようとする課題】
【0007】
上述したように、専門家は、認識精度の向上を主眼として、ニューラルネットワークの構造を決定したり改良したりする。その結果、認識精度は向上するものの、ハードウェアデバイスの性能が十分活用されないおそれがある。すなわち、実行速度が速くないニューラルネットワーク構造が構成されるおそれがある。
【0008】
パラメタ数と計算量と実行速度とは、必ずしも相関しない。例えば、エッジ機器に搭載される深層学習専用アクセラレータといったデバイスは、汎用性を犠牲にして実行速度を向上させるように構成されることがある。その結果、デバイスが偏った特性を有する可能性がある。偏った特性の一例として、得意な処理と苦手な処理とが存在することが挙げられる。そのような理由によって、デバイスの処理性能を十分に引き出すことは難しい。すなわち、デバイスの演算効率が低くなる。
【0009】
なお、演算効率は、単位時間あたりに処理できる計算量である。演算効率として、GOPS(Giga Operation Per Second)またはGFLOPS(Giga Floating-point Operation Per Second)などの指標が用いられる。
【0010】
あるニューラルネットワーク構造を使用して演算を実行した際の演算効率が、ハードウェアデバイスのピーク性能(GOPSやGFLOPSなどで表現可能)と等しければ、デバイスの処理性能を最大限引き出しているといえる。しかし、演算効率がピーク性能より大幅に低い場合には、デバイスの処理性能を十分には引き出せていないことになる。
【0011】
デバイスに適した、演算効率が高いニューラルネットワーク構造を探索するために、デバイスの特性およびニューラルネットワークの双方を熟知した専門家が求められる。
【0012】
また、ニューラルネットワーク構造に対してわずかな変更を加えても、実行速度が大幅に変化するようなデバイスが存在する。そのようなデバイスにニューラルネットワーク構造を構築する場合に、専門家は、試行錯誤を繰り返す必要がある。したがって、専門家が、演算効率が高いニューラルネットワーク構造を得ることは容易ではない。
【0013】
また、NASを使用する場合でも、各レイヤの演算効率が高くなるようなニューラルネットワーク構造を直接的に得ることは難しい。
【0014】
本発明は、デバイスに適したニューラルネットワーク構造を見つけることを容易化できるニューラルネットワーク構造提案装置およびニューラルネットワーク構造提案方法を提供することを目的とする。
【課題を解決するための手段】
【0015】
本発明によるニューラルネットワーク構造提案装置は、ニューラルネットワークのレイヤであってパラメタが異なる複数のレイヤのそれぞれについて、対象デバイスでの、レイヤの実行時間見積もり量と単位時間あたりの計算量に相当する演算効率とを算出する演算効率解析手段と、実行時間見積もり量が大きく、かつ、演算効率が低いレイヤを、他のレイヤに置換して、ニューラルネットワークの構造を示すニューラルネットワーク構造情報を出力するレイヤ構造置換手段とを含む。
【0016】
本発明によるニューラルネットワーク構造提案方法は、コンピュータによって、ニューラルネットワークのレイヤであってパラメタが異なる複数のレイヤのそれぞれについて、対象デバイスでの、レイヤの実行時間見積もり量と単位時間あたりの計算量に相当する演算効率とを算出し、実行時間見積もり量が大きく、かつ、演算効率が低いレイヤを、他のレイヤに置換して、ニューラルネットワークの構造を示すニューラルネットワーク構造情報を出力する。
【0017】
本発明によるニューラルネットワーク構造提案プログラムは、コンピュータに、ニューラルネットワークのレイヤであってパラメタが異なる複数のレイヤのそれぞれについて、対象デバイスでの、レイヤの実行時間見積もり量と単位時間あたりの計算量に相当する演算効率とを算出させ、実行時間見積もり量が大きく、かつ、演算効率が低いレイヤを、他のレイヤに置換して、ニューラルネットワークの構造を示すニューラルネットワーク構造情報を出力させる。
【発明の効果】
【0018】
本発明によれば、デバイスに適したニューラルネットワーク構造を見つけることを容易化できる。
【図面の簡単な説明】
【0019】
【
図1】ニューラルネットワーク構造提案装置の構成例を示すブロック図である。
【
図2】入力ニューラルネットワーク構造情報の一例を示す説明図である。
【
図3】対象デバイス特性情報の一例を示す説明図である。
【
図5】レイヤ置換候補情報の一例を示す説明図である。
【
図6】出力ニューラルネットワーク構造情報の一例を示す説明図である。
【
図7】ニューラルネットワーク構造提案装置の動作を示すフローチャートである。
【
図8】カーネルサイズ拡大の例を示す説明図である。
【
図9】ニューラルネットワーク構造提案装置の機能を実現可能な情報処理装置の構成例を示すブロック図である。
【
図10】ニューラルネットワーク構造提案装置の主要部を示すブロック図である。
【発明を実施するための形態】
【0020】
以下、本発明の実施形態を図面を参照して説明する。
【0021】
図1は、ニューラルネットワーク構造提案装置の構成例を示すブロック図である。
図1に示すニューラルネットワーク構造提案装置10は、演算効率解析部20、レイヤ構造置換部30、対象デバイス特性情報記憶部40、およびレイヤ置換候補情報記憶部50を備えている。なお、対象デバイス特性情報記憶部40およびレイヤ置換候補情報記憶部50は、ニューラルネットワーク構造提案装置10の外部に存在してもよい。
【0022】
演算効率解析部20は、ニューラルネットワーク構造情報を入力する。ニューラルネットワーク構造情報は、ニューラルネットワークの構造を特定可能な情報である。本実施形態で扱われるニューラルネットワークは、主として畳み込みニューラルネットワーク(CNN)であるが、他の種類のニューラルネットワークであってもよい。以下、演算効率解析部20に入力されたニューラルネットワーク構造情報を入力ニューラルネットワーク構造情報という。
【0023】
演算効率解析部20は、対象デバイス特性情報記憶部40に記憶されている対象デバイス特性情報を用いて、演算効率情報を作成する。演算効率解析部20は、演算効率情報をレイヤ構造置換部30に出力する。なお、対象デバイスは、構造が決定されることになるニューラルネットワークが実装されるハードウェアデバイス、すなわち、ニューラルネットワークを実現するためのハードウェアデバイスである。
【0024】
レイヤ構造置換部30は、レイヤ置換候補情報記憶部50に記憶されているレイヤ置換候補情報と演算効率情報とに基づいてレイヤの置換を行って、ニューラルネットワーク構造情報を生成する。レイヤ構造置換部30は、ニューラルネットワーク構造情報を出力する。レイヤの置換は、例えば、レイヤのパラメタを変更することである。換言すると、レイヤの置換は、パラメタを変更することによって実現可能である。しかし、後述するように、レイヤの置換はレイヤのパラメタの変更に限られず、レイヤの置換の概念に、レイヤの種類を変更することも含まれてもよい。以下、レイヤ構造置換部30が出力するニューラルネットワーク構造情報を出力ニューラルネットワーク構造情報という。
【0025】
図2は、入力ニューラルネットワーク構造情報の一例を示す説明図である。
図2に示す例では、ニューラルネットワーク構造情報は、ニューラルネットワーク中のレイヤについて、パラメタのテーブルとして表されている。レイヤとして、中間レイヤ(隠れレイヤ)などがある。CNNの場合には、畳み込みレイヤなどがある。
【0026】
図2において、IDには、レイヤを一意に識別するための値が割り当てられている。Typeは、レイヤの種類を表す。
図2には、レイヤの種類の一例として、Convが示されている。Convは、畳み込みレイヤを表す。他の種類のレイヤの例として、要素ごとの乗算を表すMultや、要素ごとの加算を表すAddや、最大値プーリングを表すMaxPoolなどが挙げられる。
【0027】
IWおよびIHは、レイヤの空間サイズ(幅と高さ)を表す。ICは、入力チャネル数を表す。OCは、出力チャネル数を表す。KSは、カーネルサイズを表す。例えば、Type=Conv、KS=3のレイヤは、3×3の畳み込みレイヤを表す。KS=1のレイヤは、1×1の畳み込みレイヤを表す。
【0028】
STは、ストライド数を表す。ストライド数は、演算の適用間隔である。例えば、ストライド数=1は、カーネルを1つずつずらしながら適用することを示す。ストライド数=2は、カーネルを1つおきにずらしながら適用することを示す。
【0029】
GRは、Grouped Convolutionにおけるグループ数を表す。Type=Conv、GR=1のレイヤは、畳み込みレイヤを表す。Type=Conv、OC=32、GR=32のレイヤは、Depthwise畳み込みレイヤを表す。
【0030】
上述した記号の意味は、
図3~
図6についても同様である。
【0031】
なお、
図2に示すパラメタは一例である。対象とするニューラルネットワークの構造に合わせて、パラメタを追加したり削除したりしてもよい。例えば、正方形以外のカーネルサイズをサポートするために、x方向およびy方向それぞれにおいてカーネルサイズを指定できるようにしたり、ストライド数をx方向およびy方向それぞれにおいて指定できるようにしてもよい。
【0032】
図3は、対象デバイス特性情報の一例を示す説明図である。対象デバイス特性情報には、対象デバイスにおける各種レイヤの実行時間が含まれている。
【0033】
例えば、
図3における1行目には、Type=Conv、IW=IH=224、IC=3、OC=16、KS=3、ST=2、GR=1であるレイヤの、対象デバイスにおける実行時間が0.4であることが例示されている。実行時間の単位は、例えばミリ秒である。しかし、実行時間の単位はミリ秒でなくてもよい。また、
図3では、実行時間は小数で表されているが、整数で表されてもよい。
【0034】
なお、対象デバイスが変更される場合には、対象デバイス特性情報記憶部40において、あらかじめ対象デバイス特性情報の内容が入れ替えられる。
【0035】
また、対象デバイス特性情報記憶部40において、必ずしも全てのパラメタの組み合わせに対する実行時間が格納されていなくてもよい。なぜなら、後述するように、演算効率解析部20が、補間によって実行時間を得ればよいからである。
【0036】
図4は、演算効率情報の一例を示す説明図である。演算効率情報は、入力ニューラルネットワーク構造情報(
図2参照)に対して、実行時間見積もり量(以下、実行時間見積もりと表現する。)と演算効率が追加された情報である。実行時間見積もりは、見積もられた実行時間を意味する。
【0037】
実行時間見積もりは、演算効率解析部20によって算出される。具体的には、演算効率解析部20は、入力ニューラルネットワーク構造情報に含まれる各レイヤについて、対象デバイス特性情報における該当する実行時間を参照して、実行時間見積もりを算出する。演算効率解析部20は、対象デバイス特性情報記憶部40に、所望のパラメタの組み合わせが存在した場合には、それに対応する実行時間を、実行時間見積もりとして用いる。また、所望のパラメタの組み合わせが存在しない場合には、演算効率解析部20は、類似するパラメタの組み合わせを基に、補間によって実行時間見積もりを算出する。
【0038】
例えば、OC=24の場合の実行時間が必要であるが、対象デバイス特性情報に、OC=16の場合の実行時間XとOC=32の場合の実行時間Yしか含まれていない場合を想定する。その場合、演算効率解析部20は、X+(Y-X)*24/(32-16)の線形補間によって、OC=24の場合の実行時間見積もりを算出すればよい。
【0039】
なお、演算効率解析部20は、パラメタの種類やデバイスの特性によっては、線形補間ではなく二次補間などを行ってもよい。パラメタやデバイスに応じた補間手法は、例えば、あらかじめ演算効率解析部20において設定されている。
【0040】
演算効率解析部20は、入力ニューラルネットワーク構造情報に含まれるレイヤのパラメタから計算される計算量と、レイヤの実行時間見積もりとを用いて、各レイヤの演算効率を算出する。すなわち、演算効率は、下記の(1)式で計算される。
【0041】
演算効率=計算量/実行時間見積もり (1)
なお、以下の説明および
図4において、演算効率の値を、(1)式による算出値が1,000,000で割られた値で示す。
【0042】
演算効率の値が高いほど、単位時間あたり多くの計算が実行可能である。すなわち、演算効率の値が高いほど、効率がよい。
【0043】
計算量は、レイヤのパラメタから容易に算出可能である。演算効率解析部20は、例えば、畳み込みレイヤ(Type=Conv)の計算量を(2)式で計算すればよい。
【0044】
計算量=2*IW*IH*IC*OC*KS*KS/ST/ST/GR (2)
【0045】
なお、畳み込みレイヤで必要な1回の積和演算は、2つの演算(加算と乗算)としてカウントされる。よって、(2)式の右辺の先頭に「2*」が付いている。
【0046】
図5は、レイヤ置換候補情報の一例を示す説明図である。レイヤ置換候補情報は、1つ以上のパラメタに対する条件から構成される置換条件と、変更後のパラメタを表す置換パラメタ情報との組の集合で表される。レイヤ構造置換部30は、演算効率情報における各レイヤについて、後述する順序で置換を試みる。置換は、レイヤ置換候補情報に含まれる置換条件が成立した場合に、対応する置換パラメタ情報に示されるパラメタを置き換えることを意味する。
【0047】
例えば、
図5における1行目の置換条件は、TypeがConv、ICおよびOCが32、KSが1、STが1であるという条件である。
図5において、「*」は任意の値が一致することを表す。
図5における1行目では、IW、IH、GRは*である。したがって、この条件は、任意のIW、IH、GRの値に対して成立することを意味する。そして、
図5における1行目では、この置換場合が成立した場合に、レイヤ構造置換部30が、パラメタGRを2に設定することを表す。
【0048】
また、
図5において、[A:B]という表記は、AからBの間の任意の値であることを表す。例えば、
図5における3行目に例示された置換条件では、IWとIHとのそれぞれが17から31の間の値である場合に成立する。このとき、レイヤ構造置換部30が、IWおよびIHを32に設定することを表す。
図5における4行目に例示された置換条件では、IWとIHとのそれぞれが33から63の間の値である場合に成立する。このとき、レイヤ構造置換部30が、IWおよびIHを64に設定することを表す。
【0049】
なお、上記の例は切り上げ動作に基づく。しかし、レイヤ置換候補情報は別の形態で表現されてもよい。例えば、C言語やPython(登録商標)のようなプログラミング言語の条件文で表現することによって、より複雑な条件を表現することもできると考えられる。
【0050】
次に、レイヤ構造置換部30がレイヤ置換を行う順序を説明する。レイヤ構造置換部30は、例えば、演算効率情報におけるレイヤについて、実行時間見積もりが大きく、かつ、演算効率が低いレイヤから順にレイヤの置換を試みる。
【0051】
具体的には、レイヤ構造置換部30は、実行時間見積もりが大きいレイヤから順に演算効率を調べる。レイヤ構造置換部30は、演算効率がしきい値以下であるレイヤに対して、レイヤ置換候補情報を用いたレイヤの置換を試みる。しきい値は、あらかじめ設定される。例えば,好ましい値として、15.0に設定される。また、しきい値は、低い値から徐々に増やされてもよい。
【0052】
一例として、しきい値が15.0に設定された場合の動作を説明する。
図4において、実行時間見積もりが一番大きなレイヤはID=1のレイヤ(レイヤ1)である。レイヤ1の演算効率は3.4である。すなわち、演算効率は、しきい値15.0以下である。そこで、レイヤ構造置換部30は、レイヤの置換を試みる。このレイヤは、
図5における1行目に示された置換条件に当てはまる。レイヤ構造置換部30は、このレイヤを、パラメタGRを2としたレイヤに置換する。
【0053】
次に実行時間見積もりが大きなレイヤはレイヤID=3のレイヤ(レイヤ3)である。レイヤ3の演算効率は21.4である。すなわち、演算効率は、しきい値を上回る。そこで、レイヤ構造置換部30は、レイヤの置換をレイヤの置換を行わない。
【0054】
次に実行時間見積もりが大きいレイヤはレイヤID=4のレイヤ(レイヤ4)である。レイヤ4の演算効率は3.2である。すなわち、演算効率は、しきい値以下である。そこで、レイヤ構造置換部30は、レイヤの置換を試みる。ただし、
図5に示す例では適用可能な置換条件がないので、実際には、レイヤ構造置換部30は、レイヤの置換を行わない。
【0055】
このように、レイヤ構造置換部30は、実行時間見積もりの大きいレイヤから順に演算効率を評価し、レイヤの置換を試みる。しかし、レイヤID=4のレイヤのように、演算効率がしきい値以下であったとしてもレイヤの置換が実施されないこともある。
【0056】
なお、レイヤ構造置換部30は、全レイヤについて評価するのではなく、実行時間見積もりがあるしきい値以上のレイヤについてだけ評価するようにしてもよい。実行時間見積もりが相当小さなレイヤについては、レイヤの置換が行われても、ニューラルネットワーク全体の実行速度に対する影響が軽微であるからである。例えば、全レイヤの実行時間見積もりの総和の1%などを、しきい値とすることが考えられる。
【0057】
また、上記の説明では、置換前後のレイヤの数は1であったが、それに限られない。例えば、レイヤ構造置換部30は、1つのレイヤを複数のレイヤに置換したり、複数のレイヤを1つのレイヤに置換したりしてもよい。例えば、Depthwise-Separable Convolutionとして知られる1×1畳み込み、3×3畳み込み、1x1畳み込みで構成される3レイヤが、通常の3×3畳み込みに置換されてもよいし、その逆も可能である。この例は、Depthwise-Separable Convolutionが苦手なデバイスについて有効なレイヤの置換である。
【0058】
また、レイヤ置換候補情報に、あるレイヤに対する置換条件が複数成立することになる情報が含まれていてもよい。その場合、レイヤ構造置換部30は、一般に、置換後のレイヤの演算効率が高くなる置換を選択する。しかし、レイヤ構造置換部30は、それ以外の選択を行ってもよい。例えば、レイヤ構造置換部30は、演算効率が低下するとしても、実行時間見積もりが小さくなる置換を選択してもよい。なお、置換後のレイヤの演算効率は、対象デバイス特性情報から得ることが可能である。
【0059】
また、期待される認識精度をなるべく維持するために、レイヤの置換を行う際に、置換前のレイヤの構造との類似度を評価し、類似度が高い構造となるように置換するようにしてもよい。一例として、グループ数GRが32のレイヤに対して、グループ数を16にする置換条件とグループ数を8にする置換条件が存在する場合、グループ数の変化がなるべく少ないグループ数16にする置換を選択することが考えられる。なお、類似度を高いと判定するための判定条件は、この例では、最も類似度が高いという条件であるが、それには限られない。例えば、所定のしきい値を超えるという条件であってもよい。
【0060】
図6は、出力ニューラルネットワーク構造情報の一例を示す説明図である。
図2に示された入力ニューラルネットワーク構造情報を参照すると、レイヤID=1のレイヤのグループ数GRが32から2に置換されている。
図3を参照すると、置換後のレイヤID=1のレイヤの実行時間見積もりは1.4である。演算効率は、82.6である。演算効率は、
図4に示されたレイヤID=1のレイヤの演算効率3.4から改善されている。
【0061】
次に、ニューラルネットワーク構造提案装置10の動作を、
図7のフローチャートを参照して説明する。
【0062】
演算効率解析部20に、ニューラルネットワーク構造情報が入力される(ステップS11)。演算効率解析部20は、例えば上記の(2)を用いて、入力ニューラルネットワークのレイヤであってパラメタが異なる複数のレイヤのそれぞれについて、パラメタから計算量を算出する(ステップS12)。演算効率解析部20は、複数のレイヤのそれぞれについて、入力ニューラルネットワーク構造情報に含まれる各レイヤのパラメタを用い、かつ、対象デバイス特性情報における該当する実行時間を参照して、実行時間見積もりを算出する(ステップS13)。
【0063】
演算効率解析部20は、例えば上記の(1)を用いて、算出された計算量と実行時間見積もりとから、演算効率を算出する(ステップS14)。演算効率解析部20は、演算効率を、レイヤ構造置換部30に供給する(ステップS15)。
【0064】
レイヤ構造置換部30は、演算効率情報(
図4参照)における実行時間見積もりが大きく、かつ、演算効率が低いレイヤを対象として、レイヤ置換候補情報(
図5参照)を参照してレイヤを置換する(ステップS21)。レイヤ構造置換部30は、レイヤが置換されたニューラルネットワーク構造情報を、出力ニューラルネットワーク構造情報として出力する(ステップS22)。
【0065】
以上に説明したように、本実施形態では、演算効率解析部20は、与えられたニューラルネットワークの構造を解析し、ニューラルネットワーク中の各レイヤの、対象デバイスにおける演算効率を見積もる。レイヤ構造置換部30は、演算量が多く、かつ、演算効率が低いレイヤから順に、あらかじめ用意された、演算効率の高いレイヤへの置換を行う。そして、レイヤ構造置換部30は、代替レイヤ構造(元のレイヤとはパラメタが異なるレイヤ)に置換されたニューラルネットワーク構造を出力する。したがって、ニューラルネットワーク構造提案装置10は、対象デバイスに適したニューラルネットワーク構造を出力することができる。
【0066】
本実施形態では、対象デバイスに適したニューラルネットワーク構造を得ることができるので、演算リソースが限られるエッジ機器などにおいて、認識精度を維持しつつ実行速度を向上できる。一例として、本実施形態を、カメラを用いた物体検知システムの高速化といった用途に適用できる。
【0067】
なお、上記の実施形態では、レイヤ構造置換部30は、切り上げ動作に基づいてレイヤの置換を行った。切り上げ動作は、対象デバイスによっては実行速度面で有利であることがある。例えば、2のべき乗ではない空間サイズのレイヤの処理が苦手なデバイスについては、空間サイズが大きくなったとしても2のべき乗の空間サイズに切り上げた方が、実行速度面でむしろ有利になることがあり得る。空間サイズを大きくする場合には、等価な処理を実現可能である。また、空間サイズが大きくなることによって、認識精度が向上することも期待される。しかし、空間サイズを小さくすることが有利であることもある。例えば、空間サイズを小さくすることによって認識精度に多少の劣化が生じる可能性があるが、実行速度の向上を優先するために空間サイズを小さくすることも考えられる。
【0068】
他の例として、カーネルサイズKSを変更する場合を考える。カーネルサイズKSを大きくした場合、一般に、カーネルサイズKSの変更前と等価な処理を実現できる。例えば、3×3畳み込みカーネルを5×5畳み込みカーネルに変更する場合、
図8の(a)に示す3×3畳み込みカーネルの重みW0~W8を、
図8の(b)に示すように5×5畳み込みカーネルの重みとして配置すれば、等価な畳み込み演算となる。また、
図7の(b)における重みが0になっている部分を、再学習によって活用すれば、認識精度が向上することが期待される。
【0069】
なお、認識精度の劣化を避けたい場合には、3×3畳み込みから5×5畳み込みへの変更や、グループ数GRの削減など、論理的に等価な変換のみが可能なように、レイヤ置換候補情報を構成してもよい。
【0070】
また、ニューラルネットワーク構造提案装置10の出力は、変更後のニューラルネットワーク構造である。ニューラルネットワーク構造提案装置10の出力に、学習済みの重みなどは含まれない。すなわち、既に学習済み重みがある場合に、
図8に例示されたように学習済みの重みを再利用してもよい。また、ニューラルネットワーク構造提案装置10は、再利用後に再学習してもよい。また、ニューラルネットワーク構造提案装置10は、学習済みの重みを用いずにランダム重みなどを用いて最初から学習し直すようにしてもよい。
【0071】
また、上記の実施形態では、レイヤ構造置換部30が演算効率を向上させるような置換を行うことが想定されていた。しかし、演算効率を向上させるような置換に限定されない。例えば、レイヤ置換候補情報記憶部50に、エネルギー効率を重視したレイヤ置換候補情報が格納されてもよい。また、レイヤ置換候補情報記憶部50に、認識精度を重視したレイヤ置換候補情報が格納されてもよい。
【0072】
上記の実施形態のニューラルネットワーク構造提案装置10を、ハードウェアで構成することも可能であるが、コンピュータプログラムにより実現することも可能である。また、上記の各実施形態における各構成要素のうちの一部をハードウェアで構成し、他部をソフトウェアで構成することもできる。
【0073】
図9は、ニューラルネットワーク構造提案装置の機能を実現可能な情報処理装置の構成例を示すブロック図である。
図9に示す情報処理装置は、1つまたは複数のCPU(Central Processing Unit )などのプロセッサ、プログラムメモリ1002およびメモリ1003を含む。
図9には、1つのプロセッサ1001を有する情報処理装置が例示されている。
【0074】
プログラムメモリ1002は、例えば、非一時的なコンピュータ可読媒体(non-transitory computer readable medium)である。非一時的なコンピュータ可読媒体は、様々なタイプの実体のある記録媒体(tangible storage medium)を含む。例えば、プログラムメモリ1002として、フラッシュROM(Read Only Memory)などの半導体記憶媒体やハードディスク等の磁気記憶媒体が使用可能である。プログラムメモリ1002には、上記の実施形態のニューラルネットワーク構造提案装置10における各ブロック(演算効率解析部20、レイヤ構造置換部30)の機能を実現するための、ニューラルネットワーク構造提案プログラムが格納される。
【0075】
プロセッサ1001は、プログラムメモリ1002に格納されているニューラルネットワーク構造提案プログラムに従って処理を実行することによって、ニューラルネットワーク構造提案装置10の機能を実現する。複数のプロセッサが搭載されている場合には、複数のプロセッサが共働してニューラルネットワーク構造提案装置10の機能を実現することもできる。
【0076】
メモリ1003として、例えば、RAM(Random Access Memory)など一時的なコンピュータ可読媒体(transitory computer readable medium)が使用可能である。メモリ1003には、ニューラルネットワーク構造提案装置10が処理を実行しているときに発生する一時的なデータなどが記憶される。
【0077】
また、ニューラルネットワーク構造提案プログラムが、一時的なコンピュータ可読媒体に格納される形態も想定しうる。その場合には、有線通信路または無線通信路を介して、すなわち、電気信号、光信号または電磁波を介して、例えばメモリ1003にニューラルネットワーク構造提案プログラムが転送される。そして、プロセッサ1001が、メモリ1003内のニューラルネットワーク構造提案プログラムに基づいて処理を実行する。
【0078】
なお、プログラムメモリ1002とメモリ1003とは、一体であってもよい。また、
図1に示された対象デバイス特性情報記憶部40およびレイヤ置換候補情報記憶部50は、メモリ1003で実現可能である。
【0079】
図10は、ニューラルネットワーク構造提案装置の主要部を示すブロック図である。
図10に示すニューラルネットワーク構造提案装置1は、ニューラルネットワークのレイヤであってパラメタが異なる複数のレイヤ(例えば、
図2に示されたレイヤID0~ID4のレイヤ)のそれぞれについて、対象デバイスでの、レイヤの実行時間見積もり量と単位時間あたりの計算量に相当する演算効率とを算出する演算効率解析手段2(実施形態では、演算効率解析部20で実現される。)と、実行時間見積もり量が大きく、かつ、演算効率が低いレイヤを、他のレイヤ(例えば、元のレイヤとはパラメタが異なるレイヤ)に置換して、ニューラルネットワークの構造を示すニューラルネットワーク構造情報を出力するレイヤ構造置換手段3(実施形態では、レイヤ構造置換部30で実現される。)とを備えている。
【0080】
レイヤ構造置換手段3は、実行時間見積もり量が大きい順に、演算効率がしきい値以下であるレイヤについて置換を試みるように構成されていてもよい。
【0081】
少なくとも対象デバイスにおける各レイヤの実行時間を示す情報を含む対象デバイス特性情報を記憶する第1の記憶手段(例えば、対象デバイス特性情報記憶部40)を備え、演算効率解析手段2は、対象デバイス特性情報における実行時間を参照して、実行時間見積もり量を算出するように構成されていてもよい。
【0082】
1つ以上のパラメタに対する条件から構成される置換条件と、変更後のパラメタを表す置換パラメタ情報との組の集合で表されるレイヤ置換候補情報を記憶する第2の記憶手段(例えば、レイヤ置換候補情報記憶部50)を備え、レイヤ構造置換手段3は、レイヤ置換候補情報を参照して、レイヤの置換を行うように構成されていてもよい。
【0083】
上記の実施形態の一部または全部は、以下の付記のようにも記載され得るが、以下に限定されるわけではない。
【0084】
(付記1)ニューラルネットワークのレイヤであってパラメタが異なる複数のレイヤのそれぞれについて、対象デバイスでの、レイヤの実行時間見積もり量と単位時間あたりの計算量に相当する演算効率とを算出する演算効率解析手段と、
前記実行時間見積もり量が大きく、かつ、前記演算効率が低いレイヤを、他のレイヤに置換して、ニューラルネットワークの構造を示すニューラルネットワーク構造情報を出力するレイヤ構造置換手段と
を備えたニューラルネットワーク構造提案装置。
【0085】
(付記2)前記レイヤ構造置換手段は、前記実行時間見積もり量が大きい順に、前記演算効率がしきい値以下であるレイヤについて置換を試みる
付記1のニューラルネットワーク構造提案装置。
【0086】
(付記3)前記演算効率解析手段は、入力されたニューラルネットワーク構造情報を対象として、前記実行時間見積もり量と演算効率とを算出する
付記1または付記2のニューラルネットワーク構造提案装置。
【0087】
(付記4)少なくとも対象デバイスにおける各レイヤの実行時間を示す情報を含む対象デバイス特性情報を記憶する第1の記憶手段を備え、
前記演算効率解析手段は、前記対象デバイス特性情報における前記実行時間を参照して、前記実行時間見積もり量を算出する
付記1から付記3のいずれかのニューラルネットワーク構造提案装置。
【0088】
(付記5)1つ以上のパラメタに対する条件から構成される置換条件と、変更後のパラメタを表す置換パラメタ情報との組の集合で表されるレイヤ置換候補情報を記憶する第2の記憶手段を備え、
前記レイヤ構造置換手段は、前記レイヤ置換候補情報を参照してレイヤの置換を行う
付記1から付記4のいずれかのニューラルネットワーク構造提案装置。
【0089】
(付記6)前記レイヤ構造置換手段は、ニューラルネットワークにおけるレイヤを、置換が行われる前のレイヤの構造と置換がなされた場合の置換後のレイヤの構造との類似度が所定の判定条件を満たすようなレイヤに置換する
付記1から付記5のいずれかのニューラルネットワーク構造提案装置。
【0090】
(付記7)ニューラルネットワークのレイヤであってパラメタが異なる複数のレイヤのそれぞれについて、対象デバイスでの、レイヤの実行時間見積もり量と単位時間あたりの計算量に相当する演算効率とを算出し、
前記実行時間見積もり量が大きく、かつ、前記演算効率が低いレイヤを、他のレイヤに置換して、ニューラルネットワークの構造を示すニューラルネットワーク構造情報を出力する
ニューラルネットワーク構造提案方法。
【0091】
(付記8)前記実行時間見積もり量が大きい順に、前記演算効率がしきい値以下であるレイヤについて置換を試みる
付記7のニューラルネットワーク構造提案方法。
【0092】
(付記9)少なくとも対象デバイスにおける各レイヤの実行時間を示す情報を含む対象デバイス特性情報を記憶する第1の記憶手段に記憶されている前記対象デバイス特性情報における前記実行時間を参照して、前記実行時間見積もり量を算出する
付記7または付記8のニューラルネットワーク構造提案方法。
【0093】
(付記10)1つ以上のパラメタに対する条件から構成される置換条件と、変更後のパラメタを表す置換パラメタ情報との組の集合で表されるレイヤ置換候補情報を記憶する第2の記憶手段に記憶されている前記レイヤ置換候補情報を参照してレイヤの置換を行う
付記7から付記9のいずれかのニューラルネットワーク構造提案方法。
【0094】
(付記11)コンピュータに、
ニューラルネットワークのレイヤであってパラメタが異なる複数のレイヤのそれぞれについて、対象デバイスでの、レイヤの実行時間見積もり量と単位時間あたりの計算量に相当する演算効率とを算出させ、
前記実行時間見積もり量が大きく、かつ、前記演算効率が低いレイヤを、他のレイヤに置換して、ニューラルネットワークの構造を示すニューラルネットワーク構造情報を出力させる
ためのニューラルネットワーク構造提案プログラム。
【0095】
(付記12)コンピュータに、
前記実行時間見積もり量が大きい順に、前記演算効率がしきい値以下であるレイヤについて置換を試みる処理を実行させる
付記11のニューラルネットワーク構造提案プログラム。
【0096】
(付記13)コンピュータに、
ニューラルネットワークのレイヤであってパラメタが異なる複数のレイヤのそれぞれについて、対象デバイスでの、レイヤの実行時間見積もり量と単位時間あたりの計算量に相当する演算効率とを算出させ、
前記実行時間見積もり量が大きく、かつ、前記演算効率が低いレイヤを、他のレイヤに置換して、ニューラルネットワークの構造を示すニューラルネットワーク構造情報を出力させる
ためのニューラルネットワーク構造提案プログラムが記録されたコンピュータ読み取り可能な記録媒体。
【0097】
(付記14)コンピュータに、
前記実行時間見積もり量が大きい順に、前記演算効率がしきい値以下であるレイヤについて置換を試みる処理を実行させるニューラルネットワーク構造提案プログラム
が記録された付記13のコンピュータ読み取り可能な記録媒体。
【符号の説明】
【0098】
1,10 ニューラルネットワーク構造提案装置
2 演算効率解析手段
3 レイヤ構造置換手段
20 演算効率解析部
30 レイヤ構造置換部
40 対象デバイス特性情報記憶部
50 レイヤ置換候補情報記憶部
1001 プロセッサ
1002 プログラムメモリ
1003 メモリ