(57)【要約】  ニューラルネットワークの処理時間を短縮すると共に複数の演算器を有効利用できるようにニューラルネットワークの演算回数を低減する。複数の演算器を備えた演算装置（１４０）によるニューラルネットワークの演算回数を、ニューラルネットワークを縮約することによって低減するニューラルネットワークの縮約装置（１００）であり、ニューラルネットワークの演算処理に対する演算器の割り当て数を設定する演算器割り当て部（１０２）と、演算器の割り当て数に基づいて縮約後のニューラルネットワークの演算回数を設定する演算回数設定部（１０３）と、演算装置（１４０）によるニューラルネットワークの演算回数が、演算回数設定部（１０３）によって設定された演算回数と等しくなるように、ニューラルネットワークを縮約するニューラルネットワーク縮約部（１０４）とを備える構成にした。
2020149178.tif 000002
【特許請求の範囲】
【請求項１】
複数の演算器を備えた演算装置によるニューラルネットワークの演算回数を、ニューラルネットワークを縮約することによって低減するニューラルネットワークの縮約装置であって、
ニューラルネットワークの演算処理に対する前記演算器の割り当て数を設定する演算器割り当て部と、
前記演算器の割り当て数に基づいて縮約後のニューラルネットワークの演算回数を設定する演算回数設定部と、
前記演算装置によるニューラルネットワークの演算回数が、前記演算回数設定部によって設定された演算回数と等しくなるように、ニューラルネットワークを縮約するニューラルネットワーク縮約部とを備えたことを特徴とするニューラルネットワークの縮約装置。
【請求項２】
前記演算回数設定部は、縮約前のニューラルネットワークの演算回数よりも小さく、かつ前記演算器割り当て部によって設定された前記演算器の割り当て数の整数倍に縮約後のニューラルネットワークの演算回数を設定することを特徴とする請求項１に記載のニューラルネットワークの縮約装置。
【請求項３】
前記演算回数設定部は、前記演算器割り当て部によって設定された前記演算器の割り当て数で、縮約前のニューラルネットワークの演算回数を除算した余りが当該演算器の割り当て数の半分以上になるように、縮約後のニューラルネットワークの演算回数を設定することを特徴とする請求項１に記載のニューラルネットワークの縮約装置。
【請求項４】
ニューラルネットワークは複数の層を有しており、
前記演算器割り当て部はニューラルネットワークの層毎に前記演算器の割り当て数を設定し、
前記演算回数設定部はニューラルネットワークの層毎に縮約後のニューラルネットワークの演算回数を設定することを特徴とする請求項１に記載のニューラルネットワークの縮約装置。
【請求項５】
前記ニューラルネットワーク縮約部はＰｒｕｎｉｎｇ処理によってニューラルネットワークを縮約することを特徴とする請求項１に記載のニューラルネットワークの縮約装置。
【請求項６】
縮約後のニューラルネットワークの精度を算出して、当該精度と目標精度を比較する精度検証部を備え、
前記精度が目標精度以上の場合に前記演算器割り当て部が前記演算器の割り当て数を小さく設定し、前記精度が目標精度未満の場合に前記演算器割り当て部が前記演算器の割り当て数を大きく設定することを特徴とする請求項１から請求項５のいずれか一項に記載のニューラルネットワークの縮約装置。
【請求項７】
縮約後のニューラルネットワークの精度を算出して、当該精度と目標精度を比較する精度検証部を備え、
前記精度が目標精度以上の場合に前記演算回数設定部が縮約後のニューラルネットワークの演算回数を小さく設定し、前記精度が目標精度未満の場合に前記演算回数設定部が縮約後のニューラルネットワークの演算回数を大きく設定することを特徴とする請求項１から請求項５のいずれか一項に記載のニューラルネットワークの縮約装置。
【請求項８】
複数の演算器を備えた演算装置によるニューラルネットワークの演算回数を、ニューラルネットワークを縮約することによって低減するニューラルネットワークの縮約装置であって、
縮約後のニューラルネットワークの演算回数を設定する演算回数設定部と、
前記演算装置によるニューラルネットワークの演算回数が、前記演算回数設定部によって設定された演算回数と等しくなるように、ニューラルネットワークを縮約するニューラルネットワーク縮約部と、
ニューラルネットワークの演算処理に対する前記演算器の割り当て数を設定する演算器割り当て部と、
前記演算器の割り当て数に基づいて縮約後のニューラルネットワークの演算回数を補正する演算回数補正部とを備えたことを特徴とするニューラルネットワークの縮約装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はニューラルネットワークの縮約装置に関する。
【背景技術】
【０００２】
近年、機械学習を用いた物体認識や行動予測を車両の自動運転に適用する技術が進展している。物体認識等に使用される機械学習手法として、ニューラルネットワークが知られている。ニューラルネットワークでは演算回数が多い畳み込み演算等が実施され、車両に搭載される演算装置がリアルタイムに処理を行う際の課題になっていた。上記の課題に対し、ニューラルネットワークの各ノードの重み係数が閾値以下となる枝（層間結合）を削減することによって、認識性能に対する影響を抑制しながらニューラルネットワークの演算負荷を軽減する縮約方法（圧縮方法）が開示されている（非特許文献１参照）。
【先行技術文献】
【非特許文献】
【０００３】
【非特許文献１】Song Han、 Jeff Pool、 John Tran、 William J. Dally、“Learning both Weights and Connections for Efficient Neural Networks”、［online］、２０１５年１０月３０日、［平成３０年１２月２４日検索］、インターネット＜URL :https://arxiv.org/pdf/1506.02626.pdf＞
【発明の概要】
【発明が解決しようとする課題】
【０００４】
非特許文献１にはニューラルネットワークの一部の枝を削減することにより、ニューラルネットワークの演算回数を低減する方法が示されているが、演算回数が低減されても演算処理の処理時間が短縮されるとは限られない。また、ニューラルネットワークの演算処理に対して、演算器に設けられた複数の演算器が有効に利用されない場合がある。このような問題は、車載用の演算装置に限らず、ニューラルネットワークを利用した他の演算装置でも生じる可能性がある。【０００５】
本発明は前記課題を解決するもので、その目的とするところは、ニューラルネットワークの処理時間を短縮すると共に複数の演算器を有効利用できるようにニューラルネットワークの演算回数を低減することができるニューラルネットワークの縮約装置を提供することである。
【課題を解決するための手段】
【０００６】
本発明の一態様のニューラルネットワークの縮約装置は、複数の演算器を備えた演算装置によるニューラルネットワークの演算回数を、ニューラルネットワークを縮約することによって低減するニューラルネットワークの縮約装置であって、ニューラルネットワークの演算処理に対する前記演算器の割り当て数を設定する演算器割り当て部と、前記演算器の割り当て数に基づいて縮約後のニューラルネットワークの演算回数を設定する演算回数設定部と、前記演算装置によるニューラルネットワークの演算回数が、前記演算回数設定部によって設定された演算回数と等しくなるように、ニューラルネットワークを縮約するニューラルネットワーク縮約部とを備えたことを特徴とする。
【発明の効果】
【０００７】
本発明によれば、ニューラルネットワークの処理時間を短縮すると共に複数の演算器を有効利用できるようにニューラルネットワークの演算回数を低減することができる。本発明に関連する更なる特徴は、本明細書の記述、添付図面から明らかになるものである。また、上記した以外の、課題、構成及び効果は、以下の実施形態の説明により明らかにされる。
【図面の簡単な説明】
【０００８】
【図１】第１の実施形態に係る自動運転システムのブロック図。
【図２】第１の実施形態に係るニューラルネットワークの一例を示す図。
【図３】第１の実施形態に係る第１の中間層のノード処理の一例を示す図。
【図４】第１の実施形態に係る第１の中間層のノード処理の他の一例を示す図。
【図５】第１の実施形態に係る第２の中間層のノード処理の一例を示す図。
【図６】第１の実施形態に係る出力層のノード処理の一例を示す図。
【図７】第１の実施形態に係る縮約処理の一例を示す図。
【図８】第１の実施形態に係る演算装置の一部を示すブロック図。
【図９】ニューラルネットワークの演算処理のタイミングチャートの一例を示す図。
【図１０】ニューラルネットワークの演算処理のタイミングチャートの一例を示す図。
【図１１】ニューラルネットワークの演算処理のタイミングチャートの一例を示す図。
【図１２】ニューラルネットワークの演算処理のタイミングチャートの一例を示す図。
【図１３】第２の実施形態に係る自動運転システムのブロック図。
【図１４】第３の実施形態に係る自動運転システムのブロック図。
【図１５】第４の実施形態に係る自動運転システムのブロック図。
【発明を実施するための形態】
【０００９】
[第１の実施形態]
以下、添付の図面を参照して、ニューラルネットワークの縮約装置を適用した自動運転システムについて説明する。図１は、第１の実施形態に係る自動運転システムのブロック図である。なお、以下の説明では、ニューラルネットワークの縮約装置を自動運転システムに適用した一例について説明するが、ニューラルネットワークの縮約装置は、監視カメラシステム、医療用の画像診断システム、音声認識システム等の他のシステムに適用可能である。
【００１０】
図１に示すように、自動運転システムは、ニューラルネットワークを用いて自動運転する車両１０と、車両１０に対してニューラルネットワークのパラメータを定期的に通知するサーバ２０とが無線通信によって接続されている。車両１０には、車両周辺を撮像するカメラ１２０と、車両１０の自動運転を制御する車両制御部１１０と、アクセル、ブレーキ、操舵等の各種操作に用いるアクチュエータ１３０とが設けられている。サーバ２０には、縮約技術によってニューラルネットワークの演算回数を低減するニューラルネットワークの縮約装置１００が実装されている。
【００１１】
車両制御部１１０には、カメラ１２０から入力された画像を所定形式に変換する画像入力部１１１と、ニューラルネットワークを用いて画像を認識する画像認識部１１２と、認識結果に応じた制御信号をアクチュエータ１３０に出力する信号出力部１１３とが設けられている。画像認識部１１２には、ニューラルネットワークの縮約装置１００から縮約後のニューラルネットワークのパラメータが通知される。ニューラルネットワークのパラメータとは、画像認識部１１２において縮約後のニューラルネットワークを構築するためのパラメータであり、例えばニューラルネットワークで使用される重み係数等である。
【００１２】
画像認識部１１２は、ニューラルネットワークの縮約装置１００から通知されたパラメータに基づいて縮約後のニューラルネットワークを構築して、ニューラルネットワークを用いて画像入力部１１１から入力された画像を認識する。信号出力部１１３は、画像の認識結果に基づいて自車両の走行方向及び走行速度等の自動運転に必要な車両制御情報を含む制御信号をアクチュエータ１３０に出力する。アクチュエータ１３０は、アクセル用の駆動アクチュエータ、ブレーキ用の制動アクチュエータ、ステアリング用の操舵アクチュエータ等を含んでいる。アクチュエータ１３０は、信号出力部１１３からの制御信号に基づいて車両１０を制御する。
【００１３】
車両制御部１１０は、複数の演算器を備えた演算装置１４０によって実現されている。車両制御部１１０の各種処理に対して演算装置１４０の演算器が割り当てられている。演算装置１４０の複数の演算器によって車両制御部１１０の各種処理が実行されることで、ニューラルネットワークを用いた画像認識が実施されて、認識結果に基づいて車両１０の自動運転制御が実施される。なお、車両制御部１１０の各種処理のうち、画像認識処理は演算負荷が大きいため、車両制御部１１０の他の処理と比較して多数の演算器が画像認識処理に対して割り当てられている。
【００１４】
ニューラルネットワークの縮約装置１００には、ニューラルネットワーク保持部１０１と、演算器割り当て部１０２と、演算回数設定部１０３と、ニューラルネットワーク縮約部１０４とが設けられている。ニューラルネットワーク保持部１０１には、ＰＣ、サーバ等において学習された後の学習済みのニューラルネットワーク、すなわち推論処理に用いるニューラルネットワークが保持されている。演算器割り当て部１０２は、画像認識部１１２によってニューラルネットワークを用いて画像認識を行う際に、ニューラルネットワークの演算処理に対する演算装置１４０の演算器の割り当て数を設定する。この場合、演算器割り当て部１０２は、入力デバイス等を介してユーザから入力された演算器の割り当て数を縮約装置１００に設定している。
【００１５】
演算回数設定部１０３は、ニューラルネットワーク保持部１０１に保持されたニューラルネットワークの演算処理に必要な演算回数を算出し、演算器の割り当て数に基づいて縮約後のニューラルネットワークの演算回数を設定する。ニューラルネットワーク縮約部１０４は、演算装置１４０によるニューラルネットワークの演算回数が、演算回数設定部１０３によって設定された演算回数と等しくなるように、ニューラルネットワーク保持部１０１に保持されたニューラルネットワークを縮約する。また、ニューラルネットワーク縮約部１０４は、縮約後のニューラルネットワークのパラメータを車両１０の画像認識部１１２に通知して、画像認識部１１２の画像認識処理に用いられるニューラルネットワークの演算回数を低減している。
【００１６】
なお、ニューラルネットワークの縮約装置１００の各部は、プロセッサを用いてソフトウェアによって実現されてもよいし、集積回路等に形成された論理回路（ハードウェア）によって実現されてもよい。プロセッサを用いる場合には、プロセッサがメモリに格納されているプログラムを読み出して実行することで各種処理が実施される。プロセッサとしては、例えば、ＣＰＵ（Central  Processing  Unit）、ＭＰＵ（Micro  Processing  Unit）、ＧＰＵ（Graphics  Processing  Unit）等が使用される。また、メモリは、用途に応じてＲＯＭ(Read  Only  Memory)、ＲＡＭ（Random  Access  Memory）等の一つ又は複数の記録媒体によって構成されている。
【００１７】
以下、ニューラルネットワークの縮約装置１００について具体例を用いて説明する。図２は、第１の実施形態に係るニューラルネットワークの一例を示す図である。図３は、第１の実施形態に係る第１の中間層のノード処理の一例を示す図である。図４は、第１の実施形態に係る第１の中間層のノード処理の他の一例を示す図である。図５は、第１の実施形態に係る第２の中間層のノード処理の一例を示す図である。図６は、第１の実施形態に係る出力層のノード処理の一例を示す図である。図７は、第１の実施形態に係る縮約処理の一例を示す図である。また、以下の説明では、説明の便宜上、図１の符号を適宜使用して説明する。
【００１８】
図２に示すように、ニューラルネットワークは、入力層２００と、第１の中間層２０１と、第２の中間層２０２と、出力層２０３とによって構成されている。ニューラルネットワークは、入力層２００に５つの入力値Ｘ０−Ｘ４が入力されると、第１、第２の中間層２０１、２０２を経由して出力層２０３から２つの出力値Ｙ０、Ｙ１を出力する。入力層２００には入力要素として５つの入力ノードＮＸ０−ＮＸ４が設けられ、出力層２０３には出力要素として２つの出力ノードＮＹ０、ＮＹ１が設けられている。第１の中間層２０１には演算要素としてノードＮ００−Ｎ０３が設けられ、第２の中間層２０２にはノードＮ１０−Ｎ１３が設けられている。
【００１９】
第１の中間層２０１のノードＮ００−Ｎ０３は、入力層２００から入力された入力値Ｘ０−Ｘ４に対して層間結合（枝）毎に設定された重み係数を乗算し、各乗算結果を加算した結果を第２の中間層２０２のノードＮ１０−Ｎ１３に出力する。第２の中間層２０２のノードＮ１０−Ｎ１３は、第１の中間層２０１のノードＮ００−Ｎ０３から入力された値に対して層間結合毎に設定された重み係数を乗算し、各乗算結果を加算した結果を出力層２０３の出力ノードＮＹ０、ＮＹ１に出力する。出力層２０３の出力ノードＮＹ０、ＮＹ１は、第２の中間層２０２のノードＮ１０−Ｎ１３から入力された値に対して層間結合毎に設定された重み係数を乗算し、各乗算結果を加算した結果を出力値Ｙ０、Ｙ１として出力する。
【００２０】
ここで、各ノードの演算処理について詳細に説明する。図３は、第１の中間層２０１のノードＮ００の演算処理を示している。図３において、第１の中間層２０１のノードＮ００では入力層２００の入力ノードＮＸ０−ＮＸ４とノードＮ００の層間の重み係数Ｗ０００−Ｗ０４０が使用され、ノードＮ００から出力される出力値Ｚ００は次式（１）によって求められる。
Ｚ００＝Ｘ０＊Ｗ０００＋Ｘ１＊Ｗ０１０＋Ｘ２＊Ｗ０２０＋Ｘ３＊Ｗ０３０＋Ｘ４＊Ｗ０４０・・・（１）
【００２１】
図４は、第１の中間層２０１のノードＮ０１の演算処理を示している。図４において、第１の中間層２０１のノードＮ０１では入力層２００の入力ノードＮＸ０−ＮＸ４とノードＮ０１の層間の重み係数Ｗ００１−Ｗ０４１が使用され、ノードＮ０１から出力される出力値Ｚ０１は次式（２）によって求められる。第１の中間層２０１の他のノードＮ０２、Ｎ０３についても同様にして出力値Ｚ０２、Ｚ０３を出力する。
Ｚ０１＝Ｘ０＊Ｗ００１＋Ｘ１＊Ｗ０１１＋Ｘ２＊Ｗ０２１＋Ｘ３＊Ｗ０３１＋Ｘ４＊Ｗ０４１・・・（２）
【００２２】
図５は、第２の中間層２０２のノードＮ１０の演算処理を示している。図５において、第２の中間層２０２のノードＮ１０では第１の中間層２０１のノードＮ００−Ｎ０３とノードＮ１０の層間の重み係数Ｗ１００−Ｗ１３０が使用され、ノードＮ１０から出力される出力値Ｚ１１は次式（３）によって求められる。第２の中間層２０２の他のノードＮ１１−Ｎ１３についても同様にして出力値Ｚ１１−Ｚ１３を出力する。
Ｚ１１＝Ｚ００＊Ｗ１００＋Ｚ０１＊Ｗ１１０＋Ｚ０２＊Ｗ１２０＋Ｚ０３＊Ｗ１３０・・・（３）
【００２３】
図６は、出力層２０３の出力ノードＮＹ０の演算処理を示している。図６において、出力層２０３の出力ノードＮＹ０では第２の中間層２０２のノードＮ１０−Ｎ１３と出力ノードＮＹ０の層間の重み係数Ｗ２００−Ｗ２３０が使用され、出力ノードＮＹ０から出力される出力値Ｙ０は次式（４）によって求められる。出力層２０３の他の出力ノードＮＹ１についても同様にして出力値Ｙ１を出力する。
Ｙ０＝Ｚ１０＊Ｗ２００＋Ｚ１１＊Ｗ２１０＋Ｚ１２＊Ｗ２２０＋Ｚ１３＊Ｗ２３０・・・（４）
【００２４】
本実施形態のニューラルネットワークは、自動運転用の画像認識部１１２に用いられるものである。画像入力部１１１から入力層２００の入力ノードＮＸ０−ＮＸ４に画像の入力値Ｘ０−Ｘ４が入力されて、出力層２０３の出力ノードＮＹ０、ＮＹ１から画像認識結果である出力値Ｙ０、Ｙ１が出力される。例えば、画像が他車両である確率がＹ０として出力され、画像が歩行者である確率がＹ１として出力される。画像が他車両である確率が高い場合には車両制御部１１０によって自車両が他車両に追従するように制御され、画像が歩行者である確率が高い場合には自車両が歩行者を避けるように制御される。このように、ニューラルネットワークは、入力値から所望の出力値を得るためのネットワーク構成及び重み係数等から成り、ニューラルネットワーク保持部１０１にはネットワーク構成及び重み係数等の各種情報が記憶されている。
【００２５】
次に、ニューラルネットワークの縮約装置１００の具体的な動作について説明する。演算器割り当て部１０２は、ニューラルネットワークの演算処理、すなわち画像認識部１１２の画像認識処理に対する演算器の割り当て数を設定する。この場合、車両１０に搭載された演算装置１４０の複数の演算器のうち、車両制御部１１０の各部の処理負荷を考慮して画像認識処理に対する演算器の割り当て数が設定される。本実施形態の自動運転システム等の組込みシステムに用いられる演算装置１４０としてはＦＰＧＡ（Field  Programmable  Gate  Array）が挙げられる。ＦＰＧＡは所望の処理を論理回路の形式によって設計及び実行できる演算装置１４０である。ＦＰＧＡには積和演算を高速に処理することが可能なＤＳＰ（Digital  Signal  Processor）と呼ばれる演算器が搭載されており、ニューラルネットワークの乗算及び加算を高速に処理するのに有用である。ＤＳＰはＦＰＧＡ毎に搭載数が予め決められているため、演算器割り当て部１０２によってニューラルネットワークの演算処理に用いるＤＳＰ数が設定される。なお、ニューラルネットワークの演算回数は、一般にＦＰＧＡのＤＳＰ数よりもはるかに多く、ニューラルネットワーク全体を一度に処理することは困難である。このため、ニューラルネットワークの演算処理が複数回に分けて実施される。また、演算装置１４０は、ＦＰＧＡに限定されるものではなく、ニューラルネットワークに対して使用可能な複数の積和演算器を備えたものであればよい。
【００２６】
演算回数設定部１０３は、縮約前のニューラルネットワークの演算回数を算出する。一例として、図２に示したニューラルネットワークの演算処理に必要な演算回数について説明する。第１の中間層２０１の各ノードの演算処理には、上記の式（１）に示すように５回の乗算と４回の加算の計９回の演算が必要となる。第１の中間層２０１にはノードＮ００−Ｎ０３まで４つのノードがあるため、第１の中間層２０１の演算処理に必要な演算回数は９＊４＝３６回となる。同様に、第２の中間層２０２の各ノードの演算処理には、上記の式（３）に示すように４回の乗算と３回の加算の計７回の演算が必要となる。第２の中間層２０２にはノードＮ１０−Ｎ１３まで４つのノードがあるため、第２の中間層２０２の演算処理に必要な演算回数は７＊４＝２８回となる。出力層２０３の各出力ノードの演算処理には、上記の式（４）に示すように４回の乗算と３回の加算の計７回の演算が必要となる。出力層２０３には出力ノードＮＹ０、ＮＹ１の２つのノードがあるため、出力層２０３の演算処理に必要な演算回数は７＊２＝１４回となる。以上の各層の演算回数を合計すると、図２に示すニューラルネットワークの演算処理に必要な演算回数は次式（５）によって示される。
３６回＋２８回＋１４回＝７８回・・・（５）
【００２７】
実際に使用されるニューラルネットワークには演算回数が１００万回を越える大規模なニューラルネットワークもあるが、本実施形態では説明の便宜上、ニューラルネットワークを簡略化して説明している。
【００２８】
次に、演算回数設定部１０３は、縮約前のニューラルネットワークの演算回数よりも少なく、かつ演算器割り当て部１０２によって設定された演算器の割り当て数の整数倍になるように縮約後のニューラルネットワークの演算回数を設定する。上記の式（５）によって求めたように、縮約前のニューラルネットワークの演算回数は７８回である。ここでは、一例として演算器の割り当て数を２０個とすると、縮約後のニューラルネットワークの演算回数は次式（６）によって設定される。なお、式（６）のｍｏｄ（Ａ，Ｂ）はＡをＢによって除算した時の剰余を算出する処理を示している。
７８−ｍｏｄ（７８，２０）＝６０・・・（６）
【００２９】
ニューラルネットワーク縮約部１０４は、縮約前のニューラルネットワークの演算回数７８回と演算回数設定部１０３によって設定された演算回数６０回との差分である１８回分の演算を削減するようにニューラルネットワークを縮約する。縮約前のニューラルネットワークの演算回数については、ニューラルネットワーク縮約部１０４が演算回数設定部１０３から取得してもよいし、ニューラルネットワーク縮約部１０４が演算回数設定部１０３と同様に算出してもよい。ニューラルネットワークの縮約方法は、特に限定されないが、本実施形態ではＰｒｕｎｉｎｇ処理を例示して説明する。Ｐｒｕｎｉｎｇ処理は、重み係数の絶対値が予め定められた閾値未満の場合には、出力値Ｚ００に対する影響が十分小さいとして、入力値に重み係数を乗算する乗算処理を削減するものである。ニューラルネットワークの重み係数の絶対値が小さい重み係数から順に削減することでニューラルネットワークが縮約される。
【００３０】
例えば、図３に示すように、第１の中間層２０１のノードＮ００の出力値Ｚ００を得るためには、上記の式（１）に示すように５回の乗算と４回の加算の計９回の演算が必要となる。このとき、図７に示すように、重み係数Ｗ０１０、Ｗ０４０の絶対値が閾値未満の場合、入力値Ｘ１と重み係数Ｗ０１０の乗算処理と、入力値Ｘ４と重み係数Ｗ０４０の乗算処理が削減される。この結果、第１の中間層２０１のノードＮ００の出力値Ｚ００は次式（７）によって求められる。式（７）では、ノードＮ００の演算回数が３回の乗算と２回の加算の計５回になっており、式（１）と比べて演算回数が４回削減されている。このように、Ｐｒｕｎｉｎｇ処理は、出力に対する影響が小さなノード間の結合を削除することで演算回数を低減する。
Ｚ００＝Ｘ０＊Ｗ０００＋Ｘ２＊Ｗ０２０＋Ｘ３＊Ｗ０３０・・・（７）
【００３１】
ニューラルネットワークの演算処理の処理時間について説明する。図８は、第１の実施形態に係る演算装置の一部を示すブロック図である。図９は、ニューラルネットワークの演算処理のタイミングチャートの一例を示す図である。図１０は、ニューラルネットワークの演算処理のタイミングチャートの他の一例を示す図である。図１１は、ニューラルネットワークの演算処理のタイミングチャートの他の一例を示す図である。
【００３２】
図８に示すように、メモリ３０１には演算器３０２によって演算された中間データ３０３が格納される。また、演算器３０２によって入力値３０４とメモリ３０１に格納された中間データ３０５とを用いて演算処理が繰り返される。演算器３０２によって全ての演算処理が終了すると、演算器３０２から演算結果３０６が出力される。演算器３０２の割り当て数が２０個、縮約後のニューラルネットワークに必要な演算回数が６０回とすると、１個の演算器３０２につき３サイクルの演算処理が実施された後に演算結果３０６が出力される。図９に示すように、各演算器３０２が１サイクル（１回）の演算処理に要する処理時間をＴとすると、ニューラルネットワーク全体として３サイクル分の処理時間Ｔで６０回（＃０−＃５９）の演算処理が終了する。なお、処理時間Ｔは１個の演算器３０２による１サイクル分の処理時間を示しているが、処理時間Ｔで２０個の演算器３０２によって並列に演算処理が実施されている。
【００３３】
図１０は、演算器３０２の割り当て数を考慮せずにニューラルネットワークの演算回数を低減した場合を示している。ここでは、一例として、演算器３０２の割り当て数を２０個とし、ニューラルネットワークの演算回数を７８回から６２回に低減した場合について説明する。ニューラルネットワークの演算回数が６０回の場合と比較して、演算回数が２回（＃６０、＃６１）増えただけであるが、ニューラルネットワーク全体として４サイクル分の処理時間Ｔが必要になって１サイクル分の処理時間Ｔが増える。
【００３４】
同様に、図１１は、演算器３０２の割り当て数を考慮せずにニューラルネットワークの演算回数を低減した場合を示している。ここでは、一例として、演算器３０２の割り当て数を２０個とし、ニューラルネットワークの演算回数を７８回から４５回に低減した場合について説明する。１サイクル目の演算処理と２サイクル目の演算処理では２０個の演算器３０２の全てが使用されているが、３サイクル目の演算処理では２０個の演算器３０２のうち５個しか使用されていない。このため、ニューラルネットワークの演算回数が６０回の場合と比較して、１５回分の演算回数が低減されているにも関わらず、演算処理の処理時間が短縮されていない。特に、３サイクル目の演算処理で演算器３０２が有効利用されておらず、画像認識部１１２の認識性能が低下するおそれがある。
【００３５】
以上のように、第１の実施形態の自動運転システムでは、カメラから入力した画像の画像認識に用いるニューラルネットワークの演算回数を、演算器割り当て部１０２によって設定された演算器３０２の割り当て数の整数倍になるように低減している。これにより、ニューラルネットワークの演算処理に割り当てられた複数の演算器３０２によって同時に演算処理が開始されて同時に演算処理が終了される。一部の演算器３０２だけで演算するサイクルが無くなり、演算処理の処理時間を短縮すると共に複数の演算器３０２の使用効率を最大限に高めることができる。
【００３６】
また、ニューラルネットワークの第１の中間層２０１から出力層２０３までの合計の演算回数を低減する構成に限定されず、ニューラルネットワークの層毎に演算回数が低減されてもよい。
【００３７】
上記したように、図２に示すニューラルネットワークの第１の中間層２０１の演算回数は３６回、第２の中間層２０２の演算回数は２８回、出力層２０３の演算回数は１４回である。この場合、演算器割り当て部１０２（図１参照）によってニューラルネットワークの層毎に演算器３０２の割り当て数が設定される。第１の中間層２０１に対する演算器３０２の割り当て数が８個、第２の中間層２０２に対する演算器３０２の割り当て数が８個、出力層２０３に対する演算器３０２の割り当て数が４個に設定される。
【００３８】
また、演算回数設定部１０３（図１参照）によって縮約後のニューラルネットワークの層毎に演算回数が設定される。第１の中間層２０１に対する演算回数は次式（８）によって設定され、第２の中間層２０２に対する演算回数は次式（９）によって設定され、出力層２０３に対する演算回数は次式（１０）によって設定される。なお、式（８）−（１０）には、各層に対して演算器３０２の割り当て数が個別に設定されているが、各層に同じ演算器３０２の割り当て数が設定されてもよい。
３６−ｍｏｄ（３６，８）＝３２・・・（８）
２８−ｍｏｄ（２８，８）＝２４・・・（９）
１４−ｍｏｄ（１４，４）＝１２・・・（１０）
【００３９】
ニューラルネットワークの層毎に演算回数が設定されると、ニューラルネットワーク縮約部１０４によってＰｒｕｎｉｎｇ等の縮約方法を用いてニューラルネットワークの層毎に演算回数が低減される。第１の中間層２０１における４回分の演算処理が削減され、第２の中間層２０２における４回分の演算処理が削減され、出力層２０３における２回分の演算処理が削減される。このように、演算回数設定部１０３によってニューラルネットワークの層毎に演算回数が設定されることで、比較的少ない演算器３０２の割り当て数（例えば、８個）によって演算処理できるため、演算装置１４０の実装規模を小さくすることができる。
【００４０】
演算回数設定部１０３は、ニューラルネットワークの演算処理に必要な演算回数を演算器３０２の割り当て数によって除算した剰余を、この演算回数から減算することで縮約後のニューラルネットワークの演算回数を設定する構成に限定されない。演算回数設定部１０３は、演算器３０２の割り当て数の整数倍を設定すればよい。例えば、演算回数設定部１０３は、次式（１１）を用いて演算回数を設定してもよい。
低減後の演算回数＝７８−ｍｏｄ（７８，２０）−２０×ｎ・・・（１１）
（ｎ＝０，１，２…  但し、低減後の演算回数は正数）
【００４１】
ｎ＝０の場合には、式（１１）は式（６）と同じになる。ｎ＝１の場合には、次式（１２）によって演算回数が４０回に設定される。演算回数が４０回に設定されると、ニューラルネットワーク縮約部１０４によって、７８−４０＝３８回分の演算を削減するようにＰｒｕｎｉｎｇ処理が実施される。この場合、式（６）から求められた演算回数よりも削減数が多い分、認識精度の低下を考慮する必要があるが、１サイクル分の処理時間Ｔを短縮することができる。すなわち、ｎ＝０の場合にはニューラルネットワークの演算処理に３サイクル分の処理時間Ｔが必要なのに対して、ｎ＝１の場合にはニューラルネットワークの演算処理に２サイクル分の処理時間Ｔで処理を終えることができる。なお、ｎの値はユーザによって任意に設定されてもよいし、予め設定されてもよい。
７８−ｍｏｄ（７８，２０）−２０＝４０・・・（１２）
【００４２】
演算回数設定部１０３は、演算器３０２の割り当て数の整数倍になるように縮約後のニューラルネットワークの演算回数を設定する構成に限定されない。演算回数設定部１０３は、縮約後のニューラルネットワークの演算回数を、必ずしも演算器３０２の割り当て数の整数倍に設定しなくてもよい。演算回数設定部１０３は、演算器３０２の割り当て数で、縮約前のニューラルネットワークの演算回数を除算した余りが演算器３０２の割り当て数の半分以上になるように、縮約後のニューラルネットワークの演算回数を設定してもよい。例えば、演算回数設定部１０３は、次式（１３）を用いて演算回数を設定してもよい。なお、ｋは、演算器割り当て部１０２によって設定された演算器３０２の割り当て数の１／２以下である。
低減後の演算回数＝７８−ｍｏｄ（７８，２０）−ｍ・・・（１３）
（ｍ＝０，１，２，・・・，ｋ）
【００４３】
式（１３）では、低減後の演算回数は、ｍの値によって変更される。例えば、ｍ＝０の場合には演算回数が６０回、ｍ＝１の場合には演算回数が５９回、ｍ＝ｋの場合には演算回数が６０−ｋ回に設定される。図１２に示すように、低減後の演算回数が５９回の場合には、３サイクル目の演算処理では２０個の演算器３０２のうち１９個の演算器３０２のみが使用され、１個の演算器３０２は未使用になる。このため、演算器３０２の使用効率が低下するが、縮約後のニューラルネットワークの認識精度に応じて、ニューラルネットワークの縮約率を柔軟性に変更することができる。なお、ｍの値はユーザによって任意に設定されてもよいし、予め設定されていてもよい。
【００４４】
［第２の実施形態］
以下に、第２の実施形態に係る自動運転システムについて説明する。第２の実施形態に係る自動運転システムは、ニューラルネットワークの認識精度を検証しながら、演算器の割り当て数の調整によってニューラルネットワークを縮約する点について第１の実施形態と相違している。したがって、第１の実施形態と同様な構成については説明を省略する。図１３は、第２の実施形態に係る自動運転システムのブロック図である。図１３では、第１の実施形態の自動運転システムと同一のブロックについては同一の符号を付している。
【００４５】
図１３に示すように、第２の実施形態に係るニューラルネットワークの縮約装置１００には、ニューラルネットワークの認識精度を検証する機能として、検証用データ保持部１０６と認識精度検証部１０７とが設けられている。検証用データ保持部１０６には、縮約後のニューラルネットワークの認識精度を検証するための検証用データとして検証値及び正解値が保存されている。認識精度検証部１０７は、縮約後のニューラルネットワークの認識精度を算出して、当該認識精度と予め定められた目標精度を比較することで認識精度を検証する。この場合、認識精度検証部１０７は、検証用データ保持部１０６から読み出した検証値を縮約後のニューラルネットワークに入力し、ニューラルネットワークから出力される出力値と検証用データ保持部１０６から読み出した正解値とを照らし合わせて認識精度を算出する。そして、認識精度検証部１０７は、認識精度と目標精度の比較することで、目標精度を基準として認識精度を検証する。
【００４６】
認識精度検証部１０７に検証された認識精度が目標精度未満の場合には、認識精度検証部１０７から演算器割り当て部１０２に演算器の割り当て数の増加指令が通知される。演算器割り当て部１０２は、認識精度検証部１０７から演算器の割り当て数の増加指令を受信すると、演算器の割り当て数を１個増加して割り当て数を更新する。演算回数設定部１０３は、更新後の演算器の割り当て数に基づいて、縮約後のニューラルネットワークの演算回数を設定する。一方で、認識精度検証部１０７に検証された認識精度が目標精度以上の場合には、認識精度検証部１０７から演算器割り当て部１０２に演算器の割り当て数の減少指令が通知される。演算器割り当て部１０２は、認識精度検証部１０７から演算器の割り当て数の減少指令を受信すると、演算器の割り当て数を１個減少して割り当て数を更新する。演算回数設定部１０３は、更新後の演算器の割り当て数に基づいて、縮約後のニューラルネットワークの演算回数を設定する。
【００４７】
一例として、第１の実施形態と同様に、図２に示すニューラルネットワークを用いて具体的に説明する。縮約前のニューラルネットワーク演算回数は７８回である。演算器割り当て部１０２によって演算器の割り当て数が２０個に設定されると、演算回数設定部１０３によって次式（１４）を用いて演算回数が６０回に設定される。ニューラルネットワーク縮約部１０４によってニューラルネットワークの１８回分の演算処理が削減されてニューラルネットワークが縮約される。
７８−ｍｏｄ（７８，２０）＝６０・・・（１４）
【００４８】
次に、認識精度検証部１０７によって縮約後のニューラルネットワークに対して認識精度が検証される。認識精度検証部１０７による認識精度が目標精度未満である場合には、演算器割り当て部１０２によって演算器の割り当て数が１個増加されて２１個に更新される。演算器の割り当て数が更新されると、演算器割り当て部１０２によって次式（１５）を用いて演算回数が６３回に再設定される。ニューラルネットワーク縮約部１０４によってニューラルネットワークの１５回分の演算処理が削減されてニューラルネットワークが再び縮約される。ニューラルネットワークの演算回数が６０回から６３回に増加しているため認識精度の改善が期待できる。
７８−ｍｏｄ（７８，２１）＝６３・・・（１５）
【００４９】
次に、認識精度検証部１０７によって再縮約後のニューラルネットワークに対して認識精度が検証される。認識精度検証部１０７による認識精度が目標精度以上になった場合には、ニューラルネットワークのパラメータが画像認識部１１２に通知され、カメラ１２０から入力された画像に対する画像認識処理に用いられる。一方、認識精度検証部１０７による認識精度が目標精度未満になった場合には、再び演算器割り当て部１０２によって演算器の割り当て数が１個増加される。この処理を繰り返すことで、ニューラルネットワークの認識精度が目標精度に近づけられる。
【００５０】
なお、縮約後のニューラルネットワークの認識精度が不足している場合に、認識精度を改善するように認識精度検証部１０７から演算器割り当て部１０２に演算器の割り当て数の増加指令がフィードバックされる構成に限られない。縮約後のニューラルネットワークの認識精度が必要以上に高い場合に、認識精度を目標精度まで下げるように認識精度検証部１０７から演算器割り当て部１０２に演算器の割り当て数の減少指令がフィードバックされてもよい。
【００５１】
以上のように、第２の実施形態に係る自動運転システムでは、第１の実施形態と同様に、演算処理の処理時間を短縮すると共に複数の演算器の使用効率を高めることができる。
また、縮約後のニューラルネットワークの認識精度に応じて、ニューラルネットワークの演算処理に対する演算器の割り当て数を調整することができる。よって、ニューラルネットワークの認識精度が目標精度を維持できる程度に、ニューラルネットワークの演算回数を低減することができる。
【００５２】
［第３の実施形態］
以下に、第３の実施形態に係る自動運転システムについて説明する。第３の実施形態に係る自動運転システムは、ニューラルネットワークの認識精度を検証しながら、演算回数の調整によってニューラルネットワークを縮約する点について第２の実施形態と相違している。したがって、第１の実施形態と同様な構成については説明を省略する。図１４は、第３の実施形態に係る自動運転システムのブロック図である。図１４では、第２の実施形態の自動運転システムと同一のブロックについては同一の符号を付している。
【００５３】
図１４に示すように、第３の実施形態に係るニューラルネットワークの縮約装置１００では、認識精度検証部１０７の検証結果に基づいて演算回数設定部１０３の演算回数を調整するように構成されている。すなわち、認識精度検証部１０７によって検証された認識精度が目標精度未満の場合には、認識精度検証部１０７から演算回数設定部１０３に演算回数の増加指令が通知される。演算回数設定部１０３は、認識精度検証部１０７から演算回数の増加指令を受信すると、縮約後のニューラルネットワークの演算回数を増加して演算回数を再設定する。一方で、認識精度検証部１０７によって検証された認識精度が目標精度以上の場合には、認識精度検証部１０７から演算回数設定部１０３に演算回数の減少指令が通知される。演算回数設定部１０３は、認識精度検証部１０７から演算回数の減少指令を受信すると、縮約後のニューラルネットワークの演算回数を減少して演算回数を再設定する。
【００５４】
一例として、第１の実施形態と同様に、図２のニューラルネットワークを用いて具体的に説明する。縮約前のニューラルネットワーク演算回数は７８回である。演算器割り当て部１０２によって演算器の割り当て数が２０個に設定されると、演算回数設定部１０３によって次式（１６）を用いて演算回数が設定される。一例として、ｎ＝２が設定されていた場合には、演算回数設定部１０３によって演算回数が２０回に設定される。ニューラルネットワーク縮約部１０４によってニューラルネットワークの５８回分の演算処理が削減されてニューラルネットワークが縮約される。
低減後の演算回数＝７８−ｍｏｄ（７８，２０）−２０×ｎ・・・（１６）
（ｎ＝０，１，２，・・・。但し、低減後の演算回数は正数）
【００５５】
次に、認識精度検証部１０７によって縮約後のニューラルネットワークに対して認識精度が検証される。認識精度検証部１０７による認識精度が目標精度未満である場合には、演算回数設定部１０３によって式（１６）のｎの値が１つ減らされてｎ＝１になり、演算回数が４０回に再設定される。ニューラルネットワーク縮約部１０４によってニューラルネットワークの３８回分の演算処理が削減されてニューラルネットワークが再び縮約される。ニューラルネットワークの演算回数が２０回から４０回に増加しているため認識精度の改善が期待できる。
【００５６】
次に、認識精度検証部１０７によって再縮約後のニューラルネットワークに対して認識精度が検証される。認識精度検証部１０７による認識精度が目標精度以上になった場合には、ニューラルネットワークのパラメータが画像認識部１１２に通知され、カメラ１２０から入力された画像に対する画像認識処理に用いられる。一方、認識精度検証部１０７による認識精度が目標精度未満になった場合には、再び演算回数設定部１０３によって式（１６）のｎの値が１つ増加される。この処理を繰り返すことで、ニューラルネットワークの認識精度が目標精度に近づけられる。
【００５７】
なお、縮約後のニューラルネットワークの認識精度が不足している場合に、認識精度を改善するように認識精度検証部１０７から演算回数設定部１０３に演算回数の増加指令がフィードバックされる構成に限られない。縮約後のニューラルネットワークの認識精度が必要以上に高い場合に、認識精度を目標精度まで下げるように認識精度検証部１０７から演算回数設定部１０３に演算回数の減少指令がフィードバックされてもよい。
【００５８】
以上のように、第３の実施形態に係る自動運転システムでは、第２の実施形態と同様に、演算処理の処理時間を短縮すると共に複数の演算器の使用効率を高めることができる。
また、縮約後のニューラルネットワークの認識精度に応じて、ニューラルネットワークの演算回数を調整することができる。よって、ニューラルネットワークの認識精度が目標精度を維持できる程度に、ニューラルネットワークの演算回数を低減することができる。
【００５９】
［第４の実施形態］
以下に、第４の実施形態に係る自動運転システムについて説明する。第４の実施形態に係る自動運転システムは、縮約後のニューラルネットワークの演算回数を、演算器の割り当て数の調整によって補正する点について第１の実施形態と相違している。したがって、第１の実施形態と同様な構成については説明を省略する。図１５は、第４の実施形態に係る自動運転システムのブロック図である。図１５では、第１の実施形態の自動運転システムと同一のブロックについては同一の符号を付している。
【００６０】
第４の実施形態に係るニューラルネットワークの縮約装置１００には、縮約後のニューラルネットワークの演算回数を補正する機能として演算回数補正部１０８が設けられている。演算回数補正部１０８は、演算器割り当て部１０２によって設定された演算器の割り当て数に基づいて縮約後のニューラルネットワークの演算回数を補正する。この場合、演算回数補正部１０８は、縮約後のニューラルネットワークに対し、演算器割り当て部１０２によって設定された演算器の割り当て数の整数倍となるようにニューラルネットワークの演算回数を補正する。
【００６１】
一例として、第１の実施形態と同様に、図２に示すニューラルネットワークを用いて具体的に説明する。縮約前のニューラルネットワーク演算回数は７８回である。演算回数設定部１０３によって縮約後のニューラルネットワークの演算回数が３９回に設定される。この縮約後のニューラルネットワークの演算回数は、縮約前のニューラルネットワークの演算回数の半分にした値である。ニューラルネットワーク縮約部１０４によって３９回部の演算処理が削減されてニューラルネットワークが縮約される。また、演算器割り当て部１０２によって演算器の割り当て数が２０個に設定されると、演算回数補正部１０８によって次式（１７）を用いて縮約後のニューラルネットワークの演算回数が補正される。
補正後の演算回数＝（ｄｉｖ（３９，２０）＋ＩＮＴ（ｄｉｖ（ｍｏｄ（３９，２０），２０）＋０．５））＊２０・・・（１７）
【００６２】
式（１７）のｄｉｖ（Ａ，Ｂ）はＡをＢによって除算する処理を示し、ＩＮＴ（Ｘ）はＸの小数点以下を切り捨てする処理を示している。式（１７）の一例では、ｄｉｖ（３９，２０）＝１、ＩＮＴ（ｄｉｖ（ｍｏｄ（３９，２０），２０）＋０．５）＝１であるため、式（１７）が（１＋１）＊２０になって補正後の演算回数が４０回に設定される。これにより、縮約後のニューラルネットワークの演算回数を、演算器の割り当て数の整数倍になるように補正することが可能となる。
【００６３】
以上のように、本発明の第４の実施形態の自動運転システムでは、第１の実施形態と同様に、演算処理の処理時間を短縮すると共に複数の演算器の使用効率を高めることができる。また、最初にニューラルネットワークを縮約して、演算器の割り当て数を考慮しながら縮約後のニューラルネットワークの演算回数を補正することが可能である。
【００６４】
なお、上記した各実施形態では、画像認識処理に用いるニューラルネットワークの縮約装置について説明したが、この構成に限定されない。ニューラルネットワークの縮約装置は、音声認識処理等の他の認識処理の他、将来データの予測処理に用いるニューラルネットワークの縮約にも適用可能である。
【００６５】
また、上記した各実施形態では、ニューラルネットワークの縮約装置１００がサーバ２０に設けられる構成にしたが、ニューラルネットワークの縮約装置１００が車両１０に設けられていてもよい。
【００６６】
また、上記した各実施形態では、演算回数設定部１０３及びニューラルネットワーク縮約部１０４が、演算装置１４０による縮約前のニューラルネットワークの演算回数を算出する構成にしたが、この構成に限定されない。縮約前のニューラルネットワークの演算回数はニューラルネットワーク保持部１０１に予め保持されていてもよい。また、ニューラルネットワークの縮約装置１００に縮約前のニューラルネットワークの演算回を算出する演算回数算出部が設けられていてもよい。
【００６７】
また、上記した各実施形態では、演算器割り当て部１０２がニューラルネットワークの演算処理に割り当てる演算器３０２の個数を設定する構成にしたが、この構成に限定されない。演算器割り当て部１０２は、演算器３０２の全体数のうちニューラルネットワークの演算処理に割り当てる割合を設定してもよい。
【００６８】
また、上記した第４の実施形態では、演算回数設定部１０３がニューラルネットワークの演算回数を設定する構成にしたが、この構成に限定されない。演算回数設定部１０３は、ニューラルネットワークの演算回数の代わりに、ニューラルネットワークの縮約率を設定してもよい。
【００６９】
また、上記した第４の実施形態では、演算回数補正部１０８が演算器の割り当て数の整数倍となるように縮約後のニューラルネットワークの演算回数を補正する構成にしたが、この構成に限定されない。演算回数補正部１０８は、ニューラルネットワークの層毎に演算回数を補正してもよいし、演算器の割り当て数によって除算した余りが演算器の割り当て数の半分以上になるようにニューラルネットワークの演算回数を補正してもよい。
【００７０】
以上の通り、本実施形態に記載のニューラルネットワークの縮約装置（１００）は、複数の演算器（３０２）を備えた演算装置（１４０）によるニューラルネットワークの演算回数を、ニューラルネットワークを縮約することによって低減するニューラルネットワークの縮約装置（１００）であって、ニューラルネットワークの演算処理に対する演算器（３０２）の割り当て数を設定する演算器割り当て部（１０２）と、演算器（３０２）の割り当て数に基づいて縮約後のニューラルネットワークの演算回数を設定する演算回数設定部（１０３）と、演算装置（１４０）によるニューラルネットワークの演算回数が、演算回数設定部（１０３）によって設定された演算回数と等しくなるようにニューラルネットワークを縮約するニューラルネットワーク縮約部（１０４）とを備えている。
【００７１】
この構成によれば、ニューラルネットワークの演算処理に対する演算器（３０２）の割り当て数を考慮してニューラルネットワークの演算処理に必要な演算回数が低減される。すなわち、ニューラルネットワークの演算処理に割り当てられた複数の演算器（３０２）によって同時に処理可能な１サイクル当たりの演算回数が考慮される。よって、少数の演算器（３０２）だけで演算されるサイクルを無くすようにニューラルネットワークの演算回数を低減して、演算処理の処理時間を短縮すると共に複数の演算器（３０２）の使用効率を高めることができる。
【００７２】
本実施形態に記載のニューラルネットワークの縮約装置（１００）において、演算回数設定部（１０３）は、縮約前のニューラルネットワークの演算回数よりも小さく、かつ演算器割り当て部（１０２）によって設定された演算器（３０２）の割り当て数の整数倍に縮約後のニューラルネットワークの演算回数を設定する。この構成によれば、ニューラルネットワークの演算処理に割り当てられた複数の演算器（３０２）によって同時に演算処理が開始されて同時に演算処理が終了される。よって、一部の演算器（３０２）だけで演算するサイクルが無くなり、演算処理の処理時間を短縮すると共に複数の演算器（３０２）の使用効率を最大限に高めることができる。
【００７３】
本実施形態に記載のニューラルネットワークの縮約装置（１００）において、演算回数設定部（１０３）は、演算器割り当て部（１０２）によって設定された演算器（３０２）の割り当て数で、ニューラルネットワークの演算回数を除算した余りが当該演算器（３０２）の割り当て数の半分以上になるように、縮約後のニューラルネットワークの演算回数を設定する。この構成によれば、ニューラルネットワークの演算処理に割り当てられた複数の演算器（３０２）によって同時に演算処理が開始されて、複数の演算器（３０２）のうち半分以上の演算器（３０２）によって同時に演算処理が終了される。よって、少数の演算器（３０２）だけで演算するサイクルが無くなり、演算処理の処理時間を短縮すると共に複数の演算器（３０２）の使用効率を高めることができる。
【００７４】
本実施形態に記載のニューラルネットワークの縮約装置（１００）において、ニューラルネットワークは複数の層を有しており、演算器割り当て部（１０２）はニューラルネットワークの層毎に演算器（３０２）の割り当て数を設定し、演算回数設定部（１０３）はニューラルネットワークの層毎に縮約後のニューラルネットワークの演算回数を設定する。この構成によれば、比較的少ない演算器によって演算処理することができるため、演算装置（１４０）の実装規模を小さくすることができる。
【００７５】
本実施形態に記載のニューラルネットワークの縮約装置（１００）において、ニューラルネットワーク縮約部（１０４）はＰｒｕｎｉｎｇ処理によってニューラルネットワークを縮約する。この構成によれば、Ｐｒｕｎｉｎｇ処理によってニューラルネットワークの精度の低下を抑えつつ、ニューラルネットワークの演算回数を低減することができる。
【００７６】
本実施形態に記載のニューラルネットワークの縮約装置（１００）において、縮約後のニューラルネットワークの精度を算出して、当該精度と目標精度を比較する精度検証部（認識精度検証部１０７）を備え、精度が目標精度以上の場合に演算器割り当て部（１０２）が演算器（３０２）の割り当て数を小さく設定し、精度が目標精度未満の場合に演算器割り当て部（１０２）が演算器（３０２）の割り当て数を大きく設定する。この構成によれば、縮約後のニューラルネットワークの精度に応じて、ニューラルネットワークの演算処理に対する演算器（３０２）の割り当て数を調整することができる。よって、ニューラルネットワークの精度が目標精度を維持できる程度に、ニューラルネットワークの演算回数を低減することができる。
【００７７】
本実施形態に記載のニューラルネットワークの縮約装置（１００）において、縮約後のニューラルネットワークの精度を算出して、当該精度と目標精度を比較する精度検証部（認識精度検証部１０７）を備え、精度が目標精度以上の場合に演算回数設定部（１０３）が縮約後のニューラルネットワークの演算回数を小さく設定し、精度が目標精度未満の場合に演算回数設定部（１０３）が縮約後のニューラルネットワークの演算回数を大きく設定する。この構成によれば、縮約後のニューラルネットワークの精度に応じて、ニューラルネットワークの演算回数を調整することができる。よって、ニューラルネットワークの精度が目標精度を維持できる程度に、ニューラルネットワークの演算回数を低減することができる。
【００７８】
本実施形態に記載のニューラルネットワークの縮約装置（１００）において、複数の演算器（３０２）を備えた演算装置（１４０）によるニューラルネットワークの演算回数を、ニューラルネットワークを縮約することによって低減するニューラルネットワークの縮約装置（１００）であって、縮約後のニューラルネットワークの演算回数を設定する演算回数設定部（１０３）と、演算装置（１４０）によるニューラルネットワークの演算回数が、演算回数設定部（１０３）によって設定された演算回数と等しくなるように、ニューラルネットワークを縮約するニューラルネットワーク縮約部（１０４）と、ニューラルネットワークの演算処理に対する演算器（３０２）の割り当て数を設定する演算器割り当て部（１０２）と、演算器（３０２）の割り当て数に基づいて縮約後のニューラルネットワークの演算回数を補正する演算回数補正部（１０８）とを備えている。
【００７９】
この構成によれば、ニューラルネットワークの演算処理に対する演算器（３０２）の割り当て数を考慮して、縮約後のニューラルネットワークの演算処理に必要な演算回数が補正される。すなわち、ニューラルネットワークの演算処理に割り当てられた複数の演算器（３０２）によって同時に処理可能な１サイクル当たりの演算回数が考慮される。よって、少数の演算器だけで演算されるサイクルを無くすようにニューラルネットワークの演算回数を補正して、演算処理の処理時間を短縮すると共に複数の演算器（３０２）の使用効率を高めることができる。
【００８０】
以上、本発明の実施形態について詳述したが、本発明は、前記の実施形態に限定されるものではなく、特許請求の範囲に記載された本発明の精神を逸脱しない範囲で、種々の設計変更を行うことができるものである。例えば、前記した実施の形態は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、ある実施形態の構成の一部を他の実施形態の構成に置き換えることが可能であり、また、ある実施形態の構成に他の実施形態の構成を加えることも可能である。さらに、各実施形態の構成の一部について、他の構成の追加・削除・置換をすることが可能である。
【符号の説明】
【００８１】
１００  ニューラルネットワークの縮約装置、１０２  演算器割り当て部、１０３  演算回数設定部、１０４  ニューラルネットワーク縮約部、１０７  認識精度検証部（精度検証部）、１０８  演算回数補正部、１４０  演算装置、３０２  演算器
【図１】
2020149178.tif 000003
【図２】
2020149178.tif 000004
【図３】
2020149178.tif 000005
【図４】
2020149178.tif 000006
【図５】
2020149178.tif 000007
【図６】
2020149178.tif 000008
【図７】
2020149178.tif 000009
【図８】
2020149178.tif 000010
【図９】
2020149178.tif 000011
【図１０】
2020149178.tif 000012
【図１１】
2020149178.tif 000013
【図１２】
2020149178.tif 000014
【図１３】
2020149178.tif 000015
【図１４】
2020149178.tif 000016
【図１５】
2020149178.tif 000017
【国際調査報告】
2020149178.tif 000018
2020149178.tif 000019
2020149178.tif 000020
2020149178.tif 000021
2020149178.tif 000022