(57)【特許請求の範囲】
【請求項１】
ニューラルネットワークに与えられる入力信号を記憶する第１メモリと、
前記ニューラルネットワークの重みを記憶する第２メモリと、
前記入力信号と前記重みとの積和演算を含む前記ニューラルネットワークの畳み込み演算を行う演算部と、
入力された値に対して予め規定されている条件に基づいて正規化を含む変換をし、変換したデータのビット精度を前記入力された値よりも削減して量子化する変換−量子化処理の結果を出力としたとき、前記変換−量子化処理の入力と出力とを互いに関連付けたテーブルを記憶する第３メモリと、
前記演算部による畳み込み演算の演算結果を入力として、前記テーブルを参照して、前記演算結果に対応する前記変換−量子化処理の出力を取得する処理部と
を備えることを特徴とするニューラルネットワーク処理装置。
【請求項２】
請求項１に記載のニューラルネットワーク処理装置において、
前記テーブルは、前記変換−量子化処理の入力を連続する複数の区間に分割した複数の入力区間と、前記変換−量子化処理の出力とを互いに関連付け、
前記処理部は、
前記演算部による畳み込み演算の演算結果と前記複数の入力区間とをそれぞれ比較して、前記演算結果が含まれる入力区間を判定する入力判定部と、
前記テーブルを参照して、前記入力判定部による判定結果に応じた入力区間に対応する前記変換−量子化処理の出力を取得する出力取得部と、
を有する
ことを特徴とするニューラルネットワーク処理装置。
【請求項３】
請求項１に記載のニューラルネットワーク処理装置において、
前記テーブルは、前記変換−量子化処理の入力に対して予め設定されている複数の閾値と、前記変換−量子化処理の出力とを互いに関連付け、
前記処理部は、
前記演算部による畳み込み演算の演算結果と、前記複数の閾値とを比較して、前記演算結果に対応する閾値を出力する第１閾値処理部と、
前記テーブルを参照して、前記第１閾値処理部によって出力された前記閾値に対応する前記変換−量子化処理の出力を取得する出力取得部と、
を有する
ことを特徴とするニューラルネットワーク処理装置。
【請求項４】
請求項２に記載のニューラルネットワーク処理装置において、
前記テーブルは、前記変換−量子化処理の出力が単調増加する入力の区間と、単調減少する入力の区間とを識別する分割情報と、前記変換−量子化処理の入力に対して予め設定されている複数の閾値と、前記複数の閾値のそれぞれに対応する前記変換−量子化処理の出力とを互いに関連付け、
前記入力判定部は、前記分割情報に基づいて、前記演算部による畳み込み演算の演算結果の属する前記変換−量子化処理の入力の区間を判定し、
前記処理部は、
前記演算部による畳み込み演算の前記演算結果と、前記複数の閾値とを前記入力判定部により判定された前記入力の区間内で比較して、前記演算結果に対応する閾値を出力する第２閾値処理部と、
前記テーブルを参照し、前記第２閾値処理部により出力された前記閾値に対応する前記変換−量子化処理の出力を取得する出力取得部と、
を有する
ことを特徴とするニューラルネットワーク処理装置。
【請求項５】
請求項２に記載のニューラルネットワーク処理装置において、
前記テーブルは、入力に対して前記変換−量子化処理の出力が単調増加するか、または単調減少するかを識別する分割情報と、前記変換−量子化処理の入力に対して予め設定されている複数の閾値と、前記複数の閾値のそれぞれに対応する前記変換−量子化処理の出力とを互いに関連付け、
前記処理部は、
前記分割情報に基づいて、前記演算部による畳み込み演算の演算結果に対応する閾値を出力する閾値処理部と、
前記テーブルを参照して、前記閾値処理部により出力された前記閾値に対応する前記変換−量子化処理の出力を取得する出力取得部と、
を有する
ことを特徴とするニューラルネットワーク処理装置。
【請求項６】
請求項１から５のいずれか１項に記載のニューラルネットワーク処理装置において、
前記ニューラルネットワークは、少なくとも１層の中間層を有する多層ニューラルネットワークであることを特徴とするニューラルネットワーク処理装置。
【請求項７】
請求項１から６のいずれか１項に記載のニューラルネットワーク処理装置において、
前記変換−量子化処理に含まれる、前記演算部による畳み込み演算の前記演算結果を予め規定されている条件に基づいて変換する処理は、活性化関数による前記演算結果の決定を含むことを特徴とするニューラルネットワーク処理装置。
【請求項８】
ニューラルネットワークに与えられる入力信号を第１メモリに記憶する第１ステップと、
前記ニューラルネットワークの重みを第２メモリに記憶する第２ステップと、
前記入力信号と前記重みとの積和演算を含む前記ニューラルネットワークの畳み込み演算を行う第３ステップと、
前記第３ステップでの畳み込み演算の演算結果を入力として、第３メモリに記憶されたテーブルであって、入力された値に対して予め規定されている条件に基づいて正規化を含む変換をし、変換したデータのビット精度を前記入力された値よりも削減して量子化する変換−量子化処理の結果を出力としたとき、前記変換−量子化処理の入力と出力とを互いに関連付けた前記テーブルを参照して、前記演算結果に対応する前記変換−量子化処理の出力を取得する第４ステップと
を備えることを特徴とするニューラルネットワーク処理方法。
【請求項９】
コンピュータに、
ニューラルネットワークに与えられる入力信号を第１メモリに記憶する第１ステップと、
前記ニューラルネットワークの重みを第２メモリに記憶する第２ステップと、
前記入力信号と前記重みとの積和演算を含む前記ニューラルネットワークの畳み込み演算を行う第３ステップと、
前記第３ステップでの畳み込み演算の演算結果を入力として、第３メモリに記憶されたテーブルであって、入力された値に対して予め規定されている条件に基づいて正規化を含む変換をし、変換したデータのビット精度を前記入力された値よりも削減して量子化する変換−量子化処理の結果を出力としたとき、前記変換−量子化処理の入力と出力とを互いに関連付けた前記テーブルを参照して、前記演算結果に対応する前記変換−量子化処理の出力を取得する第４ステップと
を実行させるニューラルネットワーク処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ニューラルネットワーク処理装置、ニューラルネットワーク処理方法、およびニューラルネットワーク処理プログラムに関する。
【背景技術】
【０００２】
近年、画像を複数のカテゴリに分類するためのディープニューラルネットワークとして、畳み込みニューラルネットワーク（Ｃｏｎｖｏｌｕｔｉｏｎａｌ  Ｎｅｕｒａｌ  Ｎｅｔｗｏｒｋ：ＣＮＮ）が注目されている。ＣＮＮは、ディープニューラルネットワークにおいて畳み込み層を有することを特徴とする。畳み込み層では、入力データに対してフィルタを適用する。より詳細には、畳み込み層では、フィルタのウィンドウを一定のストライドでスライドさせて、フィルタの要素と入力データの対応する要素とを乗算し、その和を求める積和演算を行う。【０００３】
図１３は、一般的なＣＮＮの信号処理のフローを示す図である。ＣＮＮは、入力層、中間層、および出力層を有する（例えば、非特許文献１および非特許文献２参照）。中間層においては、入力信号に重みを掛け合わせる畳み込み演算を行われる。【０００４】
図１３に示すように、中間層においては、畳み込み演算の結果に対して、必要に応じてＲｅＬＵ（Ｒｅｃｔｉｆｉｅｄ  Ｌｉｎｅａｒ  Ｕｎｉｔｓ）による検出処理やＢＮ（Ｂａｔｃｈ  Ｎｏｒｍａｌｉｚａｔｉｏｎ）などの正規化（以下、これらを総称して「変換」ということがある。）が行われる。また、場合によってはプーリング処理が行われる。【０００５】
畳み込み演算を介して抽出された入力信号の特徴は、全結合層からなる分類器にかけられ、分類結果が出力層から出力される。このように、ＣＮＮなどのニューラルネットワークにおいては、積和演算および変換演算が繰り返し行われていることがその特徴の１つとして挙げられる。【０００６】
ここで、ＣＮＮに用いられる入力データの入力値や重みは、小数点を含む場合があるが、従来のＣＮＮなどのニューラルネットワークの積和演算においては、図１３の「入力信号」、「重み」、および「畳み込み演算」の各値に示すように、演算結果の桁数を確保した形での演算処理が行われている。このように、従来のＣＮＮなどのニューラルネットワークでは、多層で構成される中間層などにおいては、桁数の多い多数の入力値に対し、多数の演算処理が必要となる。
【先行技術文献】
【非特許文献】
【０００７】
【非特許文献１】Ｋ．Ｈｅ，Ｘ．Ｚｈａｎｇ，Ｓ．Ｒｅｎ，ａｎｄ  Ｊ．Ｓｕｎ．Ｄｅｅｐ  ｒｅｓｉｄｕａｌ  ｌｅａｒｎｉｎｇ  ｆｏｒ  ｉｍａｇｅ  ｒｅｃｏｇｎｉｔｉｏｎ．Ｉｎ  Ｐｒｏｃ．ｏｆ  ＣＶＰＲ，２０１６．（＊ＲｅｓＮｅｔ）
【非特許文献２】麻生英樹  他、「Ｄｅｅｐ  Ｌｅａｒｎｉｎｇ  深層学習」近代科学社、２０１５年１１月
【発明の概要】
【発明が解決しようとする課題】
【０００８】
しかし、従来のＣＮＮなどのニューラルネットワークをＦＰＧＡ（Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）やマイコンなどの組み込み用のハードウェアで実装する場合、計算リソースに制限があるため、桁数の多い多数の入力値に対する多数の演算処理による処理速度の低下が課題となっていた。【０００９】
本発明は、上述した課題を解決するためになされたものであり、組み込み用のハードウェアを使用した場合であってもニューラルネットワークの処理速度の低下を抑制することができるニューラルネットワーク処理装置、およびニューラルネットワーク処理方法を提供することを目的とする。
【課題を解決するための手段】
【００１０】
上述した課題を解決するために、本発明に係るニューラルネットワーク処理装置は、ニューラルネットワークに与えられる入力信号を記憶する第１メモリと、前記ニューラルネットワークの重みを記憶する第２メモリと、前記入力信号と前記重みとの積和演算を含む前記ニューラルネットワークの畳み込み演算を行う演算部と、前記演算部による畳み込み演算の演算結果を入力とし、入力された値を予め規定されている条件に基づいて変換し、変換したデータのビット精度を削減して量子化する変換−量子化処理の結果を出力としたとき、前記変換−量子化処理の入力と出力とを互いに関連付けたテーブルを記憶する第３メモリと、前記テーブルを参照して、前記演算部による演算結果に対応する前記変換−量子化処理の出力を取得する処理部とを備えることを特徴とする。【００１１】
上述した課題を解決するために、本発明に係るニューラルネットワーク処理方法は、ニューラルネットワークに与えられる入力信号を第１メモリに記憶する第１ステップと、前記ニューラルネットワークの重みを第２メモリに記憶する第２ステップと、前記入力信号と前記重みとの積和演算を含む前記ニューラルネットワークの畳み込み演算を行う第３ステップと、前記第３ステップでの畳み込み演算の演算結果を入力として、入力された値を予め規定されている条件に基づいて変換し、変換したデータのビット精度を削減して量子化する変換−量子化処理の結果を出力としたとき、前記変換−量子化処理の入力と出力とを互いに関連付けたテーブルを第３メモリに記憶する第４ステップと、前記テーブルを参照して、前記第３ステップでの演算結果に対応する前記変換−量子化処理の出力を取得する第５ステップとを備えることを特徴とする。【００１２】
上述した課題を解決するために、本発明に係るニューラルネットワーク処理プログラムは、コンピュータに、ニューラルネットワークに与えられる入力信号を第１メモリに記憶する第１ステップと、前記ニューラルネットワークの重みを第２メモリに記憶する第２ステップと、前記入力信号と前記重みとの積和演算を含む前記ニューラルネットワークの畳み込み演算を行う第３ステップと、前記第３ステップでの畳み込み演算の演算結果を入力として、入力された値を予め規定されている条件に基づいて変換し、変換したデータのビット精度を削減して量子化する変換−量子化処理の結果を出力としたとき、前記変換−量子化処理の入力と出力とを互いに関連付けたテーブルを第３メモリに記憶する第４ステップと、前記テーブルを参照して、前記第３ステップでの演算結果に対応する前記変換−量子化処理の出力を取得する第５ステップとを実行させることを特徴とする。
【発明の効果】
【００１３】
本発明によれば、畳み込み演算の演算結果を予め規定された条件に基づいて変換し、変換したデータのビット精度を削減して量子化する変換−量子化処理の入力と出力とを互いに関連付けたテーブルを参照して、畳み込み演算の演算結果に対応する変換−量子化処理の出力を取得するので、組み込み用のハードウェアを使用した場合であってもニューラルネットワークの処理速度の低下を抑制することができる。
【図面の簡単な説明】
【００１４】
【図１】図１は、本発明の実施の形態に係るＣＮＮ処理装置の機能の概要を説明するブロック図である。
【図２】図２は、本発明の実施の形態に係るＣＮＮ処理装置のハードウェア構成を示すブロック図である。
【図３】図３は、本発明の実施の形態に係るＣＮＮ処理方法のフローの概要を説明するための図である。
【図４】図４は、第１の実施の形態に係る処理部の機能を説明するブロック図である。
【図５】図５は、第１の実施の形態に係るテーブルの構成を説明するための図である。
【図６】図６は、第１の実施の形態に係る処理部の機能を説明するための図である。
【図７】図７は、第２の実施の形態に係る処理部の機能を説明するブロック図である。
【図８】図８は、第２の実施の形態に係るテーブルの構成を説明するための図である。
【図９】図９は、第２の実施の形態に係るＣＮＮ処理方法のフローを説明するための図である。
【図１０】図１０は、第３の実施の形態に係る処理部の機能を説明するブロック図である。
【図１１】図１１は、第３の実施の形態に係るテーブルの構成を説明するための図である。
【図１２】図１２は、第３の実施の形態に係るＣＮＮ処理方法のフローを説明するための図である。
【図１３】図１３は、従来のＣＮＮの演算処理を説明するための図である。
【発明を実施するための形態】
【００１５】
以下、本発明の好適な実施の形態について、図１から図１２を参照して詳細に説明する。
［ＣＮＮ処理装置の概要］
本発明に係るニューラルネットワーク処理装置は、ニューラルネットワークとしてＣＮＮを用いたＣＮＮ処理装置１である。
【００１６】
本実施の形態に係るＣＮＮ処理装置１は、ＣＮＮに与えられる入力信号とＣＮＮの重みとの積和演算を行って演算結果を出力し、さらに演算結果に対してＲｅＬＵを適用して積和演算の結果を変換する演算処理装置である。この演算処理は、ＣＮＮの中間層における畳み込み層の積和演算（以下、「畳み込み演算」ということがある。）と、畳み込み演算の演算結果を予め規定された条件に基づいて変換する変換演算とを含む。なお、以下においては、「変換」の一例として、畳み込み演算の演算結果に対してＲｅＬＵを適用する場合について説明する。
【００１７】
ＣＮＮ処理装置１は、入力信号と重みとの畳み込み演算を行い、その演算結果にＲｅＬＵを適用して、１層分の畳み込み層の出力を得る。
【００１８】
以下においては、説明の簡単のため、畳み込み層の積和演算の結果にＲｅＬＵが適用されて算出された演算結果が次の畳み込み層の入力信号として用いられるものとする。ＣＮＮ処理装置１は、入力信号と重みとの積和演算および変換演算を繰り返し行って、予め設定されているＣＮＮモデルが有する畳み込み層の数に応じた回数の積和演算および変換処理を実行する。
【００１９】
［ＣＮＮ処理装置の機能ブロック］
上述したＣＮＮ処理装置１は、入力バッファ（第１メモリ）１０、重みバッファ（第２メモリ）１１、畳み込み演算部（演算部）１２、演算結果バッファ１３、処理部１４、出力バッファ１５、および記憶部（第３メモリ）１６を備える。
【００２０】
入力バッファ１０は、ＣＮＮに与えられる入力信号を記憶するメモリである。より詳細には、入力バッファ１０は、後述する主記憶装置１０３によって実現され、この入力バッファ１０には、例えば、外部から与えられた画像データなどが記憶される。入力バッファ１０に与えられる入力信号は、予め前処理を行った画像データであってもよい。前処理の例としては、モノクロ変換、コントラスト調整、および輝度調整などが挙げられる。また、入力信号は、ＣＮＮ処理装置１において予め設定されているＣＮＮモデルに応じて設定されたビット深度となるように縮小されていてもよい。
【００２１】
入力バッファ１０に与えられる入力信号の値としては、例えば、３２ビットや１６ビット精度の浮動小数点の配列で表現された小数点を含む値や、これらの値を予め設定されたビット数表現に削減した値が用いられる。
【００２２】
重みバッファ１１は、ＣＮＮの重みを記憶するメモリである。より詳細には、重みバッファ１１は、後述する主記憶装置１０３によって実現され、重みバッファ１１には、ＣＮＮ処理装置１の外部に設置されたサーバ（図示しない）や記憶部１６などに予め記憶されているＣＮＮの重みパラメータがロードされる。本実施の形態では、重みの値として、３２ビットや１６ビット精度の浮動小数点の配列で表現された小数点を含む値や、これらの値を予め設定されたビット数表現に削減した値が用いられる。
【００２３】
畳み込み演算部１２は、入力バッファ１０に記憶されている入力信号と、重みバッファ１１に記憶されている重みとの積和演算を含むＣＮＮの畳み込み演算を行う。より詳細には、畳み込み演算部１２は、入力バッファ１０と重みバッファ１１とからそれぞれ入力信号と重みとを読み出して、ＣＮＮ処理装置１において予め設定されているＣＮＮモデルを構成する畳み込み層に応じた畳み込み演算を行う。畳み込み演算部１２が出力する演算結果は、演算結果バッファ１３に供給される。
【００２４】
演算結果バッファ１３は、畳み込み演算部１２による畳み込み演算の結果をバッファリングする。
【００２５】
処理部１４は、記憶部１６に記憶されているテーブル１６０を参照して、演算結果バッファ１３から読み出した畳み込み演算の結果に対し、変換および量子化の処理（以下、「変換−量子化処理」ということがある。）を行った結果を出力する。より詳細には、処理部１４は、演算結果バッファ１３に記憶されている畳み込み演算の結果を読み出し、変換−量子化処理の入出力関係が記憶されているテーブル１６０を参照して、変換−量子化処理の入力に対応する値を取得して出力する。
【００２６】
ここで、畳み込み演算の結果の変換は、例えば、ＲｅＬＵなどの活性化関数の適用や、ＢＮなどを用いた正規化を含み、畳み込み演算の演算結果を予め規定された条件に基づいて変換することをいう。活性化関数は、畳み込み演算の演算結果を決定する。
【００２７】
畳み込み演算の結果に対して適用するＲｅＬＵは、畳み込み演算の結果が負であれば０に、正であれば畳み込み演算の結果を１次変換した値に変換させるランプ関数である。このように、ＲｅＬＵなど畳み込み演算の演算結果を変換する処理の入出力関係は予め規定されている。
【００２８】
一方、畳み込み演算の演算結果がＲｅＬＵなどを介して変換された値は、演算負荷の軽減のためにビット精度を削減して量子化される。データの量子化は、例えば、四捨五入、切り上げ、切り捨て、最近接丸めなどよく知られた端数処理を含み、ＲｅＬＵを介して畳み込み演算の結果が変換された値、例えば小数点を含む値を整数化するなどして制限をかけることをいう。
【００２９】
処理部１４は、例えば、ＲｅＬＵへの入力、すなわち、積和演算の結果と、ＲｅＬＵの出力をさらに量子化した値とが互いに関連付けて記憶されているテーブル１６０を参照する。そのため、処理部１４は、畳み込み演算の演算結果のＲｅＬＵによる変換処理と量子化処理とをあわせて実行することができる。
【００３０】
すなわち、処理部１４は、テーブル１６０を参照して、畳み込み演算の結果に対応するＲｅＬＵなどによる変換処理および量子化処理の２つの演算処理を経た値を取得する。
【００３１】
出力バッファ１５は、処理部１４によって取得された出力を一時的に記憶する。
【００３２】
記憶部１６は、テーブル１６０を備える。記憶部１６は、出力バッファ１５に一時的に記憶されている処理部１４からの出力を格納する。
【００３３】
テーブル１６０は、変換−量子化処理の入力と出力とを互いに関連付けて記憶する。より具体的には、テーブル１６０は、予め規定されているＲｅＬＵなどの変換処理の入力と、ＲｅＬＵによって変換された値を予め設定されている端数処理により量子化した出力とを互いに関連付けたデータを記憶する。
【００３４】
［ＣＮＮ処理装置のハードウェア構成］
次に、上述した機能を有するＣＮＮ処理装置１のハードウェア構成の例について図２のブロック図を用いて説明する。
【００３５】
図２に示すように、ＣＮＮ処理装置１は、例えば、バス１０１を介して接続されるプロセッサ１０２、主記憶装置１０３、通信インターフェース１０４、補助記憶装置１０５、入出力装置１０６を備えるコンピュータと、これらのハードウェア資源を制御するプログラムによって実現することができる。
【００３６】
主記憶装置１０３には、プロセッサ１０２が各種制御や演算を行うためのプログラムが予め格納されている。プロセッサ１０２と主記憶装置１０３とによって、図１に示した畳み込み演算部１２および処理部１４を含むＣＮＮ処理装置１の各機能が実現される。
【００３７】
主記憶装置１０３によって、図１で説明した入力バッファ１０、重みバッファ１１、演算結果バッファ１３、および出力バッファ１５が実現される。
【００３８】
通信インターフェース１０４は、通信ネットワークＮＷを介して各種外部電子機器との通信を行うためのインターフェース回路である。通信インターフェース１０４を介して、ＣＮＮ処理装置１が用いる画像データなどの入力信号や、重みを、外部のサーバなどから受信してもよい。
【００３９】
補助記憶装置１０５は、読み書き可能な記憶媒体と、その記憶媒体に対してプログラムやデータなどの各種情報を読み書きするための駆動装置とで構成されている。補助記憶装置１０５には、記憶媒体としてハードディスクやフラッシュメモリなどの半導体メモリを使用することができる。
【００４０】
補助記憶装置１０５は、外部から取得された入力データや重みを記憶する記憶領域や、ＣＮＮ処理装置１が畳み込み演算などのＣＮＮの演算処理を行うためのプログラムを格納するプログラム格納領域を有する。補助記憶装置１０５によって、図１で説明した記憶部１６が実現される。さらには、例えば、上述したデータやプログラムなどをバックアップするためのバックアップ領域などを有していてもよい。
【００４１】
入出力装置１０６は、外部機器からの信号を入力したり、外部機器へ信号を出力したりするＩ／Ｏ端子により構成される。入出力装置１０６を介して、図示しない表示装置などを備えて、ＣＮＮ処理装置１によって出力される演算結果を表示してもよい。
【００４２】
ここで、補助記憶装置１０５のプログラム格納領域に格納されているプログラムは、本明細書で説明するＣＮＮ処理方法の順序に沿って時系列に処理が行われるプログラムであってもよく、並列に、あるいは呼び出しが行われたときなどの必要なタイミングで処理が行われるプログラムであってもよい。また、プログラムは、１つのコンピュータにより処理されるものでもよく、複数のコンピュータによって分散処理されるものであってもよい。
【００４３】
［ＣＮＮ処理方法］
次に、上述した構成を有するＣＮＮ処理装置１の動作の概要について図３を参照して説明する。まず、入力バッファ１０および重みバッファ１１は、ＣＮＮ処理装置１の外部に設置されたサーバなどから与えられた入力信号Ａおよび重みＵをそれぞれ一時的に記憶する（ステップＳ１、ステップＳ２）。
【００４４】
入力信号Ａは、ベクトル化された入力画像データであり、縦方向と横方向の次元を持つ。入力信号Ａの値は、例えば、複数桁の小数点を含む値で表現される。一方、重みＵは、行列で表されるカーネルの要素であり、ＣＮＮの学習によって調整および更新されて最終的に決定されるパラメータである。重みＵの値についても、縦方向と横方向の次元を持ち、各要素は、例えば、複数桁の小数点を含む値で表現される。
【００４５】
次に、畳み込み演算部１２は、入力バッファ１０および重みバッファ１１からそれぞれ入力信号Ａおよび重みＵを読み出して、畳み込み演算を行う（ステップＳ３）。より詳細には、畳み込み演算部１２は、入力信号Ａのベクトルと重みＵの行列を乗算する。
【００４６】
具体的には、畳み込み演算部１２は、予め設定されているＣＮＮのフィルタのウィンドウを所定のストライドでスライドさせる。畳み込み演算部１２は、フィルタのそれぞれの場所で、重みＵの要素と、入力信号Ａの対応する要素とを乗算し、その和を求める。
【００４７】
畳み込み演算部１２は、この積和演算による畳み込み演算の演算結果Ｘを演算結果バッファ１３の対応する場所に格納する（ステップＳ４）。
【００４８】
その後、処理部１４は、演算結果バッファ１３から畳み込み演算の結果Ｘを読み出して、記憶部１６のテーブル１６０を参照し、演算結果Ｘを変換−量子化処理した出力Ｙを取得する（ステップＳ５）。取得された出力Ｙは、出力バッファ１５に一時的に記憶され、プロセッサ１０２により読み出されて出力される（ステップＳ６）。
【００４９】
なお、必要に応じて処理部１４が取得した出力Ｙに対してよく知られたプーリング処理を行ってもよい（非特許文献２参照）。ステップＳ６で得られた出力Ｙは、ＣＮＮの特徴抽出部の出力として、後続の図示しない分類器を構成する全結合層に入力され、入力信号Ａの画像データの判別が行われる。
【００５０】
以上説明したように、本発明に係るＣＮＮ処理装置１は、ＲｅＬＵなどの変換処理への入力と、ＲｅＬＵによって変換された値を量子化した出力とを互いに関連付けたテーブル１６０を記憶部１６に記憶している。ＣＮＮ処理装置１は、テーブル１６０を参照して、畳み込み演算の演算結果に対応する変換−量子化処理の出力を取得する。そのため、ＲｅＬＵなどの変換処理と、変換された値に対する量子化処理とを各々独立して実行する場合に比較して、ＣＮＮ処理装置１の計算負荷を低減することができる。また、その結果として、ＣＮＮの信号処理の高速化が可能となる。
【００５１】
［第１の実施の形態］
次に、上述した構成を有するＣＮＮ処理装置１の具体的な例として、本発明の第１の実施の形態に係るＣＮＮ処理装置１について説明する。図４は、ＣＮＮ処理装置１の処理部１４の機能構成を示すブロック図である。ＣＮＮ処理装置１のその他の構成は、図１で説明した構成と同様である。また、図５は、テーブル１６０のデータ構造を説明する図である。図６は、処理部１４による変換−量子化処理を説明する図である。
【００５２】
［処理部の機能ブロック］
処理部１４は、入力判定部１４０および出力取得部１４１を備える。
入力判定部１４０は、畳み込み演算の演算結果を演算結果バッファ１３から読み出して、予め設定されている変換−量子化処理の各入力区間との比較を行い、畳み込み演算の演算結果、すなわち変換−量子化処理の入力の値が含まれる入力区間を判定する。
【００５３】
ここで、記憶部１６に記憶されているテーブル１６０は、変換−量子化処理の入力を連続する複数の区間に分割した入力区間のそれぞれと、ＲｅＬＵなどによって変換された値を量子化した値とを互いに関連付けたデータを記憶する。
【００５４】
具体的には、図５に示すように、テーブル１６０には、例えば、変換−量子化処理の入力が５つの区間に分けられて、各入力区間と変換−量子化処理の出力とが互いに関連付けられたデータが記憶されている。例えば、畳み込み演算の演算結果Ｘが「１」である場合には、入力判定部１４０は、各入力区間との比較により、演算結果Ｘが入力区間「１≦Ｘ＜２」に該当することを判定する。
【００５５】
出力取得部１４１は、記憶部１６に記憶されているテーブル１６０を参照して、入力判定部１４０による判定結果に応じた入力区間に対応する変換−量子化処理の出力Ｙを取得する。
【００５６】
具体的には、図６に示すように、出力取得部１４１は、入力判定部１４０によって判定された５つの入力区間のうちのいずれかに対応する変換−量子化処理の出力Ｙを取得する。図６に示す変換−量子化処理の例では、ＲｅＬＵによる変換処理、および予め設定されている端数処理による量子化処理の２つの演算処理を合わせて行っている。
【００５７】
［ＣＮＮ処理方法］
次に、上述した入力判定部１４０を有する本実施の形態に係るＣＮＮ処理装置１の動作について図３を参照して説明する。なお、本実施の形態に係るＣＮＮ処理方法において、ステップＳ１からステップＳ４まではＣＮＮ処理方法の概要で説明した処理と同様である。
【００５８】
まず、入力バッファ１０および重みバッファ１１は、ＣＮＮ処理装置１の外部に設置されたサーバなどから与えられた入力信号Ａおよび重みＵをそれぞれ一時的に記憶する（ステップＳ１、ステップＳ２）。
【００５９】
次に、畳み込み演算部１２は、入力バッファ１０および重みバッファ１１からそれぞれ入力信号Ａおよび重みＵを読み出して、畳み込み演算を行う（ステップＳ３）。より詳細には、畳み込み演算部１２は、入力信号Ａのベクトルと重みＵの行列を乗算する。
【００６０】
次に、畳み込み演算部１２は、この積和演算による畳み込み演算の演算結果Ｘを演算結果バッファ１３の対応する場所に格納する（ステップＳ４）。
【００６１】
その後、処理部１４は、演算結果バッファ１３から畳み込み演算の結果Ｘを読み出して、記憶部１６のテーブル１６０を参照し、演算結果Ｘが変換−量子化処理された出力Ｙを取得する（ステップＳ５）。より詳細には、入力判定部１４０は、畳み込み演算の結果Ｘ、すなわち、変換−量子化処理の入力Ｘについて、予め設定されている変換−量子化処理の入力区間ごとに値の比較を行い、演算結果Ｘの値が含まれる入力区間を判定する。その後、出力取得部１４１は、テーブル１６０を参照して、入力判定部１４０によって判定された入力区間に対応する変換−量子化処理の出力Ｙを取得する。
【００６２】
取得された出力Ｙは、出力バッファ１５に一時的に記憶され、プロセッサ１０２により読み出されて出力される（ステップＳ６）。
【００６３】
以上説明したように、第１の実施の形態に係るＣＮＮ処理装置１によれば、畳み込み演算の演算結果、すなわち変換−量子化処理の入力の値が、変換−量子化処理の連続する複数の入力区間のうちどの入力区間に含まれるのかを判定し、判定結果に基づいて、テーブル１６０を参照して変換−量子化処理の出力を取得する。
【００６４】
そのため、ＲｅＬＵなどの変換処理と、畳み込み演算の演算結果の量子化処理とを、入力区間の判定およびテーブル１６０の参照により実行することができるので、組み込み用のハードウェアを使用した場合であってもＣＮＮの演算負荷の低減および処理速度の低下を抑制することができる。
【００６５】
また、変換−量子化処理の入出力関係を示すテーブル１６０は、補助記憶装置１０５などのハードウェアの記憶領域に保存される。そのため、ニューラルネットワークの形態に応じてテーブル１６０の値を入れ替えることにより、所望の処理機能を有するニューラルネットワークをハードウェアによってより柔軟に実現することができる。
【００６６】
［第２の実施の形態］
次に、本発明の第２の実施の形態について説明する。なお、以下の説明では、上述した第１の実施の形態と同じ構成については同一の符号を付し、その説明を省略する。
【００６７】
第１の実施の形態では、処理部１４は入力判定部１４０を備え、入力判定部１４０が、畳み込み演算の演算結果と、変換−量子化処理における連続する複数の入力区間とを比較する場合につて説明した。これに対し、第２の実施の形態では、処理部１４は、変換−量子化処理の入力に対する閾値処理を行う閾値処理部（第１閾値処理部）１４２を備える。以下、第１の実施の形態と異なる構成を中心に説明する。
【００６８】
［処理部の機能ブロック］
処理部１４は、出力取得部１４１および閾値処理部１４２を備える。
閾値処理部１４２は、畳み込み演算の演算結果を演算結果バッファ１３から読み出して、変換−量子化処理の入力に対して予め設定されている閾値との比較を行う。
【００６９】
ここで、本実施の形態に係る記憶部１６のテーブル１６０Ａには、図８に示すように、変換−量子化処理の入力に対して、例えば、５つ閾値が設定されており、各閾値と変換−量子化処理の出力とを互いに関連付けたデータが記憶されている。
【００７０】
閾値処理部１４２は、例えば、畳み込み演算の演算結果Ｘが設定された閾値未満であるか閾値以上であるかを比較する。具体的には、畳み込み演算に演算結果Ｘが「１」である場合には、閾値処理部１４２は、演算結果Ｘ（「１」）は、設定されている閾値「２」未満で閾値「１」以上であるとの比較結果を出力する。
【００７１】
出力取得部１４１は、閾値処理部１４２による比較結果に基づいて、テーブル１６０Ａを参照し、比較結果に応じた入力の閾値に対応する変換−量子化処理の出力Ｙを取得する。出力取得部１４１によって取得された出力は出力バッファ１５に一時的に記憶される。
【００７２】
［ＣＮＮ処理方法］
次に、上述した閾値処理部１４２を有する本実施の形態に係るＣＮＮ処理装置１の動作について図９を参照して説明する。なお、本実施の形態に係るＣＮＮ処理方法において、ステップＳ１からステップＳ４までは図３のＣＮＮ処理方法の概要で説明した処理と同様である。
【００７３】
まず、入力バッファ１０および重みバッファ１１は、ＣＮＮ処理装置１の外部に設置されたサーバなどから与えられた入力信号Ａおよび重みＵをそれぞれ一時的に記憶する（ステップＳ１、ステップＳ２）。
【００７４】
次に、畳み込み演算部１２は、入力バッファ１０および重みバッファ１１からそれぞれ入力信号Ａおよび重みＵを読み出して、畳み込み演算を行う（ステップＳ３）。より詳細には、畳み込み演算部１２は、入力信号Ａのベクトルと重みＵの行列を乗算する。
【００７５】
次に、畳み込み演算部１２は、この積和演算による畳み込み演算の演算結果Ｘを演算結果バッファ１３の対応する場所に格納する（ステップＳ４）。
【００７６】
その後、処理部１４は、演算結果バッファ１３から畳み込み演算の結果Ｘを読み出して、記憶部１６のテーブル１６０Ａを参照し、演算結果Ｘが変換−量子化処理された出力Ｙを取得する（ステップＳ５Ａ）。より詳細には、閾値処理部１４２は、畳み込み演算の結果Ｘについて、変換−量子化処理の入力に対して予め設定されている閾値との比較を行い、演算結果Ｘを下回る閾値を出力する。その後、出力取得部１４１は、テーブル１６０Ａを参照して、閾値処理部１４２によって出力された入力の閾値に対応する出力Ｙを取得する。
【００７７】
取得された出力Ｙは、出力バッファ１５に一時的に記憶され、プロセッサ１０２により読み出されて出力される（ステップＳ６）。
【００７８】
以上説明したように、第２の実施の形態に係るＣＮＮ処理装置１によれば、変換−量子化処理への入力に対して予め設定された閾値と、その閾値と変換−量子化処理の出力とを互いに関連付けたテーブル１６０Ａが記憶部１６に記憶されている。また、出力取得部１４１は、畳み込み演算の演算結果と閾値との比較結果に基づいて、テーブル１６０Ａを参照して変換−量子化処理の出力を取得する。
【００７９】
そのため、畳み込み演算の演算結果に対するＲｅＬＵなどによる変換処理と、畳み込み演算の演算結果の量子化処理とを閾値処理によって実行することができる。したがって、変換−量子化処理の出力が単調増加または単調減少する場合においては、閾値との比較により変換−量子化処理の出力を一意に決定することができる。
【００８０】
特に、ある一定のハードウェアによってＣＮＮ処理装置１を実現した場合に、入力区間を用いた比較は逐次処理が必要となるのに対し、入力と閾値との比較は一括で行うことができる。したがって、ＣＮＮ処理装置１によれば、組み込み用のハードウェアを使用した場合であってもＣＮＮの演算処理をより高速に行うことができる。
【００８１】
［第３の実施の形態］
次に、本発明の第３の実施の形態について説明する。なお、以下の説明では、上述した第１および第２の実施の形態と同じ構成については同一の符号を付し、その説明を省略する。
【００８２】
第２の実施の形態では、変換−量子化処理の出力が単調増加または単調減少する場合において、閾値処理部１４２は、変換−量子化処理の入力に対して予め設定されている閾値との比較を行う場合について説明した。これに対して、第３の実施の形態では、変換−量子化処理の出力が単調増加する入力の区間と、単調減少する入力の区間とを識別する分割情報に基づいて、変換−量子化処理の入力の値が属するいずれかの入力の区間内のみで閾値処理を行う。以下、第１および第２の実施の形態と異なる構成を中心に説明する。
【００８３】
［処理部の機能ブロック］
処理部１４は、入力判定部１４０、出力取得部１４１、および閾値処理部（第２閾値処理部）１４２を備える。
入力判定部１４０は、変換−量子化処理の出力が単調増加する入力の区間と、単調減少する入力の区間とを識別する分割情報に基づいて、前記演算部による畳み込み演算の演算結果Ｘの属する前記変換−量子化処理の入力の区間を判定する。
【００８４】
閾値処理部１４２は、畳み込み演算部１２による演算結果Ｘと、変換−量子化処理の入力に対して予め設定されている複数の閾値とを入力判定部１４０によって判定された入力の区間内で比較して、演算結果Ｘに対応する閾値を出力する。
【００８５】
出力取得部１４１は、記憶部１６に記憶されたテーブル１６０Ｂを参照し、閾値処理部１４２により出力された閾値に対応する変換−量子化処理の出力Ｙを取得する。
【００８６】
記憶部１６はテーブル１６０Ｂを記憶する。図１１に示すように、テーブル１６０Ｂには、変換−量子化処理の出力が単調増加する入力の区間と、単調減少する入力の区間とを識別する分割情報と、変換−量子化処理の入力に対して予め設定されている複数の閾値と、複数の閾値のそれぞれに対応する変換−量子化処理の出力とを互いに関連付けたデータが記憶されている。
【００８７】
分割情報は、例えば、活性化関数などの変換処理を介した畳み込み演算の演算結果をさらに量子化した出力が、２次関数のように単調増加する区間と単調減少する区間で構成される場合に、その単調増加と単調減少とが切り替わる頂点を示す情報などを含む。
【００８８】
図１１の例に示すように、変換−量子化処理の入出力の関係において、入力Ｘ＝６を境界として出力Ｙが単調増加および単調減少する。
【００８９】
図１１の例において、例えば、畳み込み演算の演算結果Ｘ（入力Ｘ）が「６」未満（Ｘ＜６）であるとする。この場合、入力判定部１４０は、変換−量子化処理への入力Ｘは単調増加する入力の区間に属すると判定する。
【００９０】
［ＣＮＮ処理方法］
次に、上述した構成を有する本実施の形態に係るＣＮＮ処理装置１の動作について図１２を参照して説明する。なお、本実施の形態に係るＣＮＮ処理方法において、ステップＳ１からステップＳ４までは、図３のＣＮＮ処理方法の概要で説明した処理と同様である。
【００９１】
まず、入力バッファ１０および重みバッファ１１は、ＣＮＮ処理装置１の外部に設置されたサーバなどから与えられた入力信号Ａおよび重みＵをそれぞれ一時的に記憶する（ステップＳ１、ステップＳ２）。
【００９２】
次に、畳み込み演算部１２は、入力バッファ１０および重みバッファ１１からそれぞれ入力信号Ａおよび重みＵを読み出して、畳み込み演算を行う（ステップＳ３）。より詳細には、畳み込み演算部１２は、入力信号Ａのベクトルと重みＵの行列を乗算する。
【００９３】
次に、畳み込み演算部１２は、この積和演算による畳み込み演算の演算結果Ｘを演算結果バッファ１３の対応する場所に格納する（ステップＳ４）。
【００９４】
その後、処理部１４は、演算結果バッファ１３から畳み込み演算の結果Ｘを読み出して、記憶部１６のテーブル１６０Ｂを参照し、演算結果Ｘが変換−量子化処理された出力Ｙを取得する（ステップＳ５Ｂ）。
【００９５】
より詳細には、入力判定部１４０は、変換−量子化処理の出力が単調増加する入力の区間と、単調減少する入力の区間とを識別する分割情報に基づいて、変換−量子化処理への入力Ｘ、すなわち、畳み込み演算の演算結果Ｘが属する入力の区間を判定する。
【００９６】
その後、閾値処理部１４２は、畳み込み演算の演算結果Ｘ（入力Ｘ）と、変換−量子化処理の入力Ｘに対して予め設定された閾値とを入力判定部１４０によって判定された入力の区間内で比較し、比較結果に応じた閾値を出力する。その後、出力取得部１４１は、テーブル１６０Ｂを参照し、閾値処理部１４２によって出力された閾値に対応する変換−量子化処理の出力Ｙを取得する。
【００９７】
取得された出力Ｙは、出力バッファ１５に一時的に記憶され、プロセッサ１０２により読み出されて出力される（ステップＳ６）。
【００９８】
以上説明したように、第３の実施の形態に係るＣＮＮ処理装置１によれば、変換−量子化処理の出力Ｙが単調増加する入出力の区間と単調減少する入出力の区間とを識別する分割情報に基づいて、変換−量子化処理の入力Ｘが属する区間を判定する。そして、判定された入力の区間内において、変換−量子化処理への入力Ｘに対する閾値処理を行い、テーブル１６０Ｂを参照し、変換−量子化処理の出力Ｙを取得する。
【００９９】
そのため、変換−量子化処理の入出力の関係が単調増加または単調減少でない場合であっても、単調増加および単調減少する区間ごとに閾値処理を行うので、より高速にＣＮＮの演算処理を行うことができる。
【０１００】
以上、本発明のニューラルネットワーク処理装置、ニューラルネットワーク処理方法、およびニューラルネットワーク処理プログラムにおける実施の形態について説明したが、本発明は説明した実施の形態に限定されるものではなく、請求項に記載した発明の範囲において当業者が想定し得る各種の変形を行うことが可能である。
【０１０１】
例えば、説明した実施の形態では、ニューラルネットワークの一例としてＣＮＮを挙げて説明したが、ニューラルネットワーク処理装置が採用するニューラルネットワークはＣＮＮに限らない。
【０１０２】
なお、ここで開示された実施の形態に関連して記述された様々の機能ブロック、モジュール、および回路は、汎用プロセッサ、ＧＰＵ、デジタル信号プロセッサ（ＤＳＰ）、特定用途向け集積回路（ＡＳＩＣ）、ＦＰＧＡあるいはその他のプログラマブル論理デバイス、ディスクリートゲートあるいはトランジスタロジック、ディスクリートハードウェア部品、または上述した機能を実現するために設計された上記いずれかの組み合わせを用いて実行されうる。
【０１０３】
汎用プロセッサとしてマイクロプロセッサを用いることが可能であるが、代わりに、従来技術によるプロセッサ、コントローラ、マイクロコントローラ、あるいは状態機器を用いることも可能である。プロセッサは、例えば、ＤＳＰとマイクロプロセッサとの組み合わせ、複数のマイクロプロセッサ、ＤＳＰコアに接続された１つ以上のマイクロプロセッサ、またはこのような任意の構成である計算デバイスの組み合わせとして実現することも可能である。
【符号の説明】
【０１０４】
１…ＣＮＮ処理装置、１０…入力バッファ、１１…重みバッファ、１２…畳み込み演算部、１３…演算結果バッファ、１４…処理部、１５…出力バッファ、１６…記憶部、１０１…バス、１０２…プロセッサ、１０３…主記憶装置、１０４…通信インターフェース、１０５…補助記憶装置、１０６…入出力装置、１６０…テーブル、ＮＷ…通信ネットワーク、Ｕ…重み、Ａ…入力信号。
【図１】
0006886747.tif 000002
【図２】
0006886747.tif 000003
【図３】
0006886747.tif 000004
【図４】
0006886747.tif 000005
【図５】
0006886747.tif 000006
【図６】
0006886747.tif 000007
【図７】
0006886747.tif 000008
【図８】
0006886747.tif 000009
【図９】
0006886747.tif 000010
【図１０】
0006886747.tif 000011
【図１１】
0006886747.tif 000012
【図１２】
0006886747.tif 000013
【図１３】
0006886747.tif 000014