(57)【特許請求の範囲】
【請求項１】
複数の層を有するニューラルネットワークが実装された場合のデバイスの処理性能を算出する処理性能算出部と、
前記ニューラルネットワークが実装された場合の前記デバイスの処理性能が要求処理性能を満たすが否かを判定する要求達成判定部と、
前記ニューラルネットワークが実装された場合の前記デバイスの処理性能が前記要求処理性能を満たさないと前記要求達成判定部により判定された場合に、前記ニューラルネットワークの各層の演算量に基づき、前記複数の層の中から、演算量を削減する層である削減層を指定する削減層指定部とを有する情報処理装置。
【請求項２】
前記削減層指定部は、
演算量が最大の層を前記削減層に指定する請求項１に記載の情報処理装置。
【請求項３】
前記削減層指定部は、
演算量が最大の層が２つ以上ある場合に、演算量が最大の２つ以上の層のうちで最後段の層を前記削減層に指定する請求項２に記載の情報処理装置。
【請求項４】
前記削減層指定部は、
演算量が最大の層の演算量と演算量が２番目の層の演算量との差が閾値未満であり、演算量が最大の層よりも演算量が２番目の層が後段に位置する場合に、演算量が２番目の層を前記削減層に指定する請求項１に記載の情報処理装置。
【請求項５】
前記削減層指定部は、
演算量が削減された後のニューラルネットワークが実装された場合の前記デバイスの処理性能が前記要求処理性能を満たすように前記削減層の演算量の削減量を決定する請求項１に記載の情報処理装置。
【請求項６】
前記削減層指定部は、
演算量が削減された後のニューラルネットワークが前記デバイスに実装された場合の前記デバイスの処理性能が前記要求処理性能を満たさない場合に、前記複数の層の中から、追加の削減層を指定する請求項１に記載の情報処理装置。
【請求項７】
前記削減層指定部は、
未だ前記削減層に指定されていない層のうちで演算量が最大の層を、前記追加の削減層に指定する請求項６に記載の情報処理装置。
【請求項８】
前記削減層指定部は、
既に前記複数の層の全てが前記削減層に指定されている場合に、削減後の演算量が最大の層を、前記追加の削減層に指定する請求項６に記載の情報処理装置。
【請求項９】
前記削減層指定部は、
演算量が削減された後のニューラルネットワークが前記デバイスに実装された場合の認識率が要求認識率を満たさない場合に、緩和された削減量を決定する請求項１に記載の情報処理装置。
【請求項１０】
コンピュータが、複数の層を有するニューラルネットワークが実装された場合のデバイスの処理性能を算出し、
前記コンピュータが、前記ニューラルネットワークが実装された場合の前記デバイスの処理性能が要求処理性能を満たすが否かを判定し、
前記ニューラルネットワークが実装された場合の前記デバイスの処理性能が前記要求処理性能を満たさないと判定された場合に、前記コンピュータが、前記ニューラルネットワークの各層の演算量に基づき、前記複数の層の中から、演算量を削減する層である削減層を指定する情報処理方法。
【請求項１１】
複数の層を有するニューラルネットワークが実装された場合のデバイスの処理性能を算出する処理性能算出処理と、
前記ニューラルネットワークが実装された場合の前記デバイスの処理性能が要求処理性能を満たすが否かを判定する要求達成判定処理と、
前記ニューラルネットワークが実装された場合の前記デバイスの処理性能が前記要求処理性能を満たさないと前記要求達成判定処理により判定された場合に、前記ニューラルネットワークの各層の演算量に基づき、前記複数の層の中から、演算量を削減する層である削減層を指定する削減層指定処理とをコンピュータに実行させる情報処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ニューラルネットワークに関する。
【背景技術】
【０００２】
ニューラルネットワーク（以下、単にネットワークともいう）では、大規模な演算を要する。このため、組込みデバイス等のリソースが限られるデバイスにニューラルネットワークをそのまま実装した場合は、リアルタイムにニューラルネットワークを動作させることができない。リソースが限られるデバイスでリアルタイムにニューラルネットワークを動作させるためには、ニューラルネットワークの軽量化が必要になる。【０００３】
特許文献１には、ニューラルネットワークの推論処理速度を向上させるための構成が開示されている。
特許文献１では、重み行列の次元量削減により、推論処理における積和演算量を低減する構成が開示されている。より具体的には、特許文献１では、計算量削減による認識精度低下を極力抑えるため、ニューラルネットワークの前段ほど削減量を少なく、後段ほど削減量を多くする構成が開示されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１８−１０９９４７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
特許文献１の技術では、ニューラルネットワークの後段の演算量を多く削減する。このため、後段の演算量が前段に比べて少ないニューラルネットワークでは、後段の演算量を必要以上に削減してしまう可能性がある。
演算量の削減は、認識精度に影響を与える。このため、後段の演算量を必要以上削減してしまうと、認識率が悪化し、要求認識精度を達成できない、という事態も発生し得る。
このように、特許文献１の技術では、ニューラルネットワーク内の演算量の分布を考慮しないため、演算量の分布に応じた効果的な演算量の削減を行うことができないという課題がある。【０００６】
本発明は、上記のような課題を解決することを主な目的の一つとしている。より具体的には、本発明は、ニューラルネットワーク内の演算量の分布に応じて、効果的にニューラルネットワークの演算量を削減できるようにすることを主な目的とする。
【課題を解決するための手段】
【０００７】
本発明に係る情報処理装置は、
複数の層を有するニューラルネットワークが実装された場合のデバイスの処理性能を算出する処理性能算出部と、
前記ニューラルネットワークが実装された場合の前記デバイスの処理性能が要求処理性能を満たすが否かを判定する要求達成判定部と、
前記ニューラルネットワークが実装された場合の前記デバイスの処理性能が前記要求処理性能を満たさないと前記要求達成判定部により判定された場合に、前記ニューラルネットワークの各層の演算量に基づき、前記複数の層の中から、演算量を削減する層である削減層を指定する削減層指定部とを有する。
【発明の効果】
【０００８】
本発明によれば、各層の演算量に基づき削減層を指定するため、ニューラルネットワーク内の演算量の分布に応じた効果的な演算量の削減を行うことができる。
【図面の簡単な説明】
【０００９】
【図１】実施の形態１に係るニューラルネットワークと組込みデバイスの例を示す図。
【図２】実施の形態１に係る各層の演算量と処理時間の例を示す図。
【図３】従来技術に係る演算量の削減例を示す図。
【図４】実施の形態１に係るボトルネックを示す図。
【図５】実施の形態１に係る演算量の削減例を示す図。
【図６】実施の形態１に係る動作の概要を示すフローチャート図。
【図７】実施の形態１に係る情報処理装置の機能構成例を示す図。
【図８】実施の形態１に係る情報処理装置のハードウェア構成例を示す図。
【図９】実施の形態１に係る情報処理装置の動作例を示すフローチャート。
【図１０】実施の形態１に係る情報処理装置の動作例を示すフローチャート。
【図１１】実施の形態１に係る緩和された演算量の削減例を示す図。
【図１２】実施の形態１に係る演算量の追加削減例を示す図。
【図１３】実施の形態１に係る同じの演算量の層が複数ある場合の削減例を示す図。
【図１４】実施の形態１に係る演算量が最大の層と演算量が２番目の層との間の演算量の差が閾値未満である場合の削減例を示す図。
【発明を実施するための形態】
【００１０】
以下、本発明の実施の形態について、図を用いて説明する。以下の実施の形態の説明及び図面において、同一の符号を付したものは、同一の部分又は相当する部分を示す。
【００１１】
実施の形態１．
＊＊＊概要＊＊＊
本実施の形態では、ニューラルネットワークを組込みデバイス等のリソースが限られるデバイスに実装する場合のニューラルネットワークの軽量化を説明する。
より具体的には、本実施の形態では、ニューラルネットワークの複数の層のうち最も演算量の多い層を抽出する。そして、抽出した層の演算量を、要求処理性能を満たすように削減する。また、演算量の削減後、再学習を実施することで、認識率の低下を抑制する。
以上の手順を繰り返し実行することで、本実施の形態によれば、リソースが限られるデバイスに実装可能な演算量の少ないニューラルネットワークを得ることができる。
【００１２】
＊＊＊手順＊＊＊
以下、図面を参照して、本実施の形態に係るニューラルネットワークの軽量化手順を説明する。
以下の説明及び図面において、同一の符号を付したものは、同一の部分又は相当する部分を示す。
【００１３】
本実施の形態では、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）等の組込みデバイスにニューラルネットワークを実装する例を説明する。また、組込みデバイスは、ニューラルネットワークの処理を１層ずつ逐次実行するものとする。更に、ニューラルネットワークの処理にかかる時間は、以下の式で算出可能である。
Σ（１層分の処理時間）
また、１層分の処理時間は、以下の式で算出可能である。
１層あたりの総積和演算回数（ＯＰ）／デバイスの処理能力（ＯＰ／ｓｅｃ）
なお、「１層あたりの総積和演算回数（ＯＰ）」は、ネットワークの仕様（パラメータ）から算出可能である。
「デバイスの処理能力（ＯＰ／ｓｅｃ）」は、組込みデバイスごとに一意に定まる。
以上より、ニューラルネットワークを組込みデバイスに実装した際の処理性能を算出することができる。
なお、以下では、処理性能とは、「Σ（１層分の処理時間）」、つまり、組込みデバイスがニューラルネットワークの全ての層の処理に要する時間（合計処理時間）をいう。
【００１４】
「Σ（１層分の処理時間）＜要求処理性能」の場合は、現状のニューラルネットワークを組込みデバイスに実装しても、要求処理性能を達成することができる。
一方、「Σ（１層分の処理時間）＞要求処理性能」の場合は、現状のニューラルネットワークを組込みデバイスに実装すると、要求処理性能を達成することができない。
【００１５】
「Σ（１層分の処理時間）＞要求処理性能」の場合は、ニューラルネットワークを変更して総積和演算回数を減らす必要がある。
ここで、図１に示すニューラルネットワーク１０及び組込みデバイス２０を想定する。
ニューラルネットワーク１０は、Ｌ０層、Ｌ１層及びＬ２層を有する。そして、組込みデバイス２０は、Ｌ０層、Ｌ１層及びＬ２層の順に各層を処理する。また、組込みデバイス２０は、１０ＧＯＰ（Ｇｉｇａ  Ｏｐｅｒａｔｉｏｎｓ）／ｓｅｃの処理能力を持つ。
また、組込みデバイス２０の要求処理性能は１秒であるとする。
【００１６】
図２に示すように、Ｌ０層の演算量（総積和演算回数）は１００ＧＯＰである。Ｌ１層の演算量（総積和演算回数）は０．１ＧＯＰである。Ｌ２層の演算量（総積和演算回数）は０．０１ＧＯＰである。
ニューラルネットワーク１０をそのまま組込みデバイス２０に実装したとすれば、図２に示すように、Ｌ０層の処理には１０秒が必要である。Ｌ１層の処理には０．０１秒が必要である。Ｌ２層の処理には、０．００１秒が必要である。
Ｌ０層、Ｌ１層及びＬ２層の合計処理時間は、１０．０１１秒であり、要求性能を満たさない。このため、ニューラルネットワーク１０の演算量（総積和演算回数）の削減が必要である。
【００１７】
特許文献１の技術では、「ニューラルネットワークの前段ほど削減量を小さく、後段ほど削減量を大きく」して演算量を削減する。例えば、以下のように総積和演算回数を削減すれば、要求処理性能を満たすことができる。
Ｌ０層の総積和演算回数の削減量：９１％
Ｌ１層の総積和演算回数の削減量：９２％
Ｌ２層の総積和演算回数の削減量：９３％
以上の削減量を実現すれば、図３に示すように、Ｌ０層の総積和演算回数は９ＧＯＰになり、Ｌ１層の総積和演算回数は０．００８ＧＯＰになり、Ｌ２層の総積和演算回数は０．０００７ＧＯＰになる。この結果、処理時間の合計は０．９００８７秒となり、要求処理性能を満たすことができる。
しかしながら、もともとの総積和演算回数が少なかったＬ２層を多く削減しているので、認識率の低下が発生し得る。
【００１８】
図４に示すように、本例では、Ｌ０層がボトルネックとなって要求処理性能を満たすことができない。
このため、本実施の形態では、図５に示すように、総和積和演算回数の最も多いＬ０層の演算量を削減する。
演算量の削減対象となる層を、以下では、削減層ともいう。
本実施の形態では、要求処理性能（本例では、１秒）が満たされるように、削減層の総積和演算回数の値を算出する。
図５の例では、Ｌ０層の処理時間を０．９８９秒にする必要がある。このため、Ｌ０層の総積和演算回数を９．８９ＧＯＰに削減する必要がある。
【００１９】
以上のようにして、削減層と削減量（図５の例では、９０．１１ＧＯＰ）が決まると、図６のステップＳ１に示すように、削減層の総積和演算回数が削減量だけ削減されるように、ニューラルネットワーク１０を変更する。
なお、総積和演算回数は任意の方法で削減可能である。例えば、枝刈りにより総積和演算回数を削減してもよい。
また、演算量の削減は、認識精度にも影響するため、本実施の形態では、図６のステップＳ２に示すように、ニューラルネットワーク１０の変更（演算量の削減）後に、再学習が実施される。
再学習の結果、所望の認識率を達成できることが判明すれば、変更後のニューラルネットワーク１０であっても、組込みデバイス２０上で要求処理性能及び要求認識精度を満たすことができる。
【００２０】
＊＊＊構成の説明＊＊＊
次に、本実施の形態に係る情報処理装置１００の構成を説明する。なお、情報処理装置１００により行われる動作は、情報処理方法及び情報処理プログラムに相当する。
図７は、情報処理装置１００の機能構成例を示し、図８は、情報処理装置１００のハードウェア構成例を示す。
先ず、図８を参照して、情報処理装置１００のハードウェア構成例を説明する。
【００２１】
＊＊＊構成の説明＊＊＊
本実施の形態に係る情報処理装置１００は、コンピュータである。
情報処理装置１００は、ハードウェアとして、ＣＰＵ９０１、記憶装置９０２、ＧＰＵ（Ｇｒａｐｈｉｃｓ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）９０３及び通信装置９０４及びバス９０５を備える。
ＣＰＵ９０１、記憶装置９０２、ＧＰＵ９０３及び通信装置９０４は、バス９０５に接続されている。
ＣＰＵ９０１及びＧＰＵ９０３は、プロセッシングを行うＩＣ（Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）である。
ＣＰＵ９０１は、後述する処理性能算出部１０１、要求達成判定部１０２、削減層指定部１０３、ネットワーク変換部１０４及び認識率判定部１０６の機能を実現するプログラムを実行する。
ＧＰＵ９０３は、後述する学習部１０５の機能を実現するプログラムを実行する。
記憶装置９０２は、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）等である。
記憶装置９０２には、処理性能算出部１０１、要求達成判定部１０２、削減層指定部１０３、ネットワーク変換部１０４、学習部１０５及び認識率判定部１０６の機能を実現するプログラムが記憶されている。前述のように、処理性能算出部１０１、要求達成判定部１０２、削減層指定部１０３、ネットワーク変換部１０４及び認識率判定部１０６の機能を実現するプログラムはＣＰＵ９０１に読み込まれ、ＣＰＵ９０１により実行される。学習部１０５の機能を実現するプログラムはＧＰＵ９０３に読み込まれ、ＧＰＵ９０３により実行される。
図８では、ＣＰＵ９０１が処理性能算出部１０１、要求達成判定部１０２、削減層指定部１０３、ネットワーク変換部１０４及び認識率判定部１０６の機能を実現するプログラムを実行している状態が模式的に表されている。また、図８では、ＧＰＵ９０３が学習部１０５の機能を実現するプログラムを実行している状態が模式的に表されている。
通信装置９０４は、データの通信処理を実行する電子回路である。
通信装置９０４は、例えば、通信チップ又はＮＩＣ（Ｎｅｔｗｏｒｋ  Ｉｎｔｅｒｆａｃｅ  Ｃａｒｄ）である。
【００２２】
次に、図７を参照して、情報処理装置１００の機能構成例を説明する。
【００２３】
処理性能算出部１０１は、ネットワーク構造情報１１１と処理能力情報１１２とを用いて、ニューラルネットワーク１０を組込みデバイス２０に実装した際の組込みデバイス２０の処理性能を算出する。
ネットワーク構造情報１１１には、図２に例示するニューラルネットワーク１０の各層の総積和演算回数が示される。ネットワーク構造情報１１１には、各層の総積和演算回数の代わりに、各層の総積和演算回数が算出可能なニューラルネットワーク１０の仕様が記述されていてもよい。
処理能力情報１１２には、図２に例示する組込みデバイス２０の処理能力（１０ＧＯＰ／ｓｅｃ）が示される。処理能力情報１１２には、組込みデバイス２０の処理能力の代わりに、組込みデバイス２０の処理能力が算出可能な組込みデバイス２０の仕様が記述されていてもよい。
なお、処理性能算出部１０１により行われる処理は、処理性能算出処理に相当する。
【００２４】
要求達成判定部１０２は、処理性能算出部１０１により算出された組込みデバイス２０の処理性能が要求処理性能情報１１３に記述されている要求処理性能を満たすか否かを判定する。
要求達成判定部１０２により行われる処理は、要求達成判定処理に相当する。
【００２５】
削減層指定部１０３は、削減層と、削減層の演算量の削減量を指定する。
つまり、ニューラルネットワーク１０が実装された場合の組込みデバイス２０の処理性能が要求処理性能を満たさないと要求達成判定部１０２により判定された場合に、削減層指定部１０３は、ニューラルネットワーク１０の各層の演算量に基づき、複数の層の中から、演算量を削減する層である削減層を指定する。より具体的には、削減層指定部１０３は、演算量が最大の層を削減層に指定する。また、削減層指定部１０３は、演算量が削減された後のニューラルネットワーク１０が実装された場合の組込みデバイス２０の処理性能が要求処理性能を満たすように削減層の演算量の削減量を決定する。
削減層指定部１０３により行われる処理は、削減層指定処理に相当する。
【００２６】
ネットワーク変換部１０４は、削減層指定部１０３により指定された削減層の演算量が削減層指定部１０３により決定された削減量だけ削減されるようにニューラルネットワーク１０を変換する。
【００２７】
学習部１０５は、ネットワーク変換部１０４による変換後のニューラルネットワーク１０を学習データセット１１４を用いて学習する。
【００２８】
認識率判定部１０６は、学習部１０５の学習結果を分析して、変換後のニューラルネットワーク１０の認識率が要求認識率情報１１５に記述される要求認識率を満たすか否かを判定する。
【００２９】
変換後のニューラルネットワーク１０の認識率が要求認識率を満たし、また、変換後のニューラルネットワーク１０を実装した場合の組込みデバイス２０の処理性能が要求処理性能を満たす場合は、要求達成判定部１０２が軽量化ネットワーク構造情報１１６を出力する。
軽量化ネットワーク構造情報１１６には、変換後のニューラルネットワーク１０の各層の総積和演算回数が示される。
【００３０】
＊＊＊動作の説明＊＊＊
次に、本実施の形態に係る情報処理装置１００の動作例を、図９及び図１０を参照して説明する。
【００３１】
先ず、処理性能算出部１０１が、ネットワーク構造情報１１１と処理能力情報１１２とを取得し、取得したネットワーク構造情報１１１と処理能力情報１１２とを用いて、ニューラルネットワーク１０を組込みデバイス２０に実装した際の組込みデバイス２０の処理性能を算出する（ステップＳ１０１）。
処理性能算出部１０１は、「１層あたりの総積和演算回数（ＯＰ）／デバイスの処理能力（ＯＰ／ｓｅｃ）」により各層の処理時間を算出し、算出した各層の処理時間を合計して組込みデバイス２０の処理性能を得る。
【００３２】
次に、要求達成判定部１０２が、処理性能算出部１０１により算出された組込みデバイス２０の処理性能が要求処理性能情報１１３に記述されている要求処理性能を満たすか否かを判定する（ステップＳ１０２）。
【００３３】
組込みデバイス２０の処理性能が要求処理性能を満たす場合（ステップＳ１０３でＹＥＳ）は、処理が終了する。
【００３４】
組込みデバイス２０の処理性能が要求処理性能を満たさない場合（ステップＳ１０３でＮＯ）は、削減層指定部１０３が、ボトルネック解析を行い（ステップＳ１０４）、削減層と、削減層の演算量の削減量を指定する（ステップＳ１０５）。
具体的には、削減層指定部１０３は、図４に例示する各層の総積和演算回数と処理時間とが記述される情報を要求達成判定部１０２から取得し、総積和演算回数が最大の層を削減層に指定する。
また、削減層指定部１０３は、削減層と削減量とを通知する情報をネットワーク変換部１０４に出力する。
【００３５】
次に、ネットワーク変換部１０４が、削減層指定部１０３により指定された削減層の総積和演算回数が削減層指定部１０３により決定された削減量だけ削減されるようにニューラルネットワーク１０を変換する（ステップＳ１０６）。
ネットワーク変換部１０４は、ネットワーク構造情報１１１を参照して、ニューラルネットワークを変換する。
また、ネットワーク変換部１０４は、変換後のニューラルネットワーク１０を学習部１０５に通知する。
【００３６】
次に、学習部１０５が、ネットワーク変換部１０４による変換後のニューラルネットワーク１０を学習データセット１１４を用いて学習する（ステップＳ１０７）。
学習部１０５は、学習結果を認識率判定部１０６に出力する。
【００３７】
次に、認識率判定部１０６が、学習部１０５の学習結果を分析して、変換後のニューラルネットワーク１０の認識率が要求認識率情報１１５に記述される要求認識率を満たすか否かを判定する（ステップＳ１０８）。
変換後のニューラルネットワーク１０の認識率が要求認識率を満たさない場合は、認識率判定部１０６は、認識率が要求認識率を満たさない旨を削減層指定部１０３に通知する。
一方、変換後のニューラルネットワーク１０の認識率が要求認識率を満たす場合は、認識率判定部１０６は、認識率が要求認識率を満たす旨を処理性能算出部１０１に通知する。
【００３８】
変換後のニューラルネットワーク１０の認識率が要求認識率を満たさない場合（ステップＳ１０８でＮＯ）は、削減層指定部１０３が、削減量の再指定を行う（ステップＳ１０９）。削減量の再指定では、削減層指定部１０３は、削減量の緩和を行う。
つまり、削減層指定部１０３は、演算量が削減された後のニューラルネットワーク１０が組込みデバイス２０に実装された場合の認識率が要求認識率を満たさない場合に、緩和された削減量を決定する。
例えば、削減層指定部１０３は、図１１に示す削減量の緩和を行う。
図１１では、削減層指定部１０３は、Ｌ０層の総積和演算回数を９．８９ＧＯＰから９．８９５ＧＯＰに増やすことにより削減量の緩和を行っている。この場合は、処理性能が１．０００５秒となり、わずかに要求処理性能に満たない。
【００３９】
変換後のニューラルネットワーク１０の認識率が要求認識率を満たす場合（ステップＳ１０８でＹＥＳ）は、処理性能算出部１０１が、変換後のニューラルネットワーク１０に対する組込みデバイス２０の処理性能を算出する（ステップＳ１１０）。
つまり、処理性能算出部１０１は、変換後のニューラルネットワーク１０についてのネットワーク構造情報１１１と処理能力情報１１２とを用いて、組込みデバイス２０の処理性能を算出する。
【００４０】
次に、要求達成判定部１０２が、処理性能算出部１０１により算出された組込みデバイス２０の処理性能が要求処理性能情報１１３に記述されている要求処理性能を満たすか否かを判定する（ステップＳ１１１）。
【００４１】
組込みデバイス２０の処理性能が要求処理性能を満たす場合（ステップＳ１１２でＹＥＳ）は、処理が終了する。このとき、要求達成判定部１０２は、軽量化ネットワーク構造情報１１６を規定の出力先に出力する。
【００４２】
組込みデバイス２０の処理性能が要求処理性能を満たさない場合（ステップＳ１１２でＮＯ）は、削減層指定部１０３が、ボトルネック解析を行い（ステップＳ１１３）、削減層と、削減層の演算量の削減量を再指定する（ステップＳ１１４）。
ステップＳ１１４では、削減層指定部１０３は、未だ削減層に指定されていない層を追加の削減層として指定する。
例えば、削減層指定部１０３は、未だ削減層に指定されていない層のうちで総積和演算回数が最大の層を追加の削減層として指定する。
図１２の例では、既にＬ０層が削減層に指定されており、Ｌ１層の総積和演算回数がＬ２の総積和演算回数よりも多いため、削減層指定部１０３は、Ｌ１層を追加の削減層に指定している。そして、図１２の例では、削減層指定部１０３は、Ｌ１層の総積和演算回数を０．０４ＧＯＰに削減する（削減量：０．０６ＧＯＰ）ことを決定している。この結果、処理性能は、１秒となり、要求処理性能を満たす。
なお、既に全ての層を削減層に指定している場合は、削減層指定部１０３は、削減後の演算量が最大の層を追加の削減層に指定する。
【００４３】
ステップＳ１１５〜Ｓ１１８は、ステップＳ１０６〜Ｓ１０９と同じであるため、説明を省略する。
【００４４】
上記では、Ｌ０層の総積和演算回数がＬ１層及びＬ２層もよりも多い例を用いた。
しかし、ニューラルネットワークによっては、総積和演算回数が同じの層が複数ある場合がある。このような場合は、削減層指定部１０３は、後段の層を優先して削減層に指定する。つまり、削減層指定部１０３は、総積和演算回数が最大の層が２つ以上ある場合に、総積和演算回数が最大の２つ以上の層のうちで最後段の層を削減層に指定する。これは、後段の層ほど、演算量の削減による認識率の低下が発生しにくいためである。
例えば、図１３に示すように、Ｌ０層の総積和演算回数とＬ１層の総積和演算回数がともに１００ＧＯＰである場合は、削減層指定部１０３は、後段の層であるＬ１層を削減層に指定する。
【００４５】
また、演算量が最大の層の演算量と演算量が２番目の層の演算量との差が閾値未満であり、演算量が最大の層よりも演算量が２番目の層が後段に位置する場合は、削減層指定部１０３が、演算量が２番目の層を削減層に指定するようにしてもよい。
例えば、閾値が演算量が最大の層の演算量の１０％である場合を想定する。この場合に、図１４に示すように、Ｌ０層の総積和演算回数が１００ＧＯＰであり、Ｌ１層の総積和演算回数が９５ＧＯＰである場合は、Ｌ０層とＬ１層との間の総積和演算回数の差はＬ０層の総積和演算回数の１０％未満なので、削減層指定部１０３は、後段の層であるＬ１層を削減層に指定する。
なお、閾値は１０％に限定されない。情報処理装置１００のユーザが任意に閾値を設定することができる。
【００４６】
＊＊＊実施の形態の効果の説明＊＊＊
以上、本実施の形態によれば、各層の演算量に基づき削減層を指定するため、ニューラルネットワーク内の演算量の分布に応じた効果的な演算量の削減を行うことができる。
【００４７】
また、本実施の形態によれば、ニューラルネットワークの設計者が、実装先の組込みデバイスに関する知識が無くても、組込みデバイスの要求処理性能を満たすニューラルネットネットワークを自動的に得ることができる。
同様に、本実施の形態によれば、組込みデバイスの実装担当者が、ニューラルネットワークに関する知識が無くても、組込みデバイスの要求処理性能を満たすニューラルネットネットワークを自動的に得ることができる。
【００４８】
＊＊＊ハードウェア構成の説明＊＊＊
最後に、情報処理装置１００のハードウェア構成の補足説明を行う。
【００４９】
記憶装置９０２には、ＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）が記憶されている。
そして、ＯＳの少なくとも一部がＣＰＵ９０１により実行される。
ＣＰＵ９０１はＯＳの少なくとも一部を実行しながら、処理性能算出部１０１、要求達成判定部１０２、削減層指定部１０３、ネットワーク変換部１０４及び認識率判定部１０６の機能を実現するプログラムを実行する。
ＣＰＵ９０１がＯＳを実行することで、タスク管理、メモリ管理、ファイル管理、通信制御等が行われる。
また、処理性能算出部１０１、要求達成判定部１０２、削減層指定部１０３、ネットワーク変換部１０４、学習部１０５及び認識率判定部１０６の処理の結果を示す情報、データ、信号値及び変数値の少なくともいずれかが、記憶装置９０２、レジスタ及びキャッシュメモリの少なくともいずれかに記憶される。
また、処理性能算出部１０１、要求達成判定部１０２、削減層指定部１０３、ネットワーク変換部１０４、学習部１０５及び認識率判定部１０６の機能を実現するプログラムは、磁気ディスク、フレキシブルディスク、光ディスク、コンパクトディスク、ブルーレイ（登録商標）ディスク、ＤＶＤ等の可搬記録媒体に格納されていてもよい。そして、処理性能算出部１０１、要求達成判定部１０２、削減層指定部１０３、ネットワーク変換部１０４、学習部１０５及び認識率判定部１０６の機能を実現するプログラムが格納された可搬記録媒体を商業的に流通させてもよい。
【００５０】
また、処理性能算出部１０１、要求達成判定部１０２、削減層指定部１０３、ネットワーク変換部１０４、学習部１０５及び認識率判定部１０６の「部」を、「回路」又は「工程」又は「手順」又は「処理」に読み替えてもよい。
また、情報処理装置１００は、処理回路により実現されてもよい。処理回路は、例えば、ロジックＩＣ（Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）、ＧＡ（Ｇａｔｅ  Ａｒｒａｙ）、ＡＳＩＣ（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）、ＦＰＧＡ（Ｆｉｅｌｄ−Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）である。
なお、本明細書では、プロセッサと処理回路との上位概念を、「プロセッシングサーキットリー」という。
つまり、プロセッサと処理回路とは、それぞれ「プロセッシングサーキットリー」の具体例である。
【符号の説明】
【００５１】
１０  ニューラルネットワーク、２０  組込みデバイス、１００  情報処理装置、１０１  処理性能算出部、１０２  要求達成判定部、１０３  削減層指定部、１０４  ネットワーク変換部、１０５  学習部、１０６  認識率判定部、１１１  ネットワーク構造情報、１１２  処理能力情報、１１３  要求処理性能情報、１１４  学習データセット、１１５  要求認識率情報、１１６  軽量化ネットワーク構造情報、９０１  ＣＰＵ、９０２  記憶装置、９０３  ＧＰＵ、９０４  通信装置、９０５  バス。
【図１】
0006854993.tif 000002
【図２】
0006854993.tif 000003
【図３】
0006854993.tif 000004
【図４】
0006854993.tif 000005
【図５】
0006854993.tif 000006
【図６】
0006854993.tif 000007
【図７】
0006854993.tif 000008
【図８】
0006854993.tif 000009
【図９】
0006854993.tif 000010
【図１０】
0006854993.tif 000011
【図１１】
0006854993.tif 000012
【図１２】
0006854993.tif 000013
【図１３】
0006854993.tif 000014
【図１４】
0006854993.tif 000015