(57)【要約】      （修正有）【課題】データ転送のボトルネックを排除して推論演算の処理時間を削減することができる推論処理技術を提供する。【解決手段】推論処理装置１は、入力データＸを記憶する入力データ格納部及びニューラルネットワークの重みデータＷを記憶する学習済みＮＮ格納部を有する記憶部１２と、入力データＸに関する情報に基づいて、バッチサイズを設定するバッチ処理制御部１０と、設定されたバッチサイズに応じた入力データＸを入力データ格納部から読み出すメモリ制御部１１と、バッチサイズに応じた入力データＸおよび重みデータＷを入力として、ニューラルネットワークの演算をバッチ処理して、入力データＸの特徴を推論する推論演算部１３とを備える。【選択図】図１
2020112901.tif 000002
【特許請求の範囲】
【請求項１】
入力データを記憶する第１記憶部と、
ニューラルネットワークの重みを記憶する第２記憶部と、
前記入力データに関する情報に基づいて、バッチサイズを設定するバッチ処理制御部と、
設定された前記バッチサイズに応じた前記入力データを前記第１記憶部から読み出すメモリ制御部と、
前記バッチサイズに応じた前記入力データおよび前記重みを入力として、前記ニューラルネットワークの演算をバッチ処理して、前記入力データの特徴を推論する推論演算部と
を備える推論処理装置。
【請求項２】
請求項１に記載の推論処理装置において、
前記バッチ処理制御部は、推論演算に用いられるハードウェアリソースに関する情報に基づいて、前記バッチサイズを設定することを特徴とする推論処理装置。
【請求項３】
請求項１または請求項２に記載の推論処理装置において、
前記推論演算部は、
前記入力データと前記重みとの行列演算を行う行列演算部と、
前記行列演算部による行列演算結果に対して活性化関数を適用する活性化関数演算部と
を備え、
前記行列演算部は、
前記入力データと前記重みとを乗算する乗算器と、
前記乗算器による乗算結果を加算する加算器と
を有する
ことを特徴とする推論処理装置。
【請求項４】
請求項３に記載の推論処理装置において、
前記行列演算部は、複数具備され、行列演算を並列に行うことを特徴とする推論処理装置。
【請求項５】
請求項３または請求項４に記載の推論処理装置において、
前記行列演算部は、前記乗算器および前記加算器をそれぞれ複数具備し、乗算および加算を並列に行うことを特徴とする推論処理装置。
【請求項６】
請求項１から５のいずれか１項に記載の推論処理装置において、
前記推論演算部に入力される前記入力データおよび前記重みのデータタイプを変換するデータ変換部をさらに備えることを特徴とする推論処理装置。
【請求項７】
請求項１から６のいずれか１項に記載の推論処理装置において、
前記推論演算部は、複数具備され、推論演算を並列に行うことを特徴とする推論処理装置。
【請求項８】
第１記憶部に記憶された入力データに関する情報に基づいて、バッチサイズを設定する第１ステップと、
設定された前記バッチサイズに応じた前記入力データを前記第１記憶部から読み出す第２ステップと、
前記バッチサイズに応じた前記入力データおよび第２記憶部に記憶されたニューラルネットワークの重みを入力として、前記ニューラルネットワークの演算をバッチ処理して、前記入力データの特徴を推論する第３ステップと
を備える推論処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、推論処理装置および推論処理方法に関し、特に、ニューラルネットワークを用いて推論を行う技術に関する。
【背景技術】
【０００２】
近年、モバイル端末やＩｎｔｅｒｎｅｔ  ｏｆ  Ｔｈｉｎｇｓ（ＩｏＴ）デバイス等のエッジデバイスの増加に伴い、生成されるデータが爆発的に増加している。この膨大なデータから有意義な情報を抽出するには、深層ニューラルネットワーク（Ｄｅｅｐ  Ｎｅｕｒａｌ  Ｎｅｔｗｏｒｋｓ：ＤＮＮ）とよばれる最先端の機械学習技術が優位である。近年のＤＮＮに関する研究の進歩により、データの解析精度は大幅に改善されており、ＤＮＮを利用した技術のさらなる発展が期待されている。
【０００３】
ＤＮＮの処理は学習および推論の２つのフェーズがある。一般に、学習では、大量のデータを必要とするため、クラウドで処理される場合がある。一方、推論では学習済みのＤＮＮモデルを使用し、未知の入力データに対して出力を推定する。
【０００４】
より詳細に説明すると、ＤＮＮにおける推論処理では、学習済みのニューラルネットワークモデルに時系列データまたは画像データなどの入力データを与えて、入力データの特徴を推論する。例えば、非特許文献１に開示されている具体的な例によると、加速度センサとジャイロセンサとを搭載したセンサ端末を用いて、ゴミ収集車の回転や停止といったイベントを検出することで、ゴミの量を推定している。このように、未知の時系列データを入力として、各時刻におけるイベントを推定するには、予め各時刻におけるイベントが既知である時系列データを用いて学習したニューラルネットワークモデルを用いる。
【０００５】
非特許文献１では、センサ端末から取得される時系列データを入力データとして用いており、リアルタイムにイベントを抽出する必要がある。そのため、推論処理をより高速化することが必要となる。そこで、従来から、推論処理を実現するＦＰＧＡをセンサ端末に搭載し、そのようなＦＰＧＡで推論演算を行い、処理の高速化を図っている（非特許文献２参照）。
【先行技術文献】
【非特許文献】
【０００６】
【非特許文献１】Ｋｉｓｈｉｎｏ，ｅｔ．ａｌ，“Ｄｅｔｅｃｔｉｎｇ  ｇａｒｂａｇｅ  ｃｏｌｌｅｃｔｉｏｎ  ｄｕｒａｔｉｏｎ  ｕｓｉｎｇ  ｍｏｔｉｏｎ  ｓｅｎｓｏｒｓ  ｍｏｕｎｔｅｄ  ｏｎ  ａ  ｇａｒｂａｇｅ  ｔｒｕｃｋ  ｔｏｗａｒｄ  ｓｍａｒｔ  ｗａｓｔｅ  ｍａｎａｇｅｍｅｎｔ”，ＳＰＷＩＤ１７
【非特許文献２】Ｋｉｓｈｉｎｏ，ｅｔ．ａｌ，“Ｄａｔａｆｙｉｎｇ  ｃｉｔｙ：ｄｅｔｅｃｔｉｎｇ  ａｎｄ  ａｃｃｕｍｕｌａｔｉｎｇ  ｓｐａｔｉｏ−ｔｅｍｐｏｒａｌ  ｅｖｅｎｔｓ  ｂｙ  ｖｅｈｉｃｌｅ−ｍｏｕｎｔｅｄ  ｓｅｎｓｏｒｓ”，ＢＩＧＤＡＴＡ  ２０１７
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかし、従来の技術では、推論処理を行う際に、メモリから入力データおよびニューラルネットワークモデルの重みを推論処理の対象となるデータセットごとに読み出し、推論演算を行う回路に転送する必要があった。そのため、扱うデータ量が多くなるとデータ転送がボトルネックになり、推論演算の処理時間を削減することが困難であった。
【０００８】
本発明は、上述した課題を解決するためになされたものであり、データ転送のボトルネックを排除して推論演算の処理時間を削減することができる推論処理技術を提供することを目的とする。
【課題を解決するための手段】
【０００９】
上述した課題を解決するために、本発明に係る推論処理装置は、入力データを記憶する第１記憶部と、ニューラルネットワークの重みを記憶する第２記憶部と、前記入力データに関する情報に基づいて、バッチサイズを設定するバッチ処理制御部と、設定された前記バッチサイズに応じた前記入力データを前記第１記憶部から読み出すメモリ制御部と、前記バッチサイズに応じた前記入力データおよび前記重みを入力として、前記ニューラルネットワークの演算をバッチ処理して、前記入力データの特徴を推論する推論演算部とを備える。
【００１０】
また、本発明に係る推論処理装置において、前記バッチ処理制御部は、推論演算に用いられるハードウェアリソースに関する情報に基づいて、前記バッチサイズを設定してもよい。
【００１１】
また、本発明に係る推論処理装置において、前記推論演算部は、前記入力データと前記重みとの行列演算を行う行列演算部と、前記行列演算部による行列演算結果に対して活性化関数を適用する活性化関数演算部とを備え、前記行列演算部は、前記入力データと前記重みとを乗算する乗算器と、前記乗算器による乗算結果を加算する加算器とを有していてもよい。
【００１２】
また、本発明に係る推論処理装置において、前記行列演算部は、複数具備され、行列演算を並列に行ってもよい。
【００１３】
また、本発明に係る推論処理装置において、前記行列演算部は、前記乗算器および前記加算器をそれぞれ複数具備し、乗算および加算を並列に行ってもよい。
【００１４】
また、本発明に係る推論処理装置において、前記推論演算部に入力される前記入力データおよび前記重みのデータタイプを変換するデータ変換部をさらに備えていてもよい。
【００１５】
また、本発明に係る推論処理装置において、前記推論演算部は、複数具備され、推論演算を並列に行ってもよい。
【００１６】
上述した課題を解決するために、本発明に係る推論処理方法は、第１記憶部に記憶された入力データに関する情報に基づいて、バッチサイズを設定する第１ステップと、設定された前記バッチサイズに応じた前記入力データを前記第１記憶部から読み出す第２ステップと、前記バッチサイズに応じた前記入力データおよび第２記憶部に記憶されたニューラルネットワークの重みを入力として、前記ニューラルネットワークの演算をバッチ処理して、前記入力データの特徴を推論する第３ステップとを備える。
【発明の効果】
【００１７】
本発明によれば、入力データに関する情報に基づいて設定されたバッチサイズに応じた入力データ、および重みを入力として、学習済みニューラルネットワークの演算をバッチ処理するので、扱うデータ量が多くなっても、データ転送のボトルネックを排除して、推論演算の処理時間を削減することができる。
【図面の簡単な説明】
【００１８】
【図１】図１は、本発明の第１の実施の形態に係る推論処理装置の構成を示すブロック図である。
【図２】図２は、第１の実施の形態に係る記憶部の構成を示すブロック図である。
【図３】図３は、第１の実施の形態に係る推論演算部の構成を示すブロック図である。
【図４】図４は、第１の実施の形態に係る行列演算部の構成を示すブロック図である。
【図５】図５は、第１の実施の形態に係る推論処理装置のハードウェア構成を示すブロック図である。
【図６】図６は、第１の実施の形態に係る推論処理プログラムのサンプルコードの一例を説明する図である。
【図７Ａ】図７Ａは、第１の実施の形態に係るニューラルネットワークを用いた推論処理を説明するための図である。
【図７Ｂ】図７Ｂは、第１の実施の形態に係るニューラルネットワークを用いた推論処理を説明するための図である。
【図８】図８は、第１の実施の形態に係る推論処理装置の動作を説明するためのフローチャートである。
【図９】図９は、第１の実施の形態に係るバッチサイズの設定処理を説明するためのフローチャートである。
【図１０】図１０は、従来例の推論処理装置におけるデータの転送を説明するための図である。
【図１１】図１１は、第１の実施の形態に係る推論処理装置におけるデータの転送を説明するための図である。
【図１２】図１２は、第１の実施の形態の効果を説明するための図である
【図１３】図１３は、第２の実施の形態に係る推論処理装置の構成を示すブロック図である。
【図１４】図１４は、第２の実施の形態に係る推論処理装置の動作を説明するためのフローチャートである。
【図１５】図１５は、第２の実施の形態の効果を説明するための図である。
【図１６】図１６は、第３の実施の形態に係る推論処理装置の構成を示すブロック図である。
【図１７】図１７は、第４の実施の形態に係る推論演算部の構成を示すブロック図である。
【図１８】図１８は、第５の実施の形態に係る行列演算部の構成を示すブロック図である。
【図１９】図１９は、第６の実施の形態に係る推論処理装置の構成を示すブロック図である。
【図２０】図２０は、従来例に係る推論処理装置の構成を示すブロック図である。
【発明を実施するための形態】
【００１９】
以下、本発明の好適な実施の形態について、図１から図２０を参照して詳細に説明する。
【００２０】
［第１の実施の形態］
図１は、本発明の第１の実施の形態に係る推論処理装置１の構成を示すブロック図である。本実施の形態に係る推論処理装置１は、図１に示すように、外部のセンサ２などから取得された音声データや言語データなどの時系列データ、または画像データを推論対象の入力データＸとして用いる。推論処理装置１は、学習済みのニューラルネットワークモデルを用いてニューラルネットワークの演算をバッチ処理し、入力データＸの特徴を推論する。
【００２１】
より詳細には、推論処理装置１は、各時刻におけるイベントが既知である時系列データなどの入力データＸを用いて予め学習したニューラルネットワークモデルを用いる。推論処理装置１は、設定されたバッチサイズに応じた未知の時系列データなどの入力データＸおよび学習済みのニューラルネットワークの重みデータＷを入力として、各時刻におけるイベントの推定をバッチ処理により行う。なお、入力データＸおよび重みデータＷは、行列データである。
【００２２】
例えば、推論処理装置１は、加速度センサとジャイロセンサとを搭載したセンサ２から取得された入力データＸをバッチ処理して、ごみ収集車の回転や停止といったイベントを検出することで、ゴミの量を推定することができる（非特許文献１参照）。
【００２３】
［推論処理装置の構成］
推論処理装置１は、図１に示すように、バッチ処理制御部１０、メモリ制御部１１、記憶部１２、および推論演算部１３を備える。
【００２４】
バッチ処理制御部１０は、入力データＸに関する情報に基づいて、推論演算部１３で入力データＸをバッチ処理するためのバッチサイズを設定する。バッチ処理制御部１０は、メモリ制御部１１に対して、設定されたバッチサイズに応じた入力データＸを記憶部１２から読み出す指示を送る。
【００２５】
例えば、バッチ処理制御部１０は、後述する推論演算に用いられるハードウェアリソースに関する情報に基づいて、１回のバッチ処理で扱う入力データＸの数、すなわちバッチサイズを設定することができる。
【００２６】
あるいは、バッチ処理制御部１０は、記憶部１２に記憶されているニューラルネットワークモデルの重みデータＷの行列サイズまたは入力データＸの行列サイズに基づいて、バッチサイズを設定することができる。
【００２７】
上記例の他にも、バッチ処理制御部１０は、例えば、データの送受信時間およびデータの演算時間の最適化を行い、送受信時間と演算時間とのバランスにより最適なバッチサイズを設定することもできる。また、バッチ処理制御部１０は、推論処理装置１全体の処理時間および推論精度に基づいて、バッチサイズを設定してもよい。
【００２８】
メモリ制御部１１は、バッチ処理制御部１０で設定されたバッチサイズに応じた入力データＸを記憶部１２から読み出す。また、メモリ制御部１１は、記憶部１２からニューラルネットワークの重みデータＷを読み出す。メモリ制御部１１は、読み出した入力データＸおよび重みデータＷを推論演算部１３に転送する。
【００２９】
記憶部１２は、図２に示すように、入力データ格納部（第１記憶部）１２０および学習済みニューラルネットワーク（ＮＮ）格納部（第２記憶部）１２１を備える。
入力データ格納部１２０には、外部のセンサ２から取得された時系列データなどの入力データＸが格納される。
【００３０】
学習済みＮＮ格納部１２１には、予め学習され構築された学習済みニューラルネットワーク、すなわち、ニューラルネットワークの学習済みパラメータである重みデータＷが格納される。例えば、予め外部のサーバなどで学習が行われて決定された重みデータＷがロードされ、学習済みＮＮ格納部１２１に格納されている。
【００３１】
なお、推論処理装置１において採用されるニューラルネットワークモデルとして、例えば、畳み込みニューラルネットワーク（ＣＮＮ）、長期短期記憶（ＬＳＴＭ）、ゲート付き再帰型ユニット（ＧＲＵ）、Ｒｅｓｉｄｕａｌ  Ｎｅｔｗｏｒｋ（ＲｅｓＮｅｔ）  ＣＮＮ、その他の公知の少なくとも１層の中間層を有するニューラルネットモデル、あるいはこれらを組み合わせたニューラルネットワークを用いることができる。
【００３２】
また、行列である入力データＸおよび重みデータＷのサイズは推論処理装置１で用いられるニューラルネットワークモデルにより定まる。入力データＸおよび重みデータＷは、例えば、３２ビットの浮動小数点型で表される。
【００３３】
推論演算部１３は、設定されたバッチサイズに応じた入力データＸおよび重みデータＷを入力としてニューラルネットワークの演算をバッチ処理し、入力データＸの特徴を推論する。より詳細には、メモリ制御部１１によって読み出され、転送された入力データＸおよび重みデータＷが推論演算部１３に入力されて、推論演算が行われる。
【００３４】
推論演算部１３は、図３に示すように、行列演算部１３０、および活性化関数演算部１３１を備える。行列演算部１３０は、図４に示すように、乗算器１３２と加算器１３３とを有する。
【００３５】
行列演算部１３０は、入力データＸと重みデータＷとの行列演算を行う。より詳細には、図４に示すように、乗算器１３２は、入力データＸと重みデータＷとの乗算を行う。乗算結果は、加算器１３３によって加算され、加算結果が出力される。この加算結果は、行列演算部１３０による行列演算結果Ａとして出力される。
【００３６】
行列演算結果Ａは、活性化関数演算部１３１に入力され、予め設定された活性化関数が適用されて、推論演算の結果である推論結果Ｙが決定される。より具体的には、活性化関数演算部１３１は、活性化関数の適用により、行列演算結果Ａがどのように活性化するかを決定し、行列演算結果Ａを変換して推論結果Ｙを出力する。活性化関数は、例えば、ステップ関数、シグモイド関数、ｔａｎｈ関数、ＲｅＬＵ関数、ｓｏｆｔｍａｘ関数などから選択することができる。
【００３７】
［推論処理装置のハードウェア構成］
次に、上述した構成を有する推論処理装置１のハードウェア構成の一例について図５を参照して説明する。
【００３８】
図５に示すように、推論処理装置１は、例えば、バス１０１を介して接続されるプロセッサ１０２、主記憶装置１０３、通信インターフェース１０４、補助記憶装置１０５、入出力装置１０６を備えるコンピュータと、これらのハードウェア資源を制御するプログラムによって実現することができる。推論処理装置１は、例えば、表示装置１０７がバス１０１を介して接続され、表示画面に推論結果などを表示してもよい。また、センサ２がバス１０１を介して接続され、推論処理装置１において推論の対象となる音声データなどの時系列データからなる入力データＸを測定してもよい。
【００３９】
主記憶装置１０３は、例えば、ＳＲＡＭ、ＤＲＡＭ、およびＲＯＭなどの半導体メモリによって実現される。主記憶装置１０３は、図１で説明した記憶部１２を実現する。
【００４０】
主記憶装置１０３には、プロセッサ１０２が各種制御や演算を行うためのプログラムが予め格納されている。プロセッサ１０２と主記憶装置１０３とによって、図１から図４に示したバッチ処理制御部１０、メモリ制御部１１、推論演算部１３を含む推論処理装置１の各機能が実現される。
【００４１】
通信インターフェース１０４は、通信ネットワークＮＷを介して各種外部電子機器との通信を行うためのインターフェース回路である。推論処理装置１は、通信インターフェース１０４を介して外部から学習済みニューラルネットワークの重みデータＷを受信したり、外部に推論結果Ｙを送出してもよい。
【００４２】
通信インターフェース１０４としては、例えば、ＬＴＥ、３Ｇ、無線ＬＡＮ、Ｂｌｕｅｔｏｏｔｈ（登録商標）などの無線データ通信規格に対応したインターフェースおよびアンテナが用いられる。通信ネットワークＮＷは、例えば、ＷＡＮ（Ｗｉｄｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）やＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、インターネット、専用回線、無線基地局、プロバイダなどを含む。
【００４３】
補助記憶装置１０５は、読み書き可能な記憶媒体と、その記憶媒体に対してプログラムやデータなどの各種情報を読み書きするための駆動装置とで構成されている。補助記憶装置１０５には、記憶媒体としてハードディスクやフラッシュメモリなどの半導体メモリを使用することができる。
【００４４】
補助記憶装置１０５は、推論処理装置１がバッチ処理により推論を行うためのプログラムを格納するプログラム格納領域を有する。さらには、補助記憶装置１０５は、例えば、上述したデータやプログラムやなどをバックアップするためのバックアップ領域などを有していてもよい。補助記憶装置１０５は、例えば、図６に示す推論処理プログラムを記憶することができる。
【００４５】
入出力装置１０６は、表示装置１０７など外部機器からの信号を入力したり、外部機器へ信号を出力したりするＩ／Ｏ端子により構成される。
【００４６】
なお、推論処理装置１は、１つのコンピュータによって実現される場合だけでなく、互いに通信ネットワークＮＷで接続された複数のコンピュータによって分散されていてもよい。また、プロセッサ１０２は、ＦＰＧＡ（Ｆｉｅｌｄ−Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）、ＬＳＩ（Ｌａｒｇｅ  Ｓｃａｌｅ  Ｉｎｔｅｇｒａｔｉｏｎ）、ＡＳＩＣ（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）等のハードウェアによって実現されていてもよい。
【００４７】
特に、推論演算部１３をＦＰＧＡなどの書き換え可能なゲートアレイを用いて構成することで、入力データＸの構成や使用されるニューラルネットワークモデルに応じて柔軟に回路構成を書き換えることができる。この場合、様々なアプリケーションに対応することが可能な推論処理装置１を実現できる。
【００４８】
［推論処理方法の概要］
次に、本実施の形態に係る推論処理装置１による入力データＸの推論処理の概要について、図７Ａおよび図７Ｂに示す具体例を用いて説明する。
【００４９】
図７Ａに示すように、入力層、中間層、および出力層の３層からなるニューラルネットワークを例に挙げて説明する。活性化関数としては、図７Ｂに示すｓｏｆｔｍａｘ関数を用いる。推論の対象となる入力データＸの特徴は、Ｍ個（Ｍは正の整数）の成分、推論結果Ｙの特徴は、Ｎ個（Ｎは正の整数）の成分で表される。また、ニューラルネットワークの重みデータＷのデータサイズはＭ×Ｎで表される。
【００５０】
図７Ａおよび図７Ｂの具体例に示すように、Ｍ＝Ｎ＝２とする。また、説明の簡単のため、バッチ処理制御部１０によって設定された１回のバッチ処理で扱われるバッチサイズは、Ｂａｔｃｈ＝１とする。このとき、バッチサイズＢａｔｃｈ＝１に対応する入力データＸは、Ｘ［ｘ１，ｘ２］である。また、重みデータＷは、４つの成分を有する２行２列の行列で表される。
【００５１】
図７Ｂに示すように、まず、バッチサイズＢａｔｃｈ＝１に応じた入力データＸと、重みデータＷとの行列の積和演算が行われ、行列演算結果Ａが得られる。行列演算結果Ａのデータサイズは、Ｂａｔｃｈ×Ｎ、すなわち１×２である。その後、行列演算結果Ａには、活性化関数としてｓｏｆｔｍａｘ関数が適用されて、推論結果Ｙが求められる。
【００５２】
設定されたバッチサイズＢａｔｃｈに応じたデータ数の入力データＸに対しては、そのバッチサイズＢａｔｃｈに応じたデータ数の推論結果Ｙが出力される。したがって、図７Ａおよび図７Ｂの例では、Ｂａｔｃｈ＝１に応じた１セットの入力データＸ［ｘ１，ｘ２］に対して、１セットの推論結果Ｙ［ｙ１，ｙ２］が出力されている。なお、バッチサイズＢａｔｃｈは、１以上かつ入力データＸのデータ数以下の範囲の値である。
【００５３】
活性化関数の演算処理においては、行列演算結果Ａの各成分の値ａk（ｋ＝１，・・・，ｎ）に対してｓｏｆｔｍａｘ関数が適用されて、推論結果Ｙの各成分ｙk（ｋ＝１，・・・，ｎ）の値が求められる。図７Ａおよび図７Ｂに示す具体例では、行列演算結果Ａ［ａ１，ａ２］の各成分にｓｏｆｔｍａｘ関数が適用されて（ｓｏｆｔｍａｘ（Ａ［ａ１，ａ２］）、推論結果Ｙ［ｙ１，ｙ２］が出力される。
【００５４】
なお、設定されたバッチサイズに応じて、入力データＸのバッチ処理により推論演算を繰り返し行って推論結果Ｙを出力する処理は、図６のサンプルコードの破線の枠６０に示されている。この推論演算において、入力データＸの行の成分と重みデータＷの列の成分との積およびその和が計算される（図６のサンプルコードにおける破線の枠６１、６２を参照）。
【００５５】
［推論処理装置の動作］
次に、本実施の形態に係る推論処理装置１の動作について、図８および図９のフローチャートを参照してより詳細に説明する。以下の説明では、記憶部１２には、予め学習が行われて構築されたニューラルネットワークの重みデータＷが格納されているものとする。また、外部のセンサ２によって測定された時系列データや画像データなどの入力データＸは、記憶部１２に保持されるものとする。
【００５６】
まず、図８に示すように、バッチ処理制御部１０は、１回のバッチ処理で扱う入力データＸのバッチサイズを設定する（ステップＳ１）。
【００５７】
より詳細には、バッチ処理制御部１０は、図９に示すように、記憶部１２に記憶されている重みデータＷのデータサイズ、および入力データＸのデータ数の情報を取得する（ステップＳ１００）。次に、バッチ処理制御部１０は、推論処理装置１全体におけるハードウェアリソースの情報を記憶部１２から取得する（ステップＳ１０１）。なお、推論処理装置１全体のハードウェアリソースに関する情報は、予め記憶部１２に記憶されている。
【００５８】
ここで、ハードウェアリソースとは、入力データＸや重みデータＷを記憶するために必要なメモリ容量や、加算、乗算などの演算処理を行うための回路を構成するのに必要なスタンダードセルの組合せ回路などを意味する。例えば、ＦＰＧＡの場合であれば、フリップフロップ（ＦＦ）、ルックアップテーブル（ＬＵＴ）、デジタルシグナルプロセッサ（ＤＳＰ）などの組合せ回路がハードウェアリソースの例として挙げられる。
【００５９】
ステップＳ１０１では、推論処理装置１全体におけるメモリ容量、および推論処理装置１全体のデバイスとしての規模、すなわち推論処理装置１全体が演算回路として備えるハードウェアリソース、例えば、ＦＰＧＡであればＦＦ、ＬＵＴ、ＤＳＰなどの数が記憶部１２から取得される。
【００６０】
次に、バッチ処理制御部１０は、入力データＸの全データ数を１回のバッチ処理で扱うバッチサイズの初期値として設定する（ステップＳ１０２）。すなわち、ステップＳ１０２では、バッチサイズの最大値である、入力データＸの全データ数がバッチサイズの初期値として設定される。
【００６１】
その後、ステップＳ１００で取得した重みデータＷのデータサイズおよび入力データＸのデータ数、ステップＳ１０１で取得した推論処理装置１全体のハードウェアリソースの情報、およびステップＳ１０２で設定されたバッチサイズに基づいて、推論演算部１３を実現する回路構成に必要なハードウェアリソースを求める（ステップＳ１０３）。例えば、バッチ処理制御部１０は、推論演算部１３のロジック回路を構築して、使用されるハードウェアリソースを取得することができる。
【００６２】
次に、推論演算部１３が推論演算を行う際に使用するハードウェアリソースの数が、推論処理装置１全体が備えるハードウェアリソースの数を超える場合には（ステップＳ１０４：ＹＥＳ）、バッチ処理制御部１０は、ステップＳ１０２で初期設定されたバッチサイズを小さくする（ステップＳ１０５）。例えば、バッチ処理制御部１０は、初期設定されたバッチサイズから１を減算する。
【００６３】
その後、より小さいバッチサイズに基づいて求められる推論演算部１３のハードウェアリソースの数が、推論処理装置１全体のハードウェアリソースの数以下となる場合には（ステップＳ１０６：ＮＯ）、そのバッチサイズが設定値として用いられ、処理は図８に戻る。より詳細には、バッチ処理制御部１０は、メモリ制御部１１に対して、設定されたバッチサイズに応じた入力データＸを読み出すことを指示する。
【００６４】
なお、ステップＳ１０６で推論演算部１３が推論演算に使用するハードウェアリソースの数が、推論処理装置１全体の備えるハードウェアリソースの数を超える場合には（ステップＳ１０６：ＹＥＳ）、バッチ処理制御部１０は、再びバッチサイズを減らす処理を行う（ステップＳ１０５）。
【００６５】
その後、メモリ制御部１１は、設定されたバッチサイズに応じた入力データＸ、および重みデータＷを記憶部１２から読み出す（ステップＳ２）。より詳細には、メモリ制御部１１は、入力データＸおよび重みデータＷを記憶部１２から読み出して、推論演算部１３へ転送する。
【００６６】
次に、推論演算部１３は、入力データＸおよび重みデータＷに基づいてニューラルネットワークの演算をバッチ処理し、推論結果Ｙを求める（ステップＳ３）。より詳細には、行列演算部１３０において、入力データＸと重みデータＷとの積和演算が行われる。具体的には、乗算器１３２が入力データＸと重みデータＷとの乗算を行う。乗算結果は加算器１３３によって加算されて行列演算結果Ａが求められる。行列演算結果Ａに対しては、活性化関数演算部１３１によって活性化関数が適用され、推論結果Ｙが出力される（ステップＳ４）。
【００６７】
上記処理によって推論処理装置１は、画像データや音声などの時系列データを入力データＸとして、学習済みのニューラルネットワークを用いた入力データＸの特徴の推論を行うことができる。
【００６８】
ここで、本実施の形態に係るバッチ処理制御部１０の効果について、図１０および図１１、ならびに図２０を用いて説明する。まず、比較のため、従来例の推論処理装置（図２０）として、本実施の形態に係るバッチ処理制御部１０を備えていない推論処理装置について説明する。図１０に示すように、従来例に係る推論処理装置では、入力データＸをｎ個（ｎは正の整数）処理すると、重みデータＷをｎ回にわたって推論演算部に転送する必要がある。
【００６９】
これに対して、本実施の形態に係るバッチ処理制御部１０を備える推論処理装置１では、図１１に示すように、バッチ処理制御部１０が、１回の推論演算で処理されるバッチサイズＢａｔｃｈを設定し、設定されたバッチサイズに応じた入力データＸをまとめて処理する。そのため、入力データＸが、例えば、ｎ個ある場合であっても、重みデータＷをｎ／Ｂａｔｃｈ回だけ推論演算部１３に転送すればよい。Ｂａｔｃｈ＝ｎの場合は、重みデータＷの推論演算部１３への転送は１回だけで済む。したがって、推論処理装置１におけるバス帯域の負荷を低減することができる。
【００７０】
また、本実施の形態に係る推論処理装置１では、バッチ処理を行うことで比較的大きな行列計算を行うことができ、分割された、より小さい行列計算を実行するよりも計算速度は速く、推論演算をより高速化することができる。
【００７１】
図１２は、重みデータＷのデータサイズが３０×３０の場合のバッチ処理による本実施の形態の効果を示している。図１２において、破線はバッチ処理を行わない場合、実線は本実施の形態に係るバッチ処理を行った場合それぞれにおけるバッチサイズと、推論演算の正規化された処理時間との関係を示している。図１２からわかるように、本実施の形態に係るバッチ処理を行った場合には、バッチ処理を行わない場合と比較して処理時間が短縮されている。
【００７２】
以上説明したように、第１の実施の形態に係る推論処理装置１によれば、推論処理装置１全体のハードウェアリソースに対する推論演算部１３が使用するハードウェアリソースに基づいて、１回のバッチ処理で扱う入力データＸのバッチサイズを設定する。そのため、扱われるデータ量が多くなってもデータ転送におけるボトルネックを排除して、推論演算に要する処理時間を削減することができる。
【００７３】
［第２の実施の形態］
次に、本発明の第２の実施の形態について説明する。なお、以下の説明では、上述した第１の実施の形態と同じ構成については同一の符号を付し、その説明を省略する。
【００７４】
第１の実施の形態では、推論演算部１３は、例えば、３２ビットの浮動小数点型の入力データＸおよび重みデータＷの推論演算を実行する場合について説明した。これに対して第２の実施の形態では、推論演算部１３に入力されるデータのビット表現をより低ビット精度のデータに変換してから推論演算を実行する。以下、第１の実施の形態と異なる構成を中心に説明する。
【００７５】
［推論処理装置の構成］
図１３は、本実施の形態に係る推論処理装置１Ａの構成を示すブロック図である。
推論処理装置１Ａは、バッチ処理制御部１０、メモリ制御部１１、記憶部１２、推論演算部１３、およびデータタイプ変換部（データ変換部）１４を備える。
【００７６】
データタイプ変換部１４は、推論演算部１３に入力される入力データＸおよび重みデータＷのデータタイプを変換する。より詳細には、データタイプ変換部１４は、メモリ制御部１１によって記憶部１２から読み出されて推論演算部１３に転送される入力データＸおよび重みデータＷのデータタイプを、３２ビットの浮動小数点型から、予め設定されたデータタイプ、例えば、８ビットや１６ビットなど、より桁数を減らして精度を下げたデータ表現に変換する。データタイプ変換部１４は、例えば、切り上げ、切り捨て、四捨五入などの丸め処理を行って小数点を含む入力データＸおよび重みデータＷを整数型へ変換することができる。
【００７７】
なお、データタイプ変換部１４は、メモリ制御部１１が記憶部１２にアクセスして読み出した入力データＸおよび重みデータＷについて、転送される前にデータタイプを変換することができる。また、データタイプ変換部１４は、元のデータタイプよりも桁数の低い低ビット精度とすることができれば、入力データＸと重みデータＷとをそれぞれ異なるビット表現のデータタイプに変換してもよい。
【００７８】
メモリ制御部１１は、データタイプ変換部１４によってデータタイプが変換され、よりビット精度が低くなった入力データＸ’および重みデータＷ’を推論演算部１３に転送する。より詳細には、メモリ制御部１１は、バッチ処理制御部１０によって設定されたバッチサイズに応じた入力データＸ、および予め記憶部１２に記憶されている重みデータＷを記憶部１２から読み出す。その後、読み出された入力データＸおよび重みデータＷは、データタイプ変換部１４によってデータタイプが変換され、変換された入力データＸ’および重みデータＷ’が推論演算部１３に転送される。
【００７９】
［推論処理装置の動作］
次に、上述した構成を有する推論処理装置１Ａの動作について、図１４のフローチャートを参照して説明する。以下の説明では、記憶部１２には、予め学習が行われて構築されたニューラルネットワークの重みデータＷが格納されているものとする。また、重みデータＷと、センサ２から取得されて記憶部１２に記憶されている入力データＸとは、ともに３２ビットの浮動小数点型のデータであるものとする。
【００８０】
まず、図１４に示すように、バッチ処理制御部１０は、１回のバッチ処理で扱う入力データＸのバッチサイズを設定する（ステップＳ１０）。なお、バッチサイズの設定処理は、第１の実施の形態と同様である（図９）。
【００８１】
その後、メモリ制御部１１は、バッチ処理制御部１０によって設定されたバッチサイズに応じた入力データＸ、および重みデータＷを記憶部１２から読み出す（ステップＳ１１）。次に、データタイプ変換部１４は、メモリ制御部１１が読み出した入力データＸおよび重みデータＷのデータタイプを変換する（ステップＳ１２）。
【００８２】
より具体的には、データタイプ変換部１４は、３２ビットの浮動小数点型の入力データＸおよび重みデータＷを、より低ビット精度のデータ、例えば、８ビットの入力データＸ’および重みデータＷ’に変換する。データタイプが変換された入力データＸ’および重みデータＷ’は、メモリ制御部１１によって推論演算部１３に転送される。
【００８３】
その後、推論演算部１３は、低ビット精度のデータに変換された入力データＸ’および重みデータＷ’に基づいて、ニューラルネットワークの演算をバッチ処理し、推論結果Ｙを求める（ステップＳ１３）。より詳細には、行列演算部１３０において、入力データＸ’と重みデータＷ’との積和演算が行われる。具体的には、乗算器１３２が入力データＸ’と重みデータＷ’との乗算を行う。乗算結果は加算器１３３によって加算され、行列演算結果Ａが求められる。行列演算結果Ａに対しては、活性化関数演算部１３１により活性化関数が適用され、推論結果Ｙが出力される（ステップＳ１４）。
【００８４】
上記処理によって推論処理装置１Ａは、画像データや音声などの時系列データを入力データＸとして、学習済みのニューラルネットワークを用いた入力データＸの特徴の推論を行うことができる。
【００８５】
次に、本実施の形態に係る推論処理装置１Ａにおけるデータの転送時間について、図１５を用いて説明する。図１５の上段に示すように、バス幅が３２ビットの場合、３２ビットの入力データＸの送信において１つの３２ビットデータしか転送することができない。一方、図１５の下段に示すように、３２ビットの入力データＸが８ビットの入力データＸ’に変換された場合には、４つの８ビットデータを転送することができる。
【００８６】
このように、メモリ制御部１１が記憶部１２から入力データＸおよび重みデータＷを読み出して転送する際に、低ビット精度のデータに変換したデータを転送するので、転送時間を削減することができる。
【００８７】
以上説明したように、第２の実施の形態に係る推論処理装置１Ａによれば、推論演算部１３に入力される入力データＸおよび重みデータＷをより低ビット精度のデータに変換するので、キャッシュの使用率を向上させ、データバス帯域のボトルネックを減らすことができる。
【００８８】
また、推論処理装置１Ａでは、低ビット精度の入力データＸ’および重みデータＷ’を用いてニューラルネットワークの演算を行うので、演算に必要な乗算器１３２および加算器１３３の数を削減することができる。その結果として、推論処理装置１Ａは、より少ないハードウェアリソースによって実現でき、装置全体としての回路規模を小さくすることができる。
【００８９】
また、推論処理装置１Ａでは、使用するハードウェアリソースを削減することができるため、消費電力および発熱を低減できる。
【００９０】
また、推論処理装置１Ａでは、より低ビット精度の入力データＸ’および重みデータＷ’を用いてニューラルネットワークの演算を行うので、より高いクロック周波数で処理を行うことで、処理を高速化することができる。
【００９１】
また、推論処理装置１Ａでは、３２ビットよりも低ビット精度の入力データＸ’および重みデータＷ’を用いてニューラルネットワークの演算を行うので、３２ビットで演算を行う場合と比較して、より多くの並列化やバッチ処理が可能となり、処理を高速化できる。
【００９２】
［第３の実施の形態］
次に、本発明の第３の実施の形態について説明する。なお、以下の説明では、上述した第１および第２の実施の形態と同じ構成については同一の符号を付し、その説明を省略する。
【００９３】
第１および第２の実施の形態では、１つの推論演算部１３によってニューラルネットワークの演算処理が行われる場合について説明した。これに対して、第３の実施の形態では、複数の推論演算部１３ａ、１３ｂを用いて、図６のサンプルコードの破線の枠６０に示す推論演算を並列処理する。以下、第１および第２の実施の形態と異なる構成を中心に説明する。
【００９４】
図１６に示すように、推論処理装置１Ｂは、バッチ処理制御部１０、メモリ制御部１１、記憶部１２、および複数の推論演算部１３ａ、１３ｂを備える。
【００９５】
本実施の形態では、推論演算部１３ａ、１３ｂが例えばＫ個（Ｋは２以上かつＢａｔｃｈ（バッチサイズ）以下の整数、但しＢａｔｃｈは２以上の場合。）設けられている。推論演算部１３ａ、１３ｂは、それぞれが備える行列演算部１３０において、メモリ制御部１１によって転送された入力データＸおよび重みデータＷの行列演算を行い、行列演算結果Ａをそれぞれ出力する。
【００９６】
さらに、複数の推論演算部１３ａ、１３ｂのそれぞれが備える活性化関数演算部１３１において、行列演算結果Ａに対して活性化関数が適用されて、出力である推論結果Ｙが求められる。
【００９７】
より具体的には、設定されたバッチサイズに応じた入力データＸがＢａｔｃｈ個の場合、入力データＸはＢａｔｃｈ行Ｎ列となる。図６のサンプルコードにおける破線の枠６０に示すように、設定されたバッチサイズに応じた入力データＸのデータ数分の推論結果Ｙを求めるためにＢａｔｃｈ回繰り返すことが必要な演算が、本実施の形態ではＫ並列で行われる。
【００９８】
以上説明したように、第３の実施の形態に係る推論処理装置１Ｂによれば、Ｋ個の推論演算部１３ａ、１３ｂが設けられ、Ｂａｔｃｈ回繰り返すことが必要なニューラルネットワークの演算をＫ並列に行うので、繰り返し演算の回数が削減され、推論演算の処理を高速化できる。
【００９９】
［第４の実施の形態］
次に、本発明の第４の実施の形態について説明する。なお、以下の説明では、上述した第１から第３の実施の形態と同じ構成については同一の符号を付し、その説明を省略する。
【０１００】
第１から第３の実施の形態では、推論演算部１３が行列演算部１３０を１つだけ備え、行列の積和演算を行う場合について説明した。これに対して第４の実施の形態では、推論演算部１３Ｃが複数の行列演算部１３０ａ、１３０ｂを備え、図６に示したサンプルコードの破線の枠６１に示す行列の積和演算を並列に実行する。以下、第１から第３の実施の形態と異なる構成を中心に説明する。
【０１０１】
図１７に示すように、本実施の形態に係る推論演算部１３Ｃは、複数の行列演算部１３０ａ、１３０ｂ、および１つの活性化関数演算部１３１を備える。本実施の形態に係る推論処理装置１が備えるその他の構成は、図１に示す推論処理装置１と同様である。
【０１０２】
推論演算部１３Ｃは、Ｋ個（Ｋは２以上かつＮ以下の整数）の行列演算部１３０ａ、１３０ｂを備える。Ｋ個の行列演算部１３０ａ、１３０ｂは、入力データＸと重みデータＷとの行列演算をＫ並列で実行し、行列演算結果Ａを出力する。前述したように、入力データＸの成分がＭ個で、重みデータＷのデータサイズがＭ×Ｎである場合に、これらの行列の積和演算をＮ回繰り返すことで、バッチサイズ（Ｂａｔｃｈ）×Ｎのデータサイズを有する行列演算結果Ａの１行分の計算を完了する。
【０１０３】
例えば、図７Ａおよび図７Ｂで説明したように、Ｍ＝Ｎ＝２、およびＢａｔｃｈ＝１であり、２個（Ｋ＝２）の行列演算部１３０ａ、１３０ｂの場合を考える。行列演算部１３０ａ、１３０ｂのそれぞれには、Ｍ個の入力データＸが入力される。例えば、行列演算部１３０ａには、重みデータＷの１列目の成分Ｗ１１、Ｗ２１が入力され、行列演算部１３０ｂには、重みデータＷの２列目の成分Ｗ２１、Ｗ２２が入力される。メモリ制御部１１は、行列演算部１３０ａ、１３０ｂの個数に応じて重みデータＷの振り分けを制御することができる。
【０１０４】
行列演算部１３０ａは積和演算を行い、行列演算結果Ａの成分ａ１を出力する。一方、行列演算部１３０ｂも同様に積和演算を行い、行列演算結果Ａの成分ａ２を出力する。行列演算部１３０ａ、１３０ｂの演算結果は、活性化関数演算部１３１に入力されて、活性化関数にかけられ、推論結果Ｙが決定される。
【０１０５】
以上説明したように、第４の実施の形態によれば、Ｋ個の行列演算部１３０ａ、１３０ｂが行列演算をＫ並列に行うので、行列演算結果Ａの１行分の行列演算における繰り返しの計算回数を削減することができる。特に、上述した具体例のようにＫ＝Ｎの場合、計算の繰り返しが不要となり、行列演算の処理時間を削減することができる。結果として、推論処理装置１の推論処理を高速化できる。
【０１０６】
なお、第４の実施の形態に係る複数の行列演算部１３０ａ、１３０ｂは、第３の実施の形態と組み合わせてもよい。第３の実施の形態で説明した複数の推論演算部１３ａ、１３ｂのそれぞれが、複数の行列演算部１３０ａ、１３０ｂを備えることにより、推論演算をより高速化することができる。
【０１０７】
［第５の実施の形態］
次に、本発明の第５の実施の形態について説明する。なお、以下の説明では、上述した第１から第４の実施の形態と同じ構成については同一の符号を付し、その説明を省略する。
【０１０８】
第１から第４の実施の形態では、行列演算部１３０が１つの乗算器１３２と加算器１３３とを備える場合について説明した。これに対して、第５の実施の形態では、行列演算部１３０Ｄが複数の乗算器１３２ａ、１３２ｂと加算器１３３ａ、１３３とを備え、図６のサンプルコードの破線の枠６２で示す行列演算の内部処理を並列に行う。
【０１０９】
図１８に示すように、行列演算部１３０Ｄは、Ｋ個（Ｋは２以上かつＭ以下の整数）の乗算器１３２ａ、１３２ｂと加算器１３３ａ、１３３ｂとを備える。本実施の形態に係る推論処理装置１の他の構成は、第１の実施の形態と同様である（図１）。なお、以下においては、説明の簡単のため、Ｍ＝３の場合を例に挙げて説明する。
【０１１０】
行列演算部１３０Ｄは、入力データＸと重みデータＷとの積和演算を行って、行列演算結果Ａの１行分の成分を計算する。行列演算部１３０Ｄは、Ｋ個の乗算器１３２ａ、１３２ｂおよび加算器１３３ａ、１３３ｂにおいて、積和演算をＫ並列で行う。行列演算では、Ｍ個の成分を有する入力データＸとデータサイズがＭ×Ｎの重みデータＷとの積和演算が行われる。
【０１１１】
例えば、Ｍ＝３の場合に、２個（Ｋ＝２）の乗算器１３２ａ、１３２ｂおよび加算器１３３ａ、１３３ｂが設けられている場合を考える。なお、入力データＸは［ｘ１，ｘ２，ｘ３］で表される。また、重みデータＷは、例えば、３×２（Ｍ×Ｎ）のデータサイズを有する場合を考える。重みデータＷの第１列目は、Ｗ１１，Ｗ２１，Ｗ３１で表される。また、行列演算結果Ａは２つの成分を有し、Ａ［ａ１，ａ２］で表される。
【０１１２】
この場合、例えば、乗算器１３２ａに入力データＸの成分ｘ１および重みデータＷの成分Ｗ１１が入力される。一方、乗算器１３２ｂには、入力データＸの成分ｘ２および重みデータＷの成分Ｗ２１、ならびに入力データＸの成分ｘ３および重みデータの成分Ｗ３１が入力される。
【０１１３】
乗算器１３２ａ、１３２ｂのそれぞれは、乗算結果を出力する。上記具体例においては、乗算器１３２ａは、乗算結果ｘ１Ｗ１１を出力し、乗算器１３２ｂは、乗算結果ｘ２Ｗ２１と乗算結果ｘ３Ｗ３１を出力する。加算器１３３ｂは、乗算器１３２ｂの乗算結果ｘ２Ｗ２１と乗算結果ｘ３Ｗ３１とを加算する。加算器１３３ａは、乗算器１３２ａの乗算結果ｘ１Ｗ１１と加算器１３３ｂの加算結果ｘ２Ｗ２１＋ｘ３Ｗ３１とを加算して、行列演算結果Ａの成分ａ１を出力する。
【０１１４】
以上説明したように、第５の実施の形態によれば、行列演算部１３０Ｄにおいて、Ｋ個の乗算器１３２ａ、１３２ｂが入力データＸと重みデータＷとの行列積をＫ並列で実行するので、行列演算結果Ａの各成分を計算する際の繰り返しの計算回数を削減することができる。特に、Ｋ＝Ｍの場合、１回の計算で行列演算結果Ａの１成分を出力することができる。結果として、行列演算の処理時間を削減し、推論処理装置１における処理を高速化できる。
【０１１５】
なお、第５の実施の形態は、第３および第４の実施の形態と組み合わせてもよい。例えば、第３の実施の形態の複数の推論演算部１３ａ、１３ｂそれぞれの行列演算部１３０が、本実施の形態に係る複数の乗算器１３２ａ、１３２ｂを備えることで、第３の実施の形態に係る構成のみを採用した場合と比較して、推論演算をより高速化することができる。
【０１１６】
また、第４の実施の形態に係る複数の行列演算部１３０ａ、１３０ｂのそれぞれが本実施の形態に係る複数の乗算器１３２ａ、１３２ｂを備えることで、第４の実施の形態に係る構成のみを採用した場合と比較して行列演算をより高速化することができる。
【０１１７】
第３から第５の実施の形態の構成をそれぞれ単独で採用した場合、例えば、バッチサイズＢａｔｃｈ、推論結果Ｙの成分の数Ｎ、および入力データＸの成分の数Ｍの関係が、Ｂａｔｃｈ＞Ｂ＞Ｍであれば、第３の実施の形態に係る推論処理装置１Ｂにおいて最も処理が高速化できる。次いで、第４の実施の形態、第５の実施の形態の順に処理を高速化することができる。
【０１１８】
なお、本実施の形態においてＭ＝２の場合には、加算器１３３を１つ設ければよい。その場合においても、乗算処理を並列に実行するので、行列演算を高速化することができる。本実施の形態は特にＭが４以上の場合により有効である。
【０１１９】
［第６の実施の形態］
次に、本発明の第６の実施の形態について説明する。なお、以下の説明では、上述した第１から第５の実施の形態と同じ構成については同一の符号を付し、その説明を省略する。
【０１２０】
第１から第５の実施の形態では、重みデータＷは予め記憶部１２に記憶されている場合について説明した。これに対して、第６の実施の形態に係る推論処理装置１Ｅは、通信ネットワークＮＷを介して重みデータＷを受信する無線通信部１５を備える。
【０１２１】
図１９に示すように、第６の実施の形態に係る推論処理装置１Ｅは、バッチ処理制御部１０、メモリ制御部１１、記憶部１２、推論演算部１３、および無線通信部１５を備える。
【０１２２】
無線通信部１５は、通信ネットワークＮＷを介して外部のクラウドサーバなどから、推論処理装置１Ｅで用いられるニューラルネットワークモデルの重みデータＷを受信し、記憶部１２に格納する。例えば、推論処理装置１Ｅで用いるニューラルネットワークモデルの重みデータＷを再度学習して更新した場合など、無線通信部１５は、更新された重みデータＷを無線通信によりダウンロードし、記憶部１２に記憶されている古い重みデータＷを書き換える。
【０１２３】
また、推論処理装置１Ｅにおいて、別のニューラルネットワークモデルを用いて推論処理を行うような場合に、無線通信部１５は、外部のクラウドサーバなどから受信した新しい学習済みのニューラルネットワークの重みデータＷを受信し、記憶部１２に記憶させる。
【０１２４】
このように、第６の実施の形態に係る推論処理装置１Ｅによれば、ニューラルネットワークモデルの重みデータＷが書き換え可能であり、推論処理装置１Ｅにおいて最適な重みデータＷを用いることができるので、入力データＸの変動などにより推論精度が低下することを防止できる。
【０１２５】
以上、本発明の推論処理装置および推論処理方法における実施の形態について説明したが、本発明は説明した実施の形態に限定されるものではなく、請求項に記載した発明の範囲において当業者が想定し得る各種の変形を行うことが可能である。
【０１２６】
例えば、本発明の推論処理装置における推論演算部を除く各機能部は、コンピュータとプログラムによっても実現でき、プログラムを記録媒体に記録することも、ネットワークを通して提供することも可能である。
【符号の説明】
【０１２７】
１…推論処理装置、２…センサ、１０…バッチ処理制御部、１１…メモリ制御部、１２…記憶部、１３…推論演算部、１２０…入力データ格納部、１２１…学習済みＮＮ格納部、１５…無線通信部、１３０…行列演算部、１３１…活性化関数演算部、１３２…乗算器、１３３…加算器、１０１…バス、１０２…プロセッサ、１０３…主記憶装置、１０４…通信インターフェース、１０５…補助記憶装置、１０６…入出力装置、１０７…表示装置。
【図１】
2020112901.tif 000003
【図２】
2020112901.tif 000004
【図３】
2020112901.tif 000005
【図４】
2020112901.tif 000006
【図５】
2020112901.tif 000007
【図６】
2020112901.tif 000008
【図７Ａ】
2020112901.tif 000009
【図７Ｂ】
2020112901.tif 000010
【図８】
2020112901.tif 000011
【図９】
2020112901.tif 000012
【図１０】
2020112901.tif 000013
【図１１】
2020112901.tif 000014
【図１２】
2020112901.tif 000015
【図１３】
2020112901.tif 000016
【図１４】
2020112901.tif 000017
【図１５】
2020112901.tif 000018
【図１６】
2020112901.tif 000019
【図１７】
2020112901.tif 000020
【図１８】
2020112901.tif 000021
【図１９】
2020112901.tif 000022
【図２０】
2020112901.tif 000023